АНДИ Пенг: Ние сме речиси низ сите psets. Всушност, ние сме преку мнозинството од најтешките psets. Значи ние сме всушност само случува да се вид на бриз во текот на следните неколку недели. Ние ќе треба да почнам да зборувам за нашите конечниот проекти, настаните кои доаѓаат во следните неколку недели. И животот ќе биде бриз. Па не премногу денес. Се надеваме дека, всушност, ќе се бриз преку агендата за денес, а потоа да излезе од тука со некое време во изобилие. Исто така, сакам да им се извинам за недостатокот на бонбони денес. Јас не знам зошто. Но, во недела доведоа до Ноќта на вештерките, јас не би се заборавило бонбони. Па јас сум, всушност, само голема разочарување за вас во моментов. Затоа што јас се сеќавам буквално бонбони за секоја класа, но за Ноќта на вештерките. Но, следната недела, јас ќе донесе двојно зголемување на износот на слатки да се направи се за тоа, сите за вас. Тоа ќе биде одлично. Па имам неколку огласи во врска со некои распоред. Имам некои прашања распоред. Тогаш ние ќе треба да се движи кон се зборува за она што се нарекува chmod. Ние ќе треба да се зборува за брзо TCP / IP, HTTP. И тогаш ние ќе треба да се кодира на нашите сопствена веб-сајтот користејќи HTML и CSS. А потоа јас ќе го напушти всушност можеби како и 20 минути за да се зборува за pset6. Бидејќи pset6 е, всушност, многу работи што веќе видовме претходно, но јас сакав да се освежи некои од овие концепти како и учат неколку нови функции. Кул. Значи прво на сите, добредојде назад од пауза. Се надевам дека сте пауза беше пријатно. Би го правиш за одмор? ПУБЛИКАТА: отиде во Њујорк. АНДИ Пенг: Ќе отиде во Њујорк? Мислам дека половина нашето училиште отиде во Њујорк. Се е во ред. Го поминав поголемиот дел од мојот одмор седентарен во кревет Netflixing. И тоа е добро време. Но сега сме назад, назад во седницата, се врати во лулашката на нештата. Имаме pset поради овој петок на пладне. Мислам дека веќе сте зедов вашиот квиз, да? Па секој друг кој има не имаа квизови, Ве молиме да дојде и да добиете вашиот квизови од мене на крајот на делницата. Или следи ме долу на кампусот. Јас ќе го имаат со мене некаде. Нашите финалниот проект пред-предлог, исто така. Така и за оние од нас кои никогаш не сте земени оваа класа досега, највисок премин на CS50 е многу произлезе овој голем проект кој студентите предлагаат. И пред-предлог, само општа идеја од она што некој би можел да сакате да го направите за нивните проект, таа идеја се должи Понеделник, следниот понеделник на пладне. Така доста, Дејвид мислам дека ќе разговараме повеќе за ова на предавање ако тој не е веќе. И има солидна страница на нашата веб страница објаснувајќи сите барања на проектот. Но, во суштина, ја подигнал било која тема дека сте бил заинтересиран во текот на вашето време тука во ЦС, дали тоа да биде игри или дизајн или видео или ништо. И може да се навистина вид на сега се применуваат некои од лекциите дека сме научиле овде во CS50-- Здраво, welcome-- да доста спроведување конечниот проект на вашиот избор. Сето тоа е поради понеделник е само еден краток blurb преку е-маил за мене, брз реченица, како, еј, Анди, Јас сум навистина заинтересирани за дизајнирање игра која го прави ова за iOS. Кул. Само дајте ми да твојот краток почетна идеи за вашиот конечниот проекти. И ние ќе се разговара за тоа дали или не кој е всушност добра идеја или не, дали тоа е изводливо идеја или не. Но, само пред-предлог се должи следниот понеделник. pset6, нашата прекрасна web-- дека не е во ред. Pset7? pset6? Pset6 тоа е, нели? pset6, нашиот веб сервер, се должи Петок на пладне со крајот на денот. Работното време да продолжи нормално од понеделник до четврток 8:00-11:00 неделава. Мислам комонс за следните три ноќи. Кул. Пред да дојде во материјалот, дали некој имате било какви прашања, вицеви, приказни? Што направи за падот одмор? ПУБЛИКАТА: Што можам да направам? АНДИ Пенг: Веќе тоа е всушност векови наназад. Christabel отиде во Њујорк. Останав тука и Netflixed. ПУБЛИКАТА: О, да бев тука. АНДИ Пенг: Ох, ОК. ПУБЛИКАТА: Не се сеќавам што конкретно. АНДИ Пенг: Тоа е во ред. ПУБЛИКАТА: Netflixing веројатно. АНДИ Пенг: Netflixing. Да, тоа е добро време. ВО РЕД. Во ред. Било какви прашања пред ние фрламе во материјал? Исто така, ние ќе треба да се обиде да Брзина преку делот денес, не премногу за да се покријат. И се надевам, ние ќе дојдеме овде малку рано. Жал ми е што не бонбони, исто така. Јас сум тотално разочарување особено за време на Ноќта на вештерките. Во ред. Кул. Па ние ќе треба да почнам да зборувам за аргументите на командната линија наречена chmod. chmod, сето тоа е е само систем Unix повик спроведена од командната линија да се промени пермисии. Така на пример, ние сме сите наишле на страницата вака веројатно некаде во нашиот животен век се биде на Интернет корисникот, каде што нашиот веб сервер има ни даде грешка на забранети. Вие немате дозвола за пристап, yadda, yadda, yadda, на овој сервер. Сето она што навистина значи е дека дозволите кои беа во прилог на она што страница ќе се обидуваат да пристап не беа отворени за вас. Па прилично многу, chmod е начинот на кој ние може да го менува оние систем дозволи за да се овозможи на сите, на корисникот, на групата, или во светот, или кој било комбинација на овие пристап до одредени датотеки, директориуми, било што, навистина, било вид на систем за оперативен систем. Значи, ако некој од момци имаат компјутери и ако се чувствувате како следниве заедно со мене денес, целосно се чувствуваат слободни да се впишат само работите во. Ако не, вие само може да се закачам. Па јас ќе одам да се всушност се повлече мојата терминал во моментов. Па на командата за извршување chmod, или барем само на листата на дозволите на вашето датотека директориум, е само ls-l. Како што можете да видите, еден куп на работи се појавува од кои најголем дел Значајно е да нè на левата рака овде. Вие момци се види еден куп на рс, WS, 1 /. Је. Тие во суштина се само сите пермисии да се објасни она што одредени директориуми и фајлови во системот имаат. Значи, да се вратиме на точка моќта тука. Така што во прилог на имиња на датотеки како вие момци можат да се види на десната страна, Ние сме во потрага за да ја видите во суштина само колона на левата страна. Така што во прилог на само имињата на датотеките, ние може да се види на пермисиите на датотеките, нивните Сопственик на групата, име на групата, на денот дека датотеката последен модифицирани, итн. Можете да видите многу работи со користење chmod. Па начинот на кој што ги читаме chmod е дека првата буква ние доста игнорираат во смисла на читање дозволи. Првата буква само ни кажува она што тип на систем што се пристапува. d, во овој случај, е папка или директориум. Па знаеме дека моментално мојот работен простор секција седум е директориум. И потоа ќе видите три тријади, во суштина само три групи на три карактери. И може да се мисли на секој што малку. Па вие само треба три групи на три битови, девет битови во вкупно. Ги третираат во групи од три. Па првата група од три е секогаш вашиот кориснички права. Својата втора група од три е секогаш ги вашите дозволи група. И трета група на три е секогаш како светот, насекаде дозволи. Па претпоставувам дека на лесен прашање да побарате е она што е, разликата помеѓу член и група. Главната разлика помеѓу член и група е дека корисникот е само вас лично пристап што и да е во моментов. Една група може да биде ако имаш повеќе корисници на еден компјутер, на пример. Сите од нив може да се третира како група. А потоа и на светот е само светот, секого. Така што можеме да видиме подоцна за тоа како можеме да менувате оние во различни привилегии во форумот. Па прилично многу, ние сме ќе се фокусира уште на дел од левата страна, каде што Директориум за CS50 гледаме drwx, каде што R само значи дека тоа е да се чита. На w само значи дека е отворена за пишување. А потоа и на х само значи дека е извршна. Што би го мислат вид на не дава никаква смисла. Тоа треба да биде д. Но всушност x вид на работи малку подобро, затоа што може да се сеќава на него подобро. Па на три видови на работи што можете може да се направи, или можете да прочитате некоја датотека, ќе може да има дозвола да се напише поднесе или би можеле да имаат дозвола да се изврши некоја датотека. Така и на начинот на кој ние, всушност, претставува во битови е броеви 4, 2, и 1. Па ако нешто е да се чита е претставена од страна на бројот на 4. Нешто што е достапен за запишување е претставена со 2. И нешто што е извршна како што се претставени од страна на 1. Па во таа смисла, ние исто така може претставуваат овие numbers-- Здраво, Добредојдовте, во еден поинаков начин. Жал ми е. Пред сите, јас ќе одам да се извини во име на сите внесување на час. Го заборавив бонбони денес. Жал ми е јас сум неуспех оваа недела на Ноќта на вештерките. Јас ќе донесе дупло бонбони следниот пат да се направи се за неа. Но, и онака, жал за тоа момци, жалам. Па начинот на кој ние, всушност, може да влез на нашата команда аргументот е ние може да го направи chmod група коса црта дозволи, каде што групата е само што и група ние се обидуваме да се промени. И дозволите се што и да сакате да го додадете на тоа. Така на пример, плус додава дозволи, Одземете и го намалува дозволи. Како и видовите на група ние си имаме еден за сите, u за корисниците, g за групи, или o за другите. Тоа е малку апстрактен во моментов. Но, ние ќе одиме во текот на неколку примери само за да се демонстрира ова вистински брз. Секој добро на овој слајд, за да можам да се движат натаму? Кул. Така на пример, rwx. Пред да зборуваме за она што го претставува, пред сè она што не rwx значи? Ако видите дека овој одредено датотека има дозволите на rwx, што значи дека лице може да биде во можност да се направи? ПУБЛИКАТА: читате, пишувате и да се изврши. АНДИ Пенг: Да, точно. Можете да прочитате за пишување и извршување. Поради тоа што сите три од овие Ликовите се присутни. Значи, ако ние одиме напред и да се зборува за тоа во смисла на битови, на rwx исто така, може да се претстави како 700. Бидејќи, како што може да се види во било кој вид на дозвола датотека директориум, има три тријади. Во овој случај, само првиот тријада има нешто таму. Значи во овој случај, r е 4, на w е 2, и x е 1. Ако додадете оние заедно, тоа е 7. И така, ако конвертирате тоа да се бинарни, тоа е 700. 7 бидејќи е првата тријада. 0, нема ништо моментов во вториот тријада. А потоа, тука е ништо присутни во третиот тријада, па тоа е уште една 0. Па во истата смисла, еден куп на тријади можат да бидат претставени само во битови, само во бинарна, како и. Значи 700 значи иста работа како rwx ------ во однос на дозволи. Сите јасни за тоа? Кул. И така ќе им даде chmod 111 кој дозволи за датотеката? Да ви даде неколку момци секунди за претворање на оваа. Се сеќавам, првиот тријада е за на корисникот. Вториот тријада е за групата. А третиот тријада е за секого. И така chmod 111 кој ќе даде видот на дозволата и на кого? Потрае неколку секунди за да се размислува за тоа и да се врати. Је. ПУБЛИКАТА: Па секој може да го изврши. АНДИ Пенг: То, точно. ПУБЛИКАТА: Но, никој не може да чита и пишува. АНДИ Пенг: И се чувствуваат слободни за да се објасни на сите како ќе дојде до тој заклучок. ПУБЛИКАТА: Па, на корисникот, група, и во светот, сето тоа е 1, која е код за извршна. АНДИ Пенг: Да, точно. Така 1, во овој случај, сите знаеме е тоа дека таа е извршна код. Затоа што читањето е 4. Пишувањето е 2. И извршна е 1. Така е сите три тријади се 1, дека значи дека во светот, на корисникот, и во групата, тие сите извршна. Секој добар во тоа? ВО РЕД. И така вториот начин дека ние всушност може да напишам ова е, исто така, ќе се може само да се направи chmod плус х. средство или сите секого. На плус значи давање на дозволи за да ја. А потоа и на х значи извршна. Значи има две команди всушност се идентични. Значи, ако сакате да се кандидира ова во вашиот терминал, правиш chmod 111, името на Вашиот директориум или датотека. Или можете да направите chmod плус x, Името на вашата листа на датотеки. Истото, само полесен начин, можеби, за некои за да ги претставуваат или промена пермисии. Секој еден ред со chmod пред да продолжат понатаму? Кул. Па сега ние ќе треба да се упатат во неколку слајдови на многу апстрактни концепти дека јас сум прилично многу ќе бриз преку. И тоа е сосема во ред, ако не разбере сè. Дури и сега, јас се уште не се навистина целосно да се разбере сè. Но тоа е повеќе од добивање разбирањето највисоко ниво за тоа како некои од овие работи работата. Значи ние се случува да се зборува брзо за TCP / IP, што е само за контрола на пренос Протокол за намалување на интернет протокол. Потсетиме од предавањето, Давид, да не ве научи на пример, каде што тој ќе помине забелешките во плик до допаѓа врвот на аула? Па во аудиториумот на Правниот факултет Дејвид демонстрираа во суштина како TCP / IP работи во смисла дека сите тоа е е средство за обезбедување на тие податоци Испорачана е во склопот на сервер или на интернет. Значи, во примерот на ковертот и пораката, на корисникот на крајот можеше да се види дека, ох, се потребни за да се добиваат четири пакети на информации. Но, јас, всушност, само доби три. Тоа значи дека јас треба да недостасува еден. И никој не е доставен. И така на TCP / IP на интернет, преку вашиот компјутер и од серверот, го прави токму истото. Сите тоа го прави е да се определи рамка во која на изгубени податоци пакети може да се навредуваат и примени. Како на интернет, кога ќе се обидуваш за пристап до датотеки на интернет или испрати датотека на вашиот пријател или се погледне во веб- прелистувачи, илјадници и илјадници луѓе на милијарди и милијарди на бајти на информации се пренесуваат по милисекунда. И тоа е навистина, навистина збунувачки. И тоа е навистина тешко да се всушност знаат што е испратена и она што не е испратена. И така на TCP / IP само ја одредува смирување на рамка во кои вашиот веб- прелистувачот и серверот да вид на комуникација едни со други, само бидете сигурни дека пакетите се сите тука и ништо не се изгуби и сите податоци што ќе бара е всушност прикажување правилно. Секој ОК на само дека многу Накратко високо ниво да се разбере? Кул. Па тогаш ние ќе треба да се движи во зборуваме за HTTP, која е само Хипертекст Протокол за пренос. HTTP, сите тоа е она што е на било која страница или датотека е пристапено на вашиот сајт, на серверот враќа на HTTP статус кодот одговор на барањето да се осигура дека или, ох, ова барање помина низ. И се што е правилно прикажување. Или, О, не, 404. Нешто тргна наопаку. О, јас не може да се прикаже. Сè тоа е е дека што и што се обидувате да пристапите, користат како корисник се обидува да пристапи, на internet-- само што си сигурен дека можете или да имаат успешно пристапи што и да е или не пристапни што и да беше. И така на статусот HTTP код само ви обезбедува средство за да се биде во можност да се знае дали или не е успешна или не. Така на пример, на пример барање. Можете да видите тука тоа е обично обично четири линии. Имаме ГЕТ HTTP 1.1, што е само барање метод на URL, протоколот верзија, името на теренот, и вредноста на терен. Па нема потреба да се целосно запаметат нешто тука. Само вид на запознавање себе си со тоа како тие изгледаат. Во овој пример, барањето на методот URL-то е само што и барање што се испраќа на серверот. Како, еј, сервер, јас навистина сакате да пристап yadda, yadda, yadda, HTTP страница. Верзија на протоколот е исто што и Верзија за вашиот домаќин или вашиот сервер е со користење на пристап до информации. Име на полето е на веб-сајт или на URL, кој ќе се обидуваш да пристап, во овој случај, www.apple.com. И вредноста на ова поле е само обично име, вредност. И тоа може да биде било кој вид на комбинација на букви или броеви или whatever. Толку типичен барање, па она што вашиот компјутер, всушност, испраќа до серверот, кој вели, еј, Знаеш ли што ми треба прикажана, тоа е вид на барање дека тие всушност добивате. Еден пример како одговор на она што серверот ќе испрати назад до тебе ќе биде доста истото, освен со код за статус на горниот дел. Па 200, 2 0 0 е секогаш код на статусот на ОК. Како, добро, ова барање помина низ. Сте биле во можност да пристапите до се што е правилно. Животот е добар. Животот е во ред. Сè што е сосема добар. Па така ова само кажува вашиот пребарувач и Вашиот сервер, еј, добра сè е. Добив сите информации што ми треба. Кул. Но, проблемот е понекогаш проблеми да излезе кога ќе have-- трае мислам Зборував за дупликати. Имате помалку добри одговори. Така на пример, 404 е Страна Не е пронајдено. Дали понекогаш имаат забранет пристап. Имаш разни други кодови дека сум дека сите сте виделе кога сте обидувајќи се да се направи истражување на интернет. И вашиот прелистувач ви дава на, не, не можат да пристап. И сте како, добро, глупости. Па само прилично многу, има некои прилично честа кодови. Можеби се запознаете со кои од нив тие се значајни. Најсмешните оној кој Мислам дека некогаш сум ја слушнал of-- ако се случи да погледне до сите нив онлајн, поради некоја причина, тука е всушност вистински статус код наречена 418 Јас сум чајник. Јас googled каде Потеклото на ова беше од. И очигледно една шегата Ден пред неколку децении, некој што мислев дека ќе биде смешен да се создаде нов статус код наречена 418 Јас сум чајник. Легитимно, името на овој код се нарекува Јас сум чајник. Го заборавам она страница мора да се одат за да всушност прават овој приказ. Но, очигледно, вие всушност може добие кодот статус на сум чајник некако преку прават нешто. Значи има стотици, стотици кодови. Некои од нив се направи повеќе чувство од другите. Но, доста само запознавање себе си со кои најчесто се. Побара телото на субјектот е кратки и витко, очигледно. Па понекогаш постојат повеќе застрашувачки грешки отколку јас сум чајник. Но, ова е она што јас се погоди можете вид на се надеваат дека ќе се погоди. Но, јас не мислам дека ќе. Секој добар само на статусот кодови, барања, процеси на донесување сигурни информации е дадено соодветно? Па сега ние се случува да се транзиција во на забавата дел од дел и денес, каде што можеме да позборуваме малку за HTML. HTML, сите тоа е хипертекст Маркирачки јазик. Тоа е само стандарден јазик го користите да се создаде сите веб- страници на интернет. Така било кој веб-страница, што е Вашите омилени web страна? Што е вашиот омилен веб-страница? ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Жал ми е? ПУБЛИКАТА: Tumblr. АНДИ Пенг: Tumblr. Па Tumblr е напишан во HTML. И така ние всушност ќе одат преку и позанимавам со некои од овие работи подоцна. Доста се што ви треба да учат, да се знае, да пишувате HTML вие веројатно може да само на Google на интернет. HTML, тоа не е на програма како C каде што може да се создаде и се променливи кул работи со него. Тоа е повеќе од само, ох, ова е како јас сакате работите да се појави на мојот вебсајт. И јас сум само ќе го стави во. И тоа се случува да стил. Па HTML, во извесна смисла, тоа е исто како на форматирање или дефиниција јазик. Тоа е многу полесно. Тоа е многу полесно да се научат, Многу е полесно да се напише во од вашиот типичен програмирање јазик, многу лесно, многу корисник достапни и пријателски. Значи ние сме всушност ќе се игра наоколу, пишуваат нашите сопствени страници денес. Но, пред да почнеме да, јас само сакам да поминат некои кратки најдобри практики. Бидејќи HTML е така лесна јазик и затоа што дури ако го направите неколку работи во ред, тоа понекогаш може да не се забележи, сакаме да бидете сигурни дека ние сме всушност, да се почитуваат нашите најдобри практики да бидете сигурни дека она што би можеле да се случува наоколу, но не секогаш се случува да не одат право бидете сигурни дека тие се сведени на минимум. Па прилично многу, бидете сигурни дека вашиот затворање на сите вашиот тагови кога сте пишување на HTML. Ако сте отворање на тело, бидете сигурни дека сте затворање со тело некаде. Вие сакате да бидете сигурни дека вашата веб-страница со помош на одобрување што се вика на W3 Валидаторна. Може да се само Google, која на интернет, и таму е линк до него. А потоа сакате да го посебна HTML, кои е вашиот јазик за Селектирај на вашиот стил, кој е јазикот CSS дека Давид покажа дека ние сме, исто така, случува да се игра малку со предавање. Кул. Па во секое време сакате да се кандидира HTML на CS50 апаратот, ние ќе треба да се води програма наречена Apache, што сите тоа е само вграден во веб сервер кој сите во CS50 има пристап до. Ние ја нарекуваме apache50 само затоа што ние сакал да го наречам се што 50 во CS50. Па начинот на кој ќе го стартувате web CS50 серверот е со внесување на команда линија apache50 почне точка. И ако сакате да се стави крај на тоа во секое време, вие не apache50 завршуваат без точка. А вие само притиснете Enter. И тоа треба да се упати до тука наскоро. Да. Па јас сум само ќе брзо одат над пример на еден навистина кус веб-страница. И ние ќе треба да поминат како 10, 15 минути играње околу пишување нашите сопствени веб-страници. ВО РЕД. Па тука во IDE-- може да се види дека сите? Не баш. Еве, јас ќе зумирате. Јас само што влегов оваа кратка дефиниција овде без ништо, всушност, во неа. Ние сме само ќе брзо да се напише HTML-програма во која ние само и се поздрави со светот. Па истото како во C, сега ние сме само ќе го направи тоа во HTML. Сака ли некој да всушност само се обиде да ми дава првото нешто што го ќе треба да се стави во HTML документ? Је. ПУБЛИКАТА: загради, на [Беззвучен]. АНДИ Пенг: Да. Така нешто што е многу уникатна да HTML дека ние обично традиционално не се судрите со други команда програмски јазици ниво линија е дека ние, всушност, да наведете го видот на датотека дека тоа се случува да биде на врвот од нашиот код. Така што во овој instance-- мислам тоа е вистинскиот команда, нели? Да. На врвот, вие само сакате да се вклучат тресне DOCTYPE HTML во загради само да му кажете на вашиот компјутер, еј, внимавате. И HTML документ доаѓа. А потоа и како сакаме да започнете на нашите датотека? Ако ние само сакаме да се каже здраво, имаат веб-страница, која вели здраво на светот, како да одиме за изградба на ова? Всушност, ајде да се свртиме кон Google. И ние всушност може да го направите тоа. Да. Таму ќе одиме. Па HTML. Како што можете да видите, мојот интернет пребарувач е, всушност, автоматски стајлинг ова за мене. Истото како во C, кога ќе создаде отворено кадрава голема заграда, Вашиот прелистувач автоматски додава во тесна кадрава голема заграда. За среќа, нашите ИРО сака да стори тоа за нас, како и. Па сега можеме да се вид на тип на почетокот од некоја ознака, и тоа се случува да се секогаш да ни каже да не заборавајте да напишете крајот на таг. Мислам дека ова треба да се капитализирани. А потоа ние ќе сакате да додадете, и секогаш, со глава во кои е насловот. Ние само сакаме да можеби се јавите ова здраво, а потоа телото. И таму да одите. Тоа е всушност нашата HTML документ. Па начинот на кој било HTML документ секогаш е стилизирана in-- истото со int главната неважечки. Што секогаш сакаат да имаат HTML отворен и блиски таг на врвот и на дното на вашиот код. Сакате да го имаат шефот на внатрешноста на која содржи насловот, исто што и ќе се прикаже на јазичето на вашиот веб- страница, а потоа и тело во внатрешноста на кој всушност, ќе ја прикаже содржината на она што сакате да го направите. Значи, ако си сакал да всушност се кандидира ова, јас ќе одам да одзумирање. Ти всушност може да започне apache50 почне точка. Кул. И така, како што можете да видите, сега овој линк се појави. Таа вели дека вашиот сајт е сега достапна за некои врската подолу. Па сите наши ИРО има done-- не ИРО, sorry-- је, нашите ИРО го направи е да се создаде веб- линк по кој сите наши веб-страници може да се пристапи на серверот. Па ајде да ги погледнете овде. Ајде да кликнете на ова, одете на hello.html. И ќе видите многу едноставна веб-страница за Здраво светот. ВО РЕД. Ние сме всушност ќе да се само имаат everyone-- је, шо праиш? ПУБЛИКАТА: Имам едно основно прашање. АНДИ Пенг: То. ПУБЛИКАТА: Како да ви го спаси датотека на вашиот како HTML? АНДИ Пенг: Да. Значи, ако јас да креирате нова датотека, ако го направам нова датотека, Untittle, ако го направам, section.html, бум, тоа е се што треба да направите. ПУБЛИКАТА: [Беззвучен]? АНДИ Пенг: Не ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Не ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Да. Прилично многу, продолжување на на датотеката што е внатре вашиот ИРО, кој му кажува на компјутерот, што кажува на прелистувачот, еј, внимавате. Ова се случува да биде код напишани на овој јазик. Така на пример, во Microsoft Збор, она што го прават сите Word документи заврши со, она екстензија? .doc или .docx, нели? Сето она што го прави е да се специфицира Вашиот оперативен систем, еј, имаш Word документ доаѓа. Отворете го со Словото. Истото со PDF датотеки. Тоа го знае, ох, се потребни да се отвори оваа датотека со Adobe Reader или Adobe Acrobat. И така екстензии работат на ист начин како и на вашиот компјутер. Ако наведете вашиот код страница да биде именуван на HTML, тогаш тоа го знае, ох, имаш HTML код. Одам да го третираат како HTML кодот. Па тоа е супер паметни во таа смисла. Па сите, да ги земеме како 10 минути и само се создаде нашата сопствена веб-сајтови. Ајде да додадете во убави работи. Се чувствуваат слободни да се каже она што го сакате. Јас само сакам да бидете сигурни дека сервери секого се работи правилно пред да можеме да ве ослободи во pset. Затоа што ако вашиот сервер не се кандидира за pset, дека ќе биде многу, многу лошо. Јас сум само ќе се плови околу и видите што е работа на. Како оди? ПУБЛИКАТА: Јас само се сврте на мојот компјутер. АНДИ Пенг: Тоа е во ред. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Само вашиот ИРО. Је. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Тоа е во ред. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: сосема во ред. Е секој пристап нивните веб сервер, во ред? Е apache50 трчање во ред? Мислам дека во некои од другите делови, ние имаше проблеми со не луѓе да се биде во можност да пристапите на серверот. Је. Па вие само се кандидира apache50 простор почне простор период. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: То. Добар? ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Ох, ОК. Така што би требало да има простор. Па apache50-- ПУБЛИКАТА: јас не. АНДИ Пенг: --start простор. ПУБЛИКАТА: Ох, простор точка. АНДИ Пенг: То, простор точка. Ете ти. Па тогаш ако имате HTML страница создадена, тогаш само може да оди директно на линкот што го одредува. И треба да бидете во можност да се дојде до неа. Секој е во можност да имаат пристап до своите веб страни во ред? ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Ах, тоа е во ред. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Да. Мислам дека вие всушност може да се отвори тоа во рамките на вашиот интернет пребарувач, прелистувач и не само вашиот ИРО пребарувач. Да, мислам дека ако копирајте го и ставете го. ПУБЛИКАТА: И тогаш како ние да го исклучите? [Беззвучен] АНДИ Пенг: Да, ќе се направи apache50 престане без период. Да. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Без период. Је. Таму ќе одиме. Да. Ние сме создавање на нашите сопствени веб-страници. ПУБЛИКАТА: О, кул. АНДИ Пенг: Да. ПУБЛИКАТА: Имам едно прашање. Па Apache 50-- АНДИ Пенг: 50, да. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Што? Тоа е чудно. Види, тоа беше вид на ова прашање што се случуваше пред. ВО РЕД. Види ме по дел. Затоа што има некои проблеми со серверот. И дека сакате да се направи Осигурајте се дека вашиот сервер е работи, пред да започнеш pset. Затоа што сте ќе треба. Је. Дали има некој друг што не е можност да се добие нивниот сервер да почнам? За оние од вас кои сакаат да додадете дополнителен стил во вашиот веб-страници, ние всушност може да го направи она што Давид во предавањето, како и, која е се создаде дополнителен стил на состојба, што е точка на CSS, Cascading Стил на состојба, а всушност само да го додадете во. Така на пример, јас сум само создаде доста скоро исти еден Давид во предавањето. Прилично многу може да се направи само телото. Имате она што се наречени тагови во кои може да се применува без оглед на IDE секција што сакате во вашиот вистински да HTML страница. Така што телото на страница, можете може да го направи текстот порамни центар. И тогаш ќе креативен таг наречен врвот внатре од кои сакам овие работи за се случи, додели поголема големина пиксели за фонтот. Сакам тежина на фонтот да биде храбар. И сакам бојата да биде сина, само произволни вредности кои решив да се избере. Јас може да се создаде уште еден таг наречен средина. Големина на фонтот, направи тоа малку помали. А потоа можам да се создаде уште еден таг наречен дното каде што сакате на големина на фонт да биде дури и уште помал. И така доста ова е само пример на изворниот код или код стилови дека тоа е многу лесно да се само на Google. Ако ти кажам, ох, јас сакам мојата фонтот да бидат ставени во Italic и темно зелена, вие веројатно може Google, и тогаш тоа ќе ви кажам соодветни ознаки или лични карти да се создаде. Така и на начинот на кој вие всушност ќе вид на имаат ова во HTML документ или да користите тоа е се што треба да го направите тука е на чело додадете линк до стилот на состојба. Така да само да се поврзат href еднаквите без оглед на името на вашиот стил на состојба е. А потоа врската е стил на состојба. Па во рамките на било HTML документ, се додека како ќе се вклучи оваа точка CSS лист, треба да бидете во можност да пристапите до и имаат својства таму. Така на пример, тука сум само се создаде уште еден пример веб-страница. Ова е добредојден да секција CS50 Вторник 2:00-03:30 со мене. И тогаш јас додадов една прекрасна слика која ние потенцијално би требало да можете да го видите. Значи, ако се погледне тука, ако одите во style.html, ние направивме веб страница со мачиња. Бидејќи маче се страшни. Па додавање на слика е само img src линк. Доста, ако има било вид на функција што сакате да ја додадете во вашиот website-- па да речеме, сакате да го додадете мени или полето за пребарување или како една image-- само на Google како да го направите тоа. А вие само паднала во тој формат. И може да се само убави колку само да го додадете во. Тоа е навистина, навистина лесно. Ние сме создавање на нашите сопствени веб страни во моментов. Ако сакаш-- ПУБЛИКАТА: [Беззвучен] АНДИ Пенг: Жал ми е? ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Ох, div е само поделба ми кажуваше дека, ох, се имаат одреден дел наречен средината во која јас сум примена мојот CSS таг, а потоа мојата друга поделба со дното. Тоа е се што е ти го кажувам. Бидејќи тоа е убаво да се задржи уредни работи во ред, па на програмата знае точно како да се кандидира. И мислам дека може да ја копира ставете овој во вистински мојот интернет пребарувач, како и. Тоа треба да биде во ред. Је. Јеее. Значи, ако секој сака да се само обидете се создавање на веб-страница, ќе бидат потребни уште две до три минути. Јас само сакам да бидете сигурни дека сервери секого се работи и секој има свое идеја за тоа како да го направите тоа. Ако вие момци сакаат да се земе од вашиот компјутер. Сè уште не работи? ПУБЛИКАТА: Јас сум само [Беззвучен]. АНДИ Пенг: Можеби се обиде обновете 50, како и. Је. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Да. Па начинот на кој што ќе почнете нов веб сервер на ИРО е само направи apache50 простор почеток простор точка. Сакав само да бидете сигурни дека сервери секого се работи ОК. ПУБЛИКАТА: Еве, на терминал? АНДИ Пенг: Да. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Апачи. Всушност, мислам дека сте водење на нешто што е веќе. Да, ти си, всушност, водење на друг сервер. Да, ти си добро. Додека тоа е работа, ти си во ред. ПУБЛИКАТА: Во ред. АНДИ Пенг: Има две начини да се кандидира сервери. Па се додека еден од начините е на работа, тоа е во ред. Ние ќе земеме уште една минута само за да се вид на завршам завршувањето на допири на она што веб страница, вие момци сака да се направи. Се сите кои работат со начинот на кој? Сервери секого се работи освен за твое? Ние ќе дознаам дека надвор. И HTML е прилично едноставна. Па мислам дека на сите ни е добро. Је. Ќе се вратам. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Во ред. ПУБЛИКАТА: Значи тоа е само започна да се вчита. АНДИ Пенг: Не се грижи. HTML така, има код која ќе биде онлајн по дел. Исто така, Давид има цела куп на интернет, како и. Само вид на прв поглед над него да се види како HTML страници се напишани. Тоа е прилично лесно. Нешто што не го знаете, ќе прилично колку само Google и сте добро. Јас само сакам да бидете сигурни дека вашите сервери се работи. ПУБЛИКАТА: Дали го направите ова често? АНДИ Пенг: Никогаш досега не ми се случи. Не знаев тоа дури и може да хибернираат. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Мислам everyone-- рудникот никогаш не хибернираат порано. И јас не знам зошто. Тоа е чудно. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: е твое во зимски сон? ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Да. ПУБЛИКАТА: Тоа е во ред. Па кога веќе е отворен. АНДИ Пенг: Во ред. Ние ќе се справи со некои сервер прашања по дел. Треба да биде добро. И покрај тоа, вие сакате да бидете сигурни дека ќе да ги реши пред да заминете. Затоа што ако вашиот сервер Кога не работи, тогаш сте нема да биде во можност да го стори pset, како и секој дел од pset. Па сакате да бидете сигурни дека дека тоа е работа. Кул. Во ред. Кажете им збогум мачиња. Поминав долго време во потрага по дека маче сликата за да се стави на. Значи, и онака. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Жал ми е? ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Мислам дека тоа е на веб страната. Како на спецификации? ПУБЛИКАТА: [Беззвучен]. Мислам дека е само спец онлајн во недела седум. Мислам дека се вика pset6, дури и иако ние сме на оваа недела седум, кои е bit пресметување. ПУБЛИКАТА: Но, мислам, ако сакате да се погледне at-- ако сакаат да се повлече до нашата верзија на веб-сајт од нашите прекине? Значи како server.c е pset, нели? Ако сакате да се погледне на овој, како тоа, како се проверува надвор? АНДИ Пенг: О, па, всушност, на pset, сите ние сме прави тука е implementing-- тука, Јас ќе одам во текот на овој накратко. Така и за сите оние кои се само добивано до делот, вие сте во среќа. Постои многу малку материјал всушност да ги покриеме денес. Јас сум само ќе ги помине следните 20 минути одење во текот pset помош. Затоа што има некои корисни функции кои ќе ви помогнат вашиот живот. И се надевам, ќе биде надвор од тука, во како 20 минути. ВО РЕД. Па pset7 е во ред. Иако ние сме на неделата седум, тоа е всушност pset6. Јас ќе го промени тоа. Сите што го правиме во pset6 е создавање на веб сервер. Тоа звучи супер страшно. А особено за оние од вас, кои веќе имаат погледна правила за дистрибуција, таму е многу код, многу код. Но е сосема во ред. Бидејќи гнидав тврд дел всушност создавање серверот е направено од нас. Сите сте навистина праша да се направи во оваа pset е само да се направи некои манипулација низа во датотека I / O. Тоа е всушност како прилично едноставна. Значи, кога ќе преземете првиот that-- кои тука, всушност, веќе симнат на pset и преземени погледнете? Во ред. Је. Тука е како 500 линии на код дека си оди за да биде како, што се случува? И тоа е сосема во ред. Бидете сигурни дека ќе се види на прошетка низ тие. Бидејќи Давид and-- Не знам. Јас не мислам дека тоа е Zamyla е, и оваа. Но мислам дека некои други прошетка низ се прилично корисен во смисла на само допуштајќи знаете она што се случува во внатрешноста на вашиот код. И тоа е сосема во ред. Бидејќи четири функции кои сте побара да се спроведе, всушност, имаат нула да се прави со самиот сервер. Сите тие треба да направите е само парсирање различни жици, бараат преку жици, за да бидете сигурни дека работите се прави тоа што треба да се прави. Па за таа цел, постојат некои многу, многу корисни функции, особено за гудачки манипулација, дека сите ние треба да одам над тој мислев дека сум се да биде многу корисно за вас момци да научат пред да се обидете на pset. И сите тие се содржани во рамките на вашиот string.h библиотека. Таму е веројатно покорисно функции што не се вклучени тука, затоа што јас или никогаш не се користи или да можеби и јас едноставно не знаат дека постои. Слободно можете да го видите преку student.h. Затоа што таму се случува да биде многу на функции кои се многу корисни. Па шесте кои јас го користам најмногу во мојот pset кога бев тоа го правам во изминатава недела беа strtok, strchr, strrcher, strstr, strcasecmp и strcpy. И така на последните две може да изгледа доста познат на повеќето од вас. Ул случај споредуваат, сите тоа го прави е да се споредат стрингови за да ги провери за еднаквост, вклучувајќи случај. И strcpy само копии еден стринг во тампон. И така тие двајца би требало да изгледа многу запознаени за вас момци во овој момент. Затоа што ние сме ги користи многу, особено за последната psets. Но, првите четири можеби не сте виделе до сега. Но јас ќе одам да се пешачи низ нив. Затоа што тие се случува да се направи вашите животи навистина, навистина лесно не for-- лесно, но многу полесно за оваа претстојните pset. ВО РЕД. Па char * strtok, ова е функција дефиниција за оваа функција содржани во низата ж библиотека. Ако им се даде инпут на char * низа, што е само еден конец, или постојана char * deliminator, delim за кратко, сите тоа го прави е кршење на поголемите стринг во серија на она што го нарекуваме токени одделени со одредена вредност. Во таа смисла, да, требаше да се даде section.7.php вас, ова е стринг. Така што ќе биде ако јас се да помине во овој како ул мојот ул char * ми, ако мојата deliminator беше точка, сето ова би направите е да пребарување преку низа. И за прв пат го гледа точка, тоа само ќе се врати на покажувачот до последниот знак пронајден во низа пред тоа. Па тоа ќе оди во право тука. И тоа само ќе ми даде 7.php. И ако јас се да се јавите на функционираат уште еднаш, тоа ќе ми даде само .php. И така сите на оваа функција го прави е рушење на поголемите низа во помали жици зависност од она што го барате. И така на пример, во твојот поглед up функција ако сакате да се погледне во она што одредени ликови се случат или ако се случи точки или екстензии се случи, оваа функција ќе биде доста корисно. Је. Без грижи. Сето ова ќе be-- је, шо праиш? ПУБЛИКАТА: Значи, во првата линија, да сме биле со користење на овој пример, што би се вметне во тоа? АНДИ Пенг: Да. Вие само ќе се јавите на strtok стринг delim запирка. И гудачки е еднаква section.7.php. И потоа сте delim би можело да биде еднаква само точка. ПУБЛИКАТА: Во ред. АНДИ Пенг: Да. Баш така. Сите овие функции се прилично слични кога одиме низ нив. Тие само се направи малку различни нешта. Но, сите тие ќе направат вашиот живот многу полесно. Втората функција, ова ми е како супер, супер, супер важно, е the-- држи до. Упс. Strchr пребарувања за прв occurrence-- всушност, да. Strchr е функција која Јас дефинитивно само помина. Па се игнорира она што го рече за првата функција. Тоа е, всушност, наречен strchr. Па што ќе се случи тука е ако сте биле дадени низа во знак в, тоа само ќе им даде вие што и да беше. Је. Значи мислам на тоа како ул, која е стринг, и CHR како знак. Така што сите што се обидуваш да го направите е да пребарување за која знак е во рамките на стрингот. И така тоа го бара за прв појава на карактерот c во ул низа. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: То. А потоа, ако не најдете тоа, тоа се случува да се врати NULL. Значи нешто што се случува да биде многу корисно за вас момци во вршење на pset Ако, на пример, сте биле во потрага за продолжување како .docx за еден збор документ или .pdf за документ во PDF формат, можете да вид на го користат за да се погледне за она што е подоцна секој пат кога ќе видите една точка, нели? И така доста, ако работи кои преку функцијата, ако тоа се враќа NULL, тогаш треба да знаете дека тоа не го најдете точка, што значи ова Јасно е дека не е валидна наставка. Или ако тој се враќа нешто, тогаш треба да знаете тоа се случува да се врати она што е всушност, по продолжувањето. Па оние од вас кои имале почна да бара преку пребарување и да се интерпретира, оваа функција е Ќе биде супер корисна. Значи ние сме всушност ќе за да се демонстрира со користење на овој. Зошто не сте момци обидете се да пишувате функција bool реченица char * а кои само враќа true ако s е казна и лажни поинаку. Па алудираат, си оди веројатно да се користи strchr. Или да пребарувате само во стринг за одреден карактер. И така во една реченица, она што го одделува казна од не-реченица, она специфичен карактер? ПУБЛИКАТА: празно место. АНДИ Пенг: празно место, нели? И така што ние најверојатно ќе сакаат да се направи во рамките на оваа функција во оваа ситуација? ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Ние се случува да сакаат да strchr стринг за изглед на просторот. Затоа што ако тој се враќа нешто, тогаш ние знаеме дека тоа мора да биде една реченица. Што значи дека мора да имаат простор во оваа низа. Ако нема простор, тогаш знаеме дека, еј, претпоставувам дека тоа не е стринг. Тоа е веројатно само навистина долго збор. Па јас ќе ви даде момци двојка минути да ја напишам оваа функција. Је. ПУБЛИКАТА: Дали добивте оваа низа од корисникот? АНДИ Пенг: Да. Значи ова е само во функција. Па замисли внатре во вашата главна функција веќе have-- ајде да одиме тука. ВО РЕД. Па јас го напишав овој програма, каде што Јас имам мојата главна функција, каде што Јас сум само создаде две жици. Првиот е Здраво, моето име Andi-- е јасно, една реченица. Мојата втора е само еден Анди, очигледно не е казна. И така јас се кандидирам на тие две жици преку оваа функција. Сакам вие момци да се напише ладно реченица. И јас сум со складирање на тие вредности, а потоа само ги печатење. Така што мислам дека корисникот е ќе влеземе во низа. А потоа ви се случува да во суштина дознаам ако тоа е една реченица или не и да се врати точно или неточно соодветно. Ако вие момци сакате да даде палците нагоре или главите нагоре, шеф поздрав, е некој е подготвен да започне ова, дека ќе биде добро. Повеќе можеби како 30 секунди? Во ред. Ајде да видиме дали може да се обидете пишување на оваа функција. Па псевдо coding-- јас сум само ќе вид на прошетка низ овој момент. Прилично многу, знаеме функција која треба да се користи. Ние ќе треба да се јавите дека функцијата на нашата низа и бараме место. Ако таа се враќа нешто, тогаш мора да знаеме дека, очигледно, ова е една реченица. Бидејќи има простори. Тогаш ние ќе треба да се врати точно. На друго место, ние ќе треба да се врати лажни. Сака ли некој да даде ме на првата линија на кодот дека ние сме всушност ќе да ги користите за да го напишам ова? Тоа е всушност една од најтешките линија код, како и. Је. ПУБЛИКАТА: Ако strtok s-- АНДИ Пенг: Само strchr. ПУБЛИКАТА: [interposing ГЛАСОВИ] простор не е еднаква на нула. АНДИ Пенг: Кул. Точно во право. Сите да разберат дека првата линија? Ние ќе треба да се јавите strstr, која е функција која бара стрингот ОК за знак на просторот. И ако смета, тоа се случува да врати покажувач до таму каде што е. Ако тоа не го најдете, тоа се случува да се врати NULL. Па ако тоа се враќа ништо друго освен NULL, тогаш знаеме дека тоа е резултат простор. Дали тоа има смисла? Кул. Во ред. Значи, ако ние знаеме дека е резултат простор, што сакаме да се направи? ПУБЛИКАТА: Врати се вистина. АНДИ Пенг: То. Врати вистина. И тогаш, некој сака да завршам функцијата за мене? Је. На друго место, исто како што. И да се обиде составувањето на оваа. Да. Така што вие момци можат да се види од излези, се сеќавам Booleans во C секогаш се изразени во бинарен. 1 е точно. 0 е лажна. Ако бевме да ја извршите оваа функција на една низа, која е Здраво, моето име е Andi-- Јасно, sentence-- резултат печатени до 1 што е точно. Вториот, кој е само еден збор, резултат испечати на 0, што е неточно. Секој вид на јасни за тоа како оваа функција е напишано? Је. ПУБЛИКАТА: ние, исто така, може да се направи, наместо не се еднакви, не, еднакво е еднакво на 0, така што тоа е еднакво на? АНДИ Пенг: Не Бидејќи strchr е во функција. Одам да се врати на оваа. Значи она што е врати видот од нашите strchr функција? ПУБЛИКАТА: Ох, ОК. Или NULL. АНДИ Пенг: Да. Тоа е знак * што ми вели дека без оглед на оваа функција ќе се врати, тоа се случува да биде покажувач. Или покажувачот ќе биде што укажува на тоа каде се наоѓаат, или тоа се случува да се врати покажувач на нула. Во која било ситуација, тоа се случува за да се вратите покажувач кон нешто. И така, ако сте во ситуација да се изедначуваат Ова е еднакво, е еднаква на 0, ви се случува да добиете грешка компилација. Затоа што тоа се случува да се вратат на покажувачот. И ви се случува да се обиде да споредба на покажувачот на цел број. И на компјутерот не е ќе се допаѓа тоа. Да, точно. Кул. Секој добар? И второ, ние ќе треба да се оди во текот на функција наречена strstr. Не се грижи, ако овие функции што ви се збунувачки. Тие ме збунуваат. Како таква, вие момци можеше да се види, сите тие звучат прилично многу исти. Само кога ќе се збунети, повлечете ја string.h библиотека. А вие момци можат да се најде решение преку кои еден е кој. Па strstr, сето она што го прави е пребарувања стринг за цела низа други. Значи, каде што само strchr пребарувања за еден лик, strstr пребарувања за цела низа. Па сакав да се погледне во, јас не знаете, Здраво, моето име е Анди. И името на мојот најдобар пријател е исто така Анди. Ако сакав да барате во овој казна за целиот збор на Анди, мојата игла ќе беше она што го барате. И вашиот стогот е што и сте во потрага за тоа во. Значи, ако сте во потрага по специфичен збор во рок од една реченица, тој збор ќе биде вашиот игла. А потоа и самата реченица ќе биде вашиот сено. И така се бара само во првата појава на стрингот игла во низа сено. Го враќа покажувач на првата појава. Освен, се сеќавам, во овој случај, тоа е првото појавување на целиот стринг кои сте во потрага за, а не само еден лик. И така ова е речиси истото како и функција ние едноставно не, само со малку повеќе специфичност. Бидејќи сте во потрага по повеќе од само еден знак. И степенот на користење е иста како оној кој ние го направија. Секој ред со ова? ВО РЕД. Последната ние ќе треба да се оди повеќе е strrchr, што не е меша со strstr или со strchr. strrchr има екстра r во таму. Бидете внимателни кога ќе пишувате. Може да се најдете вклучувајќи екстра r или не вклучувајќи R, а потоа вашата функција е доби не оди на работа. И ви се случува да се мешаат. Да се ​​биде внимателен дека сте правопис сите овие функции во право. Па strrchr е точната истото како strchr освен тоа го бара не е прв настанување на одреден знак, туку последната појава. И така, во таа смисла, тоа е речиси иста. Но, наместо да се движат напред во низа, сте ќе треба да се движи наназад во низа. Иста работа, ти си само пребаруваат во различен редослед. И така ова може да биде супер, супер корисна за вашето пребарување функција, првиот функција на вашиот pset. Да се ​​преправам дека ни е потребно да се напише функција на неважечки продолжување на кој ние помине име постојана char * датотека, само една нишка, името на датотеката, кој ги зема во тоа име и отпечатоци од продолжување на таа датотека. Така на пример, ако јас се да помине во низа на pset7.zip, тоа се случува да се печати само продолжување, што е .zip. И тоа ќе работи за било кој вид на продолжување, .docx за Word или .pdf за PDF поднесе или .html за HTML датотека. Доста, напише функција која може да го направи тоа. Јас сум всушност ќе префрлиме на ИРО. Тоа не е load-- таму ќе одиме. Па сите што го направив тука е создаде знак *, на првата низа, наречен pset7.zip. Одам да зумирате. Јас направивме вториот стринг наречен finalpaper.docx. И напишете ми функција што кога се случува да се нарече само испечатите екстензии на името на датотеката. Можеби да донесе по неколку минути да размислите за тоа како ви се случува да го направите тоа. Малку повеќе предизвик од последната, но примената е речиси токму истото. Је. Така пишува продолжување функција наречена дека, ако јас ви даде името на датотеката, ако јас да ви дадам јас pset7.zip-- сакам да се печати само .zip. Ако давам ви се допаѓа finalpaper.docx, само печати од .docx, само продолжување на она што на датотеката. Ова, всушност, само трае две линии на код. Па се обидуваат да се види дали ќе можеби може да го направи тоа во тоа. Всушност, тоа само зема една линија код. Но, две линии е веројатно повеќе стандард. Каква функција ние сме веројатно случува да сакаат да се јавам? ПУБЛИКАТА: strrchr. АНДИ Пенг: strrchr, нели. Бидејќи ние сме во потрага од десната лево. Јас не ви даде момци На пример, како таков, ако, пак, ви даде пример како www.apple.com и само сакав на .com, тоа би било еден пример за тоа каде сакате да се јавите во крајната инстанца на периодот и не е прв, нели? Ако сте биле за повик strchr, тоа ќе ви го даде apple.com. Ако ти си го strrchr, тоа би ти дал на .com. И така, бидете внимателни на кои ways-- во мојот пример, најверојатно би можеле да може да има само да го пишува со помош на strchr, бидејќи има само една точка. Но во други случаи, кој не може да биде случај. И така секогаш се трудам да се дизајнира вашиот код, па така that-- је? ПУБЛИКАТА: Значи во пример го кажа, кога ќе се strrchr што би да ви даде Com или само да дојде? АНДИ Пенг: Тоа ќе ви даде .com. ПУБЛИКАТА: Во ред. АНДИ Пенг: Да. Тоа укажува каде што ја најдов. Је. 30 секунди, можеби? Је. Секој добро или можеби малку повеќе време? Кревање на рака? Шоуто на шефови? Кул. Некој сака да ми даде првата линија на кодот за оваа програма? ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Значи, прв од сите, ајде можеби се скрши оваа надолу. Значи, што е вид враќање на strrchr? Ајде да се вратиме. strrchr, она што е од типот за возврат? ПУБЛИКАТА: char * АНДИ Пенг: Тоа е знак *, нели? Што значи дека ќе бидете најверојатно ќе да сака да се создаде уште еден знак * се вид на продавачот секогаш кога е враќајќи се, нели? Затоа што ако ти се јавам на strrchr функција, тоа се случува да ви даде покажувач каде и да се најде дека изминатиот период, нели? Но ви се случува да сакаат да чувате дека некаде, нели? И така како ние да се кодира ова во нашата програма? ПУБЛИКАТА: Правиш на char * [Беззвучен]. АНДИ Пенг: Да. ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: strrchr. Је. Ох, пропушти r таму. ПУБЛИКАТА: Име на датотеката [Беззвучен]. Што е тоа? Ох, тоа е само да е. АНДИ Пенг: Ах, тоа е само s. То, жал. Моја грешка. Примери не се совпаѓаат. ПУБЛИКАТА: И тогаш точка. АНДИ Пенг: То. Бидете внимателни кога ќе момци are-- тука, дозволете ми да зумирате. Таму ќе одиме. Бидете внимателни кога ќе момци внесување на текст, особено кога што го правиш само знак. Тоа е навистина лесно да се случајно само направите двојни наводници, наместо еден. Дека нема да работи. Вашиот компајлерот ќе се жалат. И вашата функција е само нема да се кандидира. И затоа внимавајте правиш работите со знаци дека е единечен наводник. И така и оваа линија на код направи смисла на сите? Ние сме создавање на char * покажувачот. Бидејќи strrchr враќа нешто од типот на покажувачот. И така ние ќе треба да се јавите strchr на s, што е стринг, на датотеката именува, дека ние сме во донесувањето. И ние сме во потрага за последните пример на период, што е само една понуда dot една понуда. Је. ПУБЛИКАТА: Кога ќе ги користат двојни наводници и кога ги користиме единствено наводници? АНДИ Пенг: Да. Па двојни наводници се користи секогаш кога ќе се има низа од повеќе од само еден. Па ако правиш strstr, кој е оној што ќе пребарување стринг за гудачки, можете ќе помине во двојни наводници. Но, секој пат тоа е само еден лик, што сакате да направите еден цитати. Тоа е добра работа да се задржи во умот. Па сега дека ние имаме покажувач, што ќе правиме со него? Те прашувам момци да печатење тоа надвор, нели? Така [Беззвучен], што сакате да дај ми линија код? ПУБЛИКАТА: printf-- АНДИ Пенг: Да. ПУБЛИКАТА: --you треба носител на место. АНДИ Пенг: То. ПУБЛИКАТА: Испечатете го држачот на место. Јас не знам што на местото Имателот е само точка на него. ВО РЕД. Ајде да го прескокнете дека сега за сега тогаш. ПУБЛИКАТА: И тогаш comma-- АНДИ Пенг: Покажувач, нели? ПУБЛИКАТА: Покажувач, То. АНДИ Пенг: Значи каков вид на трик прашање, има врска со покажувачи и стрингови дека ние сме вид на зборуваше за веќе. Каков вид на место носителот правиме треба за покажувач за char *? ПУБЛИКАТА: [Беззвучен]. АНДИ Пенг: Да. Тоа е полесно отколку вие момци мислам дека е. ПУБЛИКАТА: Стринг? АНДИ Пенг: Тоа е само една нишка, точно. Бидејќи се сеќавам стрингови навистина не постои. А знак * е точната Истото како стринг. И така ова е навистина е она што треба да се користи на сите заедно. ВО РЕД. Ајде да видиме дали можеме да се обидеме да ја управува таа. Ајде да направиме продолжување шминка. Кул. Вие момци се види како што помина во psset7.zip и finalpaper.docx, и тоа само отпечатоци од на .zip и .docx? Има смисла? Ok, па мислам дека во вашата Побарајте функција во вашиот pset сте ќе треба да се праша дали стринг има одреден крај, што треба да се даде одреден код на грешка. Па така ова ќе биде прилично страшна. Затоа што ако можете да дознаам што продолжувањето е, тогаш можете да го споредите тоа продолжување да се види дали тоа се совпаѓа со одредено продолжување. А потоа ќе можат да се вратат порака за грешка, нели? Је. ПУБЛИКАТА: Па ние не мора да го додадете 1 или нешто? Покажувачот ќе оди на the-- АНДИ Пенг: Не бе. ПУБЛИКАТА: --point по него. АНДИ Пенг: Да. Тоа укажува токму на каде појавата беше. Така на пример тука, ние сме во потрага за периодот. Па затоа се случува да се врати покажувач на периодот. А потоа тоа се случува да се печати излезе со почеток во тој период. Значи, вие не треба да се додаде 1. Иако, тоа е сосема во ред да се, ако сте некогаш сте сигурни, оставете да се само вид на го пробате себе. Изгради програма примерок. Го пробате себе и види каде се печати. Кои, исто така, не е лош начин да го направи тоа. Кул. И тоа е доста на сите Имав за вас момци денес. Ние направивме многу pset работи и денес. Значи, кога се двоумите, како Јас реков, секогаш гледам нагоре на string.h библиотека за оваа pset. Таму се случува да биде многу функција во таму што може да биде корисно. Некои може да биде корисно. Јас навистина не знам. Вејд низ него, има еден куп од нив. strstr, strchr, strrchr се супер, супер корисни, како и на strcpys и strcasecmps дека ние сме веќе се користи. Тоа е само многу Месинг околу со жици, утврдување дали тие се еднакви, добивање нешто од стрингови, и да биде во можност да ги отвори досиејата правилно. Тоа е многу датотека I / O. pset навистина не е толку лош. Ви се случува да се земе погледне во него, да го преземете, и да видиме еден куп на код. Не се грижи, на вас код всушност го напишете не е лошо на сите. Ако некој има проблеми со нивните сервер, дојде да ме види по дел. Се извинувам уште еднаш за да не доведување бонбони за Ноќта на вештерките. Јас не знам што се случува со мене. Но ќе имаме двојно бонбони следниот пат. И со среќа во вашиот pset оваа недела. Да.