ANDI Peng: Estem gairebé a través de tots els conjunts de processadors. De fet, estem a través de la majoria dels conjunts de processadors més difícils. Així que estem en realitat només anar a classe de brisa a través d'un parell de setmanes. Anem a començar a parlar de la nostra projectes fi de carrera, els esdeveniments que succeiran en les pròximes setmanes. I la vida serà una brisa. Així que no hi ha molt en l'actualitat. Esperem que, en realitat brisa a través de l'agenda d'avui, i després sortir d'aquí amb una mica de temps de sobres. També, vull disculpar-me per la falta de caramel avui. No sé per què. Però en la setmana prèvia Halloween, m'oblidaria de caramel. Així que estic en realitat només un vast decepció per a vostè en aquest moment. Perquè jo, literalment, recordo dolços per a cada classe única, però de Halloween. Però la setmana que ve, vaig a portar duplicar la quantitat de caramel per compensar això, tot per a vostè. Serà genial. Així que tinc un parell d'anuncis pel que fa a alguns de programació. Tinc alguns problemes de programació. Llavors anem a passar a parlar del que es diu chmod. Anem a parlar sobre ràpidament TCP / IP HTTP. I després anem a codificar la nostra pròpia pàgina web fent servir HTML i CSS. I després vaig a realment deixo potser com 20 minuts per parlar de pset6. A causa pset6 és en realitat una gran quantitat de coses que ja hem vist abans, però volia refrescar alguns d'aquests conceptes així com ensenyar a un parell de noves funcions. Fresc. Així que primer de tot, benvingut de tornada de les vacances. Espero que estiguis ruptura va ser agradable. Seria què fer durant les vacances? AUDIÈNCIA: va anar a Nova York. ANDI Peng: Vostè va anar a Nova York? Crec que la meitat de la nostra escola se'n va anar a Nova York. Està bé. Vaig passar la major part de la meva descans sedentària al llit Netflixing. I era un bon moment. Però ara estem de tornada, de tornada a sessió, de nou en el ritme de les coses. Tenim un conjunt de processadors per aquest divendres al migdia. Crec que ja ha recollit el seu concurs, sí? Així que qualsevol altra persona que té No tenien els seus qüestionaris, si us plau vingui i obtenir els seus concursos de mi en l'extrem de la secció. O em rastrejar al campus. Vaig a tenir amb mi en algun lloc. El nostre projecte final pre-proposta també. Així que a aquells que mai han pres aquesta classe abans, la pedra angular del CS50 està molt culminat en aquest gran projecte que els estudiants proposen. I el projecte de proposta, només una idea general del que es podria voler fer pel seu projecte, aquesta idea s'ha de dilluns dilluns que ve al migdia. Així que més o menys, David crec que va a parlar més sobre això en la conferència si no ho ha fet ja. I hi ha una pàgina sòlida a la nostra pàgina web que explica tots els requisits del projecte. Però, en essència, triar qualsevol tema que vostè té s'han interessat per durant el seu temps aquí en CS, ja sigui de joc o disseny o de vídeo o qualsevol cosa. I vostè pot realment classe de Ara aplicar algunes de les lliçons que hem après aquí a CS50-- hi, welcome-- a la realització de més o menys un projecte final de la seva elecció. Tot el que és degut el dilluns és només una breu nota publicitària per correu electrònic per a mi, una sentència ràpida, com, hey, Andi, Estic molt interessat en el disseny un joc que fa això per iOS. Fresc. Només has de deixar que el seu escrit inicial Idees per als seus projectes finals. I parlarem a través o no que en realitat és una bona idea o no, si és una idea factible o no. Però només el projecte de proposta s'ha de dilluns que ve. pset6, la nostra encantadora web-- que està malament. Pset7? pset6? És pset6, oi? pset6, el nostre servidor web, s'ha de Divendres al migdia amb l'últim dia. Les hores d'oficina reprenen normalment de dilluns a dijous 8: 00-11: 00 aquesta setmana. Crec Commons per les pròximes tres nits. Fresc. Abans que tinguéssim en el material, algú té qualsevol pregunta, acudits, històries? Què vas fer durant les vacances de tardor? AUDIÈNCIA: Què he de fer? ANDI Peng: Ja és edats fa realitat. Christabel va anar a Nova York. Em vaig allotjar aquí i Netflixed. AUDIÈNCIA: Oh, si jo era aquí. ANDI Peng: Oh, OK. AUDIÈNCIA: No men recordo el que específicament. ANDI Peng: Això està bé. AUDIÈNCIA: Netflixing probablement. ANDI Peng: Netflixing. Sí, és un bon moment. D'ACORD. Tot bé. Per a qualsevol dubte abans saltem en el material? A més, tractarem de accelerar la secció d'avui en dia, no hi ha molt a cobrir. I és d'esperar, ens posarem en contacte aquí una mica d'hora. Ho sento per no dolços, també. Sóc una decepció, especialment durant Halloween. Tot bé. Fresc. Així que anem a començar a parlar un argument de línia d'ordres anomenat chmod. chmod, tot el que és és només un sistema Unix de trucades realitzades des de la línia d'ordres per canviar els permisos d'arxius. Així, per exemple, tenim tot trobar una pàgina com aquest, probablement, en algun moment la nostra esperança de vida de ser un internet usuari, on el nostre servidor web té ens ha donat l'error del Prohibida. Vostè no té permís per accedir, bla, bla, bla, en aquest servidor. Tot el que realment significa és que els permisos que s'adjunta al pàgina que estava intentant accedir no estaven obertes per a vostè. Així que més o menys, chmod és la manera en la qual podem modificar els permisos del sistema donar a cada un, l'usuari, el grup, o el món, o qualsevol combinació dels accés a certs arxius, directoris, res realment, qualsevol tipus de sistema de un sistema operatiu. Així que si algun dels nois tenen ordinadors si se sent com seguir amb mi avui, totalment dubti en només has d'escriure coses en. Si no, vostè pot simplement passar l'estona. Així que vaig a tirar en realitat fins a la meva terminal en aquest moment. Així que la comanda s'executi chmod, o almenys només per llistar els permisos de la seva directori d'arxius, és només ls-l. Com podeu veure, un munt de coses apareix majoria dels quals és important per a nosaltres la banda esquerra aquí. Vostès veure un munt de rs, ws, 1 /. Sí. Aquestes són essencialment només tots els permisos d'arxiu per explicar el que certs directoris i arxius dins del seu sistema tenen. Així que anem a tornar a el punt aquí el poder. Així que a més dels noms d'arxiu com vostès poden veure a la dreta, estem buscant per veure essencialment només la columna de l'esquerra. Així que a més de just els noms dels arxius, que pot veure els permisos d'arxius, la seva grup propietari, el nom del grup, la data que l'arxiu per última vegada modificada, etcètera. Vostè pot veure un munt de coses usant chmod. Així que la forma en què llegim chmod és que la primera lletra que pràcticament ignorem pel que fa als permisos de lectura. La primera carta només ens diu el tipus de sistema que estem accedint. d, en aquest cas, és una carpeta o directori. Així que sabem que actualment el meu espai de treball la secció 7 era un directori. I després veus de tres tríades, essencialment només tres sèries de tres caràcters. I vostè pot pensar en cada un com una mica. Així que només hi ha tres conjunts de tres bits, nou bits en total. Se'ls tracta en grups de tres. Així que el primer grup de tres és sempre els permisos d'usuari. El seu segon grup de tres és sempre els seus permisos de grup. I el tercer conjunt de tres sempre és com el món, els permisos de tot el món. Així que suposo que la fàcil pregunta que ens hem de fer és quin és la diferència entre l'usuari i grup. La principal diferència entre l'usuari i el grup és que un usuari és només vostè personalment accedint al que és ara. Un grup pot ser si vostè té múltiples usuaris en un ordinador, per exemple. Tots ells poden ser tractats com un grup. I llavors el món és només el món, tot el món. Així que podem veure més endavant com podem modificar aquells en els diferents permisos. Així que més o menys, estem va a centrar-se encara a la part de l'esquerra, on per al directori CS50 veiem drwx, on el r simplement vol dir que és fàcil de llegir. La w simplement vol dir que és modificable. I després els x només significa que és executable. Es podria pensar que tipus que no té sentit. Ha de ser i. Però x realitat una mica funciona una mica millor, perquè pots recordar-millor. Així que els tres tipus de coses que vostè pot fer, es pot llegir un arxiu, vostè pot tenir permís per escriure un presentar, ja que podria tenir el permís per executar un arxiu. I així el camí que en realitat representar aquells en bits és el número 4, 2 i 1. Així que qualsevol cosa que sigui llegible és representat pel nombre d'abril. Qualsevol cosa que sigui d'escriptura està representat per 2. I qualsevol cosa que es pugui executar representada per 1. Així que en aquest sentit, també pot representar aquests numbers-- Hola, benvingut, d'una manera diferent. Ho sento. Abans de tots, vaig a demanar disculpes en nom de tots entrar a la classe ara. He oblidat dolços avui. Sento que sóc un fracàs aquesta setmana de Halloween. Portaré el doble de la quantitat de dolços propera vegada per compensar per això. Però de totes maneres, ho sento sobre que els nois, ho sento. Així que la forma en què podem realment entrada en el nostre comandament l'argument és que pot fer chmod permisos slash grup, on el grup és només el que sigui grup estem tractant de canviar. I els permisos són el que vulguem afegir a la mateixa. Així, per exemple, la a més afegeix permisos, i la resta lleva permisos. I el tipus de grup tenim nostra una per a tots, per als usuaris o, g per als grups, o o per a altres. És una mica abstracta en aquest moment. Però anem a repassar un parell d'exemples només per demostrar això molt ràpid. Tothom en aquesta bona diapositiva, així que pot passar? Fresc. Així, per exemple, rwx. Abans de parlar del que representa, en primer lloc què significa rwx? Si veu que aquesta certa arxiu té permisos de rwx, ¿Què significa la persona podria ser capaç de fer? AUDIÈNCIA: Llegir, escriure i executar. ANDI Peng: Sí, exactament. Vostè pot llegir escriure i executar. A causa que els tres dels personatges són presents. Així que si seguim endavant i parlar sobre això en termes de bits, la rwx també es pot representar com 700. A causa de que com es pot veure en qualsevol tipus de permís directori d'arxius, hi ha tres tríades. En aquest cas, només la primera tríada té res allà. Així doncs, en aquest cas, el r és 4, la w és 2, i la x és 1. Si afegiu els junts, és 7. I així, si converteix que a binari, és 700. A causa de 7 és la primera tríada. 0, no hi ha res present en el segon tríada. I llavors no hi ha res present en la tercera tríada, per la qual cosa aquesta és una altra 0. Així que en el mateix sentit, un munt de tríades es pot representar simplement en bits, just en binari també. Així que 700 vol dir exactament el mateix com rwx ------ en termes de permisos. Tothom clar? Fresc. I així chmod 111 donaria que els permisos per a l'arxiu? Donar-li nois un parell segon per convertir això. La vostra prioritat tríada és per a l'usuari. La segona tríade és per al grup. I la tercera tríada és per a tothom. I així chmod 111 donaria que tipus de permisos i per a qui? Tome un parell de segons per pensar-hi i tornar. Sí. AUDIÈNCIA: Perquè tots puguin executar-lo. ANDI Peng: Sí, exactament. AUDIÈNCIA: Però ningú sap llegir ni escriure. ANDI Peng: I no dubti per explicar a tothom com va arribar a aquesta conclusió. AUDIÈNCIA: Bé, per a l'usuari, el grup, i el món, tot és 1, que és el codi de executable. ANDI Peng: Sí, exactament. Així 1, en aquest cas, l'únic que sabem és que aquest és el codi executable. Perquè la lectura és 4. L'escriptura és 2. I l'executable es 1. Així es les tres tríades són 1, que vol dir que per al món, per a l'usuari, i per al grup, són tots executable. Tothom bé amb això? D'ACORD. I així, la segona forma que podem realitat escriure això també és Només podia fer chmod 1 x més. 1 significa tots o tots. El més significa donar permisos. I llavors la x significa executable. Així que hi ha dos comandos en realitat són idèntics. Així que si voleu executar això en el seu terminal, fas chmod 111, nom del directori o l'arxiu. O vostè pot fer chmod un plus x, nom del fitxer de directori. La mateixa cosa, només una manera més fàcil, potser, per a alguns representen o el canvi permisos d'arxiu. Tot el bé amb chmod abans de seguir endavant? Fresc. Així que ara anem al capdavant en una algunes diapositives de conceptes molt abstractes que estic més o menys anar a la brisa a través. I és totalment bé si no ho entenc tot. Fins i tot ara, encara no se sap molt entendre tot completament. Però és més d'aconseguir l'enteniment de nivell superior de com algunes d'aquestes coses funcionen. Així que anem a parlar ràpidament sobre TCP / IP, que és només de Control de Transmissió Protocol slash Protocol d'Internet. Recordem de conferència, David, t'ensenyen l'exemple on havia de passar les notes en un sobre fins a rebre la part superior de la sala de conferències? Així, a l'auditori del col·legi d'advocats David va demostrar essencialment com TCP / IP treballa en el sentit que tot el que és és un mitjà per assegurar que les dades ha estat lliurat a través d'un servidor oa Internet. Així, en l'exemple de l'envoltant i el missatge, l'usuari al final poder veure que, oh, necessitava rebre quatre paquets d'informació. Però en realitat només va rebre tres. Això vol dir que he d'estar perdent un. I no va ser lliurat. I així TCP / IP en l'Internet, a través del seu equip i el servidor, fa exactament el mateix. Tot el que fa és especificar un marc en el qual una pèrdua de dades els paquets poden ser reenviats i rebuts. Igual que en l'Internet quan vostè està tractant per accedir a arxius en línia o enviar arxius al teu amic o mirar la web navegadors, milers i milers de milers de milions de bytes d'informació es transfereixen per mil·lisegon. I és molt, molt confús. I és molt difícil realment saben el que s'ha enviat i el que no ha estat enviat. I així TCP / IP simplement especifica un marc coherent en el qual la seva web navegador i el servidor pot tipus de comunicació amb els uns als altres, assegurar-se que els paquets són Tot és aquí i res de pèrdua i totes les dades que requerides en realitat està mostrant correctament. Tothom a D'acord en només que molt entendre breu alt nivell? Fresc. Així que anem a moure a parlar d'HTTP, que és només Protocol de transferència d'hipertext. HTTP, tot el que és és el que sigui qualsevol pàgina o arxiu s'accedeix al seu lloc web, el servidor retorna un HTTP codi d'estat en resposta a la petició assegurant-se que o bé, oh, aquesta sol·licitud va passar. I tot està mostrant correctament. O bé, oh, no, 404. Alguna cosa ha anat malament. Oh, no puc mostrar. Tot el que és, és que el que sigui vostè està tractant d'accedir, utilitzar com l'usuari està intentant accedir, en la Internet- simplement assegurar que o bé té èxit accedir el que fos o no accedir amb èxit el que fos. I pel que l'estat HTTP codi només li proporciona un mitjà de poder saber si o no s'ha realitzat correctament o no. Així, per exemple, una sol·licitud d'exemple. Es pot veure aquí és generalment generalment de quatre línies. Tenim un HTTP GET 1.1, que és just la URL petició mètode, el protocol versió, el nom del camp, i el valor del camp. Així que no hi ha necessitat de complet memoritzar res aquí. Només tipus de familiaritzar- amb com aquestes es veuen. En aquest exemple, la petició mètode URL és només el que sigui demanat va enviar al servidor. Igual que, hey, servidor, realment vull Accés bla, bla, bla, pàgina HTTP. La versió del protocol és només el que sigui versió del seu amfitrió o el servidor s'utilitza per accedir a la informació. El nom del camp és el lloc web o al URL que vostè està tractant d'accedir, en aquest cas, www.apple.com. I el valor del camp és simplement típicament nom, valor. I pot ser qualsevol tipus de combinació de lletres o números o el que sigui. Així que una sol·licitud típica, per la qual el que l'equip realment envia al servidor que diu, hey, vostè sap el que necessito aquesta mostra, això és del tipus de demanda que en realitat reben. Un exemple del que la resposta servidor enviaria de nou a vostè seria més o menys la mateixa cosa, excepte amb un codi d'estat a la part superior. Així que 200, 2 0 0 és sempre el codi d'estat d'OK. Igual que, OK, aquesta sol·licitud va passar. Vostè va ser capaç d'accedir tot correctament. La vida és bona. La vida és bella. Tot és totalment bo. I així, això només li diu al seu navegador i seu servidor, bé, de tot el bo. Tinc tota la informació que necessito. Fresc. Però el problema és de vegades sorgeixen problemes quan tener-- durar Crec Vaig parlar dels duplicats. Vostè té menys bones respostes. Així, per exemple, 404 és la Pàgina no trobada. De vegades es té un accés prohibit. Vostè té diversos altres codis d'estat que estic Segur que has vist tot quan estàs tractant de fer recerca a l'Internet. I el seu navegador li dóna la, no, no es pot accedir. I vostè és com, bé, merda. Així que més o menys, hi ha alguns codis d'estat bastant comuns. Potser familiaritzar amb la qual els que són. El més divertit que Crec que he escoltat de-- si li toca buscar tots ells en línia, per alguna raó hi ha en realitat un codi d'estat de béns anomenat 418 Sóc una tetera. Vaig buscar a Google on el origen d'aquesta era. I pel que sembla un April Fools ' Fa un parell de dècades Dia, algú va pensar que seria divertit per crear un nou codi d'estat de trucada 418 Sóc una tetera. Legítimament, el nom d'aquest codi es diu Sóc una tetera. M'oblidi de quina pàgina cal anar a fer realitat aquesta pantalla. Però, segons sembla, en realitat es pot obtenir un codi d'estat que sóc una tetera d'alguna manera a través de fer alguna cosa. Així que hi ha centenars i centenars de codis d'estat. Alguns d'ells fan més sentit que altres. Però pràcticament només familiaritzar vostè mateix amb els més comuns. El cos de l'entitat sol·licitada és baix i robust, pel que sembla. Així que de vegades hi ha més errors espantosos que sóc una tetera. Però aquesta és una que suposo quin tipus d'esperança de colpejar. Però jo no crec que ho farà. Tothom bé en l'estat just codis, les sol·licituds, els processos, la presa de que la informació es lliura correctament? Així que ara anem a la transició en una part divertida de la secció d'avui, on parlem una mica sobre HTML. HTML, tot el que és d'hipertext Llenguatge de marcat. És només la llengua estàndard s'utilitza per crear totes les web pàgines a Internet. Així que qualsevol pàgina web, el que és la teva pàgina web favorita? Quina és la teva pàgina web favorita? AUDIÈNCIA: [inaudible]. ANDI Peng: Ho sento? AUDIÈNCIA: Tumblr. ANDI Peng: Tumblr. Així Tumblr està escrit en HTML. I, llavors, realment anem a través i jugar amb algunes d'aquestes coses desprès. Gairebé tot el que vostè la necessitat d'aprendre, conèixer, per escriure HTML puguis probablement només Google a Internet. HTML, no és un programa com C on es poden crear variables i fer refredar les coses amb ell. És més just, oh, així és com jo volen que les coses apareixen al meu lloc web. I jo només vaig a posar-lo en. I se'n va amb l'estil d'ella. Així HTML, en cert sentit, és com un llenguatge de format o plantilla. És molt més fàcil. És molt més fàcil d'aprendre, molt més fàcil d'escriure en de la seva programació típica idioma, molt fàcil, accessible i molt fàcil d'utilitzar. Així que estem realment jugarà voltant, escriure les nostres pròpies pàgines avui. Però abans de començar, només vull repassar algunes millors pràctiques breus. A causa de HTML és tal un fàcil llenguatge i perquè fins i tot si ho fas un parell de coses malament, de vegades pot no notar, volem assegurar-nos que estem en realitat l'adhesió a les nostres millors pràctiques per assegurar-se que les coses que podria donar la volta, però No sempre van a no anar a la dreta assegurar-se que estan minimitzats. Així que més o menys, assegureu-vos teus tancament totes les etiquetes quan estàs escrivint en HTML. Si va a obrir un cos, assegureu-vos que està tancant-la amb un cos en algun lloc. Vostè vol assegurar-se que la seva pàgina web valida mitjançant l'ús de el que diu el W3 Validator. Vostè pot simplement Google que en línia, i hi ha un enllaç a la mateixa. I llavors vostè vol separada HTML, que és el llenguatge de marcat del seu estil, que és el llenguatge CSS que David vam demostrar que també som va a jugar una mica amb la conferència. Fresc. Així que cada vegada que vulgui executar HTML en l'aparell CS50, anem a executar un programa anomenat apatxe, que tot el que està a només construït en servidor web que tots en CS50 té accés a. En diem apache50 només perquè agradaria cridar a tot 50 en CS50. Així que la forma en què s'inicia la web CS50 servidor està escrivint en la seva comanda línia apache50 iniciar punt. I si vols posar-li fi a qualsevol temps, vostè apache50 acabar sense punts. I vostè acaba de colpejar Retorn. I ha de ser la partida aquí aviat. SIP. Així que només vaig a anar ràpidament sobre un exemple d'un molt breu pàgina web. I anem a passar com 10, 15 minuts jugant voltant d'escriure les nostres pròpies pàgines web. D'ACORD. Així que aquí al IDE-- pot veure que tothom? No realment. Aquí, vaig a apropar. Només tinc aquest breu plantilla aquí sense res realment en ell. Només anem a escriure ràpidament un programa d'HTML en el que acabem de saludar el món. Així mateix que en C, ara estem només va a fer-ho en HTML. Algú vol en realitat només intenti donar-me la primera cosa que vostè hauria de posar en un document HTML? Sí. AUDIÈNCIA: Els suports, el [inaudible]. ANDI Peng: Sí. Així que una cosa que és molt únic per HTML que normalment tradicionalment no trobarà en un altre ordre llenguatges de programació de nivell de línia és que en realitat a especificar el tipus de fitxer que aquest serà a la part superior del nostre codi. Així que en aquest instance-- Crec això és la comanda correcte, no? SIP. A la part superior, el que desitja incloure Bang DOCTYPE html entre parèntesis just de dir-li al seu equip, hey, mirar cap a fora. I document HTML està arribant. I llavors, ¿com volem per començar el nostre arxiu? Si només volem saludar, tenir un pàgina web que diu hola al món, com fem per construir això? En realitat, passem a Google. I en realitat podem fer això. SIP. Som-hi. Així HTML. Com es pot veure, el meu navegador és en realitat pentinar automàticament això per a mi. El mateix que en C, quan crear una clau d'obertura, seu navegador de manera automàtica afegeix en una clau de tancament. Per sort, la nostra IDE li encanta fer això per nosaltres també. Així que ara podem espècie d'escriba el començament d'una etiqueta, i va sempre ens diuen que recordi escriure el final de l'etiqueta. Crec que això ha de ser capitalitzat. I després volem afegir, sempre, un cap en la qual és el títol. Només volem cridar potser aquest hola, i després el cos. I aquí el tens. Això és en realitat el nostre document HTML. Així que la manera que qualsevol document HTML Sempre es va llaurar en-- mateixa cosa amb void main int. Vostè sempre vol tenir HTML una etiqueta d'obertura i tancament a la part superior i inferior del seu codi. Vols tenir un cap a l'interior de que conté el títol, just el que sigui va mostrar la fitxa de la seva web pàgina, i després un cos dins dels quals en realitat mostrar el contingut del que vulguis fer. Així que si volia córrer en realitat això, em vaig a apropar a sortir. Pot començar realitat apache50 començar punt. Fresc. I així com es pot veure, ara aquest enllaç ha aparegut. Diu que el seu lloc és ara disponible en algun enllaç de sota. Així que tot el nostre IDE té done-- No IDE, sorry-- sí, la nostra IDE ha fet és crear una web enllaç sobre el qual totes les nostres pàgines web es pot accedir al servidor. Així que anem a fer una ullada aquí. Fem clic sobre aquest, aneu a hello.html. I vostè veu un molt simple pàgina web per hola món. D'ACORD. Estem realment va a acaba tenir everyone-- sí, què passa? AUDIÈNCIA: Tinc una pregunta bàsica. ANDI Peng: Sí. AUDIÈNCIA: Com estalviar el seu arxiu com HTML? ANDI Peng: Sí. Així que si jo fos a crear un nou arxiu, si ho faig nou arxiu, Untittle, si ho faig, section.html, boom, això és tot el que he de fer. AUDIÈNCIA: [inaudible]? ANDI Peng: No. AUDIÈNCIA: [inaudible]. ANDI Peng: No. AUDIÈNCIA: [inaudible]. ANDI Peng: Sí. Més o menys, l'extensió de l'arxiu que està dins del seu IDE, que compta l'equip, que li diu al navegador, hey, cura. Aquest serà el codi escrita en aquesta llengua. Així, per exemple, en Microsoft Paraula, què fer tots els documents de Word acabar amb, quina extensió? .doc o .docx, oi? Tot el que fa és especifica a el seu sistema operatiu, hey, vostè té un document de Word que ve. Obrir-lo amb Word. El mateix amb els arxius PDF. Sap, oh, necessito per obrir aquest arxiu amb Adobe Reader o Adobe Acrobat. I així extensions operen la mateixa manera que en l'equip. Si especifica la pàgina de codis ser nomenat HTML, llavors se sap, oh, tens codi HTML. Vaig a tractar-lo com codi html. Així que és molt intel·ligent en aquest sentit. Així que tothom, anem a prendre com 10 minuts i acaba de crear els nostres propis llocs web. Anem a afegir a les coses boniques. Siéntase lliure de dir el que vulguis. Només vull per assegurar-se que servidors de tot el món s'estan executant correctament abans que li alliberem en el conjunt de processadors. Perquè si els servidors no s'executen per al conjunt de processadors, que serà molt, molt dolent. Jo només vaig a surar al voltant i veure el que tothom està treballant. Com va? AUDIÈNCIA: Acabo de fer en el meu equip. ANDI Peng: Això està bé. AUDIÈNCIA: [inaudible]. ANDI Peng: Només la seva IDE. Sí. AUDIÈNCIA: [inaudible]. ANDI Peng: Està bé. AUDIÈNCIA: [inaudible]. ANDI Peng: Totalment bé. Està tothom l'accés a el seu servidor OK web? Està apache50 funcionant bé? Crec que en alguns les altres seccions, tingut problemes amb no persones ser capaç d'accedir al servidor. Sí. Així que vostè acaba d'executar apache50 espai començar període espai. AUDIÈNCIA: [inaudible]. ANDI Peng: Sí. Bona? AUDIÈNCIA: [inaudible]. ANDI Peng: Oh, OK. Així que se suposa que tenen un espai. Així apache50-- AUDIÈNCIA: jo ho vaig fer. ANDI Peng: espai --start. AUDIÈNCIA: Oh, punt de l'espai. ANDI Peng: Sí, punt de l'espai. Cal anar. Així que si vostè té una pàgina HTML creada, llavors vostè pot anar directament l'enllaç que s'especifica. I vostè hauria de ser capaç d'accedir-hi. Tothom ha pogut accedir a les seves pàgines web ben? AUDIÈNCIA: [inaudible]. ANDI Peng: Oh, això està bé. AUDIÈNCIA: [inaudible]. ANDI Peng: Sí. Crec que en realitat es pot obrir dins del seu navegador, el navegador i no només el seu navegador IDE. Sí, crec que si copia i enganxa. AUDIÈNCIA: I llavors Com apagar? [Inaudible] ANDI Peng: Sí, ho fas apache50 deixar sense període. SIP. AUDIÈNCIA: [inaudible]. ANDI Peng: Sense període. Sí. Som-hi. SIP. Estem creant les nostres pròpies pàgines web. AUDIÈNCIA: Oh, genial. ANDI Peng: Sí. AUDIÈNCIA: Tinc una pregunta. Així apatxe 50-- ANDI Peng: 50, sí. AUDIÈNCIA: [inaudible]. ANDI Peng: Què? Això és estrany. Vegeu, que era una espècie de la qüestió que succeïa abans. D'ACORD. Veure després de la secció. Com que estem tenint alguns problemes amb el servidor. I vostè vol fer Assegureu-vos que el servidor és en execució abans de començar el conjunt de processadors. Perquè necessitaràs. Sí. Hi ha algú més que no ha estat capaç d'obtenir el seu servidor per començar? Per a aquells de vostès que volen afegir estil addicional a les seves pàgines web, en realitat podem fer el que David va fer a la conferència, així, que és crear un estil addicional fulla, que és un CSS punt, en cascada Full d'estil i en realitat només ha d'afegir a. Així, per exemple, he acabo de crear gairebé gairebé el mateix David va fer a la conferència. Pot pràcticament només fer cos. Vostè té el que es diuen les etiquetes en què es pot aplicar a IDE qualsevol secció vol dins del seu real a la pàgina HTML. Així que el cos de la pàgina, pot fer centre align text. I després vaig creativa una etiqueta anomenada superior interna dels quals vull aquestes coses succeir, assignar una mida de píxel més gran per a la font. Vull que el pes de la font a ser audaços. I vull que el color ser blau, simplement arbitrària valors que em vaig decidir a triar. Jo puc crear una altra etiqueta anomenada mitjana. Mida de la font, que sigui una mica més petit. I llavors puc crear una altra etiqueta anomenat fons on vull que la mida de la font ser encara més petit encara. I així, més o menys això és només exemple de codi font o d'origen fulls d'estil que és molt fàcil només Google. Si vostè diu, oh, vull que la meva font per ser en cursiva i de color verd fosc, vostè pot probablement Google, i després li dirà les etiquetes o identificadors apropiats per crear. I així, la forma en què ho faria realitat tipus de tenir això en un document HTML o utilitzar-lo és tot el que tens de fer aquí és al capdavant afegir un enllaç al full d'estils. Pel que només pot vincular iguals href qualsevol que sigui el nom del full d'estil és. I llavors la relació és un full d'estil. Així que dins de qualsevol document HTML, sempre i quan inclogui aquest full CSS punt, vostè hauria de ser capaç d'accedir a i tenen les propietats allà. Així, per exemple, aquí acabo crear un altre exemple de la pàgina web. Aquesta és benvingut a la secció CS50 Els dimarts de 2:00-03:30 amb mi. I després he afegit una imatge preciosa que que potencialment hauríem de ser capaços de veure. Així que si vostè fes un cop d'ull aquí, si vas a style.html, hem creat una pàgina web amb els gatets. A causa gatet són impressionants. Així que l'addició d'una imatge és només img enllaç SRC. Més o menys, si hi ha qualsevol tipus de funció que desitja afegir al seu website-- així que diguem, voleu afegir un menú o una barra de cerca o com 1 image-- només Google com fer això. I vostè només plop en aquest format. I vostè pot simplement bastant tant només ha d'afegir a. És molt, molt fàcil. Estem creant el nostre propi pàgines web en aquest moment. Si tu vols-- AUDIÈNCIA: [inaudible] ANDI Peng: Ho sento? AUDIÈNCIA: [inaudible]. ANDI Peng: Oh, el div és només una divisió dient-me que, oh, tinc una certa secció anomenada mitjà en el qual m'estic aplicant la meva etiqueta de CSS, i després la meva altra divisió amb la part inferior. Això és tot el que t'està dient. Perquè és bo per mantenir coses interessants per tal, de manera que el programa sap exactament com funciona. I crec que puc copiar enganxar aquest en el meu navegador actual, així. Ha d'estar bé. Sí. Visca. Així que si tothom vol simplement intenti crear una pàgina web, anem a fer una altra de dos a tres minuts. Jo només vull assegurar servidors de tot el món s'estan executant i tothom té una idea de com fer-ho. Si vostès volen treure les seves computadores. Encara no funciona? AUDIÈNCIA: Només sóc [inaudible]. ANDI Peng: Potser intenti actualitzar 50 també. Sí. AUDIÈNCIA: [inaudible]. ANDI Peng: Sí. Així que la forma en què s'inicia un nou servidor web al IDE és només fer apache50 espai de punt d'inici espai. Jo només volia assegurar-me servidors de tot el món s'estan executant a D'acord. AUDIÈNCIA: Aquí, al terminal? ANDI Peng: Sí. AUDIÈNCIA: [inaudible]. ANDI Peng: Apache. En realitat, crec que tens córrer alguna cosa ja. Sí, ets en realitat l'execució d'un servidor diferent. Sí, ja està bo. Mentre que està funcionant, que estàs bé. AUDIÈNCIA: OK. ANDI Peng: Hi ha de dos maneres d'executar servidors. Així que, mentre una de les formes està treballant, està bé. Anem a prendre un minut només per acabar la classe de dalt els tocs finals del que sigui pàgina web que vostès volien fer. Està tothom treballant pel camí? Servidors de cada persona són córrer, a més de la seva? Se'ns passarà això. I de bastant simple HTML. Així que crec que estem tots bé. Sí. Tornaré. AUDIÈNCIA: [inaudible]. ANDI Peng: OK. AUDIÈNCIA: Així que és només començat a carregar. ANDI Peng: No es preocupi. Així HTML, no hi ha codi font que estarà en línia després de la secció. A més, David té un tot munt en línia també. Només tipus de mirada sobre ell per veure com s'escriuen les pàgines HTML. És bastant fàcil. Qualsevol cosa que no sé, és bastant tant només Google i ja està bo. Només vull per assegurar-se que els servidors s'estan executant. AUDIÈNCIA: Fa això sovint? ANDI Peng: Mai em va passar a mi. Jo no sabia que fins i tot podria hivernar. AUDIÈNCIA: [inaudible]. ANDI Peng: Crec everyone-- la meva mai ha hibernat abans. I no sé per què. És estrany. AUDIÈNCIA: [inaudible]. ANDI Peng: és teu hivernant? AUDIÈNCIA: [inaudible]. ANDI Peng: Sí. AUDIÈNCIA: Està bé. Així que una vegada que estigui oberta. ANDI Peng: OK. Ens ocuparem d'algun servidor qüestions després de la secció. Vostè ha d'estar bé. Encara que, vostè vol assegurar-se que aconseguir que es resolguin abans de sortir. Perquè si del seu servidor no s'està executant, llavors estàs no serà capaç de fer el conjunt de processadors, com qualsevol part del conjunt de processadors. Així que vostè vol assegurar-se que que que està treballant. Fresc. Tot bé. Digui adéu gatets. Vaig passar molt de temps buscant aquesta foto gatet a posar. Així que, de totes maneres. AUDIÈNCIA: [inaudible]. ANDI Peng: Ho sento? AUDIÈNCIA: [inaudible]. ANDI Peng: Crec que és al lloc web. Igual que l'especificació? AUDIÈNCIA: [inaudible]. Crec que l'especificació és només en línia a la setmana 7. Jo crec que es diu pset6, fins i tot encara que estem en la setmana 7, que és una mica de computació. AUDIÈNCIA: Però vull dir si que desitgi veure at-- si voler aixecar la nostra versió de la pàgina web del nostre Sever? Així com server.c és el conjunt de processadors, oi? Si vostè vol veure això, com ho comprova cap a fora? ANDI Peng: Oh, així que en realitat el conjunt de processadors, tot el que estem fent aquí es implementing-- aquí, Vaig a anar sobre això breument. Així que per a tothom que acaba ficat a la secció, vostès està d'enhorabona. Hi ha molt poc material per cobrir realitat avui dia. Vaig només per passar al següent 20 minuts repassant pset ajuda. Perquè hi ha alguna cosa útil funcions que ajudaran a la seva vida. I amb sort, estarem fora d'aquí a com 20 minuts. D'ACORD. Així pset7 està malament. Tot i que estem en la setmana 07:00, en realitat és pset6. Vaig a canviar això. Tot el que estem fent en pset6 és la creació d'un servidor web. Això sona molt aterridor. I especialment per a aquells de vostès que ja tenen mirat el codi de distribució, hi ha una gran quantitat de codi, una gran quantitat de codi. Però és totalment bé. A causa que el quid de la qüestió part de crear realment el servidor es fa per nosaltres. Tot el que està realment demanarà de fer en aquest conjunt de processadors s'acaba de fer una mica de manipulació de cadenes a l'arxiu d'E / S. En realitat és com bastant simple. Així que quan vostè primer descarregar que-- que aquí en realitat ja ha descarregat el conjunt de processadors i portat un cop d'ull? Tot bé. Sí. Hi ha com 500 línies de codi que vostè va a ser així, Què està passant? I això és totalment bé. Assegureu-vos que vostè mira els passejos virtuals. Perquè David y-- No sé. Jo no crec que sigui de Zamyla, aquest. Però crec que alguna altra walk-through són bastant útil en termes de només que li permet saber el que està succeint dins del seu codi. I és totalment bé. A causa de que les quatre funcions que ets demanat per implementar realment tenir zero a veure amb el servidor real. Tot el que han de fer és analitzar diferents cordes, buscant a través de les cadenes, per assegurar-se que les coses estan fent el que se suposa que han d'estar fent. Així que en aquest sentit, cal algunes funcions molt, molt útils, especialment per string manipulació, que tots hem de vaig una altra vegada que vaig pensar que seria ser molt útil per a vostès aprendre abans d'intentar el conjunt de processadors. I estan tots continguts dins de la seva biblioteca string.h. Hi ha probablement més útil funcions que no he inclòs aquí, perquè o bé mai els ús o potser no sabia que existien. Siéntase lliure per mirar a través student.h. A causa de que serà molt de funcions que són molt útils. Així que els sis que utilitzo més en la meva pset quan ho estava fent la setmana passada eren strtok, strchr, strrcher, strstr, strcasecmp i strcpy. I així els dos últims poden semblar molt familiar per a la majoria de vostès. Cas Str comparar, l'única cosa que fa és comparar cadenes per comprovar que per la igualtat, incloent estoig. I strcpy només còpies una cadena en un buffer. I així, els dos han de semblar molt familiar per a vostès en aquest moment. A causa que els he fet servir molt, especialment per als últims conjunts de processadors. Però els quatre primers potser vostè no ha vist fins ara. Però jo vaig a caminar a través d'ells. A causa que van a fer les seves vides molt, molt fàcil no para-- fàcil, però molt més fàcil per a aquest proper conjunt de processadors. D'ACORD. Així char * strtok, aquesta és la funció definició per a aquesta funció contenia dins de la cadena, h biblioteca. Si se li dóna una entrada de char * cadena, que és només una cadena, o un char constant * deliminator, delim per abreujar, tot el que està fent és trencar el major cadena en una sèrie del que anomenem tokens separades per un cert valor. Així que en cert sentit, si m'anaven a donar que section.7.php, això és una cadena. Així que això seria si hagués de passar en això com el meu str, el meu char * str, si el meu deliminator era punt, tot això de fer és buscar a través de cadenes. I la primera vegada que veu un punt, seria simplement tornar al punter a l'última fitxa trobat en la cadena abans d'això. Pel que seria anar a la dreta aquí. I només em donaria 7.php. I si jo fos a trucar a la funcionar un cop més, em donaria només la .php. I pel que tot aquesta funció està fent està trencant la cadena més gran en cadenes més petites depenent en el que vostè està buscant. I així, per exemple, en la seva mirada fins a la funció si vols veure el que certs personatges s'acosta o si els punts succeeixen o extensions succeeixen, aquesta funció seria força útil. Sí. No et preocupis. Això tot ser-- sí, què passa? AUDIÈNCIA: Llavors, en la primera línia, si estàvem fent servir aquest exemple, ¿Què faríem inserir en això? ANDI Peng: Sí. Vostè acaba de trucar a un strtok delim coma cadena. I corda és igual a section.7.php. I llavors estàs delim podria ser igual a només dot. AUDIÈNCIA: OK. ANDI Peng: Sí. Tal qual. Totes aquestes funcions són força similar quan passem per ells. Només fan lleugerament diferents coses. Però tots van a fer la seva vida molt més fàcil. Segona funció, aquesta és com súper, súper, súper important, és ell-- aguantar. Vaya. Recerques strchr per primera occurrence-- realitat, sí. Strchr és la funció que Definitivament em vaig anar una altra vegada. Així que ignoro el que vaig dir per a la primera funció. Es diu en realitat strchr. Així que el que va passar aquí és si li van donar una cadena en un char c, seria just donar que fos el que fos. Sí. Així que pensar-hi com str, que és una cadena, i la Comissió de Drets Humans com char. Així que tot el que estem tractant de fer és buscar perquè un char és dins d'una cadena. I pel que busca per a la primera ocurrència del caràcter c en la cadena str. AUDIÈNCIA: [inaudible]. ANDI Peng: Sí. I després si no es va trobar ella, que va a tornar NULL. Així que una cosa que serà molt útil per a vosaltres a fer el conjunt de processadors Si, per exemple, a qui estaves buscant un extensió com un .docx per a una paraula document o .pdf d'un document PDF, pots tipus de utilitzar-lo per buscar per al que és després cada vegada que vegi un punt, no? I així, més o menys, si córrer que a través de la funció, si torna NULL, llavors vostè sap que no trobar-punt, que vol dir que aquest clarament no és una extensió d'arxiu vàlida. O si torna alguna cosa, llavors vostè sap que va a tornar el que sigui de en realitat després de l'ampliació. Així que aquells de vostès que tenia va començar a buscar a través de les operacions de recerca i analitzar, aquesta funció de va ser super útil. Així que estem realment va per demostrar l'ús d'aquest. Per què no és el que vostès intentar escriure un funció bool frase char * s que simplement retorna true si s és un sentència i false en cas contrari. Així pista, vas que probablement utilitzi strchr. O simplement buscar en el cadena per a un cert caràcter. I així, en una frase, el que separa a una sentència d'un no-condemna, quin caràcter específic? AUDIÈNCIA: Un espai. ANDI Peng: Un espai, no? I així, què és el que probablement va a voler fer dins d'aquesta funció en aquesta llista? AUDIÈNCIA: [inaudible]. ANDI Peng: Anem a voler strchr cadena per l'aparença de l'espai. Perquè si torna alguna cosa, llavors sabem que això ha de ser una oració. Això vol dir que hem de tenir un espai en aquesta cadena. Si no hi ha espai, llavors sabem que, bé, suposo que no és una cadena. Probablement és només una paraula molt llarga. Així que et vaig a donar un parell nois minuts per escriure aquesta funció. Sí. AUDIÈNCIA: ¿Vas rebre aquesta cadena des de l'usuari? ANDI Peng: Sí. Així que això és només una funció. Així que imaginin dins de la seva funció principal ja tener-- anirem aquí. D'ACORD. Així que he escrit aquest programa on Tinc la meva funció principal, on Jo només he creat dues cadenes. La primera és: Hola, el meu nom és Andi-- clarament, una oració. El meu segon és simplement Andi, clarament no sentenciar. I així m'estic quedant ambdues coses cordes a través d'aquesta funció. Vull que vostès escriuen frase freda. I estic emmagatzemant aquests valors, i després simplement imprimir-los. Així que crec que l'usuari és passarà en una cadena. I després vas a essencialment esbrinar si es tracta d'una sentència o no i retornar veritable o fals en conseqüència. Si vostès volen donar una polzes cap amunt o mà a mà, gest de cap, és que ningú està a punt per començar això, que seria bo. Tal com 30 segons més? Tot bé. Anem a veure si es pot tractar escriure aquesta funció. Així pseudo coding-- Jo només vaig a tipus de caminar a través d'això ara mateix. Més o menys, sabem que el funció que hem d'utilitzar. Anem a trucar a aquesta funció en la nostra cadena i la recerca d'un espai. Si torna alguna cosa, llavors hem de sap que, clarament, això és una frase. Perquè no hi ha espais. Llavors anem a tornar realitat. Si no, anem a tornar false. Algú vol donar mi la primera línia de codi que en realitat estem passant a utilitzar per escriure això? En realitat és el més difícil línia de codi també. Sí. AUDIÈNCIA: Si strtok S-- ANDI Peng: Només strchr. AUDIÈNCIA: [interposant VEUS] l'espai no és igual a null. ANDI Peng: Cool. Exactament dreta. Tothom entén que la primera línia? Anem a trucar a strstr, que és una funció que busca la cadena s per al caràcter de l'espai. I si ho troba, es va a retornar un punter a on és. Si no el troba, que va a tornar NULL. Així que si torna altra cosa que NULL, llavors sabem que ha trobat un espai. Això té sentit? Fresc. Tot bé. Així que si el coneixem ha trobat un espai, què és el que volem fer? AUDIÈNCIA: Retorna true. ANDI Peng: Sí. Retorna veritable. I llavors, algú vol acabar la funció per a mi? Sí. Si no, així com així. I de compilar això. SIP. Així com vostès poden veure a la sortides, recordi booleans en C sempre s'expressen en binari. 1 és vertadera. 0 és falsa. Si anéssim a executar aquest funció en la cadena un, el que és Hola, em dic Andi-- clarament, el resultat d'un sentence-- impresa a 1 la qual cosa és cert. El segon, que és just una paraula, resultat imprès a terme a 0, el que és fals. Tothom clar tipus de sobre com aquesta funció va ser escrit? Sí. AUDIÈNCIA: Podem també fer, en lloc de no és igual no, és igual a igual a 0, pel que és igual a? ANDI Peng: No. A causa strchr és una funció. Vaig a tornar a això. Quin és el tipus de retorn de la nostra funció strchr? AUDIÈNCIA: Oh, OK. O NUL. ANDI Peng: Sí. És un char * que em diu que tot el que aquesta funció va a tornar, que serà un punter. O bé el punter serà apuntant a on es va trobar, o que va a tornar un punter a NULL. En qualsevol circumstància, va per tornar un punter a alguna cosa. I pel que si anés a equiparar això és igual, és igual, 0, vostè va a obtenir un error de compilació. A causa de que va a tornar un punter. I vostè va a tractar de comparar un punter a un enter. I l'equip no és agradarà això. Sí, exactament. Fresc. Cada un de bo? I en segon lloc, anirem més d'una funció anomenada strstr. No us preocupeu si aquests funcions que són confuses. Em estan confonent. Com a tal, vostès podrien haver vist, tots ells sonen més o menys la mateixa. Només quan estàs confós, tiri cap amunt de la biblioteca string.h. I vostès poden ordenar través del qual un dels quals. Així strstr, l'únic que fa és recerques una cadena per a un conjunt l'altra cadena. Llavors, on strchr només recerques per a un sol caràcter, Recerques strstr per a una cadena sencera. Així que volia mirar, no ho faig conèixer, Hola, em dic Andi. I el nom del meu millor amic és també Andi. Si volgués en aquesta condemna per a tota la paraula d'Andi, la meva agulla hauria estat el que vostè està buscant. I el paller és el vostè està buscant en. Així que si vostè està buscant un paraula específica dins d'una oració, aquesta paraula serà la seva agulla. I llavors la frase en si serà el paller. I pel que només busca la primera aparició de l'agulla cadena al paller cadena. Es retorna el punter a la primera ocurrència. Excepte, recorda, en aquest cas, és el primera aparició de la cadena completa que vostè està buscant per, no només un caràcter. I pel que aquest és gairebé el el mateix que la funció que acabem de fer, només amb una mica més especificitat. Com que vostè està buscant més d'un caràcter. I l'ús és exactament el mateix com el que acabem vam fer. Tothom d'acord amb això? D'ACORD. L'últim que anirem més és strrchr, que no és confondre amb strstr o amb strchr. strrchr té un r extra en allà. Aneu amb compte quan estàs escrivint. Vostè pot trobar-se inclosos 1 r addicional o no incloure una r, i llavors la seva funció es va aconseguir no anar a treballar. I tu seràs confús. Aneu amb compte que està lletrejant totes aquestes funcions dreta. Així strrchr és l'exacta mateix que strchr excepte que busca no és la primera ocurrència d'un caràcter específic, sinó més aviat l'última aparició. I així, en aquest sentit, és gairebé exactament el mateix. Però en lloc de moure cap endavant en una cadena, vostè va a estar en moviment cap enrere en una cadena. Exactament el mateix, no ets més que buscar en un ordre diferent. I pel que aquest podria ser súper, super útil per a la recerca funció, el primer funció en el seu conjunt de processadors. Fem de compte que havíem de escriure una funció de l'extensió de buit en què ens passar-ne un de * Char constant, només una cadena, un nom d'arxiu, que porta en aquest nom i gravats l'extensió d'aquest arxiu. Així, per exemple, si jo fos a passar a la cadena de pset7.zip, que va a imprimir només l'extensió, que és .zip. I això funcionaria per qualsevol tipus d'extensió, .docx per a Word o pdf d'un PDF presentar o .html per a un arxiu HTML. Més o menys, escriure funció que pot fer això. De fet vaig a canviar a la IDE. No load-- allà anem. Així que tot el que he fet aquí és creat un char *, una primera seqüència, anomenada pset7.zip. Vaig a fer un zoom. He creat una segona cadena anomenada finalpaper.docx. I em escriviu una funció que quan crida va a simplement imprimir les extensions de nom d'arxiu. Potser prengui un parell de minuts a pensar sobre com es va a fer això. Lleugerament més desafiant que l'anterior, però l'ús és gairebé exactament de la mateixa. Sí. Així que escriure una extensió funció anomenada que, si et dono el nom d'un arxiu, si hagués de donar-li pset7.zip-- I Vols imprimir només el .zip. Si dono t'agrada finalpaper.docx, simplement imprimir el .docx, només l'extensió de qualsevol arxiu. Aquesta realitat només té dues línies de codi. Així que tracti de veure si potser pot fer-ho en això. En realitat, només té una línia de codi. Però dues línies és probablement més estàndard. Quina funció som probablement voldrà dir? AUDIÈNCIA: strrchr. ANDI Peng: strrchr, dreta. Com que estem buscant des de l'esquerra a la dreta. Jo no et vaig donar nois un exemple d'aquest tipus, però si et dono un exemple com www.apple.com i jo només volia el .com, seria un exemple d'on que desitja cridar l'última instància del període i no la primera, oi? Si fos strchr trucada, li han donat la apple.com. Si anomeneu strrchr, que t'hauria donat el .com. I així que vagi amb compte en què ways-- en el meu exemple, que probablement podria podria tenir simplement escrit usant strchr, ja que no hi ha un sol punt. Però en altres casos, que pot no ser el cas. I pel que sempre tractar de dissenyar el seu codi i, per que-- sí? AUDIÈNCIA: Així que en el exemple que acabes de dir, quan no strrchr ho faria li donen .com o simplement véns? ANDI Peng: Seria donar-li el .com. AUDIÈNCIA: OK. ANDI Peng: Sí. Apunta a on el va trobar. Sí. 30 segons potser? Sí. Tothom bo o potser una mica més de temps? A mà alçada? Mostra dels caps? Fresc. Algú vol que em donés la primera línia de codi per a aquest programa? AUDIÈNCIA: [inaudible]. ANDI Peng: Així que en primer lloc, anem potser descomposar. Llavors, quin és el tipus de retorn de strrchr? Tornem. strrchr, quin és el tipus de canvi? AUDIÈNCIA: Char * ANDI Peng: És un char *, oi? El que vol dir que probablement vas voler crear un altre char * a classe del magatzem sempre que sigui tornant a, oi? Perquè si vostè diu strrchr la funció, que va a donar-li un punter a on sigui que va trobar aquest últim període, Oi? Però vas a voler emmagatzemar que en algun lloc, no? I així, com codifiquem això en el nostre programa? AUDIÈNCIA: Vostè fa el char * [inaudible]. ANDI Peng: Sí. AUDIÈNCIA: [inaudible]. ANDI Peng: strrchr. Sí. Oh, perdut una r allà. AUDIÈNCIA: Nom del fitxer [inaudible]. Que és? Oh, és només ho és. ANDI Peng: Oh, és només ho és. Sí, ho sento. Culpa meva. Exemples no coincideixen. AUDIÈNCIA: I llavors dot. ANDI Peng: Sí. Aneu amb compte quan nois tracti: aquí, permetin-me acostar. Som-hi. Aneu amb compte quan nois estan escrivint, especialment quan que està fent simplement un char. És realment fàcil de voler simplement fer cometes dobles en lloc d'una sola. Això no funcionarà. El seu compilador va queixar-se. I la seva funció és simplement no funcionarà. I així que vés amb compte quan que estàs fent les coses amb caràcters que es tracta d'cometes simples. I el mateix passa amb aquesta línia de codi de sentit per a tothom? Estem creant un punter char *. A causa que els retorns strrchr alguna cosa de tipus punter. I així anem a cridar strchr en s, que és la cadena, l'arxiu nom, el que estem passant. I estem a la recerca de l'última instància d'un període, que és només la cometa simple dot cometa simple. Sí. AUDIÈNCIA: Quan fem servir cometes dobles i quan el fem servir cometes simples? ANDI Peng: Sí. Cotitzacions Així dobles sempre s'utilitza quan es tenir una cadena de més d'un de sol. Així que si vostè està fent strstr, que és el que més li cercar una cadena de cadena, passaria entre cometes dobles. Però cada vegada és només un sol caràcter, que vols fer cometes simples. És una bona cosa a tenir en compte. Així que ara que tenim el nostre punter, què fem amb ell? T'estic demanant nois imprimir-lo, oi? Així que [inaudible], que desitja dóna'm la línia de codi? AUDIÈNCIA: printf-- ANDI Peng: Sí. AUDIÈNCIA: --Vostè necessita un marcador de posició. ANDI Peng: Sí. AUDIÈNCIA: Imprimiu el marcador de posició. No sé el que el lloc titular no és més que el punt a la mateixa. D'ACORD. Anem a saltar que per ara llavors. AUDIÈNCIA: I llavors comma-- ANDI Peng: Punter, oi? AUDIÈNCIA: Punter, yup. ANDI Peng: Així que tipus d'una pregunta amb trampa, té a veure amb els punters i cadenes que hem parlat de la classe de ja. Quin tipus de lloc titular què tenim la necessitat d'un punter per a un char *? AUDIÈNCIA: [inaudible]. ANDI Peng: Sí. És més fàcil del que vostès pensen que és. AUDIÈNCIA: String? ANDI Peng: És només una cadena, exactament. Perquè recorda cadenes en realitat no existeix. Un char * és l'exacta el mateix que una cadena. I així que realment aquest s és el s'hauria d'haver utilitzat tot el temps. D'ACORD. Anem a veure si podem tractar d'executar aquest. Farem una extensió de marca. Fresc. Vostès veure com vaig passar al psset7.zip i la finalpaper.docx, i que només s'imprimeix el .zip i .docx? Té sentit? Acceptar Així que crec que en la teva mirada fins funció en el conjunt de processadors que ets va a demanar si el cadena té un determinat fi, vostè ha de donar un cert codi d'error. I el que aquest serà bastant horrible. Perquè si vostè pot imaginar el que l'extensió és, a continuació, pot comparar això extensió per veure si coincideix amb una certa extensió. I llavors vostè pot tornar un missatge d'error, no? Sí. AUDIÈNCIA: Llavors no ho fem cal afegir 1 o alguna cosa? El punter es destinarà a ell-- ANDI Peng: Nope. AUDIÈNCIA: --quioscos de la Punt després d'ella. ANDI Peng: Sí. Assenyala exactament a on era l'ocurrència. Així, per exemple, aquí, estem la recerca de l'època. Així que va tornar un punter al període. I després es va a imprimir a terme a partir de l'època. Així que vostè no necessita afegir 1. Encara que, és totalment bé per, si alguna vegada no sabeu, a només una mica de provar per tu mateix. Construir un programa d'exemple. Ho vostè mateix i veure on està la impressió. També Això no és una mala manera de fer-ho. Fresc. I això és pràcticament tot Vaig tenir avui per a vosaltres. Vam fer un munt de coses pset avui. Així que en cas de dubte, com Jo vaig dir, sempre mirar cap amunt la biblioteca string.h per a aquest conjunt de processadors. No hi haurà una gran quantitat de funció de aquí que pot ser útil. Alguns poden no ser útils. Realment no ho sé. Wade a través d'ell, no hi ha un munt d'ells. strstr, strchr, strrchr són super, super útil, així com els strcpys i strcasecmps que ja hem utilitzat. És molt només de jugar una mica amb cordes, determinar si són iguals, aconseguir coses de cordes, i ser capaç d'obrir arxius correctament. És una gran quantitat d'arxius de E / S. pset en realitat no és tan dolent. Vostè va a prendre un mirar-lo, descarregar-lo, i veure un munt de codi. No es preocupi, el codi que escrigui realment no és dolent en absolut. Si algú té problemes amb el seu servidor, vine a veure després de la secció. Demanar disculpes una vegada més per no portant dolços per Halloween. No sé el que estava malament amb mi. Però tindrem doble els dolços la propera vegada. I bona sort en el seu conjunt de processadors aquesta setmana. SIP.