[Powered by Google Translate] [Semana 8]
[David J Malan] [Harvard University]
[Esta es CS50.] [CS50.TV]
>> Bienvenido de nuevo.
Esto es CS50, y este es el comienzo de la semana 8.
Hace un par de oportunidades esta semana,
entre ellos esta charla aquí, en la que algunos alimentos serán servidos.
Para más detalles, echa un vistazo a las diapositivas que están en línea.
Y también otro evento de esta semana por nuestro propio Carriero Thomas.
Es uno de los ex becarios de Head CS50 de enseñanza que ahora está en Dropbox,
y él es el tipo que nos conectó con la sabes qué,
así que si quieres más de que la cabeza de su charla de esta tarde para Dropbox y más.
CS50 almuerzo es este viernes.
Se unen a nosotros, si le es posible, 1:15, como siempre, en Fire and Ice.
>> Y ahora nos sumergimos en algo llamado Seminarios.
Nuestros Seminarios CS50, recuerdo, son estas clases opcionales dirigidas por los compañeros docentes
y los asistentes del curso y amigos del curso,
gente de un grupo en el campus llamado ABCD, que es un grupo de
tecnófilos en el campus, así como de un grupo llamado HCS,
la Harvard Computer Society, los estudiantes que están igualmente interesados ​​en la computación.
Lista de este año incluye seminarios de seminarios sobre Android y iOS y JavaScript
y PHP, Unix, Vim, y más, para darse cuenta de que estos seminarios se aproximan.
Si desea hacer reservaciones para cualquiera de ellos se dirigen a esa URL allí.
A continuación, se publica en la página web del curso de los tiempos y lugares, una vez que se finalicen.
Pero vale la pena saber que hay 5 años de seminarios anteriores disponibles en línea,
muchos de los cuales están todavía muy actual en términos de tecnologías que posiblemente encuentre
quiero jugar con para sus proyectos finales, por lo que la cabeza allí para algunos videos disponibles del mismo.
>> CSS, aquellos de ustedes que están familiarizados con CSS ya,
¿qué es en pocas palabras?
¿Qué es CSS?
Se hojas de estilo, y qué significa eso?
¿Qué es lo que hacen por nosotros, CSS?
Muy bien, vamos a calentar con una más fácil, HTML, lenguaje de marcas de hipertexto.
¿Qué es lo que hacen por nosotros?
Cualquier persona en absoluto?
Se está haciendo muy difícil hacer estas preguntas.
HTML, HyperText Markup Language.
¿Sí? No?
[Respuesta de los estudiantes inaudible]
Bueno, bueno, que nos permite marcar texto para mostrar en un navegador web.
No es un lenguaje de programación.
Es realmente un lenguaje de marcas, lo que significa que indica al navegador cómo mostrar
información, por lo que la simple encarnación de esta como hemos visto
es algo super simple como boldfacing, abierto abrazadera abrazadera cerrada b dice
hacen de este texto en negrita, y que en realidad es sólo una de las muchas maneras
en el que podemos hacer eso, y de hecho, en estos días un mejor enfoque
para estilizar tu página web, haciendo las cosas en negrita y cursiva
y centrado y justificado y similares, no se lleva a cabo a través de las etiquetas HTML solo
sino más bien con una técnica llamada CSS, Cascading Style Sheets.
Este es un lenguaje en sí mismo.
Esto tampoco es un lenguaje de programación, pero-
a todos, este es Dan, que mantiene acompañarnos hoy.
Algunas dificultades técnicas. No es un problema.
>> CSS nos permite estilizar una página
mediante el establecimiento de lo que se denominan propiedades, así que vamos a echar un vistazo a esto
por medio de algunos ejemplos básicos.
Déjame entrar en el aparato hoy.
Tengo la fuente 8 Lunes directorio aquí,
y yo voy a ir en un directorio llamado CSS, donde tenemos un montón
de archivos que nos esperan aquí,
y en esta carpeta tenemos, por ejemplo, search0.html desde la última vez.
Ahora, recuerdo con search0 de partir en esta nota
por tipo de implementación de Google o en realidad sólo la parte delantera para una semana o así que hace,
y el aviso de que teníamos algunas etiquetas nuevas allí.
Tuvimos h1 por un título grande, en negrita,
forma, lo que nos permitió tener en realidad un formulario HTML para entrada de usuario.
Acción, ¿cuál fue el significado de un atributo de acción
en la etiqueta de formulario HTML?
¿Cuál era el significado de esta acción?
Voy a hacer esto hoy.
La acción es el destino a donde la forma va a ser sometido.
El hecho de que la acción que dice = "google.com / búsqueda"
significa que cuando el usuario hace clic en el botón de enviar o equivalente
independientemente de la forma que llenaron los campos van a ser enviados a nuestro servidor no
o nuestro aparato, sino más bien a la URL específica en Google.
Y el método que va a utilizar se llama conseguir,
y obtener, por ahora, es sólo una técnica para pasar información a lo largo de un servidor web
a través de la URL, así que vamos a echar un rápido vistazo a cómo funciona esto.
>> Tenga en cuenta que hay una entrada cuyo nombre es q
cuyo tipo es texto y luego una segunda entrada del tipo de presentar
cuyo valor es CS50 Search, y de hecho, si nos abrimos este archivo aquí
search0.html, es una forma súper simple,
y si busco algo como la informática
y luego pulsa enter o haga clic en Buscar CS50
cuenta de que lo que sucede es más allá de llegar a Google
He específicamente terminamos en este URL en la parte superior,
google.com / search? q = ordenador + ciencia,
y ciencias de la computación es, obviamente, lo que he escrito pulg
El + sólo significa que es donde un carácter de espacio era,
y se hace por el navegador sólo para asegurarse de que no hay
confusión y el espacio en blanco en la dirección URL real.
Y entonces q, por supuesto, es el nombre del parámetro.
No hemos visto cómo, el programador, en realidad se puede acceder q todavía.
Podemos suponer que Google sabe qué hacer con esto aquí,
pero vamos a llegar a su debido tiempo hoy.
>> Pero déjeme echar un vistazo en vez de search1.html,
que se parece un poco diferente porque he decidido que esta forma aquí estaba un poco cojo.
Quiero decir, que está en la parte superior izquierda.
En realidad no hay estética a la misma, y ​​por eso quiero estilizar esta
un poco más como Google, cuya página de inicio, recordar,
aunque es posible que no lo visitan muy a menudo, se ve así hoy en Halloween.
Si en lugar de abrir una versión de este archivo, 1.html búsqueda, me he centrado.
, Still bastante feo, pero al menos ahora he empezado a controlar la estética de esta página
no sólo para marcarlo hasta de los mismos.
Echemos un vistazo a una búsqueda, y no hay realmente sólo una diferencia aquí,
que podría saltar a la vista, o tal vez no,
pero ¿cuál es la línea de un fragmento o de la diferencia?
>> Hay un atributo de estilo, por lo que resulta que en HTML
la mayoría de los elementos, la mayoría de las etiquetas pueden tener un atributo de estilo en ellos,
y dentro de ese atributo style es una cadena entre comillas,
y que la cadena entre comillas es CSS.
Usted puede poner hojas de estilo en cascada allí
especificándolo como un nombre de propiedad
seguido de dos puntos seguido de un valor.
Esto es un poco de una decisión de diseño desafortunado hace algunos años
que CSS es un lenguaje en sí mismo,
pero sintácticamente es muy diferente de HTML.
En este caso, vemos que dentro de mi página web, que está escrito en HTML,
Tengo CSS dentro de estas citas, y la convención de CSS
es que usted tiene lo que se llama una propiedad seguido, nuevamente, dos puntos,
seguido por el valor de esa propiedad, así que no hay signo igual.
No hay citas adicionales.
Es sólo esta separada por dos puntos par de valores clave,
y la línea de texto hace exactamente lo que dice.
Se alinea el texto en el cuerpo de la página, que es realmente el coraje de la página,
en el centro.
>> De acuerdo, entonces el resultado final, para ser claros, es este.
No todo lo que más sexy, pero al menos está centrado y un poco más a lo real de Google.
Pero ¿y si en vez abrir la versión 2 de este
y señalar aquí una nueva etiqueta en total?
Ahora, en la cabecera de mi página, que antes sólo tenía que etiqueta
en todos los ejemplos anteriores?
Se acaba de tener esto, el título.
Hace un momento la etiqueta de la cabeza se veía así.
Ahora, en cambio, tiene un estilo dentro de la etiqueta de la misma,
y esto también, pido disculpas, sintácticamente se ve muy diferente de HTML,
pero te acostumbras a él, por lo cual dentro de la etiqueta de estilo
Ahora puedo factorizar lo que era hace un momento
un atributo, el atributo de estilo, y lo puedo poner en la parte superior de mi página.
>> ¿Por qué?
Bueno, este es un paso hacia limpiando las cosas, al igual que en la escritura de código C
nosotros a veces escribir funciones para factorizar la funcionalidad común.
Es sólo un poco más limpio para iniciar factoring cosas como la estética
a una ubicación central en vez de tenerlo todo intercalan a lo largo de su HTML.
Esto también hace lo que dice, aunque hay un poco de nueva sintaxis.
Esto aquí es un selector, y el cuerpo sólo significa seleccionar el elemento del cuerpo
y aplicar las siguientes propiedades a la misma.
Pues bien, la propiedad es exactamente lo mismo.
Por si acaso he añadido un punto y coma al final,
que tiende a ser la convención, y me he envuelto todo este inmueble
entre llaves porque yo podía tener cosas diferentes aquí.
De hecho, me podría decir algo como color: blue;
>> Ahora bien, esto tampoco va a ser un paso hacia la nada todo lo que más bonito,
pero si ahora volver a la versión 2 que he hecho por lo menos ahora el cuerpo de mi
página de texto de todo azul.
El botón se mantiene igual porque es una entrada. No es puro texto.
Pero todo lo demás que es texto, como CS50 Búsqueda en lo alto, es de color azul hecho.
Una vez más, todo lo que hemos hecho ahora es eliminar del cuerpo de la etiqueta, rótulo,
el atributo de estilo, y hemos factorizado un vistazo aquí.
Esto no es una gran mejora, pero si tomamos un paso más allá
darse cuenta de lo que podemos hacer en esta tercera versión aquí.
>> En search3.html la página web es casi idéntico
a excepción de lo nuevo tag ahora?
Link, por lo que éste no está muy bien llamado
porque no se va a asociar en el sentido de un enlace clicable.
Más bien, estás de suerte haciendo el equivalente de # include en C
por lo que la etiqueta de enlace con un atributo href
y un atributo rel dice que adelante
copia y pega el contenido de un archivo llamado search3.css aquí, esencialmente.
No todo eso, pero ese es el espíritu de la misma.
Dice que ir abierto ese archivo, search3.css,
y tratarla como si el usuario hubiera escrito aquí mismo en la cabecera de la página
al igual que lo hizo en el ejemplo anterior.
Search3.css, por su parte, es bastante simple.
En realidad, sólo contiene exactamente lo que estaba hace un momento
en la etiqueta de estilo, pero no tengo factorizar un vistazo aquí a su propio archivo.
>> A pesar de que no he pasado mucho tiempo en absoluto en HTML o programación web
sólo intuitivamente lo que es la motivación, tal vez, para factorizar
este pequeño fragmento de CSS, incluso en su propio archivo
y luego incluso con esta etiqueta link aquí?
[Respuesta de los estudiantes inaudible]
Bueno, es más fácil de leer en el sentido de que tiene la CSS en un archivo CSS.
Usted tiene su código HTML en el archivo HTML, por lo que es más fácil de leer en ese sentido.
¿Qué otra cosa podría ser convincente? Si.
[Respuesta de los estudiantes inaudible]
Sí, para que pueda incluirlo en muchas ocasiones, por lo que ahora estamos haciendo estos
ejemplos básicos con archivos individuales, pero supongo que en realidad estás haciendo
un sitio web real como tu voluntad para pset 7 o el proyecto final tal vez,
y desea tener varias páginas web, como es bastante común en
la Web actual Wide, y sería una especie de lisiado
a tener que copiar y pegar el mismo color azul
y el mismo texto alineado centro en cada una de esas páginas.
Más bien, tiene más sentido para excluir, al igual que hemos hecho en C
con el archivo. h, lo puso en un lugar central,
en este caso search3.css, y luego permitir que cualquier archivo
en su página web para incluir ese archivo en realidad a través de esta etiqueta aquí en la línea 16.
Como suele ser el caso, empezamos con la versión 0, que tipo de obras
pero no es necesariamente la mejor, y con cada paso,
búsqueda de una búsqueda de 2, 3 y ahora busca que hemos tomado estos pasos de bebé
hacia diseños que son un poco más limpias y son más preparatoria
para las páginas más complejas que podemos hacer en el futuro.
>> Permítanme abrir un último ejemplo aquí sólo para mostrar
una página aún más estilizado, pero primero vamos a ver el código HTML.
Esto es search4.html, y note que estructuralmente es casi lo mismo
excepto por la introducción de una nueva etiqueta, DIV.
Div es una etiqueta que introduce una división de la página.
Usted puede pensar en esto como un rectángulo invisible.
De alguna manera crea una franja de área en la página web
que se puede estilizar todos a la vez.
Lo que he hecho aquí es la siguiente.
En el interior de mi cuerpo de la etiqueta, que ha estado allí todo el tiempo,
Digo crear una división de la página aquí a través de las líneas 45 a la 47,
y eso significa esencialmente darme un rectángulo invisible a lo largo de la parte superior de la página.
Entonces dame un segundo rectángulo, aunque invisible, más abajo,
y se identifican por el nombre de contenido y, a continuación, por último,
dame una tercera división de la página en la parte inferior
llamado ID.
Vamos a ver qué he hecho esto en un momento,
pero conceptualmente Tengo una división de cabecera.
Tengo una división de contenidos, y tengo una división pie de página de la página
a pesar de que estos son sólo en el marcado.
El usuario no va a ver 3 rectángulos,
pero tipo de estructura hay detrás de las escenas
que están realmente presentes.
>> Ahora, ¿qué importa? ¿Por qué lo hacen realmente?
Todo lo demás en la página es el mismo que hemos visto antes.
Esta es mi forma. Aquí está mi entrada, mi entrada, un salto de línea y así sucesivamente.
Aquí está una imagen, sin embargo, así que ya veremos dónde salió en un momento.
Aquí hay un pie de página, que es nuevo, sólo porque quería introducir
contenido un poco más aquí.
Si nos desplazamos hasta notar que el ID de este div es cabecera.
La identificación de este div es el contenido y el ID de ésta es pie de página.
Y como su nombre lo indica, cuando se tiene un atributo ID
en HTML, por definición, debe identificar exclusivamente
uno de los elementos, una de las etiquetas en la página.
La responsabilidad recae totalmente en usted recordar que tiene un ID de cabecera ya.
Usted tiene un pie de página. Usted tiene un ID de contenido ya.
El equipo no va a entender lo que es una identificación disponible para usted,
por lo que accidentalmente podría dar una identificación 2 etiquetas de cabecera,
y eso sería un error.
>> Hay que tener en cuenta lo que han creado,
pero una vez que hayas hecho esto fíjate en lo que podemos hacer aquí.
Ahora puede especificar en mi etiqueta de estilo en la parte superior
o equivalentemente en mi archivo CSS, si yo todavía estaba usando esa versión,
Puedo decir # header, y es lo que quiere decir que cualquier etiqueta
en esta página web tiene un ID de cabecera
y #, sólo por convención humana, representa el ID.
El signo de sostenido o la libra signo representa identificación.
Cabecera es el nombre que le di.
Esto significa aplicar esta propiedad CSS
a cualquier variable de esta página tiene un ID de cabecera.
Lo mismo pasa aquí.
Aplicar esta propiedad, que pasa a ser el mismo, a cualquier elemento
cuyo identificador es el contenido, y luego aquí
cuenta de que tengo un poco más de lujo con pie de página.
Cualquier elemento cuyo ID es pie de página, de la cual no puede ser sólo uno, por definición,
seguir adelante y hacer su tamaño de fuente más pequeño,
su fuente en negrita peso, su margen de 20 píxeles.
>> ¿Qué significa eso?
Es sólo un margen en la parte superior, inferior, izquierda y el de derecha.
Esto quiere darme un margen de 20-pixel invisible a su alrededor
sólo para empujar todo lo demás fuera de ella un poco, de que se puede hacer en Word,
Microsoft Word o Pages o similar.
Y luego alinear texto central.
Vamos a ver el resultado final, y luego vamos a regresar hasta el fragmento restante de CSS allí.
Esta es la versión 4, el último de los ejemplos de búsqueda, y es mucho más sexy, mucho.
Ahora, para ser justos, sólo Google "fuente generador google logo".
Y eso me permitió crear un GIF, un formato de imagen, que parece que no.
De hecho, usted puede hacer esto también.
Tenemos "google logo generador fuentes."
>> Vamos a ver si podemos hacer esto.
Bueno, creo que este es el sitio web que he usado.
Podemos decir Ec 10, por ejemplo, y hacer que su propio.
Usted puede jugar con esto todo el día y luego a la derecha haga clic en él
y luego descargar el GIF real, que es todo lo que hice.
Y de hecho, es por eso que en mi HTML, recordar, aquí
Yo tenía una etiqueta de imagen, que vimos brevemente la semana pasada
cuya fuente es logo.gif.
Y lo que de nuevo fue la motivación para tener este atributo alt,
este atributo alternativa?
Si.
[Respuesta de los estudiantes inaudible]
Bueno, por lo que 2 razones realmente, si el navegador no puede levantar la imagen
porque usted tiene una conexión de red lenta o la imagen está dañada
o algo así como que al menos el ser humano puede ver "CS50 búsqueda"
y luego también por razones de accesibilidad.
Si usted tiene un usuario que es ciego y utiliza un lector de pantalla
por lo que, obviamente, no puede ver las imágenes por lo menos pueden
escuchar el texto si su computadora se les habla.
>> En general, esta es la mejor práctica cuando se trata de la accesibilidad de las páginas
para que los usuarios incluso en esa situación puede oír o ver, por así decirlo,
qué es lo que está en su página.
Hay otra cosa que lo hice aquí
que es un poco interesante, y veremos más sobre esto en conjunto de problemas 7
a través de uno de los cortos dirigidos por uno de los compañeros docentes.
Pero # contenido se refiere a la etiqueta
cuyo identificador es el contenido, pero luego hay un espacio en blanco, y luego está la palabra de entrada.
Bueno, lo interesante de CSS es que se puede
se refieren a las etiquetas en una página clasificar de forma jerárquica,
y lo que esto significa fragmento de CSS es encontrar la etiqueta
cuyo identificador es el contenido, y luego aplicar las siguientes propiedades
a todas las etiquetas de entrada que son descendientes de contenido,
es decir que se aplica sangría dentro de ella.
Indentación, de nuevo, sólo es importante para el equipo, no a la humana,
pero por convención guión cosas a medida que profundizamos en una página,
así que esto significa aplicar un margen de 5 píxeles a cualquier elemento de entrada
que en algún lugar dentro o anidado dentro de
el elemento cuyo ID es el contenido.
>> ¿Quién hace eso aplica?
Bueno, en realidad hay sólo estos 2 chicos aquí.
Tenga en cuenta que en el interior de la forma hay 2 entradas,
ya que ha sido durante todos estos ejemplos.
Pero nótese que las 2 entradas sucede que se desliza por el interior,
aunque un poco profunda, un par de capas de sangría,
dentro de la etiqueta cuyo identificador es el contenido.
¿Qué quiere decir esto?
Si vamos al navegador aquí se puede ver muy ligeramente-
déjame acercar-que hay un poco de relleno entre el botón
y entre el campo de texto.
>> Permítanme temporalmente apaga eso.
Déjame ir a mi CSS, y me dejó ir adelante y sólo
cambiar este margen de 5 píxeles a 0 píxeles.
Déjame ir por delante y luego y guardar el archivo, vuelva al motor de búsqueda
y volver a cargar y ver el centro de la página.
Todo se comprimen juntos, y cuando por primera vez azotado este ejemplo hasta
Pensé que se veía estúpido con el campo de texto y luego en el botón inmediatamente debajo.
Quería almohadilla él un poco, así que introdujo márgenes.
Lo que no va a hacer en clase es ir a través de las varias docenas
CSS propiedades que existen porque, de nuevo, hay cosas como el tamaño de fuente,
peso de la fuente, márgenes, alinear el texto, y una docena de otros pocos,
y le refieren en conjunto de problemas 7 a diversos tutoriales en línea
y las referencias que le permiten recoger estas cosas.
Pero lo que realmente importa al final del día
>> es entender cómo estas cosas se aplican.
Una vez más, si tenemos el estilo dentro de la etiqueta de los cuales
puede ir a los selectores, el tipo de identificadores que especifican
¿a quién desea aplicar estas propiedades,
y después de poner las propiedades como par de valores clave
separados por dos puntos y terminó con un punto y coma,
o se puede extraer de todo eso y ponerlo en un archivo CSS
en sí mismo.
Muy bien, cualquier pregunta sobre los conceptos
o el gran cuadro de CSS?
Tú otra vez veremos más de él en pset 7,
pero vamos a seguir por lo general bastante simple.
No? Está bien.
Es hora de que un lenguaje de programación real,
y vamos a volver a un poco de CSS en forma de un ejemplo.
PHP es en realidad un lenguaje maravillosamente accesible
en que esté sintácticamente casi equivalente a C.
En otras palabras, si usted sabe C, ya sabes PHP para la mayor parte,
al menos sintácticamente, a pesar de que hay algunas nuevas características
y algunos conceptos nuevos que tendremos que mirar.
>> Sin embargo, para la mayor parte, ahora que la transición de C a PHP
la mayor parte del nuevo material es realmente en el panorama general,
cómo se utiliza un lenguaje de programa en la web en lugar de
en la línea de comandos o en un mensaje parpadeando, ya que hemos estado haciendo hasta ahora.
Como referencia, especialmente con pset 7 y el proyecto final en adelante,
se aprovechan de esta URL aquí si desea leer sobre las formalidades de PHP.
De hecho, es como un libro de texto en línea gratis con eficacia,
y usted también encontrará que lo que es realmente bueno de PHP
es que hay cientos de funciones que vienen con el mismo,
mientras que en C que no necesariamente tienen acceso a
más funciones que estaban en la biblioteca matemática, la biblioteca CS50.
En PHP y un montón de lenguas modernas, Python y Ruby, entre ellos,
, tendrá acceso a tantas funciones más, lo que significa que tienes que escribir
mucho menos código, ya que puede estar de pie sobre los hombros de los demás
que ya han escrito algunas cosas para ti.
>> Echemos un rápido recorrido por la sintaxis de PHP y luego escribir algunos ejemplos.
Lo bueno de PHP, ante todo,
es que no hay función principal.
Si desea escribir un programa en PHP que acaba de empezar a escribir código,
y usted no tiene que preocuparse de principal.
No hay int. No hay retorno.
No hay argv, argc que se requiere cuando se escribe el programa.
Más bien puede simplemente comenzar a escribir código, y esto es en parte
debido a que PHP es lo que se llama un lenguaje interpretado.
C fue compilado, y que fue compilado en el sentido de que se inicie
con el código fuente, se ejecuta a través de Clang, que es un compilador,
y, finalmente, después de una cierta cantidad de pasos que obtener el código objeto, 0s y 1s.
PHP y Python y Ruby y Pearl y otros
diferentes tipos de idiomas que no les compilar.
No te vas a partir del código fuente de 0s y 1s.
Usted acaba de ejecutar el código fuente, y se ejecuta el código fuente
escribiendo en un archivo de texto normal, que termina en. php en este caso
en lugar de. c, y lo que hace el programa en su ordenador
se interpreta literalmente el código línea por línea por línea.
>> En otras palabras, en lugar de escribir un programa y ejecutar el programa
directamente en su lugar escribir un programa con un archivo con extensión. php.
A continuación, se ejecuta un programa llamado php.exe, si estás en Windows,
PHP o simplemente si estás en Mac OS o Linux,
y se proporciona como entrada al programa PHP su propio código fuente,
y su propósito en la vida es leer su código de arriba a abajo, de izquierda a derecha,
y hacer lo que he dicho.
>> Veamos lo que esto va a significar sintácticamente.
En PHP tenemos condiciones.
Esta diapositiva es idéntico a lo que vimos en la semana 1
porque sintácticamente condiciones, IFS e IFS else y else en PHP
exactamente así.
Cuando se trata de expresiones booleanas que van a ser exactamente así.
Cuando se trata de Anding cosas juntos como booleanos que va a ser exactamente así.
Cambia el mismo aspecto, y usted tiene el beneficio añadido en PHP
que los interruptores en C sólo podía encender un char o int.
No se podía encender un valor de cadena.
En PHP usted puede realmente tener una expresión
que es una variable cuyo contenido es una cadena,
y en realidad se puede hacer la comparación de cadenas en la forma intuitiva real,
No puntero comparación, a fin de decidir si hacer caso i o j u otra cosa.
Veremos que posiblemente en poco tiempo.
>> Loops demasiado maravillosamente son los mismos.
Para bucles tienen una inicialización, una condición, y un cierto número de cambios.
Aunque también existen bucles en PHP.
¿Es bucles while también existen en PHP,
y existen matrices en PHP, pero aquí es donde la sintaxis empieza a ser un poco diferente,
pero los conceptos son los mismos, y los conceptos realmente son los mismos
como lo fueron en 0 Semana con Scratch.
En primer lugar está el signo $.
Esta fue una decisión de diseño en PHP por lo que cualquier variable
en PHP de diseño comienza con signo $.
No hay más X, Y, Z. Es ahora $ x, $ y, $ Z porque sí.
Es algo a tener en cuenta, y ahora en el lado derecho
esto es similar a una matriz,
pero estamos usando corchetes aquí.
En PHP y JavaScript, ya que finalmente va a ver,
para declarar una matriz que hacer corchete abierto y cerrado corchete,
y entonces usted tiene una lista separada por comas de valores, ya sea enteros
o cadenas de caracteres, o lo que quieras, dentro de esa expresión allí.
>> Ahora, ¿cómo hacemos algo como esto en C?
¿Cuál es la sintaxis para declarar estáticamente una matriz de números conocidos?
Fue llaves, la diferencia tan pequeña aquí, pero tanto en PHP
y, finalmente, que sólo utiliza JavaScript corchetes, por lo que realmente
el único detalle interesante es el signo $ para el nombre de la variable
y también los corchetes, y hay una cosa curiosa
que se ha omitido también en el lado de la izquierda del signo =.
Lo que falta que hemos estado requiriendo desde hace semanas? Si.
[Respuesta de los estudiantes inaudible]
El tamaño, por lo que no hay ninguna mención del tamaño de la matriz.
Francamente, no hay mención de corchetes en el lado izquierdo
del signo =, y lo que más falta en la línea?
Si. >> [Inaudible respuesta de los estudiantes]
El tipo, así que lo que es interesante en particular sobre PHP
es que no es un lenguaje fuertemente tipado como C es,
y eso es inflexible en el sentido de que hay que decir char,
debe decir int, debe decir flotador.
>> Cada vez que desee una variable que tiene que decirle a su Clang qué tipo es.
PHP es un poco perezoso.
Se escriben libremente en el sentido de que
usted puede tener flotadores y caracteres y cadenas
y ints y así sucesivamente, pero el propio idioma
en realidad no importa lo que usted pone dentro de una variable.
Usted no tiene que informar de antemano qué tipo de datos
va en una variable.
Es totalmente de usted, así que es agradable
en que usted no tiene que preocuparse tanto acerca de los datos a escribir
y preocupante lo que sus argumentos son y así sucesivamente.
Esto también significa que, finalmente, las funciones en PHP va a ser capaz de volver
o bien más de un int el tiempo, y una vez que tal vez en cuando
van a devolver un bool, un valor lógico falso, por ejemplo, para significar que algo salió mal.
Esto nos da algunas Upsides, sino que también nos hará por tipo de diseño
un poco más flojo cuando se trata de tipos de datos.
>> ¿Qué más hay que tener en cuenta aquí?
Variables mirar como esto, así que $ s = "hola, mundo".
Esa es quizás inferirse a partir del ejemplo anterior,
y tenemos otro tipo de bucle.
Esta realidad nos veremos de vez en cuando, ya que es bastante práctico,
construir un foreach.
En este caso, el bucle foreach lleva dentro de sus paréntesis 3 palabras típicamente,
$ Algo en primer lugar, que es lo que quieres array para iterar sobre los miembros,
entonces, literalmente, la palabra clave como, a continuación, por último,
otro nombre de variable que puedes elegir.
Puede ser foo, bar, o elemento,
y lo que esta construcción no
es si el array $ contiene 10 elementos
en cada iteración de este conjunto-lo siento, en cada iteración de este bucle
el elemento variable llamada va a ser actualizada
para ser el primer elemento de la matriz, entonces el segundo elemento de la matriz,
a continuación, el tercer elemento de la matriz, evitando así la necesidad
para hacer el soporte de notación cuadrada ligeramente molesto y
$ I con el fin de índice en una matriz.
PHP hace todo ese trabajo por usted y en cada iteración
sólo te entrega el siguiente elemento de la matriz
sin que tenga que conocer o preocuparse por su posición de índice numérico.
>> Y luego, por último, por ahora, no hay otra característica de PHP
que va a ser enormemente útil, especialmente cuando comenzamos la programación en la Web,
y que se conoce como una matriz asociativa.
Los arreglos que conocemos hasta ahora como de 20 segundos hace
y durante los últimos 8 semanas se indexado numéricamente arrays,
tipo de arreglos tradicionales, donde los índices son enteros,
0, 1, 2, todo el camino hacia arriba.
Las matrices asociativas son mucho más poderosos.
Te permiten tener claves arbitrarias,
índices arbitrarios y valores arbitrarios.
Mientras que en una matriz tradicional es 0, 1, 2,
en una matriz asociativa que puede tener un índice
o una tecla de foo cuyo valor es bar.
A continuación, puede tener otra clave cuyo nombre es baz y cuyo valor es qux.
>> Una vez más, estúpidos informáticos genéricos nombres de las variables aquí,
pero el punto es que esta serie no tiene soporte 0 o soporte 1.
Está vez va a tener soporte foo y baz soporte.
Esto es mucho más versátil en el que vamos a ser capaces de asociar
palabras con otras palabras, las claves con valores completamente arbitraria,
y vamos a ser capaces de obtener esos valores en el tiempo constante
por debajo de la capucha lo que es un array asociativo
realmente es una tabla hash.
Recordemos que una tabla hash le permite poner en alguna entrada
como poner en la palabra David si desea insertar David en una especie de diccionario,
y luego volver algún valor típicamente.
En el caso de la ortografía, verdadera o falsa.
David o cualquier palabra que esté o no está en el diccionario.
Una matriz asociativa es en realidad una tabla hash,
pero es una encarnación de usuario mucho más amigable de la misma.
Como veremos, esto va a permitir que hagamos algunas cosas
muy, muy fácilmente.
>> Echemos un vistazo a algunos básicos PHP
ejemplos y ver lo que podemos hacer con este lenguaje.
Déjenme seguir adelante y abrir en nuestro directorio de origen hoy
un archivo llamado hello1.php.
Este archivo es más un comentario de lo que es el código real,
así que realmente me quite todos los comentarios en el archivo
y presentar a usted tal vez el programa más simple PHP aquí.
5 líneas, y algunos de los que son los espacios en blanco,
así notar algunas diferencias clave aquí.
El archivo se llama hello1.php.
La primera línea, sin embargo, es <? Php.
De espíritu similar al HTML,
secuencia de caracteres que indica a la computadora
"Hey, computadora, aquí viene un programa que estamos en en PHP."
Se asegura de que no está confundido que es algún otro idioma.
Línea 2 es un espacio en blanco interesante.
La línea 3 es nuestro viejo amigo printf,
esta vez en el contexto de PHP.
PHP tiene su propia versión de printf que se comporta exactamente igual,
así que esto es sólo va a imprimir "hola, mundo".
Y entonces esta etiqueta contrario aquí,>, significa que es para mi código PHP.
>> Vamos a ver cómo manejar esto.
Voy a volver a mi ventana de terminal aquí.
Voy a entrar en mi directorio PHP.
Tenga en cuenta que tenemos un montón de archivos, el primero de los cuales es hello.php.
Déjenme seguir adelante y ejecutar este hello1.php, entrar.
Permiso denegado. Bien.
¿Cómo nos hemos fijado este tipo de cosas en el pasado?
¿Qué es eso? >> [Respuesta de los estudiantes inaudible]
Necesitamos leer y escribir, pero me deja hacer ls-l.
Recuerde que esta salida un tanto críptica cual hello1
parece ser de lectura y escritura por mí
pero legible por todos los demás.
Resulta que este hecho no es un paso en la dirección correcta.
La diferencia, de nuevo, con un lenguaje interpretado
es que no se ejecute el programa directamente.
Usted en vez ejecutar un intérprete y entregarla el código
que has escrito para que pueda interpretarlo línea por línea.
En este caso, el intérprete o el programa que realmente desea ejecutar
es, literalmente, llamado PHP.
>> En algún lugar de este disco duro de la máquina hay un programa
alguien escribió llamado PHP, o en Windows php.exe.
Lo que voy a hacer aquí es que voy a correr realmente PHP
pero lo da como un argumento de línea de comandos el código que he escrito,
y luego voy a alejar la imagen y pulsa enter.
Se ejecuta mi programa para mí, de arriba a abajo, de izquierda a derecha.
Déjenme seguir adelante y abrir una variación leve de esto.
En hello2.php aviso que esto también
es en su mayoría comentarios, así que vamos a deshacerme de ellos como una distracción,
y lo que es claramente diferente ahora sobre este archivo?
Hay una nueva línea, un tanto críptica en la parte superior.
En la línea 1 es #! / Bin / php.
Bin es una convención en Linux y Mac OS para binarios,
por lo que / bin significa que es una carpeta que contiene un montón de archivos binarios
que se programa, una de las cuales es PHP.
El #! Es apodado shebang,
que es la forma más rápida de decirlo, y lo que significa este
es que cuando se ejecuta este programa ahora hay una alusión a la parte superior del archivo
que le dice al ordenador qué intérprete de usar.
>> Se pone un poco molesto si tienes que decirle a sus usuarios y clientes
"Hey, escribimos este programa llamado hello1.php".
Todo lo que tienes que hacer es correr PHP para siempre y luego el nombre de este programa.
Francamente, no sería más que agradable para correr hello1.php,
y, de hecho, podemos si hacemos lo siguiente.
Déjenme seguir adelante y hacer ls-l, y el aviso en hello2 todavía es sólo de lectura y escritura
y luego leer leer, así que todavía no puedo hacer esto, hello2.php.
Pero hemos introducido esta muy brevemente la última vez, el comando chmod.
Si lo hago chmod a + x, lo que significa todo ejecutabilidad plus,
y luego hello2.php y luego hacer ls-l de nuevo notar lo que ha cambiado.
Uno, Linux me muestra el nombre del archivo en verde para transmitir la idea
que es ejecutable, pero que es más importante, en el lado izquierdo
cuenta de que el bit que representa para x ejecutable ha sido establecido.
Lo que esto significa es ahora puedo correr ./hello2.php como de costumbre,
pulsa enter, y debido a todo el asunto en la parte superior del archivo
que hay una pista, una vez más, que dice a Linux
utilizar este intérprete para ejecutar este archivo.
No te preocupes por obligar al usuario a realmente escribir.
>> Y lo que es bueno es que es algo irrelevante a mis clientes o mis amigos
idioma que escribí este programa, así que me puede seguir adelante con mv
y cambiar el nombre de esta cosa hello2, por ejemplo.
Y ahora si me lo ./hello2
y alejar mi programa sigue funcionando.
Estas extensiones de archivo son una convención humana que es necesario
para algo como Clang y hacer que buscarlos.
Pero para PHP, yo podría llamar a esto cualquier cosa extensión de archivo que quiero.
Podía engañar al mundo haciéndole creer que soy realmente bueno en Ruby,
y yo podría escribir hello2.rb y luego ejecutarlo,
y listo, ahora tengo la versión de Ruby, que es una completa mentira.
Sin embargo, las extensiones de los archivos no tienen sentido
si el archivo es ejecutable y tiene esta pista especial en la parte superior del archivo.
>> Ahora, en un aparte, permítanme mostrarles rápidamente la versión 3,
que es una especie de truco útil conocer.
En hello3 hice algo un poco mal
que voy a actualizar la línea de código fuente.
En la versión 3, resulta que en la mayoría de sistemas Linux
hay un programa llamado env para el medio ambiente,
y lo que puedes hacer aquí es que si usted no tiene ninguna idea de dónde PHP
está instalado en el disco duro local, ya que en realidad podría variar en función de la computadora
que alguien está usando, env sólo dice ejecute env,
que se encuentra en la mayoría de los sistemas, y averiguar donde PHP es.
Sólo un truco común por lo que no tiene que preocuparse de saber que un programa es.
Pero si te importa para saber dónde es un programa y no se ha atendido hasta el momento
puede utilizar el comando que.
>> Permítanme hacer un zoom hacia fuera y que tipo php,
y note que me dice que es en realidad en usr / bin / php.
Es una especie de mentira. También en salida.
Se me acaba de mostrar el primer golpe.
Si te has preguntado donde Clang es decir, que Clang, que está en usr / bin / clang,
que hacer, usr / bin / make, y lo que eso significa es que todo este tiempo
que podría haber estado escribiendo usr / bin / clang Intro para ejecutar Clang,
pero es un poco tedioso para hacerlo, por lo que algunas carpetas
como usr / bin bin y se supone que son valores predeterminados
por lo que el equipo sabe que mirar en ellos para usted.
Cualquier pregunta sobre cómo escribir un super, super sencillo programa Hello World
en PHP y luego lo ejecuta?
Porque ahora vamos a empezar a introducir la sintaxis más convincentes.
Muy bien, aquí vamos.
Estos programas que hemos visto a todos ellos antes.
>> Si abro, por ejemplo, vamos a hacer beer1.php,
no vamos a ir a través de varias versiones de esto, pero lo que hice
Se me senté y lo derramó o se convierten
mi código C para el código PHP aquí.
La mayor parte de la parte superior del archivo es comentarios aquí.
Resulta que hay una nueva función que necesitamos llamada readline.
GetString, el recuerdo, desde la semana 0 en adelante fue una cosa CS50.
PHP viene con su propio fácil de usar función llamada readline
que toma un argumento que especifica el indicador
que desea mostrar al usuario, y hace lo que readline
se devuelve todo lo que el usuario escribe pulg
En este caso, estoy declarando una variable llamada $ n.
Estoy almacenando en ella el valor de retorno de readline
después de preguntar al usuario con esta cadena.
Simplemente copia de seguridad, para ejecutar realmente esta cosa, déjame ir por delante
y ejecutar beer1.php php.
¿Cuántas botellas habrá? Vamos a hacer esta vez 2.
Intro. Eso es todo.
>> El programa es funcionalmente idéntica a la versión C de semanas atrás.
Pero sintácticamente vamos a ver lo que es diferente.
Después de obtener un int partir de la notificación de usuario que estoy haciendo un poco de comprobación de errores,
y si n es menor que 1 dejé y me imprimir
un mensaje no para el usuario y con la salida 1.
Esto también es un poco diferente.
En C, ¿qué hicimos? En C volvimos 1.
En PHP salir con 1, que, francamente, creo que es un poco más intuitivo
porque estás literalmente salir del programa.
Muy bien, y entonces aquí la canción molesta es sintácticamente idéntico
a excepción de la variable, por lo que aquí abajo, en la línea 24 en adelante
cuenta de mi bucle for es casi lo mismo,
pero tengo $ delante de i y n,
y lo que es también falta de la línea 26 que hemos tenido en el pasado
cuando se declara una variable i?
No hay ningún tipo.
No es correcto decir que en PHP int.
Simplemente no es necesario hacer eso.
La computadora, el intérprete PHP es lo suficientemente inteligente como para darse cuenta de
que si se pone un número en $ I este será tratado
como un número para ti.
Y aquí nos conecte $ i, $ i, $ i - 1.
Todo esto es lo mismo, y entonces aquí hacemos un "Wow, eso es molesto" printf
y luego salir (0).
>> Una vez más, la comida para llevar es que a pesar de que vamos a pasar relativamente
poco tiempo en PHP, sin duda frente a lo que hicimos en C,
que es casi lo mismo, y así lo vamos a hacer hoy y la semana que viene
y más allá es realmente centrarse en algunas de las nuevas ideas.
Sólo para ver que otra cosa se traduce por encima de C,
Este fue un programa super simple que hicimos en la Semana 1
o 2 en cubos que un valor.
Pero lo interesante en el momento de este programa es que
introdujo la noción de una función personalizada escrito que nosotros mismos hemos escrito.
La sintaxis de PHP es casi el mismo.
Aquí está mi programa hasta la parte superior.
Note una vez más ausente es cualquier noción de principal.
Empiezo a escribir código, y esto es lo que va a conseguir ejecutado por el intérprete.
Puedo imprimir x ahora es 2, es de suponer.
Entonces me dicen cubicar ...
Entonces llama a la función cubo y pase $ x
y asigne el valor devuelto a $ x.
Entonces me dicen que está en cubos, y luego me dicen esto, que es de esperar
diremos que x es ahora 8.
La sintaxis de la función en PHP es muy ligeramente diferente.
Una vez más falta es el tipo de retorno.
Una vez más falta es el tipo de retorno y también es lo que falta otro tipo?
[Respuesta de los estudiantes inaudible]
Bueno, está bien, eso es bueno. Vamos a volver a eso en un segundo.
>> No tenemos, por ejemplo, int aquí.
No tenemos, por ejemplo, han int aquí porque, de nuevo, en PHP
simplemente no es necesario y no debe hacer eso,
sino que hay esta nueva palabra clave se llama función.
En PHP es casi un poco más claro, porque cuando se desea una función
que literalmente dicen función, le das un nombre y una lista separada por comas
si alguno de sus argumentos.
No hay necesidad de decir nula o algo así, y luego de retorno es el mismo,
$ A * a * $ $ a.
Lo que también falta? Sammy señalamos aquí.
En la parte superior del archivo completamente ausente en PHP también es un prototipo.
Esto también es por diseño.
Idiomas e intérpretes como PHP son más inteligentes que alguna vez lo fue C
en los compiladores como Clang.
>> Recordemos que Clang, si no lo digo que existe cubo,
si no lo digo que printf existe como un prototipo
o con un # include, bueno, iba a gritar a usted y ni siquiera compilar el código.
PHP y otros idiomas modernos son mucho más inteligentes cuando se trata de esto.
Ellos se encargan de leer a través de todo el código
y luego gritan a usted sólo si se encuentra en ninguna parte del cubo.
No importa si es cubo en la parte inferior o la parte superior o incluso en algún archivo separado.
Lenguajes PHP y similares son ahora lo suficientemente inteligente como para mirar hacia adelante
en todo considerando que antes por haber cometido un error.
¿Dónde nos deja eso?
>> Vamos a hacer un último ejemplo aquí en las condiciones,
y si abro aviso conditions2.php demasiado
sintaxis aquí es casi el mismo.
Estoy usando readline en lugar de GetString, pero esa línea es la misma que antes,
"Me gustaría un entero por favor."
Después, hay una condición si, una persona si, a continuación, una persona,
pero funcionalmente este programa también es idéntico a lo que hicimos semanas atrás,
así que si me quedo esto, php de Condiciones2,
y le doy un número como 23 -
Escogí un número positivo. Si le doy -1 cogí un número negativo.
Si le doy 0 Yo a la verdad recogió 0.
Entonces, ¿quién se preocupa de todo esto?
Bueno, uno de la clase de diversión ejercicios aquí
al menos para mí era ir hacia atrás y ver lo rápido que podría poner en práctica pset 5,
el conjunto de procesadores faltas de ortografía.
Recordemos que había un archivo llamado speller.c,
y había un archivo llamado dictionary.c.
Lo que yo hice fue un poco gastado unos minutos y me convertí el código C
de código PHP, y no vamos a pasar mucho tiempo en speller
porque al igual que en el conjunto de procesadores 5 usted realmente no necesita
pasan mucho tiempo en ortografía sí mismo porque su atención estaba en diccionario.
>> Baste decir que si usted lee a través de ortografía,
este archivo aquí, que es más o menos equivalente al código C
le dio para pset 5.
Acabo de añadir un poco de $ en los lugares.
He cambiado algunos nombres de función si no existe en PHP.
Hay una cosa adicional aquí, preg_match,
que es la forma un poco más elegante de hacer algo, pero vamos a volver a ese tiempo.
Pero en fin, ortografía es casi idéntico, y si nos fijamos en la parte inferior
lo que finalmente escupe es esto aquí,
palabras mal escritas, las palabras en el diccionario, las palabras en el texto.
Muy bien, así que lo interesante ahora es la siguiente.
En la parte superior de mi archivo que estoy requiriendo dictionary.php.
Al igual que C ha # include PHP tiene una función especial denominada requieren
que más o menos hace lo mismo, requieren un archivo llamado dictionary.php.
¿Cómo puedo ir sobre la aplicación pset 5?
Déjenme seguir adelante y abrir un archivo aquí.
Permítanme tomar una pequeña referencia aquí.
Y me deja crear un nuevo archivo y empezar a llamar a este dictionary.php.
Permítanme decirlo de otra carpeta para que podamos hacer esto en vivo.
Y ahora voy a hacer un zoom in
Voy a empezar mi archivo PHP con soporte abierto php cerrado soporte.
Y entonces aquí hay algunas funciones que se necesitan para poner en práctica para pset 5,
así que vamos a empezar a aplicar algunas de las personas,
así que la función de verificación, que tuvo que tomar una palabra como argumento.
Vamos a hacer eso y volver a ella en un momento.
>> Se carga la función, que tuvo en lo que como un argumento?
Diccionario, por lo que el archivo que yo realmente quería cargar.
Había tamaño de la función, que no toma ningún argumento
y no había función, ¿qué era lo otro?
Unload, que no toma ningún argumento tampoco.
Estas son las 4 funciones que tendrían que aplicar ahora en PHP,
y lo que voy a hacer es seguir adelante y hacerlo.
Muchos de ustedes utiliza una tabla hash en pset 5,
así que voy a seguir adelante y crear una tabla hash en PHP.
Hecho.
Eso me da una tabla hash. Bueno, ¿por qué?
Una, la variable se llama $ tabla, sólo para evocar la idea de una tabla hash.
Los corchetes, sin embargo, recordar, representan qué?
Una matriz, pero en arrays PHP no tiene que ser indexado numéricamente.
También pueden ser matrices asociativas,
lo que significa que usted puede tener llaves arbitrarias y valores.
>> Al igual que en pset 5, aquellos de ustedes que hicieron implementaciones tabla hash
probablemente inserta la palabra y después se inserta en una cadena de listas enlazadas,
o almacenada en algún lugar del valor de verdad o algo por el estilo.
De alguna manera recuerda el hecho de que la palabra estaba allí.
Por ahora, eso va a ser mi tabla hash,
y lo que ahora ir sobre la aplicación de la función de comprobación
Sólo tengo que mirar dentro de esa tabla hash
y ver si una palabra está ahí.
Lo que voy a hacer es que voy a decir si-
digamos isset, que es una función PHP que literalmente quiere decir es el conjunto de claves,
así isset ($ tabla [$ palabra],
y si es así devolver true.
Eso es todo. Eso es pset 5 en PHP.
Bueno, para ser justos, está bien.
Else return false, por lo que no está ahí.
Lo que realmente está pasando aquí?
Bueno, si la tabla de mesa o hash aquí más general-
es una matriz asociativa que significa que usted puede indexar en él
con una palabra como "palabra", y hay que volver algún valor.
>> Somos una especie de conseguir un paso por delante de nosotros mismos.
Sería algo bonito si en realidad carga el primer archivo,
así que la carga no es tan simple, pero déjame seguir adelante y batir
una implementación muy rápida de la carga.
Déjenme seguir adelante y decir palabras se Diccionario archivo.
La función de archivo en PHP abre un archivo
y regresa a usted una gran variedad de todas las palabras en ese archivo,
sólo les da a ustedes.
Ese fue un dolor demasiado grande, ¿no?
Ahora foreach, esta es nuestra nueva construcción, foreach ($ palabras as $ palabra).
Este ciclo va a comenzar a iterar sobre las palabras de la matriz
y asignar a la variable $ palabra cada palabra en el archivo
desde la primera a la segunda a la tercera a la cuarta todo el camino
así que no tienes que hacer el molesto [i] notación y similares.
Y lo que estoy simplemente vas a hacer para cada una de estas palabras
se lo guarde en mi mesa de indexación en la tabla
y luego haciendo así porque hay que recordar
que una palabra está en mi diccionario lo único que realmente tenemos que hacer
es una especie de vuelta un poco y decir esta palabra en mi tabla hash está ahí, es cierto.
Y si no está allí, no tengo que poner explícitamente falsa,
de lo contrario, tendría que poner falso para todas las palabras posibles en el universo.
>> Es suficiente para mí sólo para fijar un valor de índice
en true si una palabra está en realidad en mi tabla hash.
Ahora, me voy a cortar un par de curvas aquí que voy a agitar las manos menos por ahora,
pero ahora la función de carga se realiza.
Me carga todas las palabras en el archivo en una matriz.
I iterar sobre dicha matriz, y para cada palabra de la matriz
Lo conecto en mi tabla hash con una línea de código.
Esto es divertido. ¿Sabes cómo se puede implementar tamaño ahora?
Pues bien, el tamaño es siempre muy fácil, para ser justos.
Aquí sólo puedo hacer recuento de regresar de mesa.
Eso es bastante fácil también, cuente el número de cosas en la mesa.
Eso es en realidad un poco no es el más eficiente.
Probablemente debería tener un tamaño variable llamada para que lo podamos hacer
en tiempo constante, pero eso es bastante fácil.
Ah, y luego descarga, si de verdad queremos ser anal aquí
podemos decir que es como se descarga algo.
Usted acaba de establecer la variable igual a un conjunto vacío,
y se deshace de todo lo que estaba allí.
No hay necesidad de llamar libre.
>> Una vez más, he cortado algunas curvas, y me disculpo por conjunto de problemas asignando 5
quizás en C, pero si ahora seguir adelante y ejecutar esto,
Voy a correr en realidad la versión que escribí con antelación
sólo para que yo no he cometido ningún error de sintaxis que sea.
Déjenme seguir adelante y ejecutar corrector ortográfico. El uso es el mismo.
Aquí hay un archivo de diccionario que sólo contiene la palabra foo.
Aquí hay un archivo de texto que contiene sólo foo bar.
Vamos a revisar la ortografía de esto, así ortografía, utilizando el archivo de diccionario en el archivo de texto.
Hay una palabra mal escrita, bar, y listo.
Hecho con pset 5.
Vamos a tomar un descanso de 5 minutos aquí, y vamos a volver y más en PHP.
De acuerdo, estamos de vuelta.
Vamos a hacer-me odias por un tiempo.
Ahora vamos a ver realmente si esto no era un positivo
la aplicación real de esta cosa en PHP.
Por supuesto, nos tomó 45 segundos para implementar.
>> Pero vamos a seguir adelante ahora y manejar las cosas.
Déjenme seguir adelante y ejecutar una versión de C
de ortografía, y vamos a correr en uno de los mayores archivos,
que es la Biblia King James.
Y aquí es en que vamos a entrar en nuestra carpeta de C,
speller en King James la 5 ª.
Una gran cantidad de palabras mal escritas.
Muy bien, así que esa es la salida que probablemente se hizo aún si los tiempos son un poco diferentes,
si tienes todo funcionando correctamente, y el tiempo lo que en total para corregir la ortografía
la Biblia King James fue 0,38 segundos, así que bastante bien con esa implementación.
Ahora voy a ir a la versión de PHP, que acaba de escribir.
Déjame correr ortografía en King James.
¡Vaya, ignorar ese error. Estoy en el directorio equivocado.
Speller sobre King James la 5 ª.
Ya está casi hecho.
>> Bien, el astuto observador se dará cuenta de que era más de 3 segundos allí.
Ese es el verdadero tiempo en funcionamiento.
Resulta que se necesita tiempo para escupir gran cantidad de texto fuera
debido a buffer temas, pero de corta larga historia,
que fue de 3,15 segundos de tiempo de máquina, tiempo de CPU,
frente a lo que era hace un momento?
Al igual que 0,3.
Quiero decir, es un orden de magnitud más lento, así que ¿dónde está ese
desaceleración ridículo viniendo?
Pues bien, como ha sido el caso con la mayoría de las decisiones de diseño que hemos hecho
en la clase durante las últimas 9 semanas casi siempre este equilibrio.
A veces, sólo entre el espacio, a veces entre el espacio y el tiempo,
espacio, tiempo y esfuerzo de desarrollo, y de hecho aquí, aunque
nos ahorramos una gran cantidad de tiempo, tal vez potencialmente 10.20.30 horas
el tiempo de desarrollo de la aplicación del corrector ortográfico
con azotes que en tan sólo 45 segundos con este lenguaje
el precio que se paga es que se trata de un orden de magnitud más lento como resultado,
y este es generalmente el caso con la mayoría de cualquier lenguaje interpretado,
PHP, Python, Ruby, Pearl u otros por el que
si usted va a ejecutar a través de un intérprete y que se lea el código
línea por línea, de arriba a abajo, de izquierda a derecha,
intermediario que se va a tomar algún tiempo propio,
y lo que se siente aquí en los 3 segundos frente a 0,3 segundos
es el hecho de que existe este intermediario que tiene que interpretar literalmente nuestro código
línea por línea, y Dios no lo quiera, si usted está dentro de un bucle
con un archivo enorme que contiene cientos de miles de palabras.
>> Ese recargo se va a sumar y sumar y sumar y sumar.
Para obtener una herramienta como esta probablemente no sea el mejor lenguaje a utilizar para la aplicación de
un corrector ortográfico si inmediatez es de interés para sus usuarios y para ti.
Pero el lujo que tenemos en este momento es si
utilizar un lenguaje como PHP o una gran cantidad de lenguajes interpretados
en el contexto de la Web, para el caso, que tiene el beneficio
que Internet es mucho más lento que la mayoría de las computadoras.
Usted tiene una CPU GHz en el equipo, 2 GHz, tal vez incluso más en estos días.
Pero la realidad es que en Internet hay una gran cantidad de latencia
por lo que para un navegador para hablar con un servidor, a pesar de que vimos la semana pasada
que eso es bastante rápido, la mitad de una milésima de segundo más o menos,
que también se suma, y ​​si usted está descargando cosas como una imagen
o una foto de Facebook o recibir mensajes instantáneos a través de charla Facebook,
Gchat o similares, todos de estos tiempos de ida y vuelta
entre el navegador y el servidor de inicio de sumar,
que hace que su elección particular de la lengua en muchos casos
no es tan relevante, por lo que está muy bien usar un lenguaje ligeramente más lento
como PHP o Python o Ruby
pero para los que no son Upsides grandes para usted y sus colegas
y sus amigos, ya que puede poner en práctica las cosas así, mucho más rápido.
Y por otra parte, tiene mucho menos riesgo de ciertos defectos de seguridad.
No hay punteros en PHP.
No hay ningún fallo seg que fácilmente pueden inducir
del mismo modo que se pueda en C.
Con C que está súper cerca del hardware.
Con lenguajes PHP y similares que eres una especie de nivel superior, por así decirlo,
con un montón de defensas entre usted y lo que realmente está pasando
en el interior de la máquina, y es sólo una compensación.
>> Hemos llegado al punto de tener estos más modernos lenguajes de alto nivel
como PHP debido a las lecciones aprendidas en lenguajes como PHP en C.
Pero si usted no entiende lo que está pasando debajo de la capucha de todo este tiempo
que sin duda no puede tomar las decisiones de diseño correctas,
y, ciertamente, cuando se trata de trabajar en un lugar como Facebook o Google
o en cualquiera de estos lugares que son cada vez más jugando con grandes conjuntos de datos
incluso si usted regresa y se Premed y estamos trabajando con algunas de las EM
en algunos gran conjunto de datos con pacientes y médicos
y similares, usando las herramientas adecuadas es enormemente atractiva
porque de lo contrario el análisis de un conjunto de datos puede tardar unos segundos,
o que, literalmente, puede llevar horas.
Este es sólo un ejemplo, no para frustrar con cuánto esfuerzo más
fue en C, pero que le ayudarán a apreciar que cuando se ponen en práctica algo en C
que realmente entienden, o en teoría, comprender realmente
cómo todo lo que es o debería estar trabajando, y usted tiene un control casi completo
sobre lo que está pasando debajo de la capucha, y con estos lenguajes de alto nivel
usted tiene que renunciar a un mayor control de las personas que los inventados
y están sujetas más a sus decisiones de diseño que la tuya.
Pero si damos por sentado que el rendimiento
no es tan importante en la Web debido a estas otras cuestiones,
sólo las velocidades de red son un poco más lento que la velocidad de CPU de todos modos,
para que podamos elegir de permitirse el lujo de utilizar un lenguaje un poco más lenta
si los upsides son las cosas que podemos desarrollar 10 veces más rápido o más.
>> Vamos a ver cómo podemos empezar a usar esto.
Déjame ir a una carpeta
entre los ejemplos de hoy en día llamado frosh.ims,
y esto fue realmente personalmente motivado por el hecho de que la primera cosa
Escribí para la web años atrás después de tomar CS50 CS51 y
es un sitio web para el programa de mensajes instantáneos Frosh, deportes intramuros de primer año,
que en ese momento se trataba de bastantes años atrás, que en el momento
no había sitio para el programa, a pesar de que había una web,
y en su lugar había un vigilante en Wigglesworth cual si quisiera
para registrarse para el voleibol o el fútbol o lo que usted podría llenar una hoja de papel.
A continuación, se camina por el patio.
A continuación, podría llamar a su puerta y se deslizan en su puerta o en la mano al procurador
un pedazo de papel con su nombre en él, sean o no quieres ser el capitán del equipo,
¿Qué deporte te quería hacer, y lo que se pulg dormitorio
Era una especie de camino de la vieja escuela de hacer las cosas, y esto fue una de las principales
oportunidad para automatizar una gran parte de este proceso.
Usted sólo tiene que ir a la página web. Escribes algo pulg
Usted recibe un correo electrónico de confirmación, y el brazo, ya está hecho.
>> Esta fue la primera cosa que hice, aunque en un lenguaje llamado Pearl,
pero es relativamente fácil de hacer en PHP, y esto es una especie de representante
de los problemas que usted puede comenzar a resolver cuando puede expresarse
programación y no tener que depender de cosas como los sitios de Google
o Excel o herramientas que se entregan a ti.
Ustedes tienen ahora la capacidad de hacer cosas como esta.
Esta es una versión super feo de un formulario,
pero vamos a utilizar para el inicio de la conversación mediante el cual se trata de
más o menos cuál es la forma que parecía años atrás para nosotros
para que las personas en la Web para inscribirse en Frosh mensajes instantáneos.
Nos preguntamos por un nombre, una casilla de verificación para saber si son o no quería ser capitán,
hombre o mujer, y entonces, ¿qué dormitorio en que estaban,
y entonces se envíe este formulario.
Veamos primero debajo de la capucha en el código HTML que representa esta página web.
Déjame entrar en froshims0,
y en un aparte, para pset 7 estoy dando por sentado
los directorios y carpetas de los que estoy poniendo las cosas pulg
Le guiaremos a través de cosas exactamente donde tiene que ir en el aparato,
los comandos de mod que tiene que correr, así que no te preocupes por todo el
detalles estúpidos sincronización desde el primer momento aquí.
>> Muy bien, aquí está froshims0.php.
Permítanme desplazarse hacia abajo, y lo que es curioso aquí,
este es un archivo PHP, pero lo que hay dentro de ella, con claridad?
Es un montón de HTML, PHP, y de hecho sus orígenes
realmente eran para ser un lenguaje centrado en la Web.
Hace un momento lo utilizamos para poner en práctica el ejemplo de la cerveza,
las condiciones ejemplo, el ejemplo hola, y eso está bien.
Puede utilizar PHP como lenguaje de scripting
donde un script es en realidad la nomenclatura dada a un programa rápido y sucio
o algo que se escribe en un guión o más generalmente un lenguaje interpretado.
PHP es super útil para los que ya has visto con qué rapidez
relativamente podemos avivar programas en PHP.
Pero fue diseñado realmente para ser utilizado para la Web,
y diseñado para la Web, en el sentido de que notar aquí en la parte superior del archivo
Empiezo con <? Php.
Entonces tengo un montón de comentarios inútiles, es cierto, pero entonces cierro modo PHP.
Pero luego me deje caer en modo HTML.
>> Lo que es interesante acerca de PHP es a pesar de que el archivo termina en. Php
es generalmente destinado a ser entremezclados con HTML,
algo de código PHP, algo de HTML.
Y vamos a ver con el tiempo que podemos empezar a burlarse de aquellos aparte
y mantener nuestra HTML PHP separado de nuestro conjunto,
pero los orígenes de PHP realmente te diera esta flexibilidad,
que si quieres algo de HTML sólo lo escribe, y que será
escupir idéntica al navegador.
Pero si usted necesita un poco de técnica de programación,
algún código de programación, también se puede poner en el archivo exactamente el mismo, como pronto veremos.
Aquí está mi HTML.
Tengo un título de este Frosh para mensajes instantáneos.
Tengo un cuerpo de la etiqueta que tiene un poco de CSS en el mismo centro de todo en el centro,
y luego por aquí Tengo un formulario que al parecer va a ser presentado
en un nuevo archivo llamado register0.php, así que ya veremos eso en un momento.
Se trata de utilizar un método llamado post, que volveremos a también.
Entonces tengo algunas entradas de formulario, un nombre llamado, cuyo tipo es texto,
uno cuyo nombre es el capitán, cuyo tipo es checkbox,
y esto, no lo hemos visto antes, pero hace exactamente lo que dice.
Usted recibirá una casilla de verificación en lugar de un cuadro de texto.
Aquí abajo tienes un botón de radio, que es uno de esos botones circulares
que usted puede elegir este o aquél.
>> Tenga en cuenta que es deliberado que me dio los dos botones de radio el nombre del género.
Esta es la forma de conseguir la exclusión mutua mediante el cual usted debe hacer clic en
ya sea este o aquél, y haciendo clic en el otro
se desactiva la otra, así que hay que darles el mismo nombre
si usted quisiera que fueran mutuamente excluyentes así.
Y luego, para dormitorio, yo no creo que hayamos visto aún, pero se trata de una selecta carta, un menú desplegable.
La etiqueta para que se selecciona.
A continuación, dar el menú desplegable un nombre,
y entonces usted tiene un montón de estas opciones.
La primera de ellas, sólo por estética, es una cadena vacía.
Yo sólo quería el menú desplegable para estar en blanco de forma predeterminada,
y luego está Apley, Canaday, Grays, y así sucesivamente.
Y note la dicotomía aquí.
La opción en el menú desplegable tiene un valor,
pero entonces tiene un nombre humano con niños, que en este ejemplo
es idéntica, pero si de verdad quería ser anal tenemos podía
el valor de este menú desplegable sólo ser la versión corta,
Grays, pero podríamos decir Grises Hall que el ser humano realmente ve,
pero eso no es tan interesante, así que me mantuvo simple y los hizo iguales.
A continuación, en el fondo tenemos un botón de envío
lo que hemos visto antes, pero noto que sólo nos dio una palabra diferente.
En lugar de buscar CS50 le di la etiqueta de "Registro".
>> El resultado final es la página aquí, y de nuevo,
¿dónde se presentará a?
Se pone sometida a algún archivo, el valor del atributo de acción,
que era register0.php.
Vamos a ver lo que realmente sucede aquí.
Déjenme seguir adelante y llenar el formulario, por ejemplo David,
macho, Matthews, a continuación, voy a decir regístrate.
Permítanme alejar la imagen y haga clic en registrarse.
Bien, algo inútil, pero vamos a ver lo que realmente está pasando.
Tenga en cuenta que la URL ha cambiado para ser register0.php.
¿Qué es curiosamente ausente de la URL, sin embargo, a pesar de que acaba de enviar un formulario?
[Respuesta de los estudiantes inaudible]
Bueno, eso es ser amable usuario Chrome en estos días.
Eso es realmente allí. Acaban de ocultar para ahorrar espacio.
Pero el pensamiento bueno, buen pensamiento.
Hacia el otro extremo de la URL, sin embargo, lo que falta? Si.
[Estudiante] La cadena de consulta.
La cadena de consulta, por lo que recordamos de nuestros ejemplos sencillos de búsqueda de Google.
Tan pronto como haga clic en el botón de enviar la URL
me llevó a Google, pero luego estaba? q = ciencias de la computación o lo que sea que yo había escrito pulg
Esto se debe a que utilizamos el método get con el ejemplo de búsqueda.
>> Esta vez estamos usando el método que en su lugar?
Publicar, y una de las distinciones inmediatas
entre GET y POST es que después no pone la entrada del usuario en la URL.
Es lo oculta. Todavía lo envía.
De hecho, lo que estamos viendo en el navegador de aquí, como vamos a revelar en un momento
observando register0, es que estoy solo ver el contenido
de la matriz que se presentaron desde el navegador al servidor.
Pero el URL no tiene un?, No tiene ninguna palabra clave
o valores en ella, y por qué es eso?
Bueno, después le permite enviar todavía los datos del formulario a un servidor,
pero no lo pone en la URL, así que ¿qué tipo de información es post
particularmente apropiado para tal vez cuando usted está pidiendo al usuario
escriba en la entrada a un formulario?
Algo así como una contraseña, algo así como ¿qué más?
Números de tarjetas de crédito.
Cualquier cosa que sea medianamente sensible que probablemente no quieres acabar en la URL
aunque sólo sea porque significa que su compañero de cuarto o miembro de la familia sólo puede trolling a través de
su historial de Internet y, a continuación, literalmente, ver las contraseñas,
literalmente ver sus números de tarjeta de crédito, porque la mayoría de los navegadores
Recuerdo que en la historia lo que las direcciones URL que has estado en,
por lo que si sólo porque eso sería una mala idea.
Uso de cueros mensaje que detallan por parte del usuario.
>> Además, ¿cómo subir una foto a Facebook?
Bueno, los únicos dos mecanismos que realmente se puede utilizar,
aunque hay algunos otros más arcanas, es GET y POST.
¿Cómo subir una foto posiblemente a través de una URL?
En realidad se puede hacer.
Usted puede tomar un mapa de bits o JPEG o GIF y se puede representar en hexadecimal
o algo que se llama base 64.
En lugar de base 16 se utiliza la base 64, que esencialmente se parece
Caracteres ASCII, y de hecho puedes subir una foto a través de una URL
después de un signo de interrogación, pero en general hay límites de tamaño.
La mayoría de los navegadores forzar URLs a ser no más de 1.000 caracteres,
tal vez 2.000 caracteres o similares, por lo que no se puede cargar
un 10 MB de fotos de Facebook.
Para que se utiliza después también, así que por ahora se pone los parámetros en la URL,
lo cual es bueno y útil en ocasiones, pero para nada sensible o grande
puesto es el camino a seguir.
¿Qué está haciendo en realidad register0 aquí?
Bueno, si abro register0 aviso de que se trata de una simple página super,
pero está demostrando el hecho de que puedo de mezclar, para bien o para mal,
HTML con PHP.
Este archivo completo, a excepción de los comentarios en la parte superior, son HTML
a excepción de este tipo aquí.
>> Observe en el medio de mi código PHP,
en la mitad de mi HTML, tengo suerte de forma temporal
entrado en el modo PHP.
Voy a llamar a una función especial llamada impresión r.
Esto significa imprimir recursiva, y lo que hace es que imprime de forma recursiva
cualquier variable que darlo, punto y coma, tome la salida PHP modo.
Y la etiqueta pre le da pre-texto con formato,
texto mono espacio para que cada espacio que realmente verlo.
No desaparece. ¿Qué es el mensaje?
Bueno, lo que es interesante y convincente sobre PHP
es que cada vez que envíe un formulario utilizando get o post
cualquier cosa que se envía a usted por un navegador
PHP mismo se da cuenta de lo que esas parejas de valores clave son,
se da cuenta de que si hay signos de igual, se da cuenta de que si hay un signo de interrogación.
Lo hace todo el trabajo duro por usted, y luego se le entrega una matriz asociativa
contiene todo lo que el usuario escribió en el formulario.
Bueno, ¿qué campos de este formulario se tiene?
>> Tenía cuatro campos.
Se trataba de un campo de texto llamado nombre.
Uno de ellos era una casilla de verificación denominada capitán.
Uno de ellos era un botón de radio llamado género,
y uno era un menú desplegable llamado dormitorio,
por lo notará cuando imprimo recursivamente
el contenido de esta variable especial.
Esta es una variable global llamada especial, literalmente, $ _POST, en mayúsculas.
Esta es una variable global especial que PHP sólo crea para usted
y las manos a usted para que usted puede tener acceso a todo
que se presentó a través de un formulario por un usuario.
Y llamando r impresión en ella, usted no haría esto en una aplicación normal.
Estamos haciendo esto para observar el interior de esta variable,
y lo que hay dentro de él, bueno, 4 teclas,
4 http parámetros, por así decirlo,
nombre, capitán, sexo, residencia de estudiantes, y luego los valores que el usuario
introducir con una excepción.
Hice tipo D-A-V-I-D.
Revisé la caja, sin embargo, para los hombres, que al parecer presentó un valor
de poco m para ser sucinto.
>> Cuando selecciona Matthews ese es el valor que he seleccionado,
y éste es un poco estúpido, pero es la convención.
Cuando me registré, la caja, el valor on, "on", quedó sometido a la casilla de verificación.
Si yo no lo había comprobado, sin valor habría sido enviado alguna.
Esto se nos acaba de dar ideas sobre lo que hay dentro de esta variable global especial,
y es tan especial que se llama una variable global super.
Existe en todas partes para que dentro de su código de manera que en realidad se puede acceder a él.
Esto no es tan convincente, así que vamos a usar en realidad la super mundial
y realmente tratar de registrar a alguien.
En froshims1 voy a hacer un cambio.
Voy a cambiar la acción a ser register1.php,
y estoy haciendo otra cosa.
Yo estaba un poco avergonzado por la calidad de mi página web allí.
Es bastante horrible, de verdad, por lo que resulta
que se puede usar muy fácilmente en la Web
ajeno código JavaScript, CSS otras personas
que he escrito y de código abierto y está disponible como una biblioteca,
por así decirlo, y por ejemplo, aquí estoy usando una biblioteca de libre acceso,
un montón de código que alguien más escribió.
>> Twitter pasó a escribir este código, y se llama la biblioteca de arranque,
y es sólo un montón de hojas de estilo CSS, un montón de. css
que alguien más escribió y descubierto la manera de obtener todo lo bueno y bonito
para que la gente como nosotros puede preocuparse un poco menos por la estética y centrarse mucho más
en la lógica y la programación real.
Por su vinculación con esa etiqueta, que es la misma etiqueta solía recordar para styles3.css antes,
Ahora tengo acceso a un archivo llamado bootstrap.min.css.
Min sólo significa que lo han minified y se han deshecho de todos los espacios en blanco y así sucesivamente
sólo para asegurarse de que no me están enviando más bytes de lo que realmente necesita.
Pero hay un montón de CSS, así que si ahora abrir la versión 1 de Frosh IMs
cuenta de que mi archivo es definitivamente más bonita.
Ahora es todavía sólo en blanco y negro, pero note que con sólo usar su hoja de estilo
y el uso de ciertos rasgos de ella en mi forma no es sorprendente,
pero sin duda es más limpio que antes, y el proyector no está haciendo justicia.
Hay pequeñas líneas de color gris alrededor de los botones y de todo el campo de texto de la derecha aquí,
pero sin duda es más limpio de lo que era antes.
>> Ahora, para ser justos, yo tuve que cambiar mi marcado un poco.
Esta es la versión 1, así que he utilizado algunas etiquetas nuevas,
y honestamente, no tenía ni idea de cómo hacer esto hasta que leí la documentación
para la biblioteca de arranque de Twitter, y me dijeron que si quieres usar nuestra biblioteca
utilizar un elemento fieldset dentro de su forma,
poner la palabra que desea mostrar al lado de un campo dentro de una etiqueta de la etiqueta,
luego darle a su entrada un nombre, al igual que antes,
y luego por la casilla de verificación, no sólo usted se envuelve en un elemento label,
utiliza algo llamado una clase, así que no hemos visto esto antes,
pero vas a ver esto en un conjunto de procesadores de pantalones cortos de 7.
Una clase en CSS le permite hacer algo muy similar a la identificación,
pero antes, cuando teníamos una identificación con el símbolo #
que era para uno y sólo único elemento.
Lo bueno de una clase es que varios elementos pueden tener la misma clase
o el mismo material CSS aplicado a él.
>> Pero, de nuevo, más de aquellos en el corto, y el resto de este es copiar y pegar
de la documentación en la que he añadido una etiqueta aquí y allá.
Y al final, porque he incluido la etiqueta en la parte superior,
todo se ve más bonito automáticamente
simplemente por haber marcado mi página de una manera que
Twitter se esperaba, y hay tantas maneras diferentes
de esta manera, y esto es de hecho muy apropiado.
En este punto en el semestre, como se verá en las especificaciones del conjunto de procesadores 7,
Googling alrededor, leyendo sobre las bibliotecas, el uso de CSS de los demás
y JavaScript para solucionar los problemas secundarios
para el conjunto de problemas en sí es, sin duda alentado y es la manera
la Web se basa en estos días, de pie sobre los hombros de los demás
de modo que usted puede concentrarse en los problemas nuevos e interesantes.
Pero ahora vamos a centrar, una vez más, la lógica.
>> Eso fue un rápido desvío en la estética sólo para mostrar la dirección en la que se puede ir.
Voy a volver a la más fea uno por ahora sólo porque
no hay distracciones con cosas de Twitter, y déjame seguir adelante y abrir
froshims2, que, de nuevo, sólo difiere en la acción, register2.php,
y vamos a echar un vistazo a lo que el efecto es aquí.
Déjenme seguir adelante y escribir en David.
No voy a ser capitán de este tiempo.
Diré masculino, Matthews registro.
Maldita sea. Bueno, eso es un tornillo de arriba de mi parte.
En espera.
Registro2, línea 22, si está vacío o lo siento.
Vamos a recargar.
Bueno, al presentar este formulario lo que ha pasado?
He escrito en David, verificado masculino, hace clic en Matthews, registro.
Se ha registrado. (Bueno, en realidad no.)
Esto es claramente un paso más allá de imprimir el contenido de alguna variable,
pero lo que está haciendo en realidad este archivo?
En register2.php
cuenta de que tengo algo de código nuevo.
En el interior de mi cuerpo de la etiqueta que tienen esencialmente un if else,
sino porque estoy co-mezcla esto con algo de HTML
Tengo que entrar y salir del modo PHP ida y vuelta, así que vamos a ver lo que estoy haciendo.
>> En la primera línea aquí que estoy diciendo si es el caso
que el puesto está vacío súper mundial para la clave de nombre,
por lo que en otras palabras, si el usuario no me dio un valor para el nombre en la forma,
entonces vacío va a devolver true porque el valor está vacío.
O-note las barras verticales, si el género está vacío
dentro de este mundial especial super, que, de nuevo, representa el contenido de la forma,
o el dormitorio está vacío, entonces yo voy a seguir adelante y gritar en el usuario.
¿Cómo? Bueno, fíjate que voy a decir que usted debe proporcionar su nombre, sexo, y residencia de estudiantes.
Vamos a inducir realmente ese error.
Déjame volver a mi forma. Permítanme volver a cargar para desactivarla.
Y yo sólo voy a darles David, y ellos no necesitan saber dónde vivo.
Regístrate. Al parecer, es necesario que les diga dónde vivo.
Usted debe proporcionar su nombre, sexo y residencia de estudiantes. Vuelve.
>> Y podría clic para volver a esa forma, pero ¿por qué es eso?
Bueno, en ese caso el nombre no estaba vacía, pero el sexo, y fue residencia de estudiantes,
por lo que esta expresión evaluada como verdadera totalidad, y aunque la sintaxis es un poco nuevo,
de nuevo, entrar en el modo PHP, familiar if,
pero lo novedoso es precisamente esto colon, y me había fastidiado al omitir un paréntesis
por accidente, pero observe los dos puntos, y significa que
a pesar de que está saliendo todo el modo PHP
que sigue debe escupir literalmente en el navegador
hasta que vea un bloque else, como lo hacemos aquí,
en cuyo caso su lugar debe escupir esto
hasta que vea la endif, por lo que algunas sintaxis ligeramente nuevo
que me permite alternar entre HTML y PHP.
Podemos limpiar esto con el tiempo, pero por ahora,
es una especie de una forma convincente de comprobación de errores del formulario.
>> Ahora, yo digo que no está realmente registrado porque, obviamente, no hemos hecho nada, pero los datos,
así que en realidad tratan de hacer algo fresco.
En froshims3 la única diferencia es que voy a presentar a register3,
por lo que el HTML no es el mismo.
En register3 cuenta de esto.
Ésta es una especie de sexy.
En la parte superior Estoy utilizando una instrucción require, así que esto es como # include.
Esta vez no es stdio.h ni nada de eso.
Es una librería PHP, y éste se llama PHPMailer.
¿Cómo supe que incluya precisamente esta cadena entre comillas?
Lo leí en la documentación, así que cuando me dijeron que me ponga esto en la parte superior del archivo
si usted desea utilizar una biblioteca especial llamada PHPMailer que hace lo que dice.
Le permite enviar correo electrónico a través de PHP.
Ahora vamos a desplazarse más lejos.
>> Aviso para empezar estoy en modo PHP todo este tiempo,
por lo que ahora notar aquí después de importar la biblioteca,
por así decirlo, estoy haciendo algunas comprobaciones de sanidad.
Si es el caso que el nombre no está vacío
y el género no está vacía-notar los signos de exclamación puntos
dormitorio y no está vacío, entonces el usuario lógicamente ha rellenado el formulario, por lo menos lo suficiente.
No me importa si son o no capitán. Sólo necesito su nombre, sexo, y residencia de estudiantes.
Si se han llenado ésos hacia fuera para que ninguno de esos campos están vacíos
esto es un poco nueva sintaxis.
PHP, en un aparte, es un lenguaje de programación orientado a objetos
que algunos de ustedes puede recordar de SCCA o similares.
Por ahora, si no familiar, sólo sé que para usar esta biblioteca
usted tiene que escribir una línea de código como este con una nueva palabra clave,
literalmente una palabra clave nueva llamada nueva.
Pero más allá de eso, tenemos una sintaxis familiar.
Es un operador de flecha, que es similar a lo que hemos utilizado para las estructuras en el contexto de los punteros.
Para hoy PHP no tiene punteros,
pero sabemos por ahora que dentro de la variable mail
es esencialmente un tipo de puntero a una biblioteca especial
que alguien más escribió, y si quiero acceder a la funcionalidad específica
dentro de esa biblioteca que sí, al igual que en C, utilice el operador de flecha,
a pesar de que éstas no son en realidad punteros.
Es una especie de versión propia de PHP del mismo.
Esto significa ir a la biblioteca y llamar a la función IsSMTP.
SMTP, memoria, de nuestros guerreros de la Red se refiere al correo electrónico,
y eso sólo significa utilizar un servidor de correo electrónico para este registro Frosh mensajes instantáneos.
>> ¿Qué acogida es lo que quiero usar?
Bueno, Harvard, si se busca en Google la vuelta, tiene un servidor de correo electrónico llamado smtp.fas.harvard.edu.
Si estás jugando a lo largo de en su casa o vive en una red de Comcast
puede ser que sea algo como smtp.comcast.net.
Es totalmente depende de donde usted vive y quién es su proveedor de Internet es.
Después de eso me voy a poner mi dirección de manera arbitraria a ser jharvard@cs50.net.
Estoy pasando luego a establecer el abordar a ser jharvard@cs50.net.
La única manera que sabía que estas funciones fueron llamados setFrom y AddAddress
Es decir, una vez más, he leído la documentación.
Esto no es una especie de magia a conocer a todos los programadores.
Entonces me puse a objeto de "registro".
Y ahora, esta línea es un poco feo, porque lo que hace el operador de punto medio en PHP?
Alguien sabe?
Concatenar.
En C es un dolor en el cuello para concatenar dos cadenas juntas.
Tienes que lidiar con malloc o realloc o todas esas cosas
sólo para extender la longitud de una cadena.
En PHP, JavaScript y en otros idiomas
normalmente se puede hacer esto con un solo carácter.
En este caso, punto significa tomar esta cadena aquí
y añadir a esta cadena.
>> Ah, y por cierto, añadir a esta cadena,
que pasa a ser una variable de ese interior súper global.
A continuación, añadir a una nueva línea, por lo que todos estos puntos sólo significa
seguir haciendo una cadena más grande y más grande y más grande,
y usted no tiene que preocuparse en absoluto por malloc o similar, en un lenguaje como éste,
y hay otras maneras de hacer esto, pero este es uno de los más rápidos
formas de exponer.
¿Qué hace esto?
Se trata de crear un cuerpo de correo electrónico que va a decir el nombre: Capitán: Sexo: Dorm:
todo en líneas separadas, y luego, por último,
una línea de código, y yo voy a hacer caso omiso de esto por ahora.
Si es false == simplemente significa que si algo salía mal,
pero la magia que sucede aquí.
Mail Enviar significa el envío de este correo electrónico.
Vamos a ver lo que el resultado neto es.
En la parte inferior del archivo, notará que va a decir que está registrado realmente
si llegar tan lejos.
Si, sin embargo, el usuario mete la pata, observe que comenzamos este
si la condición hasta aquí, si no está vacío y no vacío
y no vaciar enviamos por correo.
De lo contrario vamos a enviar esta línea de código,
que va a tener el efecto, como se verá en el conjunto de procesadores 7, de redirigir al usuario
de vuelta a donde vinieron, froshims3.php.
>> Crucemos los dedos, de lo contrario esto va a ser la demostración más decepcionante hoy.
Aquí vamos.
Permítanme abrir mi bandeja de entrada de correo electrónico para jharvard en Gmail.
Ningún correo electrónico ahora mismo. Está bien.
Ahora voy a abrir froshims3, que es el tercer y último ejemplo vamos a ver aquí.
Bueno, aquí vamos.
Nate, que va a ser el capitán, hombre, de, por ejemplo, Apley.
Regístrate. Está bien, está registrado realmente.
Ahora, si me desplazo a mi correo electrónico, oh, Dios mío.
Acabo dinámicamente envió un correo electrónico en la Web.
>> Vamos a dejarlo en esa nota.
Un video es para la próxima conferencia nos perdimos. Nos vemos la semana que viene.
[CS50.TV]