>> [REPRODUCCIÓN DE MÚSICA]
>> DAVID MALAN: Este es CS 50, y este es el comienzo de la semana nueve.
Y lo que nosotros pensamos que lo hacemos hoy no es sólo cerrar el capítulo de la semana del pasado
material de donde nos centramos en el servidor programación web lateral con PHP y SQL,
un poco de materia de base de datos.
Hablaremos un poco de hoy de seguridad y luego
transición a una programación del lado del cliente lenguaje conocido como JavaScript.
Pero primero, un poco de redención.
>> Usted puede recordar que en Miércoles, me dispuse
para escribir una página web que tomó en la entrada del usuario
por un formulario HTML que luego se almacena que los nombres de entrada del usuario, teléfono
números, y el teléfono celular portadores en la base de datos.
Y luego tuve un poco de orden script de línea escrito en PHP
que se suponía que iterar sobre las filas en la base de datos
y enviar mensajes de texto.
A pesar de varios, de varios intentos, nos no consiguió que el trabajo para el final.
>> Así que me pasé toda la semana de trabajo en ese código para llevarnos más allá del punto
donde lo dejamos, con lo cual todo Llegué al final del miércoles
Fue este mensaje de texto de Margo mientras luchaba,
seguido por un mensaje de texto desde otro compañero de clase, tienes esta David.
Seguido por éste, maravillosamente alentadora.
Siguió adelante, muy alentador.
Casi lo conseguí hasta entonces-- y esa es la nota que terminamos el miércoles.
Y a continuación, en realidad tal vez mi favorito, un momento después, este entró.
Maldita sea directo corriente.
>> Así que hoy, podemos solucionar este problema con una rápida mira lo que he hecho desde entonces.
Así que todo el código está disponible en línea desde la semana pasada, la semana ocho,
código fuente.
Y verás que yo pasé, y en realidad me limpié un poco las cosas.
Yo presenté un par otro características de una base de datos SQL.
Por ejemplo, en lugar de sólo hacer transportista de carbón var
como creo que lo hice sobre la marcha la semana pasada.
Yo en cambio lo definió como lo que se llama una enumeración.
>> Y algunos de ustedes han visto este como exploramos C. Enum es en realidad
una característica de C donde se puede enumerar un montón de constantes
y asignarles valores automáticos, como uno, dos, tres, cuatro
sin necesidad de números de código duro.
Así SQL admite la misma, por lo que si Tiene un campo de base de datos que sólo
querer tomar en una de finito valores, puede literalmente especificarlo
como lo he hecho allí por cuatro portadores populares de teléfonos celulares de Estados Unidos.
>> Así que hice eso.
Y he hecho una serie de cambios como así, la más importante de las cuales
era conseguir email funcionando porque el recuerdo, que este programa se basó en la cual
generalmente llamado un correo electrónico a Puerta de entrada de SMS, que es sólo
una forma elegante de decir que Verizon, y AT & T, y otras personas soportan un servidor,
por lo que si recibe correo electrónico, que convierte a SMS
y envía un texto mensaje al teléfono de alguien.
Así que si lo hice correctamente, aquí es una forma nueva y mejorada
que va a hablar con nueva y mejorada código, que
se puede jugar con línea.
Y es de esperar que mi pitido teléfono en un momento.
>> Así que en primer lugar, voy a escribir mi nombre.
En segundo lugar, yo no voy para hacer esto en esta ocasión.
Yo voy a hacer Inspeccionar Elemento.
Y esto es sólo una poca cosa, así que no lo hago
crear horas de post-producción Trabajo como lo hice la última vez.
Ahora es mi número de teléfono.
>> Voy a seleccionar Verizon.
Y aquí, vamos a centrar en este micrófono aquí, y el objetivo esta en mi teléfono aquí.
Voy a hacer clic Registro, que debe de esperar
lo puso en la base de datos.
Ahora me voy a ir a la programa de línea de comandos, lo que
retiro se llama barra de puntos texto, y cruzar los dedos.
Aquí vamos.
>> [DINGS TELÉFONO]
>> [Aplausos]
DAVID MALAN: Así que más divertido que esto-- es divertido, por supuesto, si me meto en ella.
Pero es más divertido, pensé, si creado uno de esos momentos de la película
donde como algo realmente malo ha ocurrido en el mundo,
y como todas las personas de la NSA los teléfonos móviles empiezan a sonar
con mensajes de texto alertando a este hecho.
Así que pensé en probar para recrear el mismo aquí,
por lo que no se utiliza una base de datos, I en lugar de antemano
escribió un programa que se parece a esto.
>> Este es un index.php-- y yo puse el código en línea
como bien-- que al parecer sólo hace que form.php,
usando un paradigma estilo MVC que hablar con más detalle en conjunto problema
Siete.
Esa forma es bastante simple.
Se va a someter a una archivo llamado here.php por correo.
Y está al parecer va a pedir para un nombre y un número de teléfono,
y luego a través de la llamada Seleccione el menú, que es
va a dar por lo menos cuatro portadores populares de teléfonos celulares de Estados Unidos,
y luego permitir que usted efectivamente tomar la asistencia haciendo clic aquí.
>> Y aquí, por su parte, va a pedir prestado parte del código de la última vez.
Y si usted acaba de hojear este, verás que hay
un montón de comprobación de errores.
Pero la belleza al final es que no estamos escribiendo a una base de datos en la actualidad.
Estamos hacer que sea sencillo y sólo espero que el envío de
un mensaje de texto a través de la función I escribió en los últimos días de llamadas
Texto, que está en funciones. php, que es de nuevo disponible en línea.
>> Así que si te gustaría participar en esto.
No vamos a guardar nada.
Vaya a esta URL aquí en tiempo real.
No enviarlo por el momento, pero vamos a ver si podemos tener uno de estos película
momentos en los que el teléfono móvil de todo el mundo comienza a sonar, con suerte sólo
una vez este año a diferencia de en 2011 donde este salió horriblemente mal.
Y una vez que usted va a esa dirección, usted debe ver una forma súper sencilla
que si usted tiene un nombre, un teléfono celular número, y un vehículo móvil que
coincide con la lista de ahí, ir adelante y llenar el formulario.
Pero no golpear a presentar por el momento.
>> La forma va a tener este aspecto.
Seguir adelante y escribir su nombre, número de teléfono.
Oop, alguien va por delante de la curva.
Está bien.
Bueno, todo el mundo está lleno el formulario.
Esto debería funcionar en un teléfono, también, si lo desea.
Muy bien, en sus marcas, listos, ya.
Hit Aquí.
¿Qué?
No.
Lo juro por Dios, he probado este varias veces hoy.
¿Lo tienes?
>> [Interponiendo VOCES]
>> DAVID MALAN: OK, tal vez un error del usuario.
Eso es dos.
Se trabajó para dos de cada una pocos cientos, tres, cuatro.
OK, eso es bueno.
Cuatro de cada cinco para ¿qué hay de la corrección.
>> Entonces, ¿qué ha pasado?
Así que, presumiblemente, sin ver a su pantallas, ¿Por qué podría haber muchos errores?
Es probable que estábamos tratando de hacer demasiadas conexiones
al servidor de correo de la Universidad de Harvard en todo una vez desde la misma dirección IP.
Sólo estoy adivinando ya que yo no lo hice el lujo de la prueba
este código con algunos 300 personas de antelación
pero por ahora darse cuenta de que que por lo menos debe
han conseguido el trabajo hecho en esta ocasión.
>> Muy bien, así que ¿por qué es esto todo el más afín a lo que está pasando?
Bueno en primer lugar, una rápida par de anuncios.
Así que uno, si desea unirse a Chang, y Nick, y otras personas en el almuerzo de este viernes,
hacer de RSVP en la dirección URL habitual allí.
Si usted está pensando en concentrarse o hacer una secundaria en CS,
si usted es un estudiante de segundo año, estudiante de primer año o, o incluso menor o mayor en este momento
y todavía puede exprimir en los cursos, darse cuenta de que la escuela de ingeniería
está reuniendo de forma gratuita y Ben Helado de Jerry y consejos
esto poco después de clase Miércoles a las 4:00 PM en el edificio CS
en Maxwell Dworkin.
Si esta es demasiado rápido en la pantalla, sólo tiene que ir
a cs50.harvard.edu para una enlace al evento en Facebook
donde se pueden ver más detalles.
>> Mientras tanto, yo pensaba que iba a corregir otra cosa que metió la pata el miércoles.
Resulta que ese ID de Mark en Facebook no era tres.
Eran las cuatro.
Resulta que él tenía más prueba cuentas de lo que recuerdan.
Pero lo que este se sentía como una oportunidad que hacer es tirar de una URL como esta.
>> Así resulta que Facebook tiene un API, Application Programming Interface,
que es un mecanismo mediante el cual se pueden solicitar datos mediante programación
en Facebook y volver máquina información legible, no páginas web
pero el texto sólo prima, algo llamado JavaScript Object Notation.
Y de hecho, si vuelvo a visitar esta URL, y un zoom, de forma predeterminada,
este es Mark públicamente información accesible.
>> Y el detalle interesante aquí es sólo que su ID
es de hecho, el número cuatro, que me se dio cuenta tan pronto como lo hice esta.
Puede hacerlo usted mismo si usted sabe su nombre de usuario de Facebook, si usted tiene uno.
Sólo tienes que escribir hasta arriba allí.
Y nada de esto es privado.
Sólo estoy haciendo esto incluso en el modo de incógnito.
Así que ni siquiera estoy inscrito.
Y usted está viendo que yo al parecer era el número de usuario 6454
en Facebook, que no es tan mal estos días.
Así que de todos modos, también verá información adicional allí.
>> Y el aspecto útil de que es que usted
podría escribir su propio software que de alguna manera se integra datos como éste
en su propia aplicación.
Puede permitir a los usuarios a inicie sesión en su sitio web,
no usar su propio nombre de usuario personalizada y pero tal vez su contraseña de inicio de sesión de Facebook
y obtener información incluso acerca de sus amigos,
si aprueban tales, o similar.
Así en cuenta que CS50, también, tiene algunas de sus propias APIs,
una para los datos del catálogo supuesto, algunos de los menús de abrazos en el comedor
salas, todas de la edificios y lugares
en el campus tenemos una API para así que se puede consultar de manera similar y obtener
datos textual de espalda que puede integrar en un PHP o JavaScript, o incluso,
aunque con menor frecuencia, un C basa proyecto final.
>> De hecho antes de la final proyecto son unos hitos.
Tienes un email de nosotros el otro día.
Darse cuenta de que la propuesta es debido el próximo lunes.
No es necesariamente vinculante, pero que no necesitará recibir sus compañeros de enseñanza
aprobación antes de hacer cualquier cambio a partir de entonces.
Y luego por delante son un número de otros hitos.
>> Así que para burlarse de usted, también, con algunas posibilidades,
tenemos un montón de estas bombillas Hue.
Y algunos de ustedes ahora tienen algunos de estos en su habitación de la residencia también.
Y ellos también tienen una API.
Así que recordar esas semanas bulbos binarios Hace que Dan Bradley y Ansel
Duff ha creado para nosotros.
Utilizaron una interfaz de software para esta bombilla, que en este momento
está conectado a la electricidad y luego a través de wireless
está conectado a una pequeña cosa llamado el Puente de aquí abajo,
como un pequeño propietario del router a este dispositivo particular.
>> Pero resulta que si sé cómo enviar mensajes HTTP, como todos lo hacemos ahora,
Puedo enviar un mensaje como este a esta bombilla para encenderla o apagado
o hacer cualquier número de otras operaciones en él.
Tenga en cuenta que no es llegar, no es POST.
Hay otra que se llama put.
De hecho, hay algunos otros tales verbos.
Pero note que hay un camino allí, slash API, recortar nuevo desarrollador,
reducir la luz, recortar uno, slash estado.
>> Eso es al parecer sólo el camino que la compañía, Philips,
decidió usted tiene que golpear con una petición HTTP
si usted quiere cambiar el estado de la bombilla utilizando HTTP 1.1.
Luego note la línea en blanco.
Y luego, por último, lo que parece clase de una gran variedad de una especie,
esta vez va a ser llamado JavaScript Object Notation, o Jason.
Y lo que se ve aquí es que hay tres pares de valores clave.
>> Una de las claves está llamada.
Y su valor aparentemente va a ser verdad.
El brillo es 128, el cual es una especie de int.
Y entonces el tiempo de transición es cero, que es aparentemente
cuánto tiempo va a tomar para convertir esto en algo.
>> Así que ahora mismo esta bombilla está apagada.
Pero si lo hago exactamente esto-- dejar me voy a una hoja de trucos poco
que Dan creó en advance-- y voy
seguir adelante y copiar el siguiente comando.
Curl, como algunos de ustedes podría haber recogido en CS50
Discutir es una utilidad como Telnet, tales que puede simular las peticiones HTTP,
pone específicamente.
Puedo enviar estos datos, específicamente lo que acabamos de
vimos hace un momento concreto a esta URL aquí.
Y luego Curl va a manejar todas las cabeceras necesarias
y analizar de allí.
>> Así que todo lo que tengo que hacer es copiar esto en una ventana de terminal y luego pulse Enter.
Y la bombilla se enciende.
Y todo esto está pasando por mi equipo de manera inalámbrica
de alguna manera hasta el puente, que entonces está hablando con esta bombilla.
Yo puedo hacer otra cosa.
Puedo hacer esta cosa ir de color rojo, por ejemplo.
Por ejemplo que puedo hacer esta cosa ir verde.
Yo puedo hacer que se vaya azul.
>> Y note en cada uno de estos casos, todo lo que estoy cambiando
es el llamado valor de matiz a realmente darle un poco de color.
Así que permítanme pega este uno adentro también.
Ahora es el azul.
>> Y usted puede hacer aún más elegante cosas where-- Vamos a ir a verde.
Y yo podría hacer esto de por supuesto con mi propio código.
Pero incluso la propia API apoya las operaciones de funky
como este, que ahora se molestarán nosotros durante los próximos 30 segundos.
>> Así que eso es una muestra de lo que te pueden ver con una API, el cual involucró a
bombillas.
Tenga en cuenta que CS50 tiene un par pares de Google Glass Si desea
gustaría para hacer frente a algo a lo largo esas líneas, Arduino Unos, que
son diminutos ordenadores, esencialmente, en una placa de circuito pequeño
que se puede conectar cables y otras cosas
para el control y de hecho su entorno real.
Y luego hay un par de juguetes nuevos que tenemos.
Éste literalmente acaba de llegar el otro día por correo, una Myo brazal.
Y yo que pensaba que es una manera de que te entusiasma acerca de los proyectos
que usted puede utilizar con este hardware haría
ser para jugar este clip corto que utilizan para burlarse de la gente
que ahora estamos viviendo en el futuro.
>> [REPRODUCCIÓN DE MÚSICA]
>> DAVID MALAN: Así que en tan sólo unas semanas, usted también puede ser que fresco en la feria CS50.
Otro dispositivo que nos tienen un montón de que somos
feliz de prestar para proyectos se llama un controlador de movimiento.
Se trata de un pequeño dispositivo USB se conecta a un equipo que
le permite interactuar con su computadora portátil, Mac o PC,
como si usted tenía como una Xbox Kinect y en realidad hacer movimientos físicos mucho
como vemos en este visión del futuro.
>> [REPRODUCCIÓN DE MÚSICA]
>> DAVID MALAN: Así que incluso si usted tiene ni idea de cómo algo así
posiblemente podría ser inventado o trabajo a nivel de hardware, no importa.
Incluso después de sólo unos meses de CS50, y una comprensión de la programación
más en general, y la programación web más Recientemente, y luego también las API, y HTTP,
usted tendrá acceso a través de API de software si
no quieren pedir prestado uno de estos dispositivos que hablar con él
y no tener que preocuparse de la implementación subyacente
detalles, que es completamente en consonancia con esta noción de estratificación
una abstracción que hemos visto a lo largo del semestre.
>> Así también el fin de semana, vimos un par de piezas de noticias.
Vaya en primer lugar, ir a seminarios si le gustaría aprender algo
más en cualquier número de temas.
Ver la URL allí.
Y éste fue enviado a yo por Chang, que ya sabes,
que está imprimiendo a nuestro ejército de elefantes.
Y era un titular como sigue.
Estoy aterrorizada de mi nuevo televisor.
¿Por qué tengo miedo de convertir este cosa en la que usted y sería demasiado.
Así que ahora estamos en el apuntar en el semestre,
también, donde incluso si usted tiene la menor de entendimiento
de cómo funciona la web, y HTTP, y de seguridad, este tipo de cosas
debe comenzar a captar su atención.
Pero también, vas a entender si estas cosas son o no son
las amenazas reales.
>> Así que tomé algunos extractos de este artículo aquí.
Y la historia es la siguiente.
Ahora soy el dueño de una nueva televisión inteligente, que
promete entregar en streaming contenidos multimedia, juegos, aplicaciones,
medios de comunicación social y de Internet navegación, ah y la televisión también.
El único problema es que estoy ahora miedo de usarlo, dice el autor.
Usted sería, también, si usted lee a través de el 46 página política de privacidad para su televisor.
La cantidad de datos de esta recoge cosa es asombrosa.
Registra dónde, cuándo, cómo, y por cuánto tiempo se utiliza el televisor.
En él se establecen las cookies de rastreo, como hemos discutido,
y faros diseñados para detectar cuando se tiene
contenido particular visto o un mensaje de correo electrónico en particular
si desea consultar el correo electrónico en su televisor.
Registra las aplicaciones que utilizar, los sitios web que visita,
y la forma de interactuar con el contenido, haciendo todo esto a través de su televisión inteligente.
También, yet-- espeluznante esa es mi addition--
tiene una cámara incorporada con reconocimiento facial.
>> El propósito es proporcionar control de gestos para la TV
y le permiten iniciar una sesión en cuenta utilizando su rostro personalizado.
Por el lado positivo, las imágenes son guardado en la televisión en vez de subida
a un servidor de la empresa.
En el lado negativo, el Internet conexión hace que toda la TV
vulnerables a los hackers que han demostrado la capacidad
tomar el control completo de la máquina.
>> Más preocupante, como si eso no fuera lo suficientemente inteligente, es el micrófono.
El televisor cuenta con una voz función de reconocimiento
que permite a los espectadores a controlar la pantalla con los comandos de voz.
Pero el servicio viene con una advertencia en lugar de mal agüero.
Tenga en cuenta que si sus palabras habladas incluyen
personal u otro sensible información, que la información
será uno de los datos capturados y transmitida a un tercero.
Consiguió que?
No digas personal o confidencial cosas en frente de su televisor.
>> Así que esto es en realidad de verdad.
Y es difícil no ver si ir a Best Buy o similar para televisores
en estos días.
Todos son inteligentes, de alguna manera.
Y que van a obtener más inteligente y más espeluznante.
Y están simplemente la recopilación de datos de manera que las que hemos hablado
y luego subirlo a través de HTTP o algún otro protocolo a algún servidor.
>> Así que este era de un artículo de la diversión en este sitio web en línea
aquí, que hablaban de un particular, error o código equivocado
que en realidad podemos atar en el debate de la semana pasada.
Así que este título era como sigue, la historia va aquí,
Josh Breckman trabajó para una empresa que obtuvo un contrato
para desarrollar una gestión de contenidos sistema, o CMS como se les llama,
para un sitio web del gobierno bastante grande.
Gran parte del proyecto consistió en el desarrollo de un sistema de gestión de contenidos
para que los empleados serían capaz de construir y mantener
el siempre cambiante contenido para su sitio.
Las cosas fueron bastante bien para pocos días después de ir en vivo.
Pero en el sexto día, las cosas no iban tan bien.
Todo el contenido de la sitio web se había desvanecido por completo.
Y todas las páginas llevaron a la omisión, por favor entrar en la página web de contenido.
¡Vaya.
Josh fue llamado para investigar y se dio cuenta
que uno particularmente problemático dirección IP externa tuvo
entrado y eliminado todos el contenido en el sistema.
>> La dirección IP no pertenecía a algún extranjero doblada pirata informático
en destruir útil la información del gobierno.
Se resolvió googlebot.com, Muy propia web de rastreo de araña de Google.
¡Vaya.
Después de un poco de investigación y codificación alrededor para encontrar una copia de seguridad no corrupta,
Josh encontró el problema.
>> Un usuario había copiado y pegado algo de contenido de un
página a otra, incluyendo una Modificar hipervínculo
para editar el contenido de la página.
Normalmente esto no sería una problema ya que un usuario externo haría
que tenga que introducir un nombre y una contraseña, pero el sistema de autenticación de CMS,
el sistema de inicio de sesión, no tener en cuenta
piratería informática sofisticada técnicas de araña de Google.
¡Vaya.
>> Como resultado, Google Araña no utiliza
cookies, que significa que puede pasar por alto fácilmente un cheque por la
se registra en el conjunto de la galleta es falsa.
Asimismo, no presta atención a JavaScript, lo que haría normalmente
impulsar y redirigir a los usuarios que no se ha autentificado.
Sin embargo, sí sigue cada hipervínculo en todas las páginas que encuentra,
incluyendo aquellos con Eliminar página en el título.
¡Vaya.
>> Entonces, ¿qué significa esto en la más términos técnicos, pero bastante accesible?
Sólo significa que a través de su página web,
tenían direcciones URL no a diferencia de éste que usted puede ser que vea en un problema establecido siete.
Recordemos en problema establece siete o sabe de problemas en siete
que supone un reto, entre otras cosas,
para vender acciones en nombre de los usuarios.
Pero la aplicación de esta función por medio de obtener a través de hipervínculos en su usuario
interfaz, probablemente no la idea más inteligente
porque si su sitio es de alguna manera accesibles ya sea por un humano
que está haciendo clic alrededor o comprar un bot como Google o de una araña
como se les llama eso es sólo rastreo de la web tratando de índice
la web como un motor de búsqueda, que podían muy fácilmente
golpear a través de conseguir este tipo de URL.
Y eso es funcionalmente equivalente a, en este caso,
la venta de todas las acciones de Google.
>> Ahora, francamente, es completamente asnal que el CMS
usados ​​JavaScript y cookies para implementar su sistema de inicio de sesión
y no hacer que el lado del servidor, como ustedes existen y que en PSet 7--
hay un login.php file-- siempre, siempre,
siempre la seguridad debe ser hecho en el lado del servidor,
no en el lado del cliente, ya que, como este artículo sugiere y es posible que usted mismo
ver en algún momento, es trivial para un usuario, bueno o malo,
que sólo tiene que desactivar JavaScript por no hablar de las cookies.
Así que ese es su WTF diario.
>> Hay uno más, lo que es sólo un poco de miedo,
así que voy a mencionar que si sólo como una lección de vida.
Cada vez que se utiliza una aplicación llamado como Snapchat o similar
que dice que estas fotos sólo duran cinco segundos, diez segundos, o lo que sea.
Son efímeros Eso es absolutamente no es el caso.
Al igual que no hay forma, digitalmente, para poner en práctica alguna forma de vídeo,
o imagen, o textual compartir dicha que un receptor en el otro extremo
no puede de alguna manera guardar los datos.
>> En la forma más ingenua, alguien podría tomar su teléfono.
Y tienen una segunda ventana 10 mientras mira a algún complemento
que acaba de tomar algún otro teléfono y fotografiarlo, obviamente.
Así que usted puede preservar algo digitalmente de esa manera.
Algunos de ustedes saben cómo tomar capturas de pantalla en su teléfono.
De hecho, si usted no sabe esto, darse cuenta de que al menos Snapchat,
y creo que otra aplicaciones de estos días,
al menos si el decir destinatario tiene en realidad
tomado una captura de pantalla de la imagen.
>> Pero peor aún, este fue el snappening, como alguien acuñado recientemente,
donde algunos 100000 broches de presión había sido puesto en libertad
en lo que se llama un archivo torrent en varios sitios web en última instancia.
Y estos contenían un montón de mensajes privados y mensajes.
Resulta la mayoría de ellos benigna, por lo que no es lo que cabría esperar.
Pero debido a que la gente tenía usado un sitio web de terceros,
entrando con su Snapchat nombre de usuario y contraseña y, a continuación
guardar todos sus broches de presión en este sitio web de terceros.
Y fue ese tercero sitio web que fue hackeado,
que sólo significaba que alguien descubrió cómo para obtener toda 100.000 más de esas imágenes
en su propio disco duro para compartir subsiguiente.
Francamente, aquí también, es una especie de asnal que Snapchat
se implementa de tal manera que un tercero puede clasificar de intercepción
los datos y que no está ligada a su propia aplicación que se ejecuta en el teléfono.
Pero aquí, también, darse cuenta de que estos las cosas no le deben coger por sorpresa,
o por lo menos, debe haber ser una lección de vida aquí.
Si desea el técnico detalles, vaya a esa URL no
eso es en las diapositivas de hoy.
Muy bien, alguna pregunta sobre lecciones de la vida de hoy en día en CS?
A su vez que fuera.
Cualquier cosa en absoluto?
Tengo una gran cantidad de personas que se registran su Snapchat o algo ahora.
>> Muy bien, por lo que SQL, Structured Query Language.
Vamos a envolver esto.
Y también, aunque sólo estamos rascando
la superficie de este idioma, le daremos
suficiente de la lengua en forma de PSet 7
para que pueda hacer frente a algunos funcionalidad bastante común.
Pero se dan cuenta que hay un par cosas que no requerimos de ustedes,
pero que van a ser importante venir proyectos finales
y sin duda venir haciendo real sitios web con usuarios reales
Es esta decisión de diseño.
>> Resulta que en una base de datos MySQL,
tener racimos de opciones como los tipos de datos para las columnas
y otras cosas, pero también tienen la elección de una llamada de almacenamiento
motor para todos sus datos, el tipo de sistema de archivos,
si está familiarizado, para todos sus datos.
¿En qué formato se lo almacena en última instancia, en?
Y la más común, tal vez, ha sido MyISAM y InnoDB, los términos técnicos
que vamos a preocupamos sólo en la medida en que uno tiene
y uno no tiene la siguiente función.
>> Supongamos que usted tiene una pequeña nevera dormitorio.
Y supongamos que usted y su compañero de cuarto, que comparten esta nevera,
son muy aficionado a la leche por ejemplo.
Y este es, de hecho, la forma en la historia fue contada a mí camino de regreso
en el día en que tomé un curso llamado CS 161 sistemas operativos, lo que
explora de manera similar este tema.
Así que tienes esta nevera.
Estás fuera de la leche.
Y llegas a casa, su compañero de cuarto de aún en clase o lo que sea,
y decide que voy a salir y conseguir un poco de leche.
Así se cierra la nevera, el bloqueo la habitación de la residencia, ir al otro lado de la calle
a CVS o donde sea, y obtener en la fila para comprar un poco de leche.
>> Mientras tanto, su compañero de cuarto llega a casa de la clase, se mete en la habitación de la residencia,
abre la nevera, también se da cuenta ooph, estamos fuera de la leche.
Así que él o ella se cierra la nevera y luego sucede
para ir a la otra CVS, que pasa a ser
a una cuadra de distancia de los otros CVS en la plaza, y se pone en línea
Para llegar un poco de leche.
Ahora, por supuesto, unos pocos minutos más tarde, a los dos vuelvas,
y lo peor de todo es posible resultados ha sucedido.
Ambos tienen leche.
Y no lo hace realmente como la leche que mucho.
Así que uno de ellos es justo va a agriar en algún momento.
Así que ahora usted tiene una cantidad excesiva de leche en la nevera todo porque ¿por qué?
>> [Inaudible]
DAVID MALAN: Sí, no lo hiciste comunicarse de alguna manera uno con el otro
que usted estaba recibiendo la leche.
Así que en el más simple de maneras en el mundo humano,
¿cómo podría evitar este tonto escenario suceda tal
que sólo termina con uno.
Texto ellos, sí bueno.
Pero, ¿cómo si no?
Notas Post-it.
DAVID MALAN: Una nota de post-it.
Cualquier forma de comunicación que le dice a su compañero de cuarto
no entrar en la nevera para la leche.
Voy a ir a repoblar por mi cuenta.
Así que de alguna manera necesita para bloquear este recurso.
Así que podemos hacer esto-- podemos tipo de arruinar la historia y convertirse en una historia de CS
por lo que pensar en esto como simplemente como un variable, que está almacenando un cierto valor.
Y en este momento, la valor de la leche es cero,
que usted no desea que su compañero de cuarto para inspeccionar esa variable
y luego tomar una decisión de él o ella basándose en el estado de esa variable
si usted está en el proceso de cambiar el estado de esa variable.
>> Así que una de las líneas de SQL que darle en PSet especificación 7
es este de aquí.
Y no gastamos una enorme cantidad de tiempo hablando de ello.
Pero resulta que, si usted está tratando para comprar algunas acciones en las finanzas CS50
que ya tiene algunas acciones de, usted
quiero ser capaz de hacer un número de las cosas al instante juntos.
¿Quieres ser capaz de efectivamente, en un alto nivel,
comprobar bien, si quiero para comprar más acciones de gratuito,
la acción de penique que hablar en la especificación,
Quiero primer cheque el número de acciones que tengo.
Y supongo que es de cinco.
Y supongo que quiero comprar 10 más, en última instancia,
quiero tener 15 acciones.
Así que tengo que hacer dos preguntas.
¿Cuál es el estado de la variable?
¿Cuál es el estado de la fila?
¿Cuántas acciones no tengo actualmente?
Entonces usted quiere seguir adelante y actualizarlo.
Así que ese es el análogo a la leche en que compruebe la fila,
y entonces usted quiere actualizarlo porque si usted quiere comprar 10 acciones,
usted no desea cambiar la fila a 10, que
querer cambiarlo a 5 más 10 o, por supuesto, 15.
>> Esta línea de código garantiza que esas dos ideas conceptuales
ocurrir juntos o no en absoluto.
Nadie, incluyendo a algún otro usuario que ha iniciado sesión en el mismo sitio web,
de alguna manera se puede interrumpir la comprobación de la fila
y la actualización de la fila, la seleccionar y la actualización si se quiere.
Y la sintaxis no es muy obvio, pero esta línea, siempre se es,
asegura que estas dos operaciones compruebe la variable o compruebe la fila
y actualizar la fila suceda atómicamente.
>> Oh, aquí vamos de nuevo.
Mensaje de texto en mi teléfono.
Así que vamos a hacer de este un poco más concreto.
Supongamos que usted no es la aplicación de un refrigerador,
y no se está implementando PSet 7, pero un banco real,
o un cajero automático, un cajero automático Máquina, por el que usted de alguna manera
quiero ser capaz de empoderar los usuarios transferir dinero
de una cuenta a otra.
Aceptar, espera.
Voy a silenciar esto ahora, gracias.
Así que queremos mover dinero de un número de cuenta
en una cuenta diferente número, específicamente $ 100.
Así que esto es una especie de una arbitraria ejemplo, por el que usted, el cajero automático,
puede ser que desee para ejecutar dos SQL consultas, restar de una cuenta,
y añadir a la otra cuenta.
Pero usted quiere asegurarse de que éstos dos líneas tanto ocurren o no en absoluto.
Usted no quiere que algo siendo interrumpido.
Usted no hace algo de malo de la película inteligente de alguna manera que se coloca en el Bank of America
con dos cajeros automáticos delante de él y de alguna manera
especie de escribir en el comandos al mismo tiempo,
con suerte tratando de deducir $ 200 en lugar de $ 100 y sólo tiene $ 100 acreditados.
En pocas palabras, usted quiere que esto comportarse exactamente como usted espera.
>> Y la forma de hacer esta base de datos en SQL es
que se coloca en lo que es llamado una transacción.
Literalmente en SQL, puede llamar CS50 de función de consulta con cita inicio fin de la cita
transacción.
A continuación, puede ejecutar cualquier número de consultas SQL subsiguientes,
pero ninguno de ellos toma efectuar sobre la base de datos
hasta que llame consulta entre comillas comprometerse, si de nuevo usando PHP.
Y de esta manera, usted puede asegurarse de que incluso si usted tiene 1.000 usuarios de todo
golpear a su base de datos al mismo tiempo, SQL
le prometo que estos dos consultas serán
implementado una tras otra.
Así que usted no termina con el exceso de leche o la cantidad equivocada, en última instancia,
de dinero.
>> Así que tenga esto en cuenta, no tanto por PSet 7
pero para proyectos fin de carrera si eres realmente
tratando de mover los datos en torno a a través de las tablas como puede ser que aquí.
Pero quizás aún más simple y más obvio para entender con un ejemplo
es este de aquí.
Y alguien nos envía por correo electrónico acerca de esto el otro día
cuando vio algo similar en línea.
>> Así que, que yo sepa, el sistema pin no es vulnerable a este ataque.
Y no tengo ni idea de si incluso usos la base de datos de SQL debajo del capó.
Pero vamos a usar para En aras de la discusión.
Aquí está la pantalla que Gente de Harvard tienden
para ver al iniciar sesión con su Número de identificación de Harvard y su PIN.
Y supongamos que el sistema de pasador fuera implementado en PHP y MySQL con un
base de datos, el código que alguien Hace años que podría haber escrito
podría tener este aspecto.
En primer lugar, declarar una llamado nombre de usuario variable.
Y así conseguir que a partir de la superglobal POST.
A continuación, obtener otra variable llamado contraseña y hacer lo mismo.
Y luego simplemente ejecutar esta larga consulta aquí,
seleccione la estrella de los usuarios DONDE nombre de usuario es igual a tal y tal
y la contraseña es igual a tal y tal.
>> Observe que el rizado apoyos que he usado aquí
sólo significa que PHP, vaya adelante y sustituto
el valor de los dos las variables justo ahí.
No son estrictamente necesarios, pero que tienden a evitar errores de sintaxis sutiles.
Así que esto parece completamente correcta a primera vista.
Y lo es.
Se podría aplicar el sistema de pasador de esta manera.
>> Pero supongamos que un super estudiante inteligente y malicioso
de entrada esto como su PIN.
Así que me he quitado la bala signos aquí en la maqueta,
y yo he hecho revelé lo que él o ella podría ser escribir.
Y es un poco extraño.
Pero lo que salta a la vista en potencialmente preocupante acerca de la entrada del usuario,
incluso si usted no tiene idea de lo que un ataque de inyección SQL significa.
¿Por qué esta mirada un poco a pescado?
Qué es eso?
[Inaudible]
DAVID MALAN: El o es un poco sospechoso.
De hecho, esa es una palabra clave de SQL.
Así que no augura nada bueno.
El hecho de que hay todas estas citas individuales
allí-- de hecho, uno de los más fáciles maneras de romper algunas bases de datos
es escribiendo un nombre como O'Reilly que tiene un apóstrofe en ella
porque si el ser humano que escribió el código detrás de las escenas
no tiene en cuenta que hay podría ser comillas simples en un usuario de
de entrada, y él o ella está utilizando comillas simples en su código,
las cosas malas pueden suceder.
>> De hecho, peor aún, considere esto.
Si esto fue de nuevo el código que alguien en Harvard años
Hace escribió para el pasador sistema, observe lo que está
a punto de ser sustituido por nombre de usuario y contraseña
si el usuario escribe en el nuevo skroob como su nombre de usuario
y después de uno, dos, tres, cuatro, cinco, cita o entre comillas uno es igual a
citar a uno.
Y note lo que es clave aquí está el usuario no ha
comenzado su contraseña o su pin con una cita.
Y no han terminado se con una cita porque él o ella
está asumiendo que si el programador no era tan aguda,
que van a tener los comillas simples en su código.
>> Así que aquí está el código.
Y que la sustitución ahora podría pasar es esto.
Y he subrayado lo el usuario ha tecleado.
Así que antes, después.
Y note lo que es ligeramente preocupante ahora sobre la mitad derecha de este código SQL?
Es un poco más complejo, hay que reconocerlo, de las consultas que hemos visto.
Pero esto no puede ser una buena cosa si usted es
diciendo seleccione estrella, que es selecto todo, desde la mesa del usuario
donde nombre de usuario es igual skroob y contraseña es igual a uno, dos, tres, cuatro,
cinco o uno es igual a uno.
¿Cuál es la implicación lógica de esa última cláusula presumiblemente?
Es sólo siempre es cierto.
>> Y porque hemos especie de adivinar o descubierto por ensayo y error
que el programador que escribió el código no lo hizo
anticipar una persona humana o malo escribir entre comillas simples, así,
podemos sintácticamente completar la consulta SQL
con algo sin sentido pero algo que
es sintácticamente incorrecta que siempre se evalúa como verdadera.
Así que si este código se utiliza para responder la pregunta verdadera o falsa debería
se permitirá a este usuario a pasar, la respuesta está siempre aparentemente va
para ser verdad, porque esto siempre va para seleccionar algo de la base de datos
porque uno por supuesto es igual a uno siempre.
>> Entonces, ¿cuál es la solución?
Bueno en PSet 7, que en realidad evitar esto todos juntos.
Le damos una función de consulta, y nosotros le animamos a usar signos de interrogación
como marcadores de posición, de forma similar en espíritu al de printf% s,
pero lo que es clave sobre los signos de interrogación aquí es si realmente lea
functions.php, donde nuestro función de consulta se implementa,
esos signos de interrogación se escaparon, por lo que nada potencialmente peligroso
como una comilla simple se activa en una cita única escapado.
>> Así que esto es lo que hay realmente está sucediendo si
utilizar la función de búsqueda de CS50 o cualquier número de bibliotecas gratuitas de terceros que
hacer lo mismo.
No importa en este caso, en verde, si el usuario ha tecleado en una única cotización
porque la consulta función que escribimos es
va a agregar barras invertidas antes dicha cotización peligroso.
Así que esto no es, en De hecho, va a ser de fiar.
Esto es como escribir en un loco buscando contraseña que es, por supuesto, no va
estar contraseña real de skroob.
>> Así que la comida para llevar para CS50 es uno, absolutamente siempre usar algo
como función de consulta del CS50 o la biblioteca subyacente,
que pasa a llamarse DOP.
Pero nunca, nunca, nunca hacer un código como este
sin escapar o fregar como dicen sus entradas.
Y en algún punto, probablemente, venir a través de un sitio web como este.
De hecho, parece ser el caso como en los aeropuertos y hoteles en lugares
donde tienen conexión Wi-Fi el acceso que usted tiene que iniciar sesión en,
estos sitios web son siempre horriblemente implementado.
Y así, una especie de diversión en ejercicio en el hogar, no con fines maliciosos o más
de una diversión en la carretera ejercicio, es que sólo tienes que escribir
un apóstrofe, una sola cita, en una forma en algún sitio web
y ver qué pasa.
Y si el servidor se cae o se da usted algún tipo de mensaje de error,
puede muy bien ser que alguien no ha previsto esta.
Y a continuación, usted debe alertar a la adecuada autoridades y no continuará.
>> Así que ahora ustedes deben de esperar entender un poco más de humor del friki aquí.
>> [Risas]
DAVID MALAN: Usted sabe que usted es un friki.
Para los próximos años, que recordarán
quien mesitas Bobby es porque de este dibujo animado aquí.
Así que tenlo en cuenta a medida que cambio de contexto por última vez
hoy para JavaScript.
Hemos pasado relativamente poco tiempo en la sintaxis de PHP
porque en realidad súper similar a C.
Y muy bien lo suficiente, demasiado JavaScript es super similar a la sintaxis de C
así como veremos en un momento, y como vamos a
ver más adelante esta semana en particular.
¿Qué se puede hacer con este lenguaje, sin embargo, es aún más potente,
especialmente con APIs.
>> Pero primero una visita rápida.
Así que uno, en JavaScript, no hay sin función principal, que es agradable.
Al igual que con PHP, usted puede escribir el código.
Condiciones ven así.
Y expresiones booleanas pueden verá así o así.
Existen interruptores, y podría tener este aspecto.
Cuatro bucles se ven así.
Mientras que los bucles se ven así.
Haga ratos tener este aspecto.
Y a continuación, las matrices se parecen esto, muy similar a PHP.
Pero note, que en JavaScript que declarar una variable no con un dólar
firmar, no con un tipo de datos, pero, literalmente, diciendo var para la variable antes.
Es también se escribe libremente en que tiene tipos,
pero no declara explícitamente.
Y luego una cadena, para ejemplo, puede tener un aspecto
así, esa cadena ser llamado s en este caso.
Y luego un objeto.
Y estos que veremos más en poco tiempo.
Y un objeto es quizás uno de los más comúnmente visto estructuras de datos
basado en un JavaScript programa porque permite
asociar arbitraria pares de valores clave sólo
como arrays asociativos de PHP y al igual que su propia tabla hash
o tratar como implementamos hace unas semanas.
Así que vamos a ver lo que en realidad que podemos hacer con JavaScript.
Y en particular, esto es una larga lista de características
que los navegadores tienen que nos permiten enganchar JavaScript
en un sitio web de la siguiente manera.
JavaScript se utiliza a menudo como un lado del cliente lenguaje de scripting.
No es compilado.
Es también se interpreta.
Pero a diferencia de PHP, que ha estado funcionando en el servidor, en el servidor web,
o muy dentro de la clientes, JavaScript
es diferente en que por lo general se ejecuta en el navegador.
>> Por lo que cualquier código JavaScript de empezar a escribir para PSet 8, o el proyecto final,
o en el mundo real que generalmente se va para ser salvado en el servidor, absolutamente
HTML en un punto o de punto JS de archivo JavaScript.
Sin embargo, el navegador va descargar JavaScript
código a su propia instancia de Chrome, o IE, o Firefox, o lo que sea.
Y el código es en realidad va a conseguir ejecutado en el interior de su propio navegador.
Sólo para hacer esto más real, vamos a ver esto en forma concreta.
>> No tenemos idea de lo que hace el código sin realmente leer a través de él.
Pero déjame ir a Facebook.com sin iniciar sesión.
Déjame ir a Inspeccionar Elemento e ir a, digamos, Red y recargar la página.
Y vamos a ver-- permítanme muevo Recargar la Página de conseguir todas las peticiones al nuevo.
Y el primer archivo que veo es CSS, CSS.
Aquí está la primera JavaScript archivo, y tengo
ni idea de lo que esto hace, pero aquí es una parte del código JavaScript
que impulsa Facebook.
Ni siquiera es verdad que revelando para acercar.
Sigue siendo igual de absurdo.
>> Pero verás, incluso por debajo, hay incluso más de estos archivos JavaScript.
¡Vaya.
Eso es un ping.
Bajemos un poco Además, aún más, aún más.
Hay uno.
>> Así que a pesar de que Facebook, detrás de la escenas, está escrito en parte en PHP
y la propia versión de los mismos de Facebook, hay una enorme cantidad de JavaScript.
De hecho, cualquiera de las charlando haces en Facebook,
cualquiera de las actualizaciones de la línea de tiempo en línea que eso suceda en tiempo real, todo eso
es impulsado por JavaScript.
¿Sí?
>> AUDIENCIA: No estoy seguro si esto es Facebook,
pero pensé que Facebook ha desarrollado su propio lenguaje de código en la casa?
DAVID MALAN: Lo hicieron.
Así que por eso digo una variación de PHP llamado Hip Hop que, efectivamente,
características añadidas a tal que cuando Marcos implementó por primera vez en Facebook,
que fue escrito en PHP.
Y ese tipo de se ha mantenido el tipo de lenguaje extremo frontal
que utilizan para mucho de su codificación, pero
no ha sido un lenguaje que es escalas particularmente bien a miles de millones
de las personas.
Y por lo que han añadido su propio mejoras detrás de las escenas.
Y utilizan cualquier número de otros idiomas
para diversas piezas de su infraestructura.
Así que sí, es una variación de lo que hoy conocemos como PHP.
>> Así que echemos un vistazo en un par de ejemplos
de cómo podemos utilizar JavaScript aquí.
En el código fuente de hoy, tenemos una montón de archivos, el primero de los cuales,
vamos llamado DOM cero.
Así DOM cero se ve de la siguiente manera.
Déjame ir en este directorio y abrir domzero.html,
la parte superior de los cuales tiene un tipo de doc declaración, diciendo aquí viene HTML 5.
Y ahora aquí está una etiqueta HTML.
Aquí está la etiqueta de la cabeza.
Y esto es lo que hay de nuevo hoy.
>> Ahora tenemos una etiqueta de script en el interior de la cabeza de la página.
Y esto al parecer hace muy poco, pero aviso
que he definido una guión, un JavaScript.
Y como un aparte, ya que esta Es un error común,
JavaScript tiene absolutamente nada que ver con Java, el lenguaje
que algunos de ustedes podrían han aprendido en la SCCA.
Fue más de una comercialización cosa que nada,
montar los faldones de Java hace años.
Pero JavaScript, nada que ver con Java, sólo de manera similar, y molesto,
confusamente llamado.
>> Así que aquí está cómo se declara una función en JavaScript, decir, literalmente, la función,
entonces el nombre de la función, entonces cualquier argumentos podría adoptar,
al igual que en PHP.
Resulta que en JavaScript, una de las más funciones molestos que existen es una alerta.
Esta es una pequeña ventana que se abrirá y que le avise
en cierta pieza de información.
Es generalmente mal visto.
Pero lo usaremos como nuestro primer ejercicio aquí.
>> Observe algunas características de JavaScript.
Las comillas simples y comillas dobles no importa en realidad más.
Las comillas simples y dobles citas se pueden intercambiar,
mientras que en C, usted tiene que utilizar comillas dobles para las cadenas,
y usted tiene dos individuales Cotizaciones de caracteres.
En el mundo de JavaScript muchas personas, la mayoría de la gente
utilizar comillas simples alrededor de las cadenas sólo porque es una cosa estilística.
Pero ¿cuál es el operador más aquí, que no hemos visto antes?
>> AUDIENCIA: La concatenación.
DAVID MALAN: concatenación.
Así que C no tiene ni siquiera esto.
PHP tiene el operador punto, que hace esto.
JavaScript tiene el operador más, que confusamente es como Java.
Ahora, ¿qué está pasando aquí?
>> Así que aquí es donde un básico la comprensión de que la imagen
nos tiramos un par Hace días entra en juego.
¿Recuerdas cuando tuvimos un sencillo versión de un HTML page--
que acaba de decir, hola mundo.
Y luego dibujamos un árbol a la derecha, que
tenía un montón de rectángulos y líneas conectándolos como un árbol genealógico.
Así que esa es la llamada DOM o Document Object Model.
Y resulta que se puede acceder rectángulos en el árbol con la sintaxis
como la siguiente.
Usted, literalmente, dice el documento, que es un variable global especial en JavaScript
programa que tiene una función asociada a ella que se puede acceder
similar a una estructura, sino que simplemente decir punto y luego el nombre de la función,
obtener elemento por ID.
>> El elemento que quiero conseguir es aparentemente citar nombre fin de la cita.
Y luego quiero obtener su valor.
Ahora estamos llegando delante de nosotros mismos.
Ni siquiera estoy seguro de lo que todo esto se trata.
Vamos a avanzar rápidamente al HTML en La página, que es super simple.
>> Tenga en cuenta que he definido Un formulario aquí abajo.
Note que he dado un único Identificación, a pesar de que no hemos usado
este atributo antes.
Pero esto existe en HTML.
Usted puede identificar de forma exclusiva algunos trozo de HTML con un identificador como este.
>> Aviso ahora esto-- resulta HTML apoya, por que la lista de lavandería
Hace un momento, en su conjunto montón de controladores de eventos.
Y este controlador de eventos, dice en enviar.
En la presentación de este usuario forma, llame al siguiente código.
Y el código que va de ser llamado o ejecutados
es exactamente esto, el griego función seguido de retorno falso.
Todo lo demás debe estar bastante familiarizado.
>> Aquí es una entrada de tipo texto, cuyo ID, en este caso, va a ser nombre.
No tenemos un atributo real nombre este tiempo-- y un botón de envío.
Así que la página resultante se parece a esto.
Y el comportamiento resultante, verás, se parece a esto.
La página que alberga locales dice, hola David, apenas un estéticamente agradable
manera de saludar a un usuario.
Pero lo que realmente está pasando?
>> Bueno, tenga en cuenta lo que es esto.
Este es un campo de texto.
Y de acuerdo con la HTML aquí, me he dado
un identificador único llamado cotización nombre fin de la cita.
Mientras tanto, lo que he dicho cuando el usuario envía este formulario
por oprimir la tecla Enter o haga clic en el Presentar botón, llame a la función llamada Greet
y luego regresar Falso.
Vamos a considerar los de atrás.
Observe cuando haga clic en Enviar, el URL de esta página no cambia.
El icono del navegador no empezar a girar.
Yo no voy a ninguna parte, y eso es literalmente, porque dije: return false.
Volver circuitos o paradas cortas falsos el comportamiento predeterminado de un formulario.
Así que luego nos deja con ésta última pregunta.
¿Qué hace Greet?
Bueno, al parecer Greet llama a una función llamada
Alerta, pasa en una largo argumento de que es
el resultado de la concatenación de un conjunto manojo de subcadenas, hola espacio coma,
entonces todo lo que este regrese.
Así que el documento es como un mundial variable para que la raíz de ese árbol,
llamar a una función especial, de lo contrario ahora conocido como método.
Una función que es en el interior de una variable es
llamado método en lugar de una función.
>> Así que elemento por ID.
¿Qué elemento tiene usted que desee obtener por su ID?
Cita nombre y fin de la cita entonces el valor específicamente.
Así, en otras palabras, que el código simplemente se encuentra el campo de texto cuyo ID es el nombre
y luego obtiene su valor.
Así que si yo fuera a cambiar esta y decir Davin en lugar de David,
y haga clic en Enviar, ahora nos tener un saludo de Davin.
>> Muy bien, así que todo bien y bueno.
Pero vamos a ver si podemos hacer esta un poco más limpio ya que sólo
escribir código como este es en general, va a ser mal visto.
Esto se va a ver más aterrador.
Pero, ¿qué es lo primero diferencia que nota aquí
en esta versión, además de la nombrar cambiar a DOM uno?
Lo que estructuralmente se ve diferente acerca de este frente a la otra?
¿Sí?
AUDIENCIA: ¿Es la forma en la parte superior de la secuencia de comandos ahora?
DAVID MALAN: Sí, es la forma en la parte superior de la secuencia de comandos, por alguna razón curiosa.
Así que eso es lo primero que salta a mí, también.
Y por suerte, al menos, esta parte es idéntica.
Así que la única cosa que parece a ser diferente es la siguiente.
>> Así que aquí está lo que está ordenado acerca de JavaScript 2.
Y que hace que sea difícil entender a primera vista,
especialmente para proyectos de final si usted está buscando en el código de ejemplo en línea,
sino que se reduce a algunos características sintácticas básicas.
Aquí de nuevo es que documento variable global.
Aquí de nuevo es que el método o función que dice obtener el elemento de identificación.
Esta vez quiero obtener el ID de llamada de demostración.
Donde es eso?
Eso es al parecer la derecha aquí, el propio formulario.
>> Y ahora cuenta de que al parecer si volver ese nodo del árbol que
representa la forma en sí, no es un campo de texto,
resulta que la forma, que nodo o rectángulo desde el árbol,
tiene lo que vamos a llamar a una propiedad, muy, muy, muy similar
en espíritu a una estructura en C. Es sólo un miembro de datos dentro de este rectángulo.
>> Así que tengo la forma aquí, y estoy adjuntando,
o estoy asignando, a su Submit manejador o más bien en Enviar en la propiedad
la siguiente función.
Y este es, de lejos, el más loco Lo hasta ahora sintácticamente.
Resulta que en JavaScript y en PHP, y, francamente, para el caso en C,
a pesar de que no lo hacemos, se puede añadir sin nombre, anónimo o conocido como lambda
funciones que no tienen un nombre pero puede ser llamado, no obstante.
>> Así que lo que estoy haciendo aquí es que estoy asignando Enviar esta en la propiedad, que
es dentro de este nodo de mi árbol DOM, un función, puntero de función si se quiere.
Esa función no tiene nombre, pero eso no lo hace
importa porque vamos a ver en un momento cómo llamarlo.
Cuando esta función se llama, este código es ejecutado, entonces
falso se devuelve al igual que antes.
>> Pero noto lo que he hecho.
En este punto en el historia, tengo un formulario.
Tiene un identificador único llamado de demostración.
Aquí abajo, tengo una etiqueta script que ejecuta el siguiente código.
Se une a ese nodo en el árbol que está en Enviar
propiedad esta función aquí.
Y sólo por la naturaleza de cómo funcionan los navegadores, cuando ahora hago clic en Enviar o pulse Enter,
que la función va a ser llamado.
No necesita un nombre que ya diablos le importa cómo se llama.
La única vez que nunca va a llegar llamado es cuando presento el formulario.
No hay necesidad para mí, el desarrollador humano,
que en realidad llamarlo en cualquier otro lugar.
>> Ahora sólo como un reclamo, como si eso no se importaría flexión suficiente,
incluso podemos hacer que esta buscar usando más críptico
una biblioteca súper popular llamado jQuery.
De hecho jQuery y JavaScript a menudo se fusionado.
¿Y qué vamos a hacer el miércoles es de inicio el uso de este lenguaje y estas bibliotecas
para construir cada vez asíncrono y aplicaciones dinámicas
como conseguir un mapa aplicaciones, aplicaciones
que actualizar la página web en bienes tiempo, al igual que Facebook o Gchat
hacer, y ya no limitarnos a hitting Presentar por un encuentro o simplemente puesto
solo.
Así que voy a verte el miércoles.
>> [REPRODUCCIÓN DE MÚSICA]