ANDI Pengo: Estamos case a través de todas as Serie de exercicios. De feito, nos terminais a maioría Serie de exercicios dos máis difíciles. Entón, nós estamos realmente só vai especie de brisa a través do seguinte par de semanas. Nós imos comezar a falar sobre a nosa proxectos finais, os eventos que se celebrarán en nas próximas semanas. E a vida será unha brisa. Entón, non moi hoxe. Esperemos que realmente brisa a través da axenda para hoxe, e, a continuación, saír de aquí con tempo dabondo. Ademais, quero pedir desculpas á falta de doces hoxe. Non sei por que. Pero a semana que antecedeu Halloween, eu ía esquecer de doces. Entón, eu estou realmente só un amplo decepción para ti agora. Porque eu literalmente recordo doces para cada clase, pero o Día das meiga. Pero a próxima semana, eu traerei dobrar a cantidade de doces para compensar iso, todo para ti. Vai ser gran. Entón, eu teño un par de anuncios en relación a algunhas axenda. Eu teño algúns problemas de axenda. A continuación, imos pasar falar do que se chama chmod. Nós imos falar sobre rapidamente TCP / IP HTTP. E entón nós estamos indo a codificar nosa propio sitio usando HTML e CSS. E entón eu vou realmente deixar quizais como 20 minutos para falar pset6. Porque pset6 é realmente unha morea de cousas que vimos antes, pero eu quería para refrescar algúns deses conceptos así como ensinar un par de novas funcións. Legal. Entón, en primeiro lugar, Benvido de volta do intervalo. Espero que estea break foi agradable. Será que fixo para a ruptura? Audiencia: Fun a Nova York. ANDI Pengo: Foi a Nova York? Creo que a metade da nosa escola foi a Nova York. Está todo ben. Pasei a maior parte da miña pausa sedentario na cama Netflixing. E foi un bo tempo. Pero agora estamos de volta, de volta sesión, de volta ao balance das cousas. Temos un pset debido este venres ao mediodía. Creo que xa colleu o seu cuestionario, si? Así, calquera persoa que ten non tiveron os seus cuestionarios, por favor, veña cara seus quizzes desde me no fin da sección. Ou me derrubar no campus. Vou telo comigo en algún lugar. O noso proxecto final pre-proposta tamén. Polo tanto, para aqueles de nós que nunca tomaron esta clase antes, a pedra angular da CS50 é moi culminou neste gran proxecto que os alumnos propoñen. E a condición proposta, só unha idea xeral do que se pode querer facer a súa proxecto, esa idea é debido luns vindeiro luns ao mediodía. Entón, basicamente, eu creo que vai David falar máis sobre iso na charla se non ten xa. E hai unha páxina sólido na nosa web explicando todos os requisitos do proxecto. Pero, esencialmente, escoller calquera asunto que ten interesado en durante todo o tempo aquí no CS, tanto se se trata de xogos ou deseño ou vídeo ou calquera cousa. E realmente pode tipo de agora aplicar algunhas das leccións que aprenden aquí en CS50-- ola, welcome-- a practicamente condución un proxecto final da súa elección. Todo o que é debido luns é só unha breve sinopse por correo electrónico para min, unha sentenza rápida, como, hey, Andi, Eu estou realmente interesado en proxecto un xogo que fai isto para IOS. Legal. Só deixe-me o seu breve inicial ideas para os seus proxectos finais. E imos falar a través ou non que é realmente unha boa idea ou non, se é unha idea viable ou non. Pero só o pre-proposta débese a próxima luns. pset6, a nosa linda web-- que está mal. Pset7? pset6? É pset6, non? pset6, o noso servidor web, débese Venres ó mediodía co día de atraso. Horario de atención retomar normalmente de luns a xoves de 8: 00-11: 00 esta semana. Creo que para Commons os próximos tres noites. Legal. Antes tiñamos en material, fai calquera ten algunha preguntas, bromas, historias? O que fixo para romper a caída? Audiencia: O que fago? ANDI Pengo: Xa é moito tempo, en realidade. Christabel foi a Nova York. Eu quedei aquí e Netflixed. Audiencia: Ah, si, eu estaba aquí. ANDI Pengo: Oh, Aceptar. Audiencia: Non me lembro o que especificamente. ANDI Pengo: Isto é OK. Audiencia: Netflixing probablemente. ANDI Pengo: Netflixing. Si, é un bo momento. Aceptar. Todo ben. Calquera preguntas antes ir para material? Ademais, nós estamos indo a tentar acelerar a sección de hoxe, non moito para cubrir. E, esperamos, imos chegar aquí fóra un pouco máis cedo. Sentímolo por non doces, tamén. Eu son unha decepción, especialmente durante o Día das meiga. Todo ben. Legal. Entón, imos comezar a falar un argumento da liña de comandos chamada chmod. chmod, todo isto non é máis que un sistema Unix chamada feita a partir da liña de comandos para cambiar os permisos de arquivo. Así, por exemplo, temos todo atopou unha páxina como este, probablemente, nalgún momento noso tempo de vida de ser un internet usuario, onde o noso servidor web ten deunos o erro de Prohibida. Non ten os permisos necesarios para acceder, yadda, yadda, yadda, neste servidor. Todo o que realmente significa é que os permisos que foron ligados a calquera que sexa páxina que estaba tentando acceder non estaban abertas para vostede. Entón, basicamente, chmod é a forma en que podemos modificar os permisos do sistema para dar a todos, o usuario, o grupo, ou o mundo, ou calquera combinación deses acceso a determinados arquivos, directorios, nada realmente, calquera tipo de sistema en un sistema operativo. Polo tanto, se calquera dos caras teñen ordenadores, se sente como seguir xunto comigo hoxe, totalmente a gusto para escriba cousas en. Se non, pode simplemente saír. Entón, eu estou indo para realmente tirar o meu terminal de agora. Así, a orde para executar chmod, ou polo menos só para consultar os permisos da súa directorio de arquivos, é só ls-l. Como verás, un grupo de material aparece a maioría dos cales é importante para nós en á esquerda aquí. Vostedes ver unha chea de rs, ws, 1 /. Si. Estas son esencialmente só todos os permisos de ficheiro para explicar o que algúns directorios e arquivos do teu sistema. Entón imos voltar a punto de poder aquí. Así, ademais dos nomes dos ficheiros como podedes ver á dereita, nós estamos mirando para ver, esencialmente, só a columna da esquerda. Así, ademais de só os nomes dos ficheiros, nós pode ver os permisos de arquivos, a grupo propietario, o nome do grupo, a data que o arquivo foi modificada, etcétera. Podes ver unha chea de cousas usando chmod. Así, a forma que lemos é que chmod a primeira letra que practicamente ignorar en termos de permisos de lectura. A primeira letra só nos di o que tipo de sistema que o fagas. d, neste caso, é un cartafol ou directorio. Entón, nós sabemos que actualmente o meu espazo de traballo sección sete era un directorio. E entón ve tres tríades, esencialmente só tres conxuntos de tres personaxes. E pode pensar de cada un como un pouco. Entón só ten tres conxuntos de tres bits, nove anacos en total. Trata-los en grupos de tres. Así, o primeiro grupo de tres é sempre os seus permisos de usuario. O seu segundo grupo de tres é sempre os seus permisos de grupo. E o seu terceiro conxunto de tres sempre como o mundo, os permisos en todos os lugares. Entón eu creo que o fácil pregunta que facer é o que é a diferenza entre o usuario eo grupo. A principal diferenza entre o usuario eo grupo é que un usuario é só ti, persoalmente, acceso a todo o que é agora. Un grupo pode ser se ten múltiple os usuarios nun ordenador, por exemplo. Todos eles poden ser considerados como un grupo. E entón o mundo é só o mundo, todo o mundo. Así, podemos ver, máis tarde, como podemos modificar aqueles en diferentes permisos. Entón, basicamente, estamos vai aínda centrar na parte da esquerda, onde ao directorio CS50 vemos drwx, onde a r só significa que é lexible. O w só significa que pode escribir nel. E entón o x só significa que é executable. Vostede pensar que tipo de que non ten sentido. Debe ser e. Pero x realmente tipo de funciona un pouco mellor, porque pode lembrar mellor. Así, os tres tipos de cousas que pode facer, pode ler un arquivo, pode que permite gravar unha ficheiro, ou podería ter permiso para executar un arquivo. E así, o xeito que nós, en realidade, representan os en bits é as cifras 4, 2 e 1. Entón, todo o que sexa lexible é representado polo número de catro. Todo o que pode escribir nel é representado por 2. E todo o que sexa executábel como representado por 1. Polo tanto, neste sentido, nós tamén podemos Números de representar eses ola, benvido, dun xeito diferente. Desculpe. Antes de todo, eu vou desculparse en nome de todos inserindo a clase agora. Esquecín de doces hoxe. Me desculpe, eu son un fracaso esta semana de Halloween. Vou levar o dobre da cantidade de doces a próxima vez para compensar iso. Pero de todos os xeitos, desculpe sobre ese caras, me desculpe. Así, a forma que podemos realmente entrada na nosa orde argumento é que pode facer chmod permisos grupo de barra, onde o grupo é só o que quere grupo que estamos intentando cambiar. E os permisos están o que quere que queremos engadir a el. Así, por exemplo, a máis engade permisos, ea subtracción tira permisos. E os tipos de grupo, temos a nosa un para todos, u para os usuarios, g para grupos, ou o dos demais. É un pouco abstracto agora. Pero nós imos pasar por riba de algúns exemplos só para demostrar isto ben rápido. Todos bo nesta foto, para que eu poida seguir adiante? Legal. Así, por exemplo, rwx. Antes de falar sobre o que representa, primeiro de todo o que rwx significa? Se ves que esta seguro arquivo ten permisos de rwx, o que significa o pode ser capaz de facer? Audiencia: Ler, escribir e executar. ANDI Pengo: Si, exactamente. Podes ler escribir e executar. Porque os tres deses caracteres están presentes. Entón, se nós ir adiante e falar sobre iso en termos de bits, o rwx tamén pode ser representada como 700. Porque, como se pode ver en calquera tipo de permiso de directorio de arquivos, hai tres tríades. Neste caso, só o primeiro tríade ten nada alí. Polo tanto, neste caso, o símbolo r representa 4, o w é 2, e X é 1. Se engadir os xuntos, é 7. E por iso, se converter Lo para binario, é de 700. Porque 7 é a primeira tríade. 0, non hai nada de agasallo na segunda tríade. E non hai nada presente en a terceira tríade, de xeito que é outra 0. Así, no mesmo sentido, un grupo de tríades pode ser representado só en bits, só en binario ben. Así, 700 significa exactamente o mesmo como rwx ------ en termos de permisos. Todos clara sobre iso? Legal. E así chmod 111 daría que os permisos do ficheiro? Dar a vostedes unha parella segundos para converter este. Teña en conta que, a primeira tríade é para o usuario. A segunda tríade é para o grupo. E a terceira tríade é para todos. E así chmod 111 daría cal tipo de permisos e para quen? Tome un par de segundos para pensar sobre iso e volver. Si. Audiencia: Para que todos poidan executalo. ANDI Pengo: Si, exactamente. Audiencia: Pero ninguén pode ler ou escribir. ANDI Pengo: E Sinto-se libre para explicar a todos como chegou a esa conclusión. Audiencia: Ben, para o usuario, o grupo, e no mundo, é todo un, que é o código do executábel. ANDI Pengo: Si, exactamente. Entón 1, neste caso, todos sabemos é que é ese o código executable. Porque a lectura é 4. Escribir é 2. E o executable é 1. Así é os tres tríades son 1, que significa que, para o mundo, para o usuario, e para o grupo, eles son todos executable. Todos ben con iso? Aceptar. E así a segunda forma que podemos, en realidade, escribir isto tamén é vostede podería só facer chmod unha vantaxe x. un significa todo ou todos. O plus significa dar permisos para. E entón o x significa executable. Polo tanto, hai dous comandos son, en realidade idéntica. Entón, se quere executar isto no seu terminal, facer chmod 111, nome seu directorio ou o arquivo. Ou pode facer chmod un plus x, Nome do seu arquivo de directorio. O mesmo, só un xeito máis doado, quizais para algúns representar ou cambio permisos de arquivo. Cada un OK con chmod antes de seguir adiante? Legal. Entón, agora imos a cabeza nun algúns diapositivas de conceptos moi abstractas que eu son moi fermoso vai brisa través. E é totalmente OK, se Non entendo todo. Aínda agora, eu non sei realmente entender todo completo. Pero é máis de estar a comprensión de nivel superior de como algunhas destas cousas funcionan. Entón, nós estamos indo falar rapidamente sobre TCP / IP, que é só Control Transmission Protocolo cortar Internet Protocol. Teña en conta que de charla, David, que ensinará o exemplo onde pasar as notas nun sobre ata gusto do cumio da clase? Así, no auditorio da escola de dereito David demostrou esencialmente como o TCP / IP funciona en no sentido de que todo o que é é un medio de asegurar que os datos se entrega a través dun servidor ou en internet. Así, no exemplo do sobre ea mensaxe, o usuario a finais podía ver que, oh, eu precisaba recibir catro paquetes de información. Pero realmente recibiu só tres. Isto significa que debe estar falta un. E non se entrega. E así, o TCP / IP en Internet, a través do seu ordenador eo servidor, fai exactamente o mesmo. Todo o que fai é especificar un cadro en que a perda de datos paquetes pode ser reenviado e recibido. Como en internet cando estás para acceder aos arquivos en liña ou enviar arquivos para o seu amigo ou mirar para web navegadores, miles e miles de millóns e millóns bytes de información son trasladados por milissegundo. E é moi, moi confuso. E é realmente difícil realmente saber o que xa foi enviado eo que non foi enviado. E así TCP / IP só especifica unha estrutura sólida en que o seu web navegador e servidor pode tipo de comunicar entre si, só asegúrese de que os paquetes son todo aquí e nada está perdido e todos os datos que solicitou é realmente aparece correctamente. Todos OK en só iso moi breve alto nivel entender? Legal. Entón imos mover para falar HTTP, que é só de transferencia de hipertexto Protocol. HTTP, todo isto é o que quere que calquera páxina ou ficheiro é acceder no seu sitio web, servidor regresa un HTTP código de estado como resposta a petición asegurarse de que calquera, oh, esta solicitude foi aprobada. E todo está mostrando correctamente. Ou, oh, non, 404. Algo foi mal. Oh, eu non podo ver. Todo o que é que o que quere está intentando acceder, usar como o usuario está intentando acceder, na internet-- só asegurarse de que quere ter éxito acceder todo o que foi ou non acceder correctamente que quere que fose. E así o estado de HTTP código só fornece-lle un medio de poder saber ou non foi un éxito ou non. Así, por exemplo, unha solicitude de exemplo. Podes ver aquí é xeralmente tipicamente catro liñas. Temos un HTTP GET 1.1, que é só a URL solicitude método, o protocolo versión, o nome do campo, eo valor do campo. Entón non hai necesidade de completamente Recordar nada aquí. Só un tipo de coñecemento Se coa forma na que estas ollar. Neste exemplo, o método de petición URL é só o que quere solicitude está enviando o servidor. Como, hey, servidor, realmente quero acceso yadda, yadda, yadda, páxina HTTP. A versión do protocolo é só o que quere Versión seu servidor ou servidor Está a utilizar para acceder a información. O nome do campo é o sitio ou o URL que está intentando acceder, Neste caso, www.apple.com. E o valor do campo é só tipicamente nome, valor. E iso pode ser calquera tipo de combinación de letras ou números ou o que quere. Así, unha proposta típico, entón o que o seu ordenador realmente envía o servidor que di, hey, vostede sabe o que eu teño esta aparece, ese é o tipo de solicitude que realmente recibir. Unha resposta exemplo do que o servidor ía enviar de volta para ti sería practicamente o mesmo, excepto cun código de estado na parte superior. Así, 200, 0 2 0 sempre o código de estado Aceptar. Como, OK, esta solicitude foi aprobada. Foi capaz de acceder todo correctamente. A vida é boa. A vida é bela. Todo é totalmente bo. E así, este só di navegador e servidor, hey, está todo ben. Teño toda a información que eu teño. Legal. Pero o problema é ás veces os problemas xorden cando have-- durar Coido Eu falei sobre dobre. Ten menos boas respostas. Así, por exemplo, 404 é o Page Not Found. Vostede ás veces ten un acceso prohibido. Ten outros códigos de estado que estou seguro de que todos vimos cando está intentando facer buscas na Internet. E o seu navegador dálle o, non, non pode acceder. E vostede é como, ben, porco. Entón, só moi ben, hai algúns códigos de estado bastante común. Quizais familiarizarse coas que son. O máis divertido que un Eu creo que eu xa oín de-- se ocorrer de mirar para arriba de todos eles en liña, por algunha razón hai de feito, un verdadeiro código de estado chamado 418 son un bule de té. Eu pesquisei onde a orixe desta era. E, ao parecer, un April Fools ' Día un par de décadas atrás, alguén pensou que sería divertido para crear un novo código de estado chamado 418 Eu son un bule de té. Lexitimamente, o nome deste código chámase eu son un bule de té. Eu esquezo o que páxina ten que ir realmente facer esta exposición. Pero, ao parecer, pode, en realidade, obter un código de estado que eu son un bule de algunha maneira través facendo algo. Polo tanto, hai centos e centos de códigos de estado. Algúns deles fan máis sentido do que outros. Pero practicamente só coñecemento Se as máis comúns. O corpo da entidade é solicitada curto e stout, aparentemente. Entón, ás veces, hai máis erros asustado que eu son un bule de té. Pero este é un que eu creo vostede tipo de esperanza de acertar. Pero eu non creo que vai. Todos bo sobre o estado só códigos, solicitudes, procesos, toma de seguro información entrégase correctamente? Entón agora imos transición en dunha parte divertida da sesión de hoxe, onde falamos un pouco sobre HTML. HTML, todo o que é de hipertexto Linguaxe de reserva. É só a linguaxe estándar usa para crear as web páxinas en internet. Así, calquera páxina web, o que é túa páxina web favorita? Cal é a túa páxina web favorita? Audiencia: [inaudível]. ANDI Pengo: Sentímolo? Audiencia: Tumblr. ANDI Pengo: Tumblr. Entón Tumblr está escrito en HTML. E así imos realmente pasar e xogar con algunhas destas cousas máis tarde. Practicamente todo o que que aprender, coñecer, escribir HTML que pode ser só Google en internet. HTML, non é un programa como o C onde podes crear variables e facer cousas legais con el. É máis que, oh, é así que eu quere que as cousas aparecen no meu sitio. E eu só vou poñelas. E vai para denominalo lo. Entón, HTML, en certo sentido, é como un formato ou modelo de idioma. É moito máis fácil. É moito máis doado de aprender, moito máis fácil de escribir en da súa programación normal lingua, moi fácil, moi fácil accesible e agradable. Entón, nós estamos indo realmente para xogar arredor, escribir as nosas propias páxinas hoxe. Pero antes de comezar, eu só quero pasar por riba de algunhas breves mellores prácticas. Como o HTML é tal un fácil linguaxe e porque aínda se fai algunhas cousas erradas, ás veces pode non notar, queremos estar seguro de que estamos de feito, unirse ás mellores prácticas para asegurarse de que as cousas que podería estar a ocorrer ao redor, pero non sempre vai a non ir á dereita asegúrese de que eles están minimizados. Entón, basicamente, asegúrese seus pechando todas as etiquetas cando está escribindo en HTML. Se está abrindo un corpo, asegúrese de que vostede é pechalo cun corpo en algún lugar. Quere estar seguro de que o seu páxina web valida usando o que se chama o W3 comprobador. Pode só Google que en liña, e hai unha ligazón a el. E entón quere HTML separado, que é a súa linguaxe de marcado desde o seu estilo, que é a linguaxe CSS que David demostrou que tamén somos vai xogar un pouco con charla. Legal. Entón, cando quere realizar HTML no aparello CS50, nós estamos indo a executar un programa chamado apache, que todo é só un construído en servidor web que todos na CS50 ten acceso. Chamamos iso de apache50 só porque nós gusto de chamar todo 50 en CS50. Así, a forma que se inicia o CS50 web servidor está escribindo no seu comando liña apache50 iniciar punto. E se quere remata-la a calquera tempo, apache50 acabar con ningún punto. E só prema Intro. E debe ser a posición ata aquí en breve. Yup. Entón, eu estou indo só para ir rapidamente sobre un exemplo dunha páxina web realmente breve. E nós estamos indo a gastar como 10, 15 minutos xogando en torno a escribir nosas propias páxinas web. Aceptar. Entón, aquí no IDE-- todos poden ver iso? En realidade non. Aquí, eu vou aumentar o zoom. Eu só teño este breve template aquí con nada realmente nel. Nós só estamos indo a escribir rapidamente un programa de HTML na que acabamos dicir Hola para o mundo. Entón, aínda que en C, agora estamos só vai facelo en HTML. Alguén quere realmente só tentar darme o primeiro que tería que poñer nun documento HTML? Si. Audiencia: Os corchetes, o [inaudível]. ANDI Pengo: Yep. Entón, algo que é moi orixinal para HTML que tipicamente tradicional non atopar noutro comando linguaxes de programación de nivel de liña é que realmente para especificar o tipo de ficheiro que este será na parte superior do noso código. Polo tanto, neste instance-- creo ese é o comando correcto, non? Yup. Na parte superior, só quere incluir estrondo html DOCTYPE entre parénteses só para dicir ao seu ordenador, hey, ollar para fóra. E documento HTML está chegando. E entón como é que queremos para comezar noso arquivo? Se nós só queremos dicir Ola, teño un A páxina web que se Ola para o mundo, como é que imos construír isto? De feito, imos voltar a Google. E podemos realmente facer iso. Yup. Alí imos nós. Entón HTML. Como verás, o meu navegador é, en realidade, denominar automaticamente iso para min. Mesmo que en C, cando crear unha chaveta aberta, o navegador automaticamente engade nun fin chaveta. Afortunadamente, o noso IDE adora facelo por nós tamén. Entón agora podemos tipo de tipo o inicio dunha cita, e só pode dicirnos sempre para lembrar de escribir o fin da etiqueta. Eu creo que iso debe ser capitalizado. E entón nós queremos engadir, sempre, unha cabeza que é o título. Nós só queremos chamar quizais este Ola, e entón o corpo. E alí vai vostede. Isto é realmente o noso documento HTML. Así, a forma que calquera documento HTML sempre denominado em-- mesmo con void main int. Sempre quere ter HTML dunha etiqueta de apertura e peche na parte superior e inferior do seu código. Quere ter unha cabeza dentro que contén o título, calquera que sexa só vai ver a guía do seu web principal, e, a continuación, un corpo dentro do cal vai realmente mostrar o contido de todo o que quere facer. Entón, se quixese realmente executada iso, eu estou indo a zoom out. Realmente pode comezar apache50 iniciar punto. Legal. E así como se pode ver, agora esta conexión apareceu. Di que o seu sitio é agora dispoñible nalgún ligazón. Entón, todo o noso IDE ten done-- non IDE, sorry-- si, nosa IDE fixo é crear unha web conexión na que todas as nosas páxinas web se pode acceder no servidor. Entón, imos dar un ollo aquí. Imos premer sobre iso, vai a hello.html. E ve unha forma moi simple A páxina web para Ola mundo. Aceptar. En realidade, estamos indo só ten everyone-- si, cal é? Audiencia: Eu teño unha pregunta básica. ANDI Pengo: Yup. Audiencia: Como gardar seu ficheiro como un HTML? ANDI Pengo: Si. Entón, se eu fose para crear un novo arquivo, se eu fai Novo ficheiro, Untittle, se eu fai, section.html, crecemento, iso é todo o que teño que facer. Audiencia: [inaudível]? ANDI Pengo: Non. Audiencia: [inaudível]. ANDI Pengo: Non. Audiencia: [inaudível]. ANDI Pengo: Si. Practicamente, a extensión da o ficheiro que está dentro do seu IDE, que informa ao ordenador, que di ao navegador, hey, ollar para fóra. Este será un código escrito nesta linguaxe. Así, por exemplo, en Microsoft Word, o que fai todos os documentos de Word acabar co que extensión? .doc ou .docx, non? Todo o que fai é especifica para o seu sistema operativo, hey, ten un documento de Word chegando. Abre-o co Word. O mesmo con PDFs. Sabe, oh, eu teño para abrir o ficheiro con Adobe Reader ou Adobe Acrobat. E así extensións controlar o igual que no seu ordenador. Se só se especifica a súa páxina de código sendo nomeado HTML, el sabe, Oh, vostede ten código HTML. Vou tratalo como código html. Polo tanto, é super intelixente nese sentido. Entón, todo o mundo, imos tomar como 10 minutos e só crear os nosos propios sitios web. Imos engadir nas cousas encantadoras. Sinto-se a liberdade de dicir o que queiras. Eu só quero estar seguro de que servidores de todos están funcionando correctamente antes de libera-lo para o pset. Porque os seus servidores non executar para o pset, que será moi, moi malo. Estou indo só para flotar e ver o que todo o mundo está a traballar. Cómo che vai? Audiencia: Eu só liguei o ordenador. ANDI Pengo: Isto é OK. Audiencia: [inaudível]. ANDI Pengo: Só o IDE. Si. Audiencia: [inaudível]. ANDI Pengo: É Aceptar. Audiencia: [inaudível]. ANDI Pengo: Totalmente ben. Está todo o mundo accedendo Aceptar servidor web? É apache50 correndo OK? Coido que nalgúns dos as outras seccións, tivo problemas con xente non poder acceder ao servidor. Si. Entón só executar apache50 espazo iniciar período espazo. Audiencia: [inaudível]. ANDI Pengo: Yup. Bo? Audiencia: [inaudível]. ANDI Pengo: Oh, Aceptar. Entón ten que ter un espazo. Entón apache50-- Audiencia: eu fixen. ANDI Pengo: espazo --start. Audiencia: Oh, espazo dot. ANDI Pengo: Yup, espazo dot. Alí vai. Así, pois, se ten unha páxina HTML creado, entón podes só ir directamente para a ligazón que especifica. E ten que ser capaz de acceder a ela. Todo o mundo foi quen de acceder ás súas páxinas web OK? Audiencia: [inaudível]. ANDI Pengo: Ah, iso é OK. Audiencia: [inaudível]. ANDI Pengo: Si. Eu creo que realmente pode abrir Lo dentro do seu navegador, navegador e non só o seu navegador IDE. Si, eu creo que se copiar e pegalo. Audiencia: E, a continuación, como podemos desactiva-lo? [Inaudível] ANDI Pengo: Si, fai apache50 parar con ningún período. Yup. Audiencia: [inaudível]. ANDI Pengo: Con ningún período. Si. Alí imos nós. Yup. Estamos creando as nosas propias páxinas web. Audiencia: Ah, legal. ANDI Pengo: Si. Audiencia: Eu teño unha pregunta. Entón apache 50-- ANDI Pengo: 50, si. Audiencia: [inaudível]. ANDI Pengo: O que? Isto é raro. Mira, que era unha especie de cuestión que estaba a ocorrer antes. Aceptar. Verme despois sección. Porque estamos tendo algúns problemas co servidor. E quere facer Asegúrese de que o servidor é execución antes de iniciar pset. Porque vai ter del. Si. Existe alguén que non sexa capaces de obter o seu servidor para iniciar? Para aqueles de vostedes que queren engadir estilo adicional para as súas páxinas web, podemos realmente facer o que David fixo na conferencia, así como, que é crear un estilo adicional folla, que é un punto CSS, en fervenza Style Sheet e, de feito, só engade-in. Así, por exemplo, eu creei só practicamente case a mesma exacta David fixo na charla. Pode moi ben só facer corpo. Ten o que son chamados de etiquetas no que pode aplicar para IDE sexa cal sexa sección quere dentro do seu real para páxina HTML. Así, o corpo da páxina, pode facer centro align texto. E entón eu vou creativo unha etiqueta chamado superior interna dos cales quero isto para pasar, asignar un tamaño maior de píxeles para a fonte. Quero que o espesor para ser ousado. E quero a cor para ser azul, así arbitraria valores que decidín escoller. Podo crear outra etiqueta chamado medio. Tamaño da fonte, facelo un pouco menor. E entón eu podo crear outra etiqueta chamado fondo onde quero o tamaño da fonte para ser aínda menor aínda. E así practicamente este é só exemplo de follas de estilo de código fonte ou orixe que é moi doado simplemente Google. Se di, oh, eu quero a miña fonte para estar en cursiva ou verde escuro, pode ser Google, e, a continuación, que vai dicir as etiquetas ou identificacións apropiadas para crear. E así a forma que realmente tipo de ter isto nun documento HTML ou usalo é todo o que ten a facer aquí é na cabeza engadir unha ligazón á folla de estilo. Entón pode simplemente conectar iguais href calquera que sexa o nome da súa folla de estilo é. E, a continuación, a relación é unha folla de estilo. Entón, dentro de calquera documento HTML, sempre que incluír esta folla CSS punto, ten que ser capaz de acceder e ter as propiedades alí. Así, por exemplo, aquí eu teño só xera unha páxina web exemplo. Este é benvido á sección CS50 Martes de 2:00 a 3:30 min. E entón eu engade unha imaxe bonita que que potencialmente debe ser capaz de ver. Entón, se der un ollo aquí, se vai para style.html, creamos unha páxina web con Gatinhos. Porque gatinho son impresionantes. Así, engadindo unha imaxe é só img conexión SRC. Practicamente, se hai calquera tipo de recurso que quere engadir ao seu website-- entón imos dicir, quere engadir un menú ou unha barra de busca ou como un image-- só Google como facelo. E só plop nese formato. E pode só fermosa tanto basta engadir lo dentro. É moi, moi fácil. Estamos creando o noso propio páxinas web agora. Se ti queres-- Audiencia: [inaudível] ANDI Pengo: Sentímolo? Audiencia: [inaudível]. ANDI Pengo: Oh, o div é só unha división dicíndome que, oh, eu teño unha determinada sección chamada medio no que eu estou aplicando miña tag CSS e logo miña outra división co fondo. Isto é todo o que está dicindo a vostede. Porque é bo para manter limpo cousas en orde, para que o programa sabe exactamente para ser executado. E creo que podo copiar e pegar este no meu navegador real tamén. Debe estar ben. Si. Yay. Entón, se todo o mundo quere só tente crear unha páxina web, nós imos tomar outro dous a tres minutos. Eu só quero estar seguro servidores de todos están en execución e todo o mundo ten unha idea de como facelo. Se vós queredes sacar seus ordenadores. Aínda non funciona? Audiencia: Eu son só [inaudível]. ANDI Pengo: Quizais tente actualizar 50 tamén. Si. Audiencia: [inaudível]. ANDI Pengo: Si. Así, a forma que iniciar un novo servidor web na IDE é só facer apache50 inicio espazo espazo dot. Eu só quería estar seguro servidores de todos están funcionando Aceptar. Audiencia: Aquí, na terminal? ANDI Pengo: Si. Audiencia: [inaudível]. ANDI Pengo: Apache. En realidade, eu creo que é executando algo xa. Si, está, de feito, executando un servidor diferente. Si, é bo. Mentres que traballa, está OK. Audiencia: Aceptar. ANDI Pengo: Hai dous formas de realizar servidores. Así, sempre que unha das formas funciona, está todo ben. Imos tomar un minuto só a sorte de rematar os últimos retoques de calquera páxina web que vostedes querían facer. Está todo o mundo a traballar polo camiño? Servidores de todo son executando para alén de seu? Nós imos descubrir iso. E HTML de moi sinxelo. Entón eu creo que estamos todos ben. Si. Vou volver. Audiencia: [inaudível]. ANDI Pengo: Aceptar. Audiencia: Entón é só comezou a cargar. ANDI Pengo: Non se preocupe. Entón, HTML, non hai código fonte que será en liña despois da sección. Ademais, David ten un conxunto banda liña tamén. Só un tipo de ollar sobre el para ver como páxinas HTML son escritos. É moi fácil. O que non sabe, é fermosa moi só Google e é bo. Eu só quero estar seguro de que seus servidores están en execución. Audiencia: Será que facelo moitas veces? ANDI Pengo: Iso nunca aconteceu. Eu non sabía que podería incluso hibernación. Audiencia: [inaudível]. ANDI Pengo: Creo que everyone-- mine nunca hibernación antes. E eu non sei por que. É estraño. Audiencia: [inaudível]. ANDI Pengo: é o seu hibernando? Audiencia: [inaudível]. ANDI Pengo: Si. Audiencia: É Aceptar. Polo tanto, unha vez que se abre. ANDI Pengo: Aceptar. Nós imos tratar con un servidor cuestións tras sección. Ten que estar ben. Aínda que, quere estar seguro de que vostede obtelos resoltos antes de saír. Porque se o seu servidor non correr, entón está non vai ser capaz de facer o pset, como calquera parte do pset. Entón quere estar seguro que que está a traballar. Legal. Todo ben. Diga adeus Gatinhos. Pasei moito tempo buscando que a imaxe Gatinho de poñer. Entón, de calquera maneira. Audiencia: [inaudível]. ANDI Pengo: Sentímolo? Audiencia: [inaudível]. ANDI Pengo: Creo que é o sitio. Como a especificación? Audiencia: [inaudível]. Eu creo que a especificación é só liña en sete semanas. Eu creo que se chama pset6, mesmo aínda estamos en semana de sete, que é un bit. Audiencia: Pero quero dicir, se quero ollar at-- se quere puxar arriba a nosa versión do o sitio web da nosa Sever? Así como server.c é o pset, non? Se quere ollar para isto, como o xeito no que verifica para fóra? ANDI Pengo: Ah, entón, en realidade, o pset, todo o que estamos facendo aquí é implementing-- aquí, Vou pasar por riba deste brevemente. Así, para todos os que está acabado a sección, vostedes teñen sorte. Hai moi pouco material para cubrir efectivamente hoxe. Eu só vou pasar á seguinte 20 minutos pasando por riba pset axuda. Porque hai algúns útil funcións que axudarán a súa vida. E, esperamos, imos estar fóra aquí en como 20 minutos. Aceptar. Entón pset7 está mal. Aínda que nós estamos en semana sete, é realmente pset6. Vou cambiar isto. Todo o que estamos facendo en pset6 é a creación dun servidor web. Isto soa super-asustado. E, sobre todo, para os de vostedes que xa ten mirou para o código de distribución, hai unha morea de código, unha morea de código. Pero é totalmente Aceptar. Porque o cerna da cuestión parte da realidade, creando o servidor está feito por nós. Todo o que está realmente pediu a facer nesta pset é só para facer algunha manipulación de cadea en arquivo I / O. É, de feito, como moi sinxelo. Entón, cando primeiro descargar isso-- que aquí ten realmente xa descargados o pset e deu un ollo? Todo ben. Si. Non hai como 500 liñas de código que vai ser como, Qué está a pasar? E iso é totalmente bo. Asegúrese de asistir os walk-throughs. Porque David e-- Non sei. Eu non creo que é Zamyla, este un. Pero eu creo que algún outro walk-throughs son bastante útil en termos de só deixando vostede sabe o que está a suceder dentro do seu código. E é totalmente Aceptar. Porque as catro funcións que se pediu para aplicar teñen realmente cero a ver co servidor real. Todos eles teñen que facer é só analizar diferentes cordas, buscar a través de cordas, para garantir que as cousas están a facer o que se quere facer. Así, con este fin, hai algunhas funcións moi, moi útiles, especialmente para cadea manipulación, que todos nós deberiamos pasar por riba que eu penso que sería ser moi útil para vós para aprender antes de o pset. E eles están todos contidos dentro da súa biblioteca string.h. Hai probablemente máis útil funcións de non incluír aquí, porque non quere usalos ou quizais eu simplemente non saben que existen. Sinto-se a liberdade de ollar a través student.h. Porque alí vai ser unha morea de funcións que son moi útiles. Entón, os seis que máis uso no meu pset cando estaba facendo iso a semana pasada foron strtok, strchr, strrcher, strstr, strcasecmp, e strcpy. E así os dous últimos poden parecer moi familiar para a maioría de vostedes. Caso Str comparar, o único que fai é comparar cordas para comprobar-los para a igualdade, ata o caso. E strcpy só copias unha secuencia de caracteres nun buffer. E así os dous deben parecer moi familiar para vós neste momento. Porque usei-os moi, especialmente para os últimos Serie de exercicios. Pero os catro primeiros quizais aínda non viu ata agora. Pero eu vou só pasar por eles. Porque eles están indo a facer a súa vida moi, moi fácil non for-- fácil, pero moito máis doado para este próximo pset. Aceptar. Entón char * strtok, esta é a función definición para esta función contida dentro da cadea, h biblioteca. Se se lle dada unha entrada de char * cadea, que non é máis que unha secuencia, ou un char constante * deliminator, delim para breve, todo o que está a facer é romper o maior cadea nunha serie que chamamos tokens separados por un determinado valor. Así, en certo sentido, se eu fose para dar vostede section.7.php, esta é unha cadea. De xeito que sería se eu fose para pasar neste como meu str, meu char * str, o meu deliminator foi punto, todo isto quere facer é a investigación a través de cordas. E a primeira vez que ve un punto, sería só volver o punteiro para o último token atopou na secuencia antes diso. Entón ía ben aquí. E sería só darme 7.php. E se eu fose para chamar a funcionar unha vez máis, el me daría só o .PHP. E así todo esta función está facendo é romper a secuencia maior en cadeas menores dependendo sobre o que está a procurar. E así, por exemplo, en súa función look-up se quere ollar para o que determinados caracteres ocorrer ou puntos ocorrer ou extensións ocorrer, esta función sería moi útil. Si. Sen preocupacións. Isto todo vai ser-- si, cal é? Audiencia: Entón, na primeira liña, se estivésemos usando este exemplo, o que nos inserimos en que? ANDI Pengo: Si. Só vai chamar un strtok delim corda coma. E cadea é igual a section.7.php. E entón está delim pode ser igual a só dot. Audiencia: Aceptar. ANDI Pengo: Si. Só como iso. Todas estas funcións son bastante semellante cando pasamos por eles. Eles só fan as cousas un pouco diferentes. Pero eles están todos indo a facer a súa vida moito máis fácil. Segunda función, este é como super, super, super importante, é as-- realizarse. Oops. Pescudas strchr para o primeiro occurrence-- en realidade, si. Strchr é a función que Eu sempre só pasou. Polo tanto, pode ignorar o que eu dixen para a primeira función. Realmente chamado strchr. Entón, o que pasou aquí é se fose dada unha secuencia de caracteres nun char c, sería só dar sexa alí o que era. Si. Entón, pense nisto como str, que é unha cadea, e chr como char. Entón todo o que estás a facer é buscar onde un char está dentro dunha cadea. E así el procura o primeiro aparición do carácter c na cadea str. Audiencia: [inaudível]. ANDI Pengo: Yup. E entón se non atopa Lo, que vai voltar NULL. Entón, algo que vai ser moi útil para vós en facer o pset Se, por exemplo, estaba a buscar un extensión como un .docx a un Palabra documento ou .pdf para un documento PDF, pode tipo de usalo para ollar para o que sexa máis tarde cada vez que ver un punto, non? E así moi ben, se executar que a través da función, se volve NULL, entón vostede sabe que non atopalo punto, o que significa que esta claramente non é unha extensión de arquivo válido. Ou se volve algo, entón vostede sabe vai volver con independencia de de feito, tras a prórroga. Polo tanto, aqueles de vostedes que tivo comecei a ollar a través de busca e analizar, esta función de Será super útil. Entón, nós estamos indo realmente para demostrar a usar este. Por que vostedes non tente escribir un función bool sentenza char * s que só retorna true se s é unha sentenza e falso se non. Entón información, está indo probablemente para usar strchr. Ou só buscar no cadea para un determinado personaxe. E así, nunha frase, o que separa unha frase a partir dun non-sentenza, o carácter específico? Audiencia: Un espazo. ANDI Pengo: Un espazo, non? E entón o que, probablemente, vai quero facer neste función aquí? Audiencia: [inaudível]. ANDI Pengo: Nós imos querer strchr cadea para o aspecto do espazo. Porque se volve algo, entón sabemos que esta debe ser unha frase. Isto significa que temos ter un espazo nesa secuencia. Se non hai espazo, entón sabemos que, hey, creo que non é unha cadea. Probablemente é só unha palabra moi longa. Entón, eu vou dar a vostedes unha parella minutos para escribir esta función. Si. Audiencia: Conseguiu esta cadea de usuario? ANDI Pengo: Si. Polo tanto, esta é só unha función. Entón, imaxine dentro da súa función principal xa have-- imos aquí. Aceptar. Entón eu escribín este programa onde Eu teño a miña función principal, onde Acaba de crear dúas cordas. O primeiro é Hi, my name é Andi-- claramente, unha frase. Meu segundo é só Andi, claramente non condenar. E así eu estou correndo tanto daqueles cadeas para esta función. Quero que vostedes escriben sentenza frío. E eu estou almacenando estes valores, e despois é só imprimir-las. Entón, pense que o usuario é vai pasar unha cadea. E entón vai, esencialmente, descubrir se é unha frase ou non e voltar verdadeiro ou falso de conformidade. Se vós queredes dar un polgares cara arriba ou heads-up, Acene coa cabeza, é calquera está preparado para comezar esta, que sería bo. Quizais máis uns 30 segundos? Todo ben. Imos ver se pode probar escribir esta función. Entón pseudo coding-- estou indo só para tipo de camiñar por este momento. Practicamente, sabemos o función que necesitamos usar. Imos chamar esa función en nosa cadea e busca por un espazo. Se volve algo, entón debemos sabe que, claramente, trátase dunha frase. Porque non hai espazos. Entón imos voltar true. Senón, imos voltar falso. Alguén quere dar me a primeira liña de código que en realidade imos usar para escribir isto? En realidade, é o máis difícil liña de código tamén. Si. Audiencia: Se strtok s-- ANDI Pengo: Só strchr. Audiencia: [interpoñendo voces] o espazo non é igual a cero. ANDI Pengo: Cool. Exactamente. Todos entenden que a primeira liña? Nós imos chamar strstr, que é unha función que busca a cadea s ao carácter de espazo. E se atopa-lo, que vai voltar un punteiro para onde é. Se non atopalo, vai voltar NULL. Entón, se volve algo diferente de NULL, a continuación, sabemos que atopou un espazo. Isto ten sentido? Legal. Todo ben. Entón, se sabemos que atopou unha espazo, o que queremos facer? Audiencia: Volta certo. ANDI Pengo: Yup. Return true. E entón, alguén quere rematar a función para min? Si. Senón, só como aquel. E tentar compilar este. Yup. Entón, como podedes ver desde o saídas, lembre-se Booleans en C son sempre expresadas en binario. 1 é certo. 0 é falso. Se fósemos para realizar este función na secuencia dun, que é Ola, meu nome é Andi-- claramente, un sentence-- resultado impreso a 1, que é certa. A segunda, que é só Nunha palabra, resultado impreso a 0, o que é falso. Todos clara tipo de sobre como esta función foi escrito? Si. Audiencia: Podemos tamén facer, en vez de non é igual non é igual a igual a 0, de xeito que é igual a? ANDI Pengo: Non. Porque strchr é unha función. Eu vou volver a este. Entón, cal é o tipo de retorno da nosa función strchr? Audiencia: Oh, Aceptar. Ou NULL. ANDI Pengo: Si. É un char * que me di que o que quere esta función vai volver, vai ser un punteiro. Ou o punteiro será apuntando a onde se atopa, ou que vai volver un punteiro para NULL. En calquera circunstancia, que vai para voltar un punteiro para algo. E por iso, se fose para equiparar isto equivale, iguais, 0, está indo a obter un erro de compilación. Porque vai voltar un punteiro. E está indo a tentar comparar un punteiro para un enteiro. E o ordenador non é vai gusta diso. Si, exactamente. Legal. Todo o mundo é bo? E en segundo lugar, nós estamos indo a ir máis dunha función chamada strstr. Non te preocupes se eses funcións están confundindo vostede. Están me confundindo. Polo tanto, vostedes poderían ver, todos eles son practicamente o mesmo. Así, sempre que está confuso, puxar arriba a biblioteca string.h. E vostedes poden clasificarse a través do cal é cal. Entón strstr, todo o que fai é buscar unha secuencia de caracteres a outra corda toda. Entón, onde só strchr investigacións para un único carácter, Pescudas strstr para unha cadea enteira. Entón, eu quería mirar, non sabe, Ola, meu nome é Andi. E o nome do meu mellor amigo tamén é Andi. Se eu quixese mirar neste sentenza para toda a palabra de Andi, miña agulla sería o que está a procurar. E o seu palheiro é o que quere estás buscando o en. Entón, se está a buscar un palabra específica dentro dunha frase, aquela palabra será a súa agulla. E, a continuación, a propia sentenza será o seu palheiro. E así el só busca a primeira aparición da agulla cadea no palheiro cadea. Retorna o punteiro para a primeira aparición. Excepto, Teña en conta que, neste caso, é o primeira aparición de toda a cadea que está a buscar para, non só un personaxe. E así, este é case o mesmo que a función acabamos de facer, só con un pouco máis especificidade. Porque está a buscar máis que un personaxe. E o uso é o mesmo como a que acabamos de facer. Todos OK con iso? Aceptar. Último que nós estamos indo a ir sobre strrchr é, que non é confundida con strstr ou strchr. strrchr ten un r extra alí. Teña coidado cando está escribindo. Podes atopar-se ata un r extra ou non incluíndo un R, e, a continuación, a súa función non teño que ir traballar. E vai ser confuso. Teña coidado de que está soletrado todas estas funcións dereita. Entón strrchr é exactamente mesmo que strchr excepto el busca non é o primeiro aparición dun personaxe específico, mais si a última ocorrencia. E así, nese sentido, é case exactamente o mesmo. Pero, en vez de moverse transmitir nunha corda, vai estar movendo atrás nunha cadea. Exactamente o mesmo, que é só buscar nunha orde diferente. E así que este podería ser super, super útil para a súa investigación función, o primeiro función no seu pset. Imos finxir que é necesario para escribir un función da extensión de baleiro en que pasar unha constante carácter nome do ficheiro *, só unha secuencia, o nome do ficheiro, que leva ese nome en e gravados a extensión do ficheiro. Así, por exemplo, se eu fose para pasar na secuencia de pset7.zip, vai imprimir só a extensión, que é .zip. E iso vai traballar para calquera tipo de extensión, .docx a Word ou .pdf para un PDF arquivar ou .html a un arquivo HTML. Moi ben, escribir función que pode facelo. Vou realmente para optar polo IDE. Non é load-- alí imos nós. Entón todo o que eu teño feito aquí é creado un char *, a primeira corda, chamado pset7.zip. Eu estou indo a facer zoom. Eu creei unha segunda corda chamado finalpaper.docx. E escribe-me unha función que, cando chamado vai só imprimir as extensións de nome de ficheiro. Quizais levar uns minutos para pensar sobre como está indo para facelo. Un pouco máis reto que o último, pero o uso é case exactamente o mesmo. Si. Entón escriba unha extensión de función chamada que, se eu lle der o nome dun ficheiro, se eu fose para lle dar pset7.zip-- I quero que imprimir só o .zip. Se eu lle der gusto finalpaper.docx, só imprimir o .docx, só a extensión de calquera arquivo. Isto realmente só leva dúas liñas de código. Polo tanto, proba ver se quizais poida facelo niso. En realidade, só leva unha liña de código. Pero dúas liñas é probablemente máis estándar. Que función son probablemente Vai querer chamar? Audiencia: strrchr. ANDI Pengo: strrchr, non. Porque nós estamos a buscar a partir de esquerda a dereita. Non dar a vostedes un exemplo como este, pero se eu lle dei un exemplo como www.apple.com e eu só quería o .com, sería un exemplo de onde que quere chamar a última instancia do período e non o primeiro, non? Se fose strchr chamada, el daría-lle a apple.com. Se chamado strrchr-lo, tería lle deu o .com. E por iso teña coidado onde ways-- no meu exemplo, podería probablemente podería só escrito usando strchr, xa que hai só un punto. Pero noutros casos, que pode non ser o caso. E así sempre tentar proxectar seu código ben, así que-- si? Audiencia: Entón, o exemplo, que acaba de dicir, cando strrchr que sería darlle .com ou só vir? ANDI Pengo: Sería darlle o .com. Audiencia: Aceptar. ANDI Pengo: Si. El apunta para onde el a atopou. Si. 30 segundos, quizais? Si. Todos bo ou quizais un pouco máis de tempo? Concerto de mans? Mostra de cabezas? Legal. Calquera quere me dar o primeiro liña de código para este programa? Audiencia: [inaudível]. ANDI Pengo: Entón, primeiro de todo, imos quizais decompô-lo. Entón, cal é o tipo de retorno strrchr? Imos volver. strrchr, cal é o tipo de retorno? Audiencia: Char * ANDI Pengo: É un char *, non? O que significa que probablemente vai querer crear outro tipo de char * de tenda sempre que se retornando para, non? Porque se chamar o strrchr función, vai darlle un punteiro para onde queira que ela descubriu que último período, non? Pero vai querer almacenar que nalgún lugar, non? E así como podemos codificar iso no noso programa? Audiencia: Fai o char * [inaudível]. ANDI Pengo: Yep. Audiencia: [inaudível]. ANDI Pengo: strrchr. Si. Oh, perdeu unha r alí. Audiencia: O nome do ficheiro [inaudível]. Que é iso? Oh, é só s. ANDI Pengo: Oh, é só s. Yup, desculpe. My bad. Exemplos non se atoparon. Audiencia: E entón dot. ANDI Pengo: Yup. Teña coidado cando caras é-- aquí, déixeme facer zoom. Alí imos nós. Teña coidado cando caras está escribindo, sobre todo cando está facendo só un char. É realmente fácil de accidentalmente só facer comiñas dobres no canto de individual. Isto non vai funcionar. Seu compilador vai reclamar. E a súa función é só non vai funcionar. E por iso teña coidado cando está facendo as cousas con caracteres que se comiñas simples. E o mesmo sucede con esta liña de código de ter sentido para todos? Estamos creando un punteiro char *. Porque strrchr retorno algo do tipo punteiro. E así imos chamar strchr en s, que é a secuencia, o ficheiro nome, que estamos pasando. E nós estamos mirando para o pasado instancia dun período, que é só o apóstrofo dot comiñas simples. Si. Audiencia: Cando é que imos usar comiñas dobres e cando é que imos usar comiñas simples? ANDI Pengo: Si. Entón citas dobres son sempre usado cando ter unha secuencia de máis que un. Entón, se está facendo strstr, que é o que buscar unha secuencia de caracteres para cadea, ía pasalo entre comiñas. Pero calquera momento é só un carácter único, quere facer comiñas simples. É bo para manter presente. Polo tanto, agora que temos o noso punteiro, o que imos facer con el? Eu estou pedindo a vostedes para imprimilas los, non? Entón, [inaudível], quere dáme a liña de código? Audiencia: printf-- ANDI Pengo: Si. Audiencia: --você precisa dun lugar titular. ANDI Pengo: Yup. Audiencia: Imprimir o titular do lugar. Non sei o que o sitio é titular, pero vinculado a el. Aceptar. Imos saltar que, polo de agora, a continuación. Audiencia: E entón comma-- ANDI Pengo: Pointer, non? Audiencia: Pointer, si. ANDI Pengo: Así tipo de unha pregunta capciosa, ten que ver con punteiros e cordas que nós medio que xa falamos. Que tipo de soporte do lugar nós necesidade dun punteiro para un char *? Audiencia: [inaudível]. ANDI Pengo: Si. É máis fácil do que vostedes pensan que é. Audiencia: String? ANDI Pengo: É só unha corda, exactamente. Porque lembre se cordas non hai realmente. Un char * é o exacto mesmo que unha cadea. E iso realmente é o que este s debería ser usado o tempo. Aceptar. A ver se podemos tentar executar este. Imos facer unha extensión make. Legal. Vostedes ver como eu pase o psset7.zip eo finalpaper.docx, e el simplemente imprime o .zip eo .docx? Ten sentido? OK Entón eu creo que no seu ollar cara arriba función no seu pset é será pregunte se a cadea ten un determinado fin, ten que dar un certo código de erro. E así será bastante horrible. Porque se pode descubrir o que é a extensión, pode entón comparar extensión para ver se corresponde up con certa extensión. E entón podes devolvê- unha mensaxe de erro, non? Si. Audiencia: Entón non ten que engadir unha ou algo? O punteiro situarase as-- ANDI Pengo: Non. Audiencia: --point despois. ANDI Pengo: Si. El apunta exactamente para onde a aparición foi. Así, por exemplo aquí, somos busca para o período. Entón vai para volver un punteiro para o período. E entón el vai imprimir out comezando no período. Entón non necesita engadir un. Aínda que, é totalmente bo para si non está seguro, a só un tipo de proba-lo vostede mesmo. Construír un programa de exemplo. Proba-o ti mesmo e ver onde é a impresión. Isto tampouco é unha mala forma de facelo. Legal. E iso é moi fermoso todo Eu tiña a vostedes hoxe. Fixemos unha morea de cousas pset hoxe. Así, cando en dúbida, como Dixen, sempre mirar para arriba a biblioteca string.h para este pset. Non vai ser unha morea de en que hai función pode ser útil. Algúns poden non ser útil. Eu realmente non sei. Wade a través del, hai unha morea deles. strstr, strchr, son strrchr super, super útil, así como os strcpys e strcasecmps que xa usei. É só moi de andar con cordas, determinar se son iguais, recibindo o material fóra das cordas, e poder abrir ficheiros correctamente. É unha morea de arquivos I / O. pset realmente non é tan malo. Vai ter un ollalo, baixa-lo, para ver unha morea de código. Non te preocupes, o código realmente escribir non é malo de todo. Se alguén ten problemas co seu servidor, veña verme tras sección. Desculpar unha vez por non traendo doces para o Día das meiga. Non sei o que había de malo comigo. Pero teremos doble o doce a próxima vez. E boa sorte na súa pset esta semana. Yup.