ANDI Peng: Estamos casi a través de todos los conjuntos de procesadores. De hecho, estamos a través de la mayoría de los conjuntos de procesadores más difíciles. Así que estamos en realidad sólo ir a clase de brisa a través de un par de semanas. Vamos a empezar a hablar de nuestra proyectos fin de carrera, los eventos que sucederán en las próximas semanas. Y la vida será una brisa. Así que no hay mucho en la actualidad. Esperemos que, en realidad brisa a través de la agenda de hoy, y luego salir de aquí con un poco de tiempo de sobra. También, quiero disculparme por la falta de caramelo hoy. No sé por qué. Pero en la semana previa Halloween, me olvidaría de caramelo. Así que estoy en realidad sólo un vasto decepción para usted en este momento. Porque yo, literalmente, recuerdo dulces para cada clase única, pero de Halloween. Pero la próxima semana, voy a traer duplicar la cantidad de caramelo para compensar eso, todo para usted. Será genial. Así que tengo un par de anuncios con respecto a algunos de programación. Tengo algunos problemas de programación. Entonces vamos a pasar a hablar de lo que se llama chmod. Vamos a hablar acerca de rápidamente TCP / IP HTTP. Y luego vamos a codificar nuestra propia página web usando HTML y CSS. Y luego voy a realmente dejo quizá como 20 minutos para hablar de pset6. Debido pset6 es en realidad una gran cantidad de cosas que ya hemos visto antes, pero quería refrescar algunos de esos conceptos así como enseñar a un par de nuevas funciones. Guay. Así que primero de todo, bienvenido de vuelta de las vacaciones. Espero que estés ruptura fue agradable. Sería qué hacer durante las vacaciones? AUDIENCIA: fue a Nueva York. ANDI Peng: Usted fue a Nueva York? Creo que la mitad de nuestra escuela se fue a Nueva York. Está todo bien. Pasé la mayor parte de mi descanso sedentaria en la cama Netflixing. Y era un buen momento. Pero ahora estamos de vuelta, de vuelta en sesión, de nuevo en el ritmo de las cosas. Tenemos un conjunto de procesadores por este viernes al mediodía. Creo que ya ha recogido su concurso, sí? Así que cualquier otra persona que tiene No tenían sus cuestionarios, por favor venga y obtener sus concursos de mí en el extremo de la sección. O me rastrear en el campus. Voy a tener conmigo en alguna parte. Nuestro proyecto final pre-propuesta también. Así que para aquellos de nosotros que nunca han tomado esta clase antes, la piedra angular del CS50 está muy culminado en este gran proyecto que los estudiantes proponen. Y el proyecto de propuesta, sólo una idea general de lo que se podría querer hacer por su proyecto, esa idea se debe lunes el próximo lunes al mediodía. Así que más o menos, David creo que va a hablar más sobre esto en la conferencia si no lo ha hecho ya. Y hay una página sólida en nuestra página web que explica todos los requisitos del proyecto. Pero, en esencia, elegir cualquier tema que usted tiene han interesado por durante su tiempo aquí en CS, ya sea de juego o diseño o de vídeo o cualquier cosa. Y usted puede realmente clase de Ahora aplicar algunas de las lecciones que hemos aprendido aquí en CS50-- hi, welcome-- a la realización de más o menos un proyecto final de su elección. Todo lo que es debido el lunes es sólo una breve nota publicitaria por correo electrónico para mí, una sentencia rápida, como, hey, Andi, Estoy muy interesado en el diseño un juego que hace esto para iOS. Guay. Sólo tienes que dejar que su escrito inicial Ideas para sus proyectos finales. Y hablaremos a través o no que en realidad es una buena idea o no, si es una idea factible o no. Pero sólo el proyecto de propuesta se debe el próximo lunes. pset6, nuestra encantadora web-- que está mal. Pset7? pset6? Es pset6, ¿verdad? pset6, nuestro servidor web, se debe Viernes al mediodía con el último día. Las horas de oficina reanudan normalmente de lunes a jueves 8:00-11:00 esta semana. Creo Commons para las próximas tres noches. Guay. Antes de que tuviéramos en el material, ¿alguien tiene cualquier pregunta, chistes, historias? ¿Qué hiciste durante las vacaciones de otoño? AUDIENCIA: ¿Qué debo hacer? ANDI Peng: Ya es edades hace realidad. Christabel fue a Nueva York. Me alojé aquí y Netflixed. AUDIENCIA: Oh, si yo estaba aquí. ANDI Peng: Oh, OK. AUDIENCIA: No me acuerdo lo que específicamente. ANDI Peng: Eso está bien. AUDIENCIA: Netflixing probablemente. ANDI Peng: Netflixing. Sí, es un buen momento. OK. Correcto. Para cualquier duda antes saltamos en el material? Además, vamos a tratar de acelerar la sección de hoy en día, no hay mucho que cubrir. Y es de esperar, nos pondremos en contacto aquí un poco temprano. Lo siento por no dulces, también. Soy una decepción, especialmente durante Halloween. Correcto. Guay. Así que vamos a empezar a hablar un argumento de línea de comandos llamado chmod. chmod, todo lo que es es sólo un sistema Unix de llamadas realizadas desde la línea de comandos para cambiar los permisos de archivos. Así, por ejemplo, tenemos todo encontró una página como éste, probablemente, en algún momento nuestra esperanza de vida de ser un internet usuario, donde nuestro servidor web tiene nos ha dado el error del Prohibida. Usted no tiene permiso para acceder, bla, bla, bla, en este servidor. Todo lo que realmente significa es que los permisos que se adjunta a lo página que estaba intentando acceder no estaban abiertas para usted. Así que más o menos, chmod es la manera en la cual podemos modificar los permisos del sistema dar a cada uno, el usuario, el grupo, o el mundo, o cualquier combinación de los acceso a ciertos archivos, directorios, nada realmente, cualquier tipo de sistema de un sistema operativo. Así que si alguno de los chicos tienen ordenadores si se siente como seguir conmigo hoy, totalmente dude en sólo tienes que escribir cosas en. Si no, usted puede simplemente pasar el rato. Así que voy a tirar en realidad hasta mi terminal en este momento. Así que el comando se ejecute chmod, o al menos solo para listar los permisos de su directorio de archivos, es sólo ls-l. Como puede ver, un montón de cosas aparece mayoría de los cuales es importante para nosotros el lado izquierdo aquí. Ustedes ver un montón de rs, ws, 1 /. Sí. Esas son esencialmente sólo todos los permisos de archivo para explicar lo que ciertos directorios y archivos dentro de su sistema tienen. Así que vamos a volver a el punto aquí el poder. Así que además de los nombres de archivo como ustedes pueden ver a la derecha, estamos buscando para ver esencialmente sólo la columna de la izquierda. Así que además de justo los nombres de los archivos, que puede ver los permisos de archivos, su grupo propietario, el nombre del grupo, la fecha que el archivo por última vez modificada, etcétera. Usted puede ver un montón de cosas usando chmod. Así que la forma en que leemos chmod es que la primera letra que prácticamente ignoramos en cuanto a los permisos de lectura. La primera carta sólo nos dice lo tipo de sistema que estamos accediendo. d, en este caso, es una carpeta o directorio. Así que sabemos que actualmente mi espacio de trabajo la sección siete era un directorio. Y luego ves de tres tríadas, esencialmente sólo tres series de tres caracteres. Y usted puede pensar en cada uno como un poco. Así que sólo hay tres conjuntos de tres bits, nueve bits en total. Se les trata en grupos de tres. Así que el primer grupo de tres es siempre los permisos de usuario. Su segundo grupo de tres es siempre sus permisos de grupo. Y el tercer conjunto de tres siempre es como el mundo, los permisos de todo el mundo. Así que supongo que la fácil pregunta que debemos hacernos es ¿cuál es la diferencia entre el usuario y grupo. La principal diferencia entre el usuario y el grupo es que un usuario es sólo usted personalmente accediendo a lo que es ahora. Un grupo puede ser si usted tiene múltiples usuarios en un ordenador, por ejemplo. Todos ellos pueden ser tratados como un grupo. Y entonces el mundo es sólo el mundo, todo el mundo. Así que podemos ver más adelante cómo podemos modificar aquellos en los diferentes permisos. Así que más o menos, estamos va a centrarse aún en la parte de la izquierda, donde para el directorio CS50 vemos drwx, donde el r simplemente significa que es fácil de leer. La w simplemente significa que es modificable. Y luego los x solo significa que es ejecutable. Se podría pensar que tipo de que no tiene sentido. Debe ser e. Pero x realidad un poco funciona un poco mejor, porque puedes recordarlo mejor. Así que los tres tipos de cosas que usted puede hacer, se puede leer un archivo, usted puede tener permiso para escribir un presentar, ya que podría tener el permiso para ejecutar un archivo. Y así el camino que en realidad representar aquellos en bits es el número 4, 2 y 1. Así que cualquier cosa que sea legible es representado por el número de 4. Cualquier cosa que sea escribible está representado por 2. Y cualquier cosa que sea ejecutable representada por 1. Así que en este sentido, también puede representar estos numbers-- Hola, bienvenido, de una manera diferente. Apenado. Antes de todos, voy a pedir disculpas en nombre de todos entrar en la clase ahora. Olvidé dulces hoy. Siento que soy un fracaso esta semana de Halloween. Traeré el doble de la cantidad de dulces próxima vez para compensar por ello. Pero de todos modos, lo siento acerca de que los chicos, lo siento. Así que la forma en que podemos realmente entrada en nuestro comando el argumento es que puede hacer chmod permisos slash grupo, donde el grupo es sólo lo que sea grupo estamos tratando de cambiar. Y los permisos son lo que queramos añadir a la misma. Así, por ejemplo, la además añade permisos, y la resta quita permisos. Y el tipo de grupo tenemos nuestra una para todos, para los usuarios u, g para los grupos, o o para otros. Es un poco abstracta en este momento. Pero vamos a repasar un par de ejemplos sólo para demostrar esto muy rápido. Todo el mundo en esta buena diapositiva, así que puede pasar? Guay. Así, por ejemplo, rwx. Antes de hablar de lo que representa, en primer lugar ¿qué significa rwx? Si usted ve que esta cierta archivo tiene permisos de rwx, ¿qué significa la persona podría ser capaz de hacer? AUDIENCIA: Leer, escribir y ejecutar. ANDI Peng: Sí, exactamente. Usted puede leer escribir y ejecutar. Debido a que los tres de los personajes están presentes. Así que si seguimos adelante y hablar acerca de esto en términos de bits, la rwx también se puede representar como 700. Debido a que como se puede ver en cualquier tipo de permiso directorio de archivos, hay tres tríadas. En este caso, sólo la primera tríada tiene nada allí. Así pues, en este caso, el r es 4, la w es 2, y la x es 1. Si agrega los juntos, es 7. Y así, si convierte que a binario, es 700. Debido a 7 es la primera tríada. 0, no hay nada presente en el segundo tríada. Y entonces no hay nada presente en la tercera tríada, por lo que esa es otra 0. Así que en el mismo sentido, un montón de tríadas se puede representar simplemente en bits, justo en binario también. Así que 700 significa exactamente lo mismo como rwx ------ en términos de permisos. Todo el mundo claro? Guay. Y así chmod 111 daría que los permisos para el archivo? Darle chicos un par segundo para convertir esto. Recuerde que la primera tríada es para el usuario. La segunda tríada es para el grupo. Y la tercera tríada es para todo el mundo. Y así chmod 111 daría que tipo de permisos y para quién? Tome un par de segundos para pensar en ello y volver. Sí. AUDIENCIA: Para que todos puedan ejecutarlo. ANDI Peng: Sí, exactamente. AUDIENCIA: Pero nadie sabe leer ni escribir. ANDI Peng: Y no dude para explicar a todo el mundo cómo llegó a esa conclusión. AUDIENCIA: Bueno, para el usuario, el grupo, y el mundo, todo es 1, que es el código de ejecutable. ANDI Peng: Sí, exactamente. Así 1, en este caso, lo único que sabemos es que ese es el código ejecutable. Porque la lectura es 4. La escritura es 2. Y el ejecutable es 1. Así se las tres tríadas son 1, que significa que para el mundo, para el usuario, y para el grupo, son todos ejecutable. Todo el mundo bien con eso? OK. Y así, la segunda forma que podemos realidad escribir esto también es Sólo podía hacer chmod un x más. una significa todos o todos. El plus significa dar permisos. Y entonces la x significa ejecutable. Así que hay dos comandos en realidad son idénticos. Así que si desea ejecutar esto en su terminal, haces chmod 111, nombre del el directorio o el archivo. O usted puede hacer chmod un plus x, nombre del archivo de directorio. La misma cosa, sólo una manera más fácil, quizás, para algunos representan o el cambio permisos de archivo. Todo el bien con chmod antes de seguir adelante? Guay. Así que ahora vamos a la cabeza en una algunas diapositivas de conceptos muy abstractos que estoy más o menos ir a la brisa a través. Y es totalmente bien si no lo entiendo todo. Incluso ahora, todavía no se sabe muy entender todo por completo. Pero es más de conseguir el entendimiento de nivel superior de cómo algunas de estas cosas funcionan. Así que vamos a hablar rápidamente sobre TCP / IP, que es sólo de Control de Transmisión Protocolo slash Protocolo de Internet. Recordemos de conferencia, David, ¿te enseñan el ejemplo donde había pasar las notas en un sobre hasta recibir la parte superior de la sala de conferencias? Así, en el auditorio del colegio de abogados David demostró esencialmente cómo TCP / IP trabaja en el sentido de que todo lo que es es un medio para asegurar que los datos ha sido entregado a través de un servidor o en Internet. Así, en el ejemplo de la envolvente y el mensaje, el usuario al final pudo ver que, oh, necesitaba recibir cuatro paquetes de información. Pero en realidad sólo recibió tres. Eso significa que debo estar perdiendo una. Y no fue entregado. Y así TCP / IP en el Internet, a través de su equipo y el servidor, hace exactamente lo mismo. Todo lo que hace es especificar un marco en el que una pérdida de datos los paquetes pueden ser reenviados y recibidos. Al igual que en el Internet cuando usted está tratando para acceder a archivos en línea o enviar archivos a tu amigo o mirar en la web navegadores, miles y miles de miles de millones de bytes de información se transfieren por milisegundo. Y es muy, muy confuso. Y es muy difícil realmente saben lo que se ha enviado y lo que no ha sido enviado. Y así TCP / IP simplemente especifica un marco coherente en el que su web navegador y el servidor puede tipo de comunicación con unos a otros, asegurarse de que los paquetes son Todo está aquí y nada de perdida y todos los datos que requeridos en realidad está mostrando correctamente. Todo el mundo en Aceptar en sólo que muy entender breve alto nivel? Guay. Así que vamos a mover a hablar de HTTP, que es sólo Protocolo de transferencia de hipertexto. HTTP, todo lo que es es lo que sea cualquier página o archivo se accede en su sitio web, el servidor devuelve un HTTP código de estado en respuesta a la petición asegurándose de que o bien, oh, esta solicitud pasó. Y todo está mostrando correctamente. O bien, oh, no, 404. Algo salió mal. Oh, no puedo mostrar. Todo lo que es, es que lo que sea usted está tratando de acceder, utilizar como el usuario está tratando de acceder, en la Internet- simplemente asegurarse que o bien tiene éxito acceder lo que fuera o no acceder con éxito lo que fuera. Y por lo que el estado HTTP código sólo le proporciona un medio de poder saber si o no se ha realizado correctamente o no. Así, por ejemplo, una solicitud de ejemplo. Se puede ver aquí es generalmente generalmente de cuatro líneas. Tenemos un HTTP GET 1.1, que es justo la URL petición método, el protocolo versión, el nombre del campo, y el valor del campo. Así que no hay necesidad de completo memorizar nada aquí. Sólo tipo de familiarizarse con cómo éstas se ven. En este ejemplo, la petición método URL es sólo lo que sea pedido va a enviar al servidor. Al igual que, hey, servidor, realmente quiero Acceso bla, bla, bla, página HTTP. La versión del protocolo es sólo lo que sea versión de su anfitrión o el servidor se utiliza para acceder a la información. El nombre del campo es el sitio web o en el URL que usted está tratando de acceder, en este caso, www.apple.com. Y el valor del campo es simplemente típicamente nombre, valor. Y puede ser cualquier tipo de combinación de letras o números o lo que sea. Así que una solicitud típica, por lo lo que el equipo realmente envía al servidor que dice, hey, usted sabe lo que necesito esta muestra, eso es del tipo de demanda que en realidad reciben. Un ejemplo de lo que la respuesta servidor enviaría de nuevo a usted sería más o menos la misma cosa, excepto con un código de estado en la parte superior. Así que 200, 2 0 0 es siempre el código de estado de OK. Al igual que, OK, esta solicitud pasó. Usted fue capaz de acceder todo correctamente. La vida es buena. La vida es bella. Todo es totalmente bueno. Y así, esto sólo le dice a su navegador y su servidor, bueno, de todo lo bueno. Tengo toda la información que necesito. Guay. Pero el problema es a veces surgen problemas cuando tener-- durar Creo Hablé de los duplicados. Usted tiene menos buenas respuestas. Así, por ejemplo, 404 es la Página no encontrada. A veces se tiene un acceso prohibido. Usted tiene varios otros códigos de estado que estoy Seguro que has visto todo cuando estás tratando de hacer investigación en el Internet. Y su navegador le da la, no, no se puede acceder. Y usted es como, bueno, mierda. Así que más o menos, hay algunos códigos de estado bastante comunes. Quizás familiarizarse con la que los que son. El más divertido que Creo que he escuchado de-- si le toca buscar todos ellos en línea, por alguna razón hay en realidad un código de estado de bienes llamado 418 Soy una tetera. Busqué en Google donde el origen de esta era. Y al parecer uno April Fools ' Hace un par de décadas Día, alguien pensó que sería divertido para crear un nuevo código de estado de llamada 418 Soy una tetera. Legítimamente, el nombre de este código se llama Soy una tetera. Me olvide de qué página hay que ir a hacer realidad esta pantalla. Pero, al parecer, en realidad se puede obtener un código de estado que soy una tetera de alguna manera a través de hacer algo. Así que hay cientos y cientos de códigos de estado. Algunos de ellos hacen más sentido que otros. Pero prácticamente sólo familiarizarse usted mismo con los más comunes. El cuerpo de la entidad solicitada es bajo y robusto, al parecer. Así que a veces hay más errores espantosos que soy una tetera. Pero esta es una que supongo que tipo de esperanza de golpear. Pero yo no creo que lo hará. Todo el mundo bien en el estado justo códigos, las solicitudes, los procesos, la toma de que la información se entrega correctamente? Así que ahora vamos a la transición en una parte divertida de la sección de hoy, donde hablamos un poco sobre HTML. HTML, todo lo que es de hipertexto Lenguaje de marcado. Es sólo la lengua estándar se utiliza para crear todas las web páginas en Internet. Así que cualquier página web, lo que es tu página web favorita? ¿Cuál es tu página web favorita? AUDIENCIA: [inaudible]. ANDI Peng: Lo siento? AUDIENCIA: Tumblr. ANDI Peng: Tumblr. Así Tumblr está escrito en HTML. Y, entonces, realmente vamos a través y jugar con algunas de estas cosas mas tarde. Casi todo lo que usted la necesidad de aprender, conocer, para escribir HTML puedas probablemente solo Google en Internet. HTML, no es un programa como C donde se pueden crear variables y hacer enfriar las cosas con él. Es más justo, oh, así es como yo quieren que las cosas aparecen en mi sitio web. Y yo sólo voy a ponerlo en. Y se va con el estilo de ella. Así HTML, en cierto sentido, es como un lenguaje de formato o plantilla. Es mucho más fácil. Es mucho más fácil de aprender, mucho más fácil de escribir en de su programación típica idioma, muy fácil, accesible y muy fácil de usar. Así que estamos realmente va a jugar alrededor, escribir nuestras propias páginas hoy. Pero antes de comenzar, solo quiero repasar algunas mejores prácticas breves. Debido a HTML es tal un fácil lenguaje y porque incluso si lo haces un par de cosas mal, a veces puede no notar, queremos asegurarnos de que estamos en realidad la adhesión a nuestras mejores prácticas para asegurarse de que las cosas que podría dar la vuelta, pero No siempre van a no ir a la derecha asegurarse de que están minimizados. Así que más o menos, asegúrese tus cierre todas las etiquetas cuando estás escribiendo en HTML. Si va a abrir un cuerpo, asegúrese de que está cerrándola con un cuerpo en alguna parte. Usted quiere asegurarse de que su página web valida mediante el uso de lo que llama el W3 Validator. Usted puede simplemente Google que en línea, y hay un enlace a la misma. Y entonces usted quiere separada HTML, que es el lenguaje de marcado de su estilo, que es el lenguaje CSS que David demostramos que también somos va a jugar un poco con la conferencia. Guay. Así que cada vez que desee ejecutar HTML en el aparato CS50, vamos a ejecutar un programa llamado apache, que todo lo que está a sólo construido en servidor web que todos en CS50 tiene acceso a. Lo llamamos apache50 sólo porque gustaría llamar a todo 50 en CS50. Así que la forma en que se inicia la web CS50 servidor está escribiendo en su comando línea apache50 iniciar punto. Y si quieres ponerle fin en cualquier tiempo, usted apache50 terminar sin puntos. Y usted acaba de golpear Intro. Y debe ser la partida aquí pronto. Sip. Así que sólo voy a ir rápidamente sobre un ejemplo de un muy breve página web. Y vamos a pasar como 10, 15 minutos jugando alrededor de escribir nuestras propias páginas web. OK. Así que aquí en el IDE-- puede ver que todo el mundo? En realidad no. Aquí, voy a acercar. Sólo tengo este breve plantilla aquí sin nada realmente en él. Sólo vamos a escribir rápidamente un programa de HTML en el que acabamos de saludar al mundo. Así mismo que en C, ahora estamos sólo va a hacerlo en HTML. ¿Alguien quiere en realidad sólo intente darme la primera cosa que usted tendría que poner en un documento HTML? Sí. AUDIENCIA: Los soportes, el [inaudible]. ANDI Peng: Sí. Así que algo que es muy único para HTML que normalmente tradicionalmente no encontrará en otro comando lenguajes de programación de nivel de línea es que en realidad a especificar el tipo de archivo que este va a ser en la parte superior de nuestro código. Así que en este instance-- Creo eso es el comando correcto, ¿no? Sip. En la parte superior, lo que desea incluir Bang DOCTYPE html entre paréntesis justo de decirle a su equipo, hey, mirar hacia fuera. Y documento HTML está llegando. Y entonces, ¿cómo queremos para empezar nuestro archivo? Si sólo queremos saludar, tener un página web que dice hola al mundo, cómo hacemos para construir esto? En realidad, pasemos a Google. Y en realidad podemos hacer esto. Sip. Allá vamos. Así HTML. Como se puede ver, mi navegador es en realidad peinar automáticamente esto para mí. Lo mismo que en C, cuando crear una llave de apertura, su navegador de forma automática añade en una llave de cierre. Por suerte, nuestra IDE le encanta hacer esto por nosotros también. Así que ahora podemos especie de escriba el comienzo de una etiqueta, y va siempre nos dicen que recuerde escribir el final de la etiqueta. Creo que esto debe ser capitalizado. Y luego queremos agregar, siempre, una cabeza en la que es el título. Sólo queremos llamar tal vez este hola, y luego el cuerpo. Y ahí lo tienes. Eso es en realidad nuestro documento HTML. Así que la forma que cualquier documento HTML Siempre se labró en-- misma cosa con void main int. Usted siempre quiere tener HTML una etiqueta de apertura y cierre en la parte superior e inferior de su código. ¿Quieres tener una cabeza en el interior de que contiene el título, justo lo que sea va a mostrar la ficha de su web página, y luego un cuerpo dentro de los cuales en realidad mostrar el contenido de lo que quieras hacer. Así que si quería correr en realidad esto, me voy a acercar a salir. Puede comenzar realidad apache50 comenzar punto. Guay. Y así como se puede ver, ahora este enlace ha aparecido. Dice que su sitio es ahora disponible en algún enlace de abajo. Así que todo nuestro IDE tiene done-- No IDE, sorry-- sí, nuestra IDE ha hecho es crear una web enlace sobre el que todas nuestras páginas web se puede acceder en el servidor. Así que vamos a echar un vistazo aquí. Hagamos clic sobre este, vaya a hello.html. Y usted ve un muy simple página web para hola mundo. OK. Estamos realmente va a acaba tener everyone-- sí, ¿qué pasa? AUDIENCIA: Tengo una pregunta básica. ANDI Peng: Sí. AUDIENCIA: ¿Cómo ahorrar su archivo como HTML? ANDI Peng: Sí. Así que si yo fuera a crear un nuevo archivo, si lo hago nuevo archivo, Untittle, si lo hago, section.html, boom, eso es todo lo que tengo que hacer. AUDIENCIA: [inaudible]? ANDI Peng: No. AUDIENCIA: [inaudible]. ANDI Peng: No. AUDIENCIA: [inaudible]. ANDI Peng: Sí. Más o menos, la extensión de el archivo que está dentro de su IDE, que cuenta el equipo, que le dice al navegador, hey, cuidado. Este va a ser el código escrita en esta lengua. Así, por ejemplo, en Microsoft Palabra, ¿qué hacer todos los documentos de Word terminar con, qué extensión? .doc o .docx, ¿verdad? Todo lo que hace es especifica a su sistema operativo, hey, usted tiene un documento de Word que viene. Abrirlo con Word. Lo mismo con los archivos PDF. Sabe, oh, necesito para abrir este archivo con Adobe Reader o Adobe Acrobat. Y así extensiones operan la misma forma que en el equipo. Si especifica la página de códigos ser nombrado HTML, entonces se sabe, oh, tienes código HTML. Voy a tratarlo como código html. Así que es muy inteligente en ese sentido. Así que todo el mundo, vamos a tomar como 10 minutos y acaba de crear nuestros propios sitios web. Vamos a añadir en las cosas bonitas. Siéntase libre de decir lo que quieras. Sólo quiero para asegurarse de que servidores de todo el mundo se están ejecutando correctamente antes de que le liberamos en el conjunto de procesadores. Porque si los servidores no se ejecutan para el conjunto de procesadores, que va a ser muy, muy malo. Yo sólo voy a flotar alrededor y ver lo que todo el mundo está trabajando. ¿Cómo te va? AUDIENCIA: Acabo de cumplir en mi equipo. ANDI Peng: Eso está bien. AUDIENCIA: [inaudible]. ANDI Peng: Sólo su IDE. Sí. AUDIENCIA: [inaudible]. ANDI Peng: Está bien. AUDIENCIA: [inaudible]. ANDI Peng: Totalmente bien. Está todo el mundo el acceso a su servidor OK web? Está apache50 funcionando bien? Creo que en algunos de las otras secciones, tenido problemas con no personas ser capaz de acceder al servidor. Sí. Así que usted acaba de ejecutar apache50 espacio empezar período espacio. AUDIENCIA: [inaudible]. ANDI Peng: Sí. ¿Bien? AUDIENCIA: [inaudible]. ANDI Peng: Oh, OK. Así que se supone que tienen un espacio. Así apache50-- AUDIENCIA: yo lo hice. ANDI Peng: espacio --start. AUDIENCIA: ¡Oh, punto del espacio. ANDI Peng: Sí, punto del espacio. Ahi tienes. Así que si usted tiene una página HTML creada, entonces usted puede ir directamente al enlace que se especifica. Y usted debería ser capaz de acceder a él. Todo el mundo ha podido acceder a sus páginas web bien? AUDIENCIA: [inaudible]. ANDI Peng: Oh, eso está bien. AUDIENCIA: [inaudible]. ANDI Peng: Sí. Creo que en realidad se puede abrir dentro de su navegador, el navegador y no sólo su navegador IDE. Sí, creo que si copia y pega. AUDIENCIA: Y entonces ¿cómo apagarlo? [INAUDIBLE] ANDI Peng: Sí, lo haces apache50 dejar sin período. Sip. AUDIENCIA: [inaudible]. ANDI Peng: Sin período. Sí. Allá vamos. Sip. Estamos creando nuestras propias páginas web. AUDIENCIA: Oh, genial. ANDI Peng: Sí. AUDIENCIA: Tengo una pregunta. Así apache 50-- ANDI Peng: 50, sí. AUDIENCIA: [inaudible]. ANDI Peng: ¿Qué? Eso es raro. Véase, que era una especie de la cuestión que sucedía antes. OK. Verme después de la sección. Debido a que estamos teniendo algunos problemas con el servidor. Y usted quiere hacer Asegúrese de que su servidor es en ejecución antes de comenzar el conjunto de procesadores. Porque vas a necesitar. Sí. ¿Hay alguien más que no ha sido capaz de obtener su servidor para empezar? Para aquellos de ustedes que quieren añadir estilo adicional a sus páginas web, en realidad podemos hacer lo que David hizo en la conferencia, así, que es crear un estilo adicional hoja, que es un CSS punto, en cascada Hoja de estilo y en realidad sólo tiene que añadir en. Así, por ejemplo, he acabo de crear casi casi lo mismo David hizo en la conferencia. Puede prácticamente sólo hacer cuerpo. Usted tiene lo que se llaman las etiquetas en las que se puede aplicar a IDE cualquier sección desea dentro de su real a la página HTML. Así que el cuerpo de la página, puede hacer centro align texto. Y luego voy creativa una etiqueta llamada superior interna de los cuales quiero estas cosas suceder, asignar un tamaño de píxel más grande para la fuente. Quiero que el peso de la fuente a ser audaces. Y quiero que el color ser azul, simplemente arbitraria valores que me decidí a elegir. Yo puedo crear otra etiqueta llamada media. Tamaño de la fuente, que sea un poco más pequeño. Y entonces puedo crear otra etiqueta llamado fondo donde quiero que el tamaño de la fuente ser aún más pequeño aún. Y así, más o menos esto es sólo ejemplo de código fuente o de origen hojas de estilo que es muy fácil sólo Google. Si usted dice, oh, quiero que mi fuente para ser en cursiva y de color verde oscuro, usted puede probablemente Google, y luego le dirá las etiquetas o identificadores apropiados para crear. Y así, la forma en que lo haría realidad tipo de tener esto en un documento HTML o utilizarlo es todo lo que tienes que hacer aquí es a la cabeza agregar un enlace a la hoja de estilos. Por lo que sólo puede vincular iguales href cualquiera que sea el nombre de la hoja de estilo es. Y entonces la relación es una hoja de estilo. Así que dentro de cualquier documento HTML, siempre y cuando incluya esta hoja CSS punto, usted debería ser capaz de acceder a y tienen las propiedades allí. Así, por ejemplo, aquí acabo crear otro ejemplo de la página web. Esta es bienvenido a la sección CS50 Los martes de 02:00 a 03:30 conmigo. Y luego he añadido una imagen preciosa que que potencialmente deberíamos ser capaces de ver. Así que si usted echa un vistazo aquí, si vas a style.html, hemos creado una página web con los gatitos. Debido gatito son impresionantes. Así que la adición de una imagen es sólo img enlace SRC. Más o menos, si hay cualquier tipo de función que desea añadir a su website-- así que digamos, desea agregar un menú o una barra de búsqueda o como un image-- sólo Google cómo hacer eso. Y usted apenas plop en ese formato. Y usted puede simplemente bastante tanto sólo tiene que añadir en. Es muy, muy fácil. Estamos creando nuestro propio páginas web en este momento. Si quieres-- AUDIENCIA: [inaudible] ANDI Peng: Lo siento? AUDIENCIA: [inaudible]. ANDI Peng: Oh, el div es sólo una división diciéndome que, oh, tengo una cierta sección llamada medio en el que me estoy aplicando mi etiqueta de CSS, y luego mi otra división con la parte inferior. Eso es todo lo que te está diciendo. Porque es bueno para mantener cosas interesantes con el fin, por lo que el programa sabe exactamente cómo funciona. Y creo que puedo copiar pegar este en mi navegador actual, así. Debe estar bien. Sí. Hurra. Así que si todo el mundo quiere simplemente intente crear una página web, vamos a echar otra de dos a tres minutos. Solo quiero estar seguro servidores de todo el mundo se están ejecutando y todo el mundo tiene una idea de cómo hacerlo. Si ustedes quieren sacar sus computadoras. ¿Sigue sin funcionar? AUDIENCIA: Sólo soy [inaudible]. ANDI Peng: Tal vez intente actualizar 50 también. Sí. AUDIENCIA: [inaudible]. ANDI Peng: Sí. Así que la forma en que se inicia un nuevo servidor web en el IDE es sólo hacer apache50 espacio de punto de inicio espacio. Yo sólo quería asegurarme servidores de todo el mundo se están ejecutando en Aceptar. AUDIENCIA: Aquí, en el terminal? ANDI Peng: Sí. AUDIENCIA: [inaudible]. ANDI Peng: Apache. En realidad, creo que tienes correr algo ya. Sí, eres en realidad la ejecución de un servidor diferente. Sí, ya está bueno. Mientras que está funcionando, que estás bien. AUDIENCIA: OK. ANDI Peng: Hay de dos maneras de ejecutar servidores. Así que, mientras una de las formas está trabajando, está bien. Vamos a tomar un minuto sólo para terminar la clase de arriba los toques finales de lo que sea página web que ustedes querían hacer. Está todo el mundo trabajando por el camino? Servidores de cada persona son correr, además de la suya? Se nos ocurrirá eso. Y de bastante simple HTML. Así que creo que estamos todos bien. Sí. Voy a volver. AUDIENCIA: [inaudible]. ANDI Peng: OK. AUDIENCIA: Así que es sólo comenzado a cargar. ANDI Peng: No se preocupe. Así HTML, no hay código fuente que estará en línea después de la sección. Además, David tiene un todo montón en línea también. Sólo tipo de mirada sobre él para ver cómo se escriben las páginas HTML. Es bastante fácil. Cualquier cosa que no sé, es bastante tanto sólo Google y ya está bueno. Sólo quiero para asegurarse de que los servidores se están ejecutando. AUDIENCIA: ¿Hace esto a menudo? ANDI Peng: Nunca me pasó a mí. Yo no sabía que incluso podría hibernar. AUDIENCIA: [inaudible]. ANDI Peng: Creo everyone-- la mía nunca ha hibernado antes. Y no sé por qué. Es raro. AUDIENCIA: [inaudible]. ANDI Peng: es tuyo hibernando? AUDIENCIA: [inaudible]. ANDI Peng: Sí. AUDIENCIA: Está bien. Así que una vez que esté abierta. ANDI Peng: OK. Nos ocuparemos de algún servidor cuestiones después de la sección. Usted debe estar bien. Aunque, usted quiere asegurarse de que conseguir que se resuelvan antes de salir. Porque si de su servidor no se está ejecutando, entonces estás no va a ser capaz de hacer el conjunto de procesadores, como cualquier parte del conjunto de procesadores. Así que usted quiere asegurarse de que que que está trabajando. Guay. Correcto. Diga adiós gatitos. Pasé mucho tiempo buscando esa foto gatito a poner. Así que, de todos modos. AUDIENCIA: [inaudible]. ANDI Peng: Lo siento? AUDIENCIA: [inaudible]. ANDI Peng: Creo que es en el sitio web. Al igual que la especificación? AUDIENCIA: [inaudible]. Creo que la especificación es sólo en línea en la semana siete. Yo creo que se llama pset6, incluso aunque estamos en la semana siete, que es un poco de computación. AUDIENCIA: Pero quiero decir si que desee ver at-- si querer levantar nuestra versión de la página web de nuestro Sever? Así como server.c es el conjunto de procesadores, ¿verdad? Si usted quiere ver esto, como lo comprueba hacia fuera? ANDI Peng: Oh, así que en realidad el conjunto de procesadores, todo lo que estamos haciendo aquí se implementing-- aquí, Voy a ir sobre esto brevemente. Así que para todo el mundo que acaba metido a la sección, ustedes está de enhorabuena. Hay muy poco material para cubrir realidad hoy en día. Voy sólo para pasar al siguiente 20 minutos repasando pset ayuda. Porque hay algo útil funciones que ayudarán a su vida. Y con suerte, estaremos fuera de aquí en como 20 minutos. OK. Así pset7 está mal. A pesar de que estamos en la semana siete, en realidad es pset6. Voy a cambiar eso. Todo lo que estamos haciendo en pset6 es la creación de un servidor web. Eso suena muy aterrador. Y especialmente para aquellos de ustedes que ya tienen mirado el código de distribución, hay una gran cantidad de código, una gran cantidad de código. Pero es totalmente bien. Debido a que el quid de la cuestión parte de crear realmente el servidor se hace por nosotros. Todo lo que está realmente pedirá que hacer en este conjunto de procesadores se acaba de hacer un poco de manipulación de cadenas en el archivo de E / S. En realidad es como bastante simple. Así que cuando usted primero descargar que-- que aquí en realidad ya ha descargado el conjunto de procesadores y llevado un vistazo? Correcto. Sí. Hay como 500 líneas de código que usted va a ser así, ¿Qué está pasando? Y eso es totalmente bien. Asegúrese de que usted mira los paseos virtuales. Porque David y-- No sé. Yo no creo que sea de Zamyla, éste. Pero creo que alguna otra walk-through son bastante útil en términos de solo que le permite saber lo que está sucediendo dentro de su código. Y es totalmente bien. Debido a que las cuatro funciones que eres pedido para implementar realmente tener cero que ver con el servidor real. Todo lo que tienen que hacer es analizar diferentes cuerdas, buscando a través de las cadenas, para asegurarse que las cosas están haciendo lo que se supone que deben estar haciendo. Así que en este sentido, hay algunas funciones muy, muy útiles, especialmente para string manipulación, que todos debemos voy otra vez que pensé que sería ser muy útil para ustedes aprender antes de intentar el conjunto de procesadores. Y están todos contenidos dentro de su biblioteca string.h. Hay probablemente más útil funciones que no he incluido aquí, porque o bien nunca los uso o tal vez no sabía que existían. Siéntase libre para mirar a través student.h. Debido a que va a ser mucho de funciones que son muy útiles. Así que los seis que utilizo más en mi pset cuando lo estaba haciendo la semana pasada eran strtok, strchr, strrcher, strstr, strcasecmp y strcpy. Y así los dos últimos pueden parecer muy familiar para la mayoría de ustedes. Caso Str comparar, lo único que hace es comparar cadenas para comprobar que por la igualdad, incluyendo estuche. Y strcpy sólo copias una cadena en un buffer. Y así, los dos deben parecer muy familiar para ustedes en este momento. Debido a que los he usado mucho, especialmente para los últimos conjuntos de procesadores. Pero los cuatro primeros quizá usted no ha visto hasta ahora. Pero yo voy a caminar a través de ellos. Debido a que van a hacer sus vidas muy, muy fácil no para-- fácil, pero mucho más fácil para este próximo conjunto de procesadores. OK. Así char * strtok, esta es la función definición para esta función contenía dentro de la cadena, h biblioteca. Si se le da una entrada de char * cadena, que es sólo una cadena, o un char constante * deliminator, delim para abreviar, todo lo que está haciendo es romper el mayor cadena en una serie de lo que llamamos tokens separadas por un cierto valor. Así que en cierto sentido, si me iban a dar que section.7.php, esto es una cadena. Así que eso sería si tuviera que pasar en esto como mi str, mi char * str, si mi deliminator era punto, todo esto que hacer es buscar a través de cadenas. Y la primera vez que ve un punto, sería simplemente volver al puntero a la última ficha encontrado en la cadena antes de esto. Por lo que sería ir a la derecha aquí. Y sólo me daría 7.php. Y si yo fuera a llamar a la funcionar una vez más, me daría sólo la .php. Y por lo que todo esta función está haciendo está rompiendo la cadena más grande en cadenas más pequeñas dependiendo en lo que usted está buscando. Y así, por ejemplo, en su mirada hasta la función si quieres ver lo que ciertos personajes se acerca o si los puntos suceden o extensiones suceden, esta función sería bastante útil. Sí. Sin preocupaciones. Esto todo ser-- sí, ¿qué pasa? AUDIENCIA: Entonces, en la primera línea, si estábamos usando este ejemplo, ¿qué haríamos insertar en eso? ANDI Peng: Sí. Usted acaba de llamar a un strtok delim coma cadena. Y cuerda es igual a section.7.php. Y entonces estás delim podría ser igual a solo dot. AUDIENCIA: OK. ANDI Peng: Sí. Así. Todas estas funciones son bastante similar cuando pasamos por ellos. Sólo hacen ligeramente diferentes cosas. Pero todos van a hacer su vida mucho más fácil. Segunda función, ésta es como súper, súper, súper importante, es el-- aguantar. Vaya. Búsquedas strchr por primera occurrence-- realidad, sí. Strchr es la función que Definitivamente me fui otra vez. Así que ignoro lo que dije para la primera función. Se llama en realidad strchr. Así que lo que sucedió aquí es si le dieron una cadena en un char c, sería justo dar que fuera lo que fuese. Sí. Así que pensar en ello como str, que es una cadena, y la Comisión de Derechos Humanos como char. Así que todo lo que estamos tratando de hacer es buscar para que un char es dentro de una cadena. Y por lo que busca para la primera ocurrencia del carácter c en la cadena str. AUDIENCIA: [inaudible]. ANDI Peng: Sí. Y luego si no se encontró ella, que va a devolver NULL. Así que algo que va a ser muy útil para ustedes en hacer el conjunto de procesadores Si, por ejemplo, a quien estabas buscando un extensión como un .docx para una palabra documento o un .pdf de un documento PDF, puedes tipo de utilizarlo para buscar para lo que es después cada vez que vea un punto, ¿no? Y así, más o menos, si correr que a través de la función, si devuelve NULL, entonces usted sabe que no encontrarlo punto, que significa que este claramente no es una extensión de archivo válida. O si devuelve algo, entonces usted sabe que va a devolver lo que sea de en realidad después de la ampliación. Así que aquellos de ustedes que tenía comenzó a buscar a través de las operaciones de búsqueda y analizar, esta función de va a ser super útil. Así que estamos realmente va para demostrar el uso de este. ¿Por qué no es lo que ustedes intentar escribir un función bool frase char * s que simplemente devuelve true si s es un sentencia y false en caso contrario. Así pista, vas que probablemente utilice strchr. O simplemente buscar en el cadena para un cierto carácter. Y así, en una frase, lo que separa a una sentencia de un no-condena, qué carácter específico? AUDIENCIA: Un espacio. ANDI Peng: Un espacio, ¿no? Y así, ¿qué es lo que probablemente va a querer hacer dentro de esta función en esta lista? AUDIENCIA: [inaudible]. ANDI Peng: Vamos a querer strchr cadena para la apariencia del espacio. Porque si devuelve algo, entonces sabemos que esto debe ser una oración. Eso significa que debemos tener un espacio en esta cadena. Si no hay espacio, entonces sabemos que, bueno, supongo que no es una cadena. Probablemente es sólo una palabra muy larga. Así que te voy a dar un par chicos minutos para escribir esta función. Sí. AUDIENCIA: ¿Recibiste esta cadena desde el usuario? ANDI Peng: Sí. Así que esto es sólo una función. Así que imaginen dentro de su función principal ya tener-- vamos a ir aquí. OK. Así que he escrito este programa donde Tengo mi función principal, donde Yo sólo he creado dos cadenas. La primera es: Hola, mi nombre es Andi-- claramente, una oración. Mi segundo es simplemente Andi, claramente no sentenciar. Y así me estoy quedando ambas cosas cuerdas a través de esta función. Quiero que ustedes escriben frase fría. Y estoy almacenando esos valores, y luego simplemente imprimirlos. Así que creo que el usuario es va a pasar en una cadena. Y luego vas a esencialmente averiguar si se trata de una sentencia o no y devolver verdadero o falso en consecuencia. Si ustedes quieren dar una pulgares para arriba o mano a mano, gesto de cabeza, es que nadie está listo para comenzar esto, que sería bueno. Tal como 30 segundos más? Correcto. Vamos a ver si se puede tratar escribir esta función. Así seudo coding-- Yo sólo voy a tipo de caminar a través de esto ahora mismo. Más o menos, sabemos que el función que tenemos que utilizar. Vamos a llamar a esa función en nuestra cadena y la búsqueda de un espacio. Si devuelve algo, entonces tenemos que sabe que, claramente, esto es una frase. Porque no hay espacios. Entonces vamos a volver realidad. Si no, vamos a devolver false. ¿Alguien quiere dar mí la primera línea de código que en realidad estamos pasando a utilizar para escribir esto? En realidad es el más difícil línea de código también. Sí. AUDIENCIA: Si strtok s-- ANDI Peng: Sólo strchr. AUDIENCIA: [interponiendo VOCES] el espacio no es igual a null. ANDI Peng: Cool. Exactamente correcto. Todo el mundo entiende que la primera línea? Vamos a llamar a strstr, que es una función que busca la cadena s para el carácter del espacio. Y si lo encuentra, se va a devolver un puntero a dónde está. Si no lo encuentra, que va a devolver NULL. Así que si vuelve otra cosa que NULL, entonces sabemos que ha encontrado un espacio. ¿Tiene sentido? Guay. Correcto. Así que si lo conocemos ha encontrado un espacio, ¿qué es lo que queremos hacer? AUDIENCIA: Devuelve true. ANDI Peng: Sí. Devuelve verdadero. Y entonces, alguien quiere terminar la función para mí? Sí. Si no, así como así. Y tratar de compilar esto. Sip. Así como ustedes pueden ver en la salidas, recuerde Booleans en C siempre se expresan en binario. 1 es verdadera. 0 es falsa. Si fuéramos a ejecutar este función en la cadena uno, lo que es Hola, mi nombre es Andi-- claramente, el resultado de un sentence-- impresa a 1 lo cual es cierto. El segundo, que es justo una palabra, resultado impreso a cabo a 0, lo que es falso. Todo el mundo claro tipo de sobre cómo esta función fue escrito? Sí. AUDIENCIA: ¿Podemos también hacer, en lugar de no es igual no, es igual a igual a 0, por lo que es igual a? ANDI Peng: No. Debido strchr es una función. Voy a volver a esto. ¿Cuál es el tipo de retorno de nuestra función strchr? AUDIENCIA: ¡Oh, OK. O NULO. ANDI Peng: Sí. Es un char * que me dice que todo lo que esta función va a devolver, que va a ser un puntero. O bien el puntero va a ser apuntando a donde se encontró, o que va a volver un puntero a NULL. En cualquier circunstancia, va para devolver un puntero a algo. Y por lo que si usted fuera a equiparar esto es igual, es igual, 0, usted va a obtener un error de compilación. Debido a que va a devolver un puntero. Y usted va a tratar de comparar un puntero a un entero. Y el equipo no es va a gustar eso. Si exacto. Guay. ¿Todos bien? Y en segundo lugar, vamos a ir más de una función llamada strstr. No se preocupe si éstos funciones que son confusas. Me están confundiendo. Como tal, ustedes podrían haber visto, todos ellos suenan más o menos la misma. Sólo cuando estás confundido, tire hacia arriba de la biblioteca string.h. Y ustedes pueden ordenar través del cual uno de los cuales. Así strstr, lo único que hace es búsquedas una cadena para un conjunto la otra cadena. Entonces, ¿dónde strchr sólo búsquedas para un solo carácter, Búsquedas strstr para una cadena entera. Así que quería mirar, no lo hago conocer, Hola, mi nombre es Andi. Y el nombre de mi mejor amigo es también Andi. Si quisiera buscar en esta condena para toda la palabra de Andi, mi aguja habría sido lo que usted está buscando. Y el pajar es lo usted está buscando en. Así que si usted está buscando un palabra específica dentro de una oración, esa palabra va a ser su aguja. Y entonces la frase en sí va a ser el pajar. Y por lo que sólo busca la primera aparición de la aguja cadena en el pajar cadena. Se devuelve el puntero a la primera ocurrencia. Excepto, recuerda, en este caso, es el primera aparición de la cadena completa que usted está buscando para, no sólo un carácter. Y por lo que este es casi el lo mismo que la función que acabamos de hacer, sólo con un poco más especificidad. Debido a que usted está buscando más de un carácter. Y el uso es exactamente el mismo como el que acabamos hicimos. Todo el mundo de acuerdo con esto? OK. El último que vamos a ir más es strrchr, que no es confundirse con strstr o con strchr. strrchr tiene un r extra en allí. Tenga cuidado cuando estás escribiendo. Usted puede encontrarse incluidos un r adicional o no incluir una r, y entonces su función se consiguió no ir a trabajar. Y tú vas a ser confuso. Tenga cuidado de que está deletreando todas estas funciones derecha. Así strrchr es la exacta mismo que strchr excepto que busca no es la primera ocurrencia de un carácter específico, sino más bien la última aparición. Y así, en ese sentido, es casi exactamente el mismo. Pero en lugar de mover hacia adelante en una cadena, usted va a estar en movimiento hacia atrás en una cadena. Exactamente lo mismo, no eres más que buscar en un orden diferente. Y por lo que este podría ser súper, super útil para su búsqueda función, el primero función en su conjunto de procesadores. Hagamos de cuenta que teníamos que escribir una función de la extensión de vacío en la que nos pasar un nombre de archivo * Char constante, sólo una cadena, un nombre de archivo, que lleva en ese nombre y grabados la extensión de ese archivo. Así, por ejemplo, si yo fuera a pasar en la cadena de pset7.zip, que va a imprimir solo la extensión, que es .zip. Y esto funcionaría para cualquier tipo de extensión, .docx para Word o pdf de un PDF presentar o .html para un archivo HTML. Más o menos, escribir función que puede hacer eso. De hecho voy a cambiar a la IDE. No se load-- allí vamos. Así que todo lo que he hecho aquí es creado un char *, una primera secuencia, llamada pset7.zip. Voy a hacer un zoom. He creado una segunda cadena llamada finalpaper.docx. Y me escriba una función que cuando llamada va a simplemente imprimir las extensiones de nombre de archivo. Tal vez tome un par de minutos a pensar acerca de cómo se va a hacer esto. Ligeramente más desafiante que el anterior, pero el uso es casi exactamente lo mismo. Sí. Así que escribir una extensión función llamada que, si te doy el nombre de un archivo, si tuviera que darle pset7.zip-- I Quieres imprimir sólo el .zip. Si doy te gusta finalpaper.docx, simplemente imprimir el .docx, sólo la extensión de cualquier archivo. Esta realidad sólo tiene dos líneas de código. Así que trate de ver si tal vez puede hacerlo en eso. En realidad, sólo tiene una línea de código. Pero dos líneas es probablemente más estándar. ¿Qué función somos probablemente va a querer llamar? AUDIENCIA: strrchr. ANDI Peng: strrchr, derecha. Debido a que estamos buscando desde la izquierda a la derecha. Yo no te di chicos un ejemplo de este tipo, pero si te doy un ejemplo como www.apple.com y yo sólo quería el .com, sería un ejemplo de dónde que desea llamar la última instancia del período y no la primera, ¿verdad? Si usted fuera strchr llamada, le han dado la apple.com. Si usted llama strrchr, que te habría dado el .com. Y así que tenga cuidado en la que ways-- en mi ejemplo, que probablemente podría podría tener simplemente escrito usando strchr, ya que no hay un solo punto. Pero en otros casos, que puede no ser el caso. Y por lo que siempre tratar de diseñar su código y, por lo que-- ¿sí? AUDIENCIA: Así que en el ejemplo que acabas de decir, cuando no strrchr lo haría le dan .com o simplemente vienes? ANDI Peng: Sería darle el .com. AUDIENCIA: OK. ANDI Peng: Sí. Apunta a donde lo encontró. Sí. 30 segundos tal vez? Sí. Todo el mundo bueno o tal vez un poco más de tiempo? ¿Votación a mano alzada? Mostrar de los jefes? Guay. Alguien quiere que me diera la primera línea de código para este programa? AUDIENCIA: [inaudible]. ANDI Peng: Así que en primer lugar, vamos quizá descomponerlo. Entonces, ¿cuál es el tipo de retorno de strrchr? Volvamos. strrchr, ¿cuál es el tipo de cambio? AUDIENCIA: Char * ANDI Peng: Es un char *, ¿verdad? Lo que significa que probablemente vas querer crear otro char * a clase del almacén siempre que sea volviendo a, ¿verdad? Porque si usted llama strrchr la función, que va a darle un puntero a dondequiera que encontró ese último período, ¿derecho? Pero vas a querer almacenar que en alguna parte, ¿no? Y así, ¿cómo codificamos esto en nuestro programa? AUDIENCIA: Usted hace el char * [inaudible]. ANDI Peng: Sí. AUDIENCIA: [inaudible]. ANDI Peng: strrchr. Sí. Oh, perdido una r allí. AUDIENCIA: Nombre del archivo [inaudible]. ¿Qué es? Oh, es sólo lo es. ANDI Peng: Oh, es sólo lo es. Sí, lo siento. Mi error. Ejemplos no coinciden. AUDIENCIA: Y entonces dot. ANDI Peng: Sí. Tenga cuidado cuando chicos trate: aquí, permítanme acercar. Allá vamos. Tenga cuidado cuando chicos están escribiendo, especialmente cuando que está haciendo simplemente un char. Es realmente fácil de querer simplemente hacer comillas dobles en lugar de una sola. Eso no funcionará. Su compilador va a quejarse. Y su función es simplemente no va a funcionar. Y así que ten cuidado cuando que estás haciendo las cosas con caracteres que se trata de comillas simples. Y lo mismo ocurre con esta línea de código de sentido para todo el mundo? Estamos creando un puntero char *. Debido a que los retornos strrchr algo de tipo puntero. Y así vamos a llamar strchr en s, que es la cadena, el archivo nombre, lo que estamos pasando. Y estamos en busca de la última instancia de un periodo, que es sólo la comilla simple dot comilla simple. Sí. AUDIENCIA: ¿Cuándo usamos comillas dobles y cuando lo usamos comillas simples? ANDI Peng: Sí. Cotizaciones Así dobles siempre se utiliza cuando se tener una cadena de más de uno solo. Así que si usted está haciendo strstr, que es el que más le buscar una cadena de cadena, pasaría entre comillas dobles. Pero cada vez es sólo un solo carácter, que quieres hacer comillas simples. Es una buena cosa a tener en cuenta. Así que ahora que tenemos nuestro puntero, ¿qué hacemos con él? Te estoy pidiendo chicos imprimirlo, ¿verdad? Así que [inaudible], que desea dame la línea de código? AUDIENCIA: printf-- ANDI Peng: Sí. AUDIENCIA: --Usted necesita un marcador de posición. ANDI Peng: Sí. AUDIENCIA: Imprima el marcador de posición. No sé lo que el lugar titular no es más que el punto a la misma. OK. Vamos a saltar que por ahora entonces. AUDIENCIA: Y entonces comma-- ANDI Peng: Puntero, ¿verdad? AUDIENCIA: Puntero, yup. ANDI Peng: Así que tipo de una pregunta con trampa, tiene que ver con los punteros y cadenas que hemos hablado de la clase de ya. ¿Qué tipo de lugar titular qué tenemos la necesidad de un puntero para un char *? AUDIENCIA: [inaudible]. ANDI Peng: Sí. Es más fácil de lo que ustedes piensan que es. AUDIENCIA: String? ANDI Peng: Es sólo una cadena, exactamente. Porque recuerda cadenas en realidad no existe. Un char * es la exacta lo mismo que una cadena. Y así que realmente este s es lo debería haberse utilizado todo el tiempo. OK. Vamos a ver si podemos tratar de ejecutar este. Vamos a hacer una extensión de marca. Guay. Ustedes ver cómo pasé en el psset7.zip y la finalpaper.docx, y que sólo se imprime el .zip y .docx? ¿Tener sentido? Aceptar Así que creo que en tu mirada hasta función en el conjunto de procesadores que eres va a pedir si el cadena tiene un determinado fin, usted tiene que dar un cierto código de error. Y lo que este será bastante horrible. Porque si usted puede imaginar lo que la extensión es, a continuación, puede comparar eso extensión para ver si coincide con una cierta extensión. Y entonces usted puede volver un mensaje de error, ¿no? Sí. AUDIENCIA: Entonces no lo hacemos hay que añadir 1 o algo? El puntero se destinará a el-- ANDI Peng: Nope. AUDIENCIA: --quioscos de la Punto después de ella. ANDI Peng: Sí. Señala exactamente a donde estaba la ocurrencia. Así, por ejemplo, aquí, estamos la búsqueda de la época. Así que va a volver un puntero al período. Y luego se va a imprimir a cabo a partir de la época. Así que usted no necesita agregar 1. Aunque, es totalmente bien para, si alguna vez no está seguro, a sólo un poco de probar por ti mismo. Construir un programa de ejemplo. Pruébelo usted mismo y ver en donde está la impresión. También Eso no es una mala manera de hacerlo. Guay. Y eso es prácticamente todo Tuve hoy para ustedes. Hicimos un montón de cosas pset hoy. Así que en caso de duda, como Yo dije, siempre mirar hacia arriba la biblioteca string.h para este conjunto de procesadores. No va a haber una gran cantidad de función de ahí que puede ser útil. Algunos pueden no ser útiles. Realmente no lo sé. Wade a través de él, no hay un montón de ellos. strstr, strchr, strrchr son super, super útil, así como los strcpys y strcasecmps que ya hemos utilizado. Es mucho sólo de jugar un poco con cuerdas, determinar si son iguales, conseguir cosas de cuerdas, y ser capaz de abrir archivos correctamente. Es una gran cantidad de archivos de E / S. pset en realidad no es tan malo. Usted va a tomar un mirarlo, descargarlo, y ver un montón de código. No se preocupe, el código que escriba realmente no es malo en absoluto. Si alguien tiene problemas con su servidor, ven a verme después de la sección. Pedir disculpas una vez más por no trayendo dulces para Halloween. No sé lo que estaba mal conmigo. Pero vamos a tener doble los dulces la próxima vez. Y buena suerte en su conjunto de procesadores esta semana. Sip.