[REPRODUCCIÓN DE MÚSICA] DAVID MALAN: Este es CS50, y este es el comienzo de la semana ocho. Y estamos tan emocionados de dar la bienvenida espalda, gran sorpresa, el propio Ramón CS50 Galván, estudiante de último año en ascenso que ha sido pasar los últimos meses desde julio en Los Ángeles, en Hollywood, literalmente trabajando en un nuevo televisor de marca espectáculo llamado Colonia, el creador de los cuales es en realidad un alumbre de Harvard sí mismo. Y así que estamos muy contentos de ver este debut en la red EE.UU. este mes de enero. Así que estad atentos para eso, y para más Ramón para las semanas por venir. Ahora sé que el final está cerca. Y lo que esto significa es que no hay casi nada queda de CS50, es triste decirlo. Tenemos sólo tres problemas conjuntos izquierda- hay problema establece six-- que está en sus manos ahora o pronto serán, a finales de este week-- está destinado a salvar nuestros mundos de la línea de comandos, donde hemos pasado la mayor parte de nuestro tiempo utilizando C, y el mundo de la programación web. Bueno, verás un montón de ideas tomado de la obra de línea de comandos, sino también una gran cantidad de nuevo e ideas interesantes que también van a ser afín a aplicaciones móviles y la tecnología, más en general, con el que se chicos son todos conocemos hoy en día en las computadoras portátiles y los teléfonos y similares. Por lo que usted no implementa una página web o una página web per se, pero un servidor web real. Usted tendrá que escribir el resto de un servidor web escrito en C, cuyo propósito en la vida es recibir peticiones HTTP, esos sobres virtuales seguimos hablando sobre y responder realidad ya sea con algunos content-- estáticos como un punto HTML archivo, o un punto JPEG o cualquier otro número de archivos, o incluso un archivo PHP con lo que tu web servidor va a interpretar que PHP código y escupió los resultados. Ahora, le hemos proporcionado con un poco de marco para it-- hecho el código de distribución para el problema establece seis es más de 1.000 líneas de largo, un muchos de los cuales son los comentarios, para ser fair-- pero esto es realmente significaba ser una oportunidad para conseguir sus manos sucias de buceo en un proyecto bastante grande que hemos muy específica talladas en piezas de para usted, por lo que realmente al salir de CS50 y entrar en el mundo real de la programación y quieren incursionar en cualquier número de proyectos, tendrás mucho mayor confort descarga de alguna fuente código, algunos de código abierto proyectar en la web, y el buceo en y hacer cambios que se le parezca. Problema fijó siete va a ser acerca de hacer su propia aplicación basada en la web que toma la entrada dinámica y produce salida dinámica en la forma de un sitio web de etrade.com similares. Y un problema fijó ocho se centrará en todavía otro idioma conocido como JavaScript. Mientras tanto, la final proyecto está en el horizonte. El llamado pre-propuesta se debe a la semana a partir de hoy. Pre-proposal-- por la especificación, que está en website-- de CS50 es una oportunidad bastante casual para que usted envíe un correo electrónico muy sucinta a su compañero de la enseñanza sólo para informar a o ella de lo que estás pensando, a él o ella utilice como caja de resonancia. Y tener una cordura check-- si usted está pensando acerca morder demasiado mucho o tal vez demasiado poco, o tal vez usted no tiene idea alguna y quiere participar en una conversación. A partir de entonces es una propuesta y el informe de estado, el denominado aquí en hackathon CS50 Cambridge para estudiantes de Harvard y Yale por igual. Del proyecto final aplicación es entonces debido. Y luego una feria CS50 aquí, en Cambridge, así como otro en New Haven. Así que la propuesta, eche un vistazo a la página web de esas menciones. Pero lo más emocionante, también, es un oportunidad de ensuciarse las manos, y sus mentes abiertas a un todo montón de temas y herramientas y técnicas que son auxiliares al plan de estudios básico del curso, pero no obstante relacionados. Y también maravillosa escalones para haciendo proyectos finales muy interesantes que van mucho más allá de material que hemos cubierto formalmente en problema fija o en conferencia. Así que ir a la página web del CS50 para toda la lista de seminarios. Si no se registra, sin embargo, eso está bien. Vaya por delante y regístrate quieto y lo haremos seguimiento con un enlace en vivo, el día y hora es en el sitio web. Y todo será grabado y puesto en línea si usted no puede hacer que el días y horarios determinados. En cuanto a lo que se avecina thereafter-- así, por supuesto, está el hackathon CS50. Esta foto, recuerdo, desde la semana cero tomada alrededor de las 4 am una noche en años anteriores. La feria CS50, que de nuevo se llevará a cabo en ambas ciudades. Y entonces, para plantar la semilla, a pesar de que todavía tener un mes más a la izquierda del semestre, si desea unirse a la propia enseñanza de CS50 personal, y desea iniciar pensando en convertirse en una CA, o compañero de enseñanza, saber que vamos a empezar a hablar más sobre eso a finales de este semestre. Pero aquí está la foto la mayor parte de el equipo de este año. Y así, PHP-- y yo estaba tan triste la semana pasada que [? Allyse?] Amablemente fue al esfuerzo de llegar nosotros estos maravillosos accesorios que yo no las usamos, por lo que en realidad sólo parecía un poco estúpido que teníamos una pala sentado aquí todo día miércoles pasado, y un poco de cuchara. Pero esta fue mi metafórica manera de tratar de pintar la imagen de por qué estamos en transición de C a un lenguaje como PHP. Y lo mismo podría decirse de cualquier número de Las Lenguas Java, Python, Ruby o racimos de otros--, pero mientras que en C, por ejemplo, escribir un programa en C normalmente podría ser como teniendo una cuchara como esta y la excavación de un agujero en el tierra, en la arena o la suciedad. PHP le permite tomar mucho bocados más grandes fuera del problema, escribir código mucho menos utilizando una herramienta mucho más pequeño, porque hay mucho más funcionalidad reconstruido en. Ahora, si nos quedamos muy dramática, tendríamos algo para palear aquí, pero que así sea. Mientras tanto, el otro metáfora nos ocurrió es, por supuesto, usted podría usar algo como una llave a martillar en algo así como un clavo. Pero, por supuesto, el derecho herramienta para su uso va que no es tanto la lenguaje llamado C-- y ahora sólo molesto [? Sanders,?] Probablemente, lo arreglaremos lo que tarde-- la herramienta adecuada para utilizar con frecuencia No va a ser esta herramienta de nivel más bajo. Y, en efecto, C no es un lenguaje que la mayoría de ustedes alguna vez va a utilizar, o necesariamente deben utilizar de nuevo. Y de hecho, un poco secreto-- la única vez Yo uso C mí es más o menos entre Septiembre y diciembre de cada otoño semestre. Y eso se debe a que utilizarlo como una oportunidad para enseñar los fundamentos de la programación, y con ella la computadora fundamentos científicos, datos las estructuras, los algoritmos y la como-- pero muy rápidamente ¿verdad ver ahora que la sintaxis y las ideas que subyace C son tan maravillosamente transferible a más moderno lenguajes de alto nivel, como PHP y Python y Perl y Java y Objective-C- en realidad, no tanto Objetivo-C- pero Swift, estos nuevos lenguajes que muchos de ustedes luego incursionar con ustedes proyecto final. Así que sin más preámbulos, vamos a realidad usar PHP para resolver algunos problemas. Recordemos que desde el principio, la última semana, sólo utilizamos CS50 IDE, escribimos un pequeño programa dinky que acaba de decir, "Hola mundo". Y luego lo guardé en un archivo llamado hello.php. Y entonces me encontré con este comando. ¿Y por qué? En Inglés, ¿qué está pasando aquí? ¿Qué estaba haciendo cuando Corrí este comando? ¿Sí? AUDIENCIA: Hay un poco de PHP función que dice lo que está en-- entiende eso. DAVID MALAN: Bueno, hay alguna función PHP-- y déjame ser más específicos, hay un programa llamado PHP, alias El intérprete, que entiende el contenido de hello.php, y lo interpreta arriba abajo, de izquierda a derecha, y hace lo que dicen esos comandos. Los comandos de hello.php, por supuesto, es sólo la fuente code-- funciones y variables y bucles y similares, que nosotros mismos han comenzado a escribir en PHP. Pero a diferencia de C, la cual es un lenguaje compilado, PHP que acaba de escribir, y ejecutarlo. Se salta ese paso intermediario de convirtiéndola en ceros y unos, y luego ejecutarlo. Y así, lo que es una ventaja de esto? ¿Por qué estamos omitiendo el paso? ¿Por qué los lenguajes más modernos tienden a omitir este paso? ¿Cuál fue el beneficio? O simplemente intuitivamente? Incluso si no has escrito mucho antes de PHP, lo que es beneficioso por no compilar el código qué te parece? ¿No? No cometer? Rascarse la cabeza? Sí. AUDIENCIA: Más dinámica. DAVID MALAN: Más dinámica? ¿A que te refieres? AUDIENCIA: [inaudible] DAVID MALAN: OK, bueno, por lo dependiendo de la entrada, usted no tiene que compilar cada vez. Y realmente es tan simple como lo que-- es el punto de continuar para compilar el código? Esto es sólo un paso que es making-- esto está requiriendo, Durante los últimos semanas, el doble de los pasos como se acaba de ejecutar su programa. Ha sido útil para ver que ver algunos mensajes de error y así sucesivamente, pero sigue siendo sólo un paso molesto. Y así, los programadores se dieron cuenta con el tiempo, ¿por qué no lo hacemos empezar a escribir los idiomas que no lo hacen necesitará ese paso bastante mecánico, de manera que apenas puede escribir su código y ejecutarlo. Pero lo que era el precio que vimos que pagamos última semana, con un ejemplo concreto? ¿Sí? Velocidad. Asi que [? lo que es?] intérpretes un poco más lento, en ese ceros y unos son agradable y rápido para un ordenador de entender, debido a que la Intel CPU, o lo que sea, solo entiende lo que está pasando con aquellos patrones de bits. Mientras que un intérprete es un programa que realmente tiene que leer la fuente Ascii código que usted ha escrito, y la convierten, por así decirlo, o averiguar cómo se convierte en última instancia, de ceros y unos. Así que sólo se necesita un poco de poco de un impacto en el rendimiento. Así que es un poco de un trade-off. Ahora bien, si lo hacemos aquí, déjame seguir adelante y hacer un ejemplo de la siguiente manera. Si voy aquí, archivo nuevo, voy para guardar esta vez es hello.php. Y ahora voy a seguir adelante y decir: "print hola mundo" - y recuerdo que puedo usar de impresión, no lo hago que utilizar la impresión-F. Y ahora aquí, si lo hago de PHP de hello.php, me huh-- no parecen haber interpretado. ¿Qué hice mal? AUDIENCIA: Las pulseras en ángulo. DAVID MALAN: Sí, usted necesita que la parte superior del ángulo soporte hacia arriba. Así que es un poco molesto, pero te acostumbras a ella rápidamente. Si tengo que escribir código PHP, I general tendrá que decirle al programa, o decirle al intérprete, hey PHP, aquí viene algo de código PHP. Y a continuación, por si acaso, lo haría cerrar esta no con esto, sino con ángulo de marca simplemente pregunta soporte, de modo que ahora aquí abajo, si me quedo esto otra vez, ahora Me sale el resultado deseado. Ahora vamos a hacer una ligera optimización, sólo para que lo has visto antes. Esto es un poco molesto que me tiene que ejecutar PHP espacio hello.php, porque en el pasado I podría simplemente escribir slash dot nombre del programa, el cual es una especie de agradable. Es una especie de una mejor experiencia de usuario. Así que resulta que usted puede hacer esto en PHP con el I following-- puede utilizar esta bastante críptica encantamiento en la parte superior aquí, que generalmente se llama un shebang, mediante el cual se trata de un símbolo fuerte, por decirlo así, esto es una explosión o un signo de exclamación. Y esto ahora es la ruta de acceso a un programa en un típico sistema Linux que se llama medio ambiente, o env. Y esto line-- larga historia línea short-- uno justo dice, hey equipo, encontrar el PHP intérprete para mí en el medio ambiente, encontrar en su memoria, por así decirlo. Y lo que es agradable ahora, se que si voy por aquí, Yo puedo hacer slash dot hola php punto, o-- hmm. Permiso denegado. Bueno, verás aún más de esta con el problema de establecer siete, si tener no ya con los permisos. Resulta que necesito para ejecutar este comando llamado [? chamod?] para el cambio mode-- un plus x hello.php. Necesito [inaudible] éste adicional paso que está diciendo a mi equipo, hacer ejecutable hello.php. Y ahora ver lo happens-- dot slash hello.php, simplemente ejecuta. Yo no necesito especificar el intérprete más. Y puedo hacerlo aún más bonita, aún así, si puedo cambiar el nombre de esta cosa. Si me mudo hello.php sólo Hello-- lo notan en la parte superior izquierda, El nombre del programa es de hecho ahora sólo Hola. Ahora puedo hacer que se vea como un programa en C, a pesar de que está escrito en PHP-- o francamente cualquier número de otros idiomas. Así mejora marginal, ninguna diferencia funcional. Pero es sólo un poco de curiosidad ahora, para que usted pueda escribir programas en cualquier idioma, y ​​el usuario no lo hace tiene que saber o cuidar lo que son. Bueno, echemos un vistazo a una más ejemplo convincente ahora que azotaron por adelantado. Y esto se llama quote.php. Y está disponible en línea. Y se dio cuenta de que es bastante short-- pero es un programa de línea de comandos que es ir a buscar precios de las acciones para mí, lo que es en realidad va ser afín al problema establecido siete. Así que vamos a ver lo que estoy haciendo. En la parte superior Tengo la abierto abrazadera signo de interrogación PHP. Entonces yo tengo esta línea, con lo que soy que requiere un archivo llamado functions.php-- vamos a ver más sobre esto en un poco, pero esto es como C de versión de aguda incluyen, a dónde quieres ir incluir otro archivo. PHP llama requiere, aunque También tiene un include función. Y resulta que es function.php sólo algo que escribió antes de la clase. Lo puse en el mismo directorio, porque Quería factorizar algún código que lo que se quiere utilizar en otros lugares. Mientras tanto, usted puede probablemente inferir lo que está pasando aquí. Esto es un poco diferente de C-- pero lo que quiero decir con su uso apropiado? Traducir esta más técnico. ¿En qué circunstancias son yo salir del programa, o de salir? ¿Sí? AUDIENCIA: Cuando usted no tiene dos argumentos de la línea de comandos. DAVID MALAN: Cuando no tengo para ordenar los argumentos de línea. Y recuerda que uno de los argumentos es en sí mismo el nombre del programa. Y el segundo va a ser otra palabra que escribo después de la solicitud. Así que al igual que C, esta es mi manera de comprobar, cooperó el usuario y ejecutar el programa como era mi intención? Ahora, hay algo un poco diferente con C-- primero de todo lo que tener esta muestra de dólar, y lo que un dólar firmar denotar en PHP? Sólo una variable. Eso es todo-- simplemente una variable seguida de lo que quieras en realidad llamarlo. Observe que hay algo que falta de mi programa PHP, al igual que había desaparecido el pasado semana, frente a C, que es lo que? A tipos, pero también algo más. No hay algo function-- función principal. No hay función principal. Usted acaba de empezar a escribir su código sin tener que preocuparse bastante arbitraria convención de nombrar algún incumplimiento principal función. Así arg C es realmente una variable global que el intérprete pone a disposición de mí. Ahora, esto es interesante. Así que busque cosas. Signo de dólar de valores es en la a la izquierda, que es mi variable. Al lado derecho, hay al parecer una función en PHP llamada de búsqueda que Estoy pasando mi última línea de comandos argumento a-- cualquiera que sea la palabra es. Y veremos cómo esto funciona en un momento. Y luego, por último, estoy informar el precio. Estoy imprimiendo un solo participación en tal y tal. Y recuerde, este es el forma en PHP-- manera en PHP-- en el que no tienes que hacer el signo del dólar S más. Usted sólo puede usar llaves y conecte de alguna variable. Usted no tiene que preocuparse de usando printf de la misma manera. Y como un aparte, cuando se pone una variable dentro de comillas dobles como este, está utilizando una técnica de fantasía llamado interpolación de variables. Sólo significa conectar la variable aquí. Y como un aparte, algunos de ustedes que vienen de otros fondos de programación, usted no puede usar comillas simples alrededor de las cuerdas para hacer esto. Debe utilizar comillas dobles para interpolación de variables para trabajar. De lo contrario te literalmente ver esas llaves. Así que, por último, vamos a seguir adelante y ejecutar esto. Quiero dejar mi terminal un poco más grande. Déjame ir adelante y corro dentro de mi directorio de cotización. [? CDsource?] [? AM?] [? cotización?] dot cotización PHP PHP, y yo voy a buscar algo como GOOG, que es su símbolo, y una acción de su nuevo nombre, Alfabeto Inc, un costo de $ 717, a partir de hoy. Muy bien, si queremos ejecutar este nuevo, nadie tener otro tablero de cotizaciones quieren mirar hacia arriba? Microsoft creo que es éste, MSFT-- $ 53. Creo que Yahoo es quizás eso. Y es que Facebook. Entonces, ¿qué es este programa haciendo? La magia parece estar incrustado en que la función de búsqueda. Así que vamos a echar un vistazo rápido. Resulta que no viene con PHP, está en functions.php. Y no vamos a ir a través de esto en gran detalle, notar la palabra clave aquí es que en la línea seis de functions.php-- Yo, literalmente, digo función. Puedo especificar el nombre de mi función. Entonces puedo especificar ninguna argumentos o parámetros, Quiero esa función a take-- ningún tipo. Y luego ponerlo en práctica. Y voy a agito mi mano en la implementación, ya que está justo bastante avanzada ahora, pero vamos a ver de nuevo en realidad en una semana en el problema planteado siete. Pero puedo limpiar esto, también. También incluí en el código de hoy una versión de la cita, que no tiene archivo PHP punto. Porque lo que es, presumiblemente, en el parte superior del programa llamado simplemente citar? Que el llamado shebang-- la encantamiento bastante críptica que dice encontrar PHP y después ejecutarlo en mi código aquí. Muy bien, así que trae nosotros donde lo dejamos última tiempo-- aunque con algunos ejemplos más avanzados. Para cualquier duda hasta el momento acerca de PHP o lo que estamos haciendo? No-- bien. ¿Sí? AUDIENCIA: Dentro de la Archivos HTML, hacen usted-- [? Vos si ?] [? simplemente llamarlo?] un [inaudible] archivo PHP? DAVID MALAN: Buena pregunta. En un contexto web, que estamos literalmente a punto de transición a, no utiliza la llamada tinglado en la parte superior, porque el server-- web a menudo una programa llamado Apache o Microsoft IIS, Internet Information Server o cualquier número de otro software de servidor web, Sabe que cuando ve un archivo PHP punto, que debe ejecutar el intérprete en ella. No se ve en esa primera línea. Así que este primer truco línea es sólo cuando estás línea de comandos escribiendo programs-- que no vamos a hacer muy a menudo, pero es nuestra forma de puente nuestros ejemplos C a ahora nuestra PHP. Así que vamos a efecto Bridge Esta mundo Del mundo de la línea de comandos a la web haciendo lo siguiente. Déjame ir por delante y dibujar aquí sólo por un momento. Así que si tenemos un servidor web, o mejor dicho, si tenemos mi portátil por aquí, que voy a dibujar así. Y aquí tenemos el internet en alguna forma. Y luego aquí, tenemos un servidor en un building-- así es como el internet works-- y aquí es un servidor con algunas luces tal vez. Lo que realmente está pasando entre estas dos conexiones? Así que en este edificio es un servidor web. Eso es sólo un ordenador que se está ejecutando alguna operación system-- tal vez el software libre llamado Apache, que CS50 IDE está en marcha. Así que en realidad se puede pensar en este edificio como en el edificio que se almacena CSt0 IDE. Ahí es donde todos ustedes tienen cuentas, donde todos ustedes tener su propio servidor web correr, todos ustedes tener sus propias direcciones URL únicas, cuando empezamos a discutir, y verás más en P. establece seis. Aquí está mi portátil en algún lugar otra cosa en Internet. Y así, cuando visito un URL que pertenece a mí, que el tráfico de Internet va al servidor, el servidor de recibir una HTTP request-- como llegar index.html y es respondiendo a esa página web. Así que ese es el paradigma general. Mientras que todo lo que hasta hasta ahora hoy en día, todo que estaba ocurriendo sólo en el confines de este edificio. Yo estaba usando mi portátil, pero Me conecté con CS50 IDE, por lo que todos los programas que se ejecutan estaba dentro de ese servidor, sí. Pero ahora, vamos a empezar la reutilización de PHP escribir algunos programas reales que son servidos por un servidor web. Y para hacer esto, me voy a ir en un montón de ejemplos que introducir esta idea aquí. Así que esto es una especie de una forma elegante de que describe un paradigma de programación. Y de hecho, al salir CS50 o trabajar en proyectos finales, o tomar algunos siguen en clase, comenzarás al ver que el mundo-- especialmente después de haber crecido con lenguajes como C que son súper bajo level-- se dan cuenta de que no hay mejor formas de software de escritura. Hay cierta patrones que usted puede seguir, ciertas formas de organizar sus archivos y formas de nombrar a sus funciones, de manera que cuento largo, el mundo ha llegado con un montón de siglas y los nombres de las formas de programación. Estos son sólo técnicas que podría utilizar. Y uno de ellos se llama MVC, para el Modelo Vista Controlador. Y esto es sólo, por Ahora, una excesivamente complicado manera de decir cómo se debe diseñar un sitio web basado en PHP, en nuestro caso. ¿Cómo organizar sus archivos, ¿cómo organizar su lógica, de una manera que hace que sea más fácil escribir páginas web más complicadas? Y, en efecto, nos da gusto llegar con p-establecido siete. Así que en el mundo de la MVC, vas a ver que nuestro código puede general caracterizarse como sea código del modelo, o código del controlador, o vista de código. Y yo voy a simplificar en exceso como follows-- el controlador es el cerebro de su programa, que es donde todo el lógica interesante sucede. Así que todo lo que he estado escrito hasta ahora en la clase, es una especie de controlador code-- está controlando su programa, sus bucles, su condiciones, sus funciones y variables y todo eso. Vistas, ahora, van a ser un poco más evidente en el mundo de la web. Un punto de vista es la estética de su sitio web. Es lo que el usuario sees-- las imágenes, las tablas HTML, las etiquetas HTML, y todos de que, toda la estética esponjoso cosas que no es tan difícil de escribir, pero es justo lo que está generando, es el punto de vista de la llamada, la estética. Y el modelo, en última instancia, va ser stuff-- base de datos que vamos a empezar a bucear en todo cuanto más este miércoles. Así controlador es la lógica, vista es la materia estética, y el modelo va a ser donde almacenamos nuestros datos reales. Así que echemos un vistazo a esto más concretamente con el siguiente ejemplo. Voy a entrar en mi directorio aquí de la fuente de hoy code-- todos los cuales está disponible en línea. Y yo voy a ir a la versión cero. Y aquí es-- vamos a llamarlo el versión cero de la página web del CS50. No hay mucho aquí en absoluto. Es una página web muy simple que es probablemente usando lo HTML tags-- solo adivinar por ejemplos anteriores? ¿Que es eso? H1-- probablemente para ese gran negrita título, que el logotipo en la superior, CS50. ¿Y qué más está en juego? ¿Sí? AUDIENCIA: Lista desordenada. DAVID MALAN: películas-- desordenada por lo que el Etiqueta de UL y tal vez un par de etiquetas LI. Y si no te acuerdas de ellos, honestamente no importa. Estos son una especie de suave y esponjosa detalles de implementación de HTML que se mira rápidamente y que está de vuelta en su camino. Nos centraremos más en la programación ideas que son las piezas más jugosas. Así que vamos a echar un rápido mirar el HTML-- y de hecho si abro la fuente de la vista aquí, yup, Eso es exactamente lo que está pasando aquí. Hay una etiqueta de UL. Anidado dentro de eso es que las etiquetas LI. Y entonces tomé prestado de la URL del plan de estudios real aquí. Y luego en el lectures.php es aparentemente otra página generado dinámicamente eso va a tener, vamos a ver-- ah, las dos primeras semanas de la conferencia. Así que la semana cero y la semana uno, vamos a mira esto- si veo fuente de la página, también es súper simple. Estos están dando lugar a dos páginas week0.php llamada, y week1.php. Así que considera ahora lo que está sucediendo. Cuando hago clic en week0.php, mi portátil está haciendo una solicitud de week0.php. El servidor web, alias, CS50 IDE, está recibiendo el sobre virtual. Es ver un mensaje como, obtener week0.php. Luego está interpretando el archivo, la parte superior a abajo, de izquierda a derecha- el archivo llamada week0.php-- y escupiendo los resultados. Así que dentro de este archivo, week0.php, debe ser la lógica del controlador que está generando este código HTML, y pronto veremos eso. Pero por ahora, permítanme clic en la semana cero, y ahora tenemos los miércoles y viernes, y ahora tenemos las diapositivas lentamente de semana cero. Y se puede recordar esto desde camino de regreso cuando. Así que eso es todo lo que este sitio web está haciendo. Así que vamos a considerar cómo se hace esto. Voy a volver a la código fuente aquí, en CS50 IDE, y voy a abrir index.php. En la parte superior de este archivo es un montón de comentarios. Y luego, en el medio de este archivo, Resulta, no es código PHP que sea. Porque si usted no tiene ninguno de los etiquetas signo de interrogación PHP soporte abierto, usted es libre de poner sólo HTML. Porque lo que el PHP intérprete se supone que debe hacer, es cuando se lee este file-- arriba a abajo, de izquierda a derecha- sólo interpreta el código que ve entre los paréntesis angulares cuestionan marca. Y cualquier otra cosa que no es así reconocer como PHP, sólo escupe. Y HTML está entre las cosas se acaba de escupir. Así que este archivo podría tener ha llamado index.html, pero estoy nombrando todo dot PHP como un trampolín. Lectures.php-- similar decepcionante, es sólo algo de HTML. Week0.php, de manera similar sólo algunas HTML. Pero ahora vamos a poner en el sombrero de la ingeniería proverbial, y considerar cómo podemos mejorar esto. No es difícil de hacer esto, pero yo tipo de degenerado en copiar y pegar. Y de hecho, si hago la semana dos, Sé lo que estoy probablemente va a hacer? Voy a ir a week1.php, estoy va a poner de relieve todo. Voy a copiarla, pegarla en un nuevo archivo llamado week2.php, ajustar algunas direcciones URL, y estar en mi camino. Así que en base a lo que hemos visto en C ya, este no se siente bien, es de esperar. Copiar, pegar raramente la solución correcta. Entonces, ¿qué podemos empezar que hacer para mejorar esto? ¿Dónde están las oportunidades para un mejor diseño? Por el momento tengo la oportunidad de semana ocho, que va para ser realmente molesto si quiero cambiar la fuente de cada uno de mis páginas, o si quiero para cambiar la estructura de la distribución. Entonces, ¿dónde está la oportunidad para un mejor diseño? Bueno, vamos a considerar lo que es compartida a través de todos estos archivos. He aquí la semana uno, aquí está semana cero, aquí está lectures.php, aquí está index.php-- lo que es lo mismo y Lo que es diferente, en términos generales, en cada uno de estos archivos? ¿Sí? AUDIENCIA: [inaudible] DAVID MALAN: OK, bueno. Así que hay un patrón, sin duda, por el que cada vez que elijo conferencia que, Que debería estar generando un página de aspecto muy similar. Y así tal vez pueda aprovechar el hecho de que en realidad, deliberadamente numéricamente indexados nuestra lectures-- si puedo poner aún más palabras en su respuesta. Y lo que es lo único que, de verdad, eso está cambiando entre semana uno-- y déjame desplácese hacia abajo por lo que es más o menos en el mismo lugar-- asi que aquí hay semanas cero, más o menos en la parte superior. Aquí está la primera semana, semana cero, la primera semana, la semana cero. OK, literalmente, si usted sabe hay un programa que sea, esto es ahora como un juego de correspondencias patrón. Entonces, ¿cuál es la diferencia? ¿Sí? AUDIENCIA: [inaudible] DAVID MALAN: Bueno, por lo que el título está cambiando, muy ligeramente. Zero va, por supuesto, a uno. Lo mismo está sucediendo en la etiqueta H1. Y ni bien lo vemos con la misma facilidad, debido a que las URL son un poco largo. Pero esas URLs están cambiando ligeramente. Pero lo que no cambia es, me atrevo decir, la mayor parte de los contenidos de la page-- la etiqueta HTML es lo mismo, la cabeza es el mismo, el título es casi el mismo, el cuerpo es la misma, y casi todo lo demás que es lo mismo a excepción de esos pequeños retoques. Entonces, ¿cómo podemos ir sobre factoring algo de esto a cabo? Pues déjame propongo exactamente que en la próxima versión. Así que aquí en la versión uno, tengo el exacto mismos archivos, además de un par de los demás. He aquí index.php-- e incluso si que nunca has visto antes de PHP, ¿qué estoy haciendo, probablemente, para resolver este problema-- basado en lo que ves aquí? Sí, es que un leve compromiso? ¿No? Sí continuar. AUDIENCIA: [inaudible] DAVID MALAN: Sí. AUDIENCIA: [inaudible] DAVID MALAN: te necesito a hablar sólo un poco más fuerte. AUDIENCIA: [inaudible] DAVID MALAN: OK, bueno. Y yo think-- era difícil de escuchar usted-- pero piensa en lo que quieres decir es que las etiquetas que eran comunes en la superior, y las etiquetas que eran comunes en el abajo, ahora han sido un factor fuera, o relegado a qué archivos? Header.php y footer.php-- y vamos hacer algunos ajustes para abordar la preocupación que acaba de planteado sobre el cambio números, por ejemplo, si te he oído correctamente. Pero eso parece ser la esencia de la misma. Si había una enorme cantidad de redundancia en la parte superior de la página, y una enorme cantidad de redundancia en la parte inferior, vamos a literalmente a más destacado y cortar ese contenido a cabo, ponerlo en un file-- separado al igual que la idea de la CSS, donde un factor fuera estética muy similares, presentados en un archivo PHP punto aparte, utilice la requieren mechanism-- que es como incluyen- do sostenido que es esencialmente como decir ir agarrar el contenido de header.php, y copiar y pegar aquí. Pero lo que esto significa es que ahora en index.php, tengo esas dos líneas. En lectures.php, yo también tener esas dos líneas. En week0.php, yo también tener esas dos líneas. Así que ahora, si quiero cambiar el título de todas mis páginas, o quiero cambiar la estructura fundamental, Puedo cambiar ahora en un solo lugar, o dos de encabezado y pie de página places--, respectivamente. Ahora partida del código que debe buscar un poco más críptica, ¿verdad? Pero si se piensa en lo que la página se doing-- si estoy solicitando week0.php, al igual que en el dibujo más aquí-- cuando se solicita week0.php, ¿que significa eso? Literalmente, este archivo es solicitada por el navegador. El alias web server-- CS50 ID-- agarra este archivo, week0.php, y lee se arriba a abajo, de izquierda a derecha. En la línea uno, encuentra inmediatamente corchete abierto signo de interrogación PHP, requieren encabezado punto PHP, etc. lo que el intérprete de PHP does-- que se construye en la web servidor, porque preconfigurado por usted-- pasa automáticamente en header.php, copia el contenido, las pega aquí. Pero entonces los encuentros de intérprete signo de interrogación cerca del soporte, por lo que todo se hace pensando. Ahora que escupe a ciegas las líneas del dos al siete, porque es sólo HTML puro. Obtiene a la línea ocho, y hace que misma magia nuevo-- abrir el archivo, el acaparamiento de los contenidos, y exigiéndoles o pegándolos en ese momento o no. Pero yo sólo aludía a un error. Este es un paso parcial hacia atrás, porque si nos fijamos en header.php, He especie de cortar una esquina. ¿Qué característica le doy hasta el fin para ganar esto mejor diseño discutible? ¿Sí? AUDIENCIA: [inaudible] DAVID MALAN: Sí, tipo de cortar una esquina no trivial. Usted ha señalado que lo que estaba cambiando fue el título, el número en el título, y el número en el H1. Así que mi solución fue, está bien, vamos a cambiar el nombre de la página, y no lidiar con eso problema alguno. Así que eso es un parcial de paso hacia atrás con seguridad. Pero lo que es digno de mención aquí es que lo que he hecho aparece como un factor de otro modo toda la cosa común. Y en footer.php, noto que factorizada fuera de todo eso, aunque sea menor, cosas comunes. Así que tengo que de alguna manera ahora podrán dar un paso más, y fijar que las cuestiones de título. Así que vamos a hacer eso. Déjame ir a mi segunda versión aquí, que, de nuevo, tiene los mismos archivos a excepción de una nueva adición. Y es un poco más detallado, pero vamos a ver si nos puede desmenuzar lo que está pasando aquí. Así que en lugar de exigir header.php y footer.php, Parece que estoy sólo requieren un file-- llamada, por supuesto, helpers.php. Y permítanme estipulo ahora, lo que hay dentro de helpers.php es sólo un montón de funciones que me escribió, al igual que antes. Pero lo llamé helpers.php. Ahora, aparentemente, en línea de tres y 10, estoy llamar dos functions-- render cabecera, render pie de página. Aquellos no vienen con PHP, escribí aquellos mí mismo. Y yo los puse en helpers.php. Ahora, sólo hemos visto esta sintaxis una vez, y fue muy breve. Pero esto es al parecer un argumento para hacer de cabecera, la función. ¿Por qué lo sé? Bueno aquí hay un cierre paren, he aquí un paren abierta. Y, por supuesto, al igual que en C, cualquier cosa entre los paréntesis es un input-- o un argumento de la función. ¿Cuál es el tipo de datos de este argumento, basándome en lo que he destacado? ¿Qué hacen los corchetes indicar, sobre la base de la semana pasada? Sí, es una array-- específicamente una matriz asociativa. Y esta sintaxis es cierto es un poco raro, pero esto es sólo pasando en un par de valores clave. La clave es, entre comillas título, y el valor es CS50. Si hubiéramos hecho esto en C, puede ser que en lugar mira más bién esto, simplemente entre comillas CS50-- o en realidad sería rizado llaves, o algo por el estilo en C, donde la clave es cero, y el valor es CS50. Pero, de nuevo, en PHP, aunque el sintaxis es, de nuevo, un poco raro, que le permite pasar de palabras en lugar de números asociar teclas con los valores. Entonces, ¿qué significa todo esto? Si entro en helpers.php, echemos un vistazo a esta función. renderHeader.php, en vez renderHeader es mi función, y sé que porque veo la palabra clave function aquí. Esto es nuevo desde C-- aparentemente toma un argumento llamado data-- pero podría haber llamado a este nada, pero lo llamé de datos, sólo para ser un poco clean-- y simplemente tomar una conjetura, especialmente si usted ha programado en alguna otra alto nivel de lenguaje de antes, algo por encima de C, conceptualmente. ¿Qué soporte abierto iguales corchete probablemente significa? O ¿qué puede significar? No hemos visto esto en C. Sí? Una matriz vacía. Específicamente, esto significa que si el usuario no llama renderHeader con un argumento, todavía voy tener una discusión llamada de datos, pero su valor por defecto es va a ser una matriz vacía. Así que es sólo un bonito conveniencia. Yo no tengo que gritar en el usuario, o decir que utilizó mi función equivocada. Yo sólo puedo dar al usuario una forma predeterminada valor, si no sobre todo importa. Ahora esta función, estoy va a agitar las manos en. Pero esta función extracto permite que pasemos estas variables en los datos en header.php de la siguiente manera. Y esta es la última pieza, Creo que, de la sintaxis funky. Aquí está mi nueva versión de header.php-- que solía decir, literalmente, abierta título soporte CS50, y eso fue todo. Y lo mismo para el H1. Ahora, al parecer, dice algo bastante cobarde. Y permítanme simplificar este por un momento de la siguiente manera. Esto es lo que tengo cambiado mi título de ser. Sin embargo, se está haciendo un poco fea a los soportes permanentemente abiertos con PHP, y luego usar la función de impresión. Resulta que PHP tiene una taquigrafía notación para esto, que es justo un signo igual, que es técnicamente una función llamada eco en lugar de impresión, pero es la misma cosa, con eficacia. Eso sólo se ve mejor. Es sólo una sintáctica azúcar, si se quiere, eso hace que mi código de mirar un poco mejor. Pero resulta, y vamos a ver esto de nuevo en poco tiempo, tenemos que llamar a este molestamente función a largo llama HTML caracteres especiales en PHP, porque resulta que hay ciertos insumos que el usuario podría darnos, o que los usuarios nos pueden dar, que van a romper nuestro sitio. Pero vamos a ver que el próximo semana con JavaScript. Pero, por ahora, sólo sé que este archivo, headers.php, simplemente toma el título que Pasé en, que hacen asegurarse de que es seguro para ser inyectada en una web página, y lo escupe como mi título y como mi H1. Así que si entro en esta versión ahora, notar que las conferencias tiene su título de nuevo, semana cero tiene su título de nuevo, y de hecho, el HTML estoy generando es idéntico a lo que mi primera versión era-- excepción de mi espacio en blanco, porque yo he empezado a formatear mi código un poco diferente. Pero he generado todo el código que me importa. Así que permítanme hacer una pausa para un momento y ver si hay alguna pregunta o confusión que he creado. Muy bien, así que vamos a torcer un poco más difícil aquí para ver si hay una oportunidad de mejora. Helpers.php también tenía este función, llamada renderFooter. Y lo que es digno de mención acerca de renderHeader, y renderFooter? Y de nuevo, para los propósitos de hoy, saber que la función extracto es sólo mi manera de pasar argumentos en header.php y footer.php. ¿Apenado? AUDIENCIA: [inaudible] DAVID MALAN: Sí, yo sólo cambiaron la requieren línea. Así que, literalmente, he cometido el pecado de copiar y pegar, una vez más. No es un número enorme de líneas, pero vienen en-- si estoy copiando y pegando todo sólo para cambiar una pequeña palabra, y la pequeña palabra que señala Alan out es pie de página aquí, frente a la cabecera aquí. De lo contrario, todo es idéntica, a excepción de, por supuesto, los nombres de la función. Entonces, ¿qué podríamos hacer mejor? Pues déjame abro esta versión aquí, por lo que en helpers.php, ¿por qué no acaba de obtener un poco más inteligente sobre esto? Escribir un poco más complicado código, pero lo llaman render? Así que ¿qué he cambiado fundamentalmente? Se necesita un argumento ahora-- dos argumentos, los datos todavía. Y entonces, ¿qué es lo primero nombre probablemente se utiliza para, sobre la base de lo que estás leyendo aquí? Incluso si algunos de la sintaxis es todavía nuevo. ¿Qué es el dólar plantilla de señal? ¿Apenado? AUDIENCIA: Encabezado o pie de página. DAVID MALAN: Encabezado o pie de página. Así que al parecer, decidí que si lo único que está cambiando es lo que la plantilla que quiero a print-- y por la plantilla Quiero decir que es modelo para código que quiero de salida, pero quiero conectar de alguna values-- por lo que si es sólo la cabecera o pie de página, ¿por qué no parametrizar eso y llamar el signo argumento dólar ¿modelo? Y luego esta sintaxis cobarde me permite para crear un camino en una variable aquí. Así senda signo del dólar es una variable. ¿Qué significa esta sintaxis hacer, si está familiarizado? ¿Sí? AUDIENCIA: [inaudible] DAVID MALAN: Exactamente. Si la plantilla es, entre comillas, cabecera, o si la plantilla es, entre comillas, pie de página, esa línea no que yo he destacado, la línea ocho, es simplemente tomar ese nombre, como cabecera, y concatenar con PHP punto. Así que no teníamos este operador en C. Este operador punto es una cosa increíble en PHP-- si estás familiarizado con JavaScript o Java, puede utilizar el signo más firmar hacer concatenación. En C, que es un dolor en el neck-- y lo siento mucho, en el set-p seis, usted va a tener que hacer esto-- es un dolor en el cuello para concatenar cadenas. ¿Por qué? Bueno, porque si tienes una cadena que es este largo, y otra cadena que es este largo, no se puede simplemente conectarlos juntos. ¿Qué lugar tiene que hacer en C? ¿Sí? AUDIENCIA: [inaudible] DAVID MALAN: Tienes que malloc memoria, o utiliza una matriz en la pila. Y de hecho tienes que hacer esa serie lo suficientemente grande para adaptarse a esto además de esto, además de la barra invertida cero. Entonces concatenar juntos utilizando revuelva gato o de forma manual con un bucle for, o cualquier número de técnicas. Y te mostramos un par de p-set seis. Es un dolor en el cuello. Y esto es realmente lo que quiero decir acerca de este frente esto-- como C en comparación con PHP. Usted acaba de conseguir mucho más funcionalidad de forma gratuita, de modo que usted pueda centrarse, idealmente, en la diversión parte de codificación, el proyecto que desea resolver, más que el bajo nivel de minucias. Así que esto sólo genera header.php o footer.php basado en cuál me llamo. Y de hecho si me voy en index.php, previo aviso todo lo que se transformados, en lugar de llamando render encabezado o pie de página render, Voy a llamar a rendir, seguido por el nombre de la plantilla que yo quiero hacer. Y verás esto, también, en el problema de establecer siete, por el que permitimos que le permite utilizar el misma función para hacer racimos y racimos de diferentes páginas web. Así que en lugar de insistir demasiado mucho más en esos details-- que verá de nuevo en conjunto de problemas seven-- veamos en ahora el comienzo de una solución de a un problema más interesante. Hasta aquí, nada que hemos hecho tiene datos guardados. De hecho, la única vez que he jamás salvó algo que hemos hecho en esta clase es cuando tuvimos una demostración muy simple rato espalda, por el que se utilizó el archivo IO en C, y creo que he escrito en mi nombre, y El nombre de Hannah, y el nombre de María, o tal vez el nombre de Andy, y entonces nos ahorramos un file-- CSV separados por comas archivo de valores. Y utilizamos fopen-- Creo utilizamos fprintf por lo que recuerdo, y nos ahorramos un archivo. Ahora, que es el más simple forma de una base de datos. Si usted quiere hacer un sitio web para la Programa Frosh mensajes instantáneos, mediante el cual estudiantes de primer año puede inscribirse en un deporte, lo ideal querer hacer algo con esos datos. La semana pasada, no hicimos nada con el data-- que acabamos de decir, está registrado, no realmente. O tal vez me escrito el supervisor, y eso fue todo. Pero sería bueno si pudiera dar ese supervisor un archivo CSV, como un archivo de Excel. O mejor aún, que lo haría sería bueno si pudiera poner los nombres de los usuarios y dorm nombres y todo eso en una base de datos que Sólo vive para siempre, hasta que yo decida eliminar los datos. Una base de datos que permite mí para consultar información. Y de hecho, eso es lo que es una base de datos. Introducimos hoy, y la semana que viene, también, una tecnología llamada SQL-- una consulta estructurado El lenguaje, que es otra lengua. Básicamente se trata de una programación idioma, pero para bases de datos. Y una base de datos por ahora, sólo pensar como una versión super lujoso de Microsoft Excel o Google Las hojas de cálculo, o números de Apple. Por lo general es un programa que permite que le permite almacenar un montón de datos en filas y columnas, bastante como usted puede ser que en Excel. Pero lo que es bueno, especialmente si no estamos muy familiarizados con Excel, lo SQL le permite hacer es esta consulta información escribiendo líneas de código donde se puede, incluso si su base de datos tiene un millón de filas en el mismo, se pueden encontrar cosas muy rápido. De hecho, Excel es particularmente malo en grandes conjuntos de datos. Y de hecho, hasta unos pocos Hace años, resultó Excel sólo permitirá almacenar hasta 65.535 filas de data-- que suena como mucho, pero al tiempo yo era un estudiante de posgrado, y recuerdo tropezar esto porque me estaba generando Archivos CSV para mi investigación y me querido analizar de forma rápida con sólo abrir en Excel. Por supuesto, mi equipo simplemente se estrelló, porque tenía más de 65.000 filas. Pero ¿de dónde la 65535 viene? ¿Qué estaba haciendo Microsoft, es de suponer? Si eres bueno con las potencias de dos? Sí, ellos estaban usando una de 16 bits valor para representar el número de fila. Y dos a 16 es 65,536-- menos uno, porque si índice cero significa que fue el mayor número de filas que pudiera tener. Y fue una decisión de diseño. Al ahorrar 16 bits, me limitan 16.000 filas, en lugar de 4 mil millones, que podría haber tenido idealmente. Pero por ahora, vamos a introducir esta más en un contexto web. Y lo que es bueno de SQL es que incluso aunque es bastante potente y bastante sofisticado, que realmente se reduce hasta cuatro operaciones fundamentales, cuatro funciones clave, si Voluntad-- seleccione, para la recuperación de datos, la búsqueda para los datos; borrar o eliminar datos; inserte para añadir filas a la base de datos; y actualización. Así que si alguna vez has usado Google Hojas de cálculo, números de Apple, Microsoft Excel, se ha ejecutado, lo más probable, todo de estas operaciones como un ser humano por simplemente usando el teclado y mouse-- la inserción de datos, el uso de sus ojos para seleccionar o buscar datos, o los datos de actualización o supresión de datos. Entonces, ¿qué significa esto? Bueno, pre-instalado en CS50 IDE es un programa llamado MySQL. Es una, libre de código abierto base de datos que es súper popular. Facebook, por ejemplo, la utiliza para este día, entre otras herramientas que utilizan. Y un montón de sitios web muy populares utilice en gran parte porque es rápido, y porque es gratis. Aunque sin duda existen alternativas. Y algunos de ustedes podrían incursionar con alternativas para los proyectos finales. Esta es una captura de pantalla, por su parte, de una herramienta basada en la web llamada phpMyAdmin. Es una coincidencia que esta herramienta basada en la web es también escrito en un lenguaje, PHP, pero, ¿qué se supone que debe hacer es darnos una basada en la web interfaz a una base de datos. Debido a que MySQL es típicamente algo, históricamente, se sería interactuar con solamente con una línea de comandos. Y sería estupendo molesto y arcana tener teclear comandos de texto para seleccionar datos, insertar datos y eliminar datos. Así que algunas personas en la internet escribió un programa basado en la web que sólo háganoslo gestionamos los datos en nuestra base de datos. Es como hacer doble clic en Excel y que ejecuta una versión basada en la web de la misma. ¿Y qué vas a utilizar esto para en última instancia, la próxima semana, no en p-set de seis, sino que es para construir algo llamada CS50 Finanzas, que va a tener una base de datos usuarios, con los nombres de usuario y contraseñas, cantidades de dinero que tienen en sus cuentas bancarias. Va a ser algo que se utiliza para almacenar los símbolos y las cantidades de las poblaciones que los usuarios de han comprado usando virtuales dólares que le vas a dar a ellos. Y que va a permitir a los usuarios para registrarse en su sitio, por lo que incluso sus amigos puede sintonizar a su sitio web y en realidad inscribirse, tienes que entrar y jugar y tratar de encontrar fallos en su código, y tratar de encontrar errores en su sitio web. Y ellos simplemente van a registrar por añadiendo a sí mismos, de manera efectiva, a través de código que se escribe en la base de datos. Por ejemplo, esta es una captura de pantalla rápida de lo que una base de datos podría ser similar. Esto era de una de solutions-- del año pasado esto es como un mini Excel presentar, almacenada en nuestra base de datos, almacenada en este software llamado MySQL. Por el lado de la mano izquierda, tengo aparentemente dado a cada usuario un número único. En la segunda columna, me he dado todos un usuario nombre-- mi propia entre ellos. Y en el lado derecho, Yo les he dado un hash. Ahora bien, esto es en realidad una contraseña, pero no es una contraseña de texto sin formato. Es una contraseña encriptada, si se quiere, o un hash de la contraseña. ¿Qué vamos a volver al poco tiempo. Pero si alguna vez has leído un artículo sobre cómo su contraseña en algún banco o alguna página web podría haber sido comprometida, por lo general, puede significar una de dos cosas. Así que esto es sólo un extracto de seis usuarios. Todos ustedes pueden ahora calcular a cabo a través de la piratería o formación de grietas lo contraseñas nuestros seis de la gente son. Pero si alguna vez has conseguido una alerta o una disculpa de una empresa o sitio web refrán, lo siento, un hacker entró en nuestra base de datos, probablemente debería cambiar su contraseña, lo que podría significar eso? Bueno, uno, podría significar la empresa ha sido más estúpido, y ha sido el almacenamiento de la contraseña en una columna de este tipo, sin cifrar. Lo que significa adversario, que robó la base de datos, sabe, literalmente, su nombre de usuario y contraseña. Ese es el peor escenario posible. Y como se verá en el p-set siete, tan fácil de evitar. No hay absolutamente ninguna excusa para que forma de estupidez en el Internet de hoy. Dos-- y lo encontraremos algunos artículos para dar testimonio del hecho de que esto todavía sucede, nonetheless-- dos, tal vez el adversario robó esta versión de la base de datos. Que todavía está un poco mal, porque ahora ellos saben que yo tengo seis clientes, Conozco los nombres de usuario de esos seis clientes, y sé que el cifrado versiones, o las versiones hash, de contraseñas esos seis de los clientes. Pero cualquiera de ustedes que podría haber hecho [? Hacker 2?] donde agrietado contraseñas, o tomaste Una mirada a esa versión del problema set, ¿por qué es todavía un poco preocupante si el adversario sabe su picadillo contraseñas? AUDIENCIA: Debido a que pudieron entrar en todo el diccionario en la función de hash. Y si la contraseña es un diccionario palabra, [? que sólo puede match--?] DAVID MALAN: Exactamente, el adversario puede simplemente escribir código, al igual que algunos de ustedes hizo por [? Hacker?] 2, por el que usted iterar sobre todas las palabras en el diccionario, o todas las posibles combinaciones de A a la Z y uno a través nine-- que suena a mucho, y lo es. Pero para un equipo, es bastante maldito rápido. Y, de hecho, esa fue la Punto de [? Hacker 2,?] Era tomar las cosas que se ve literalmente así, y técnicas de ingeniería inversa lo que realmente era. Así que vamos a ver cómo podemos almacenar esta manera más eficiente. Resulta que, por suerte en MySQL, no van a ser los tipos de datos. Y una de las partes divertidas sobre diseño de base de datos, para ser honesto, es en realidad decidir por sí mismo ¿cómo debe representar los datos? En caso de que representan un número de teléfono como un int, al igual que un número grande, o un largo? ¿O es que en realidad lo hace como una secuencia de caracteres? Y no puede ser muy impactos no triviales de este. De hecho, una de las primeros, historias divertidas germano es cuando Mark Zuckerberg estaba construyendo Facebook, que fue escrito originalmente en, y aún así está escrito principalmente en PHP. Y uno de los mayores retos se enfrentaron desde el principio fue la ampliación. Cuando siguieron añadiendo escuela después la escuela después de la escuela, que yo sepa, una de las soluciones originales era esencialmente para copiar y pegar algunas de las bases de datos y una parte del código, de manera que era Harvard que se ejecuta en su propio servidor, y el MIT se ejecuta en su propio servidor. Y esta era la razón, para algunos de ustedes que puedan recordar, no se podía tener amigos en otras redes. Es probable que no tiene amigos en MIT o Harvard hace 10 años más o menos, pero no se podía abarcar redes por parte esa razón. Y uno de los mayores retos para Mark y para empresas como Facebook es en realidad el manejo de cientos y miles y millones de solicitudes por segundo. Así las cosas vamos a empezar hablando de esta semana son realmente va a ser afín a escribir buen software, y popularmente herramientas exitosas que puede manejar una gran cantidad de usuarios. Así que vamos a hablar de las cosas como la indexación y búsqueda, pero eso es todo por hoy. Veremos por más el miércoles ti. [MÚSICA - TEMA "Seinfeld"] DAVID MALAN: Usted puede a , y restar de ella. Y usted no tiene que pegarse con una cierta cantidad predeterminada de memoria. Bueno, ¿qué es eso va a llamar? ALTAVOZ 1: Bueno, ¿qué está pasando? ALTAVOZ 2: ¿Qué quieres decir? Él está dando una conferencia. DAVID MALAN: Y podemos utilizar un función llamada malloc a memory-- ALTAVOZ 1: ¿Por qué no se están moviendo sus brazos? ALTAVOZ 2: Bueno Eso es-- ya sabes, eso es normal. Es igual que él acaba de grandes salchichas colgando allí. ALTAVOZ 1: Eso es normal? ALTAVOZ 2: Sí, creo que simplemente asumir que accidentalmente reemplazado su desodorante con superglue.