АНДИ Пенг: Ние сме почти през всички psets. В действителност, ние сме през по-голямата част от най-трудните psets. Така че ние сме всъщност само Ще вид бриз през следващите няколко седмици. Отиваме да започнем да говорим за нашата окончателните проекти, събития, идващи в следващите няколко седмици. И животът ще бъде лесно. Така че не е твърде много днес. Надяваме се, че действително ще бриз чрез дневния ред за днес, и след това да се оттук с известно време за губене. Също така, искам да се извиня за липсата на бонбони днес. Аз не знам защо. Но през седмицата, довели до Halloween, аз нямаше да забрави бонбони. Така че аз всъщност съм само на огромното разочарование за вас точно сега. Защото аз буквално се помни бонбони за всеки един клас, но Хелоуин. Но на следващата седмица, ще докарам двоен размер на бонбони за да компенсирате това, всичко за вас. Това ще бъде страхотно. Така че аз имам няколко съобщения по отношение на някои от графика. Имам някои въпроси насрочване. След това ние ще преминем към говорим за това, което се нарича коригират. Отиваме да говорим за бързо TCP / IP HTTP. И тогава ние ще се кодира нашата собствен уебсайт, използвайки HTML и CSS. И тогава аз всъщност ще напусне може би като 20-та минута, за да се говори за pset6. Защото pset6 всъщност е много неща, които вече сме виждали преди, но аз исках да освежи някои от тези понятия както и научи няколко нови функции. Готино. Така че на първо място, Добре дошли отново от почивка. Надявам се да си прекъсване беше приятно. Бихте направихте за почивка? АУДИТОРИЯ: Ходих на Ню Йорк. АНДИ Пенг: Ти отиде в Ню Йорк? Мисля, че половината нашето училище заминава за Ню Йорк. Всичко е наред. Прекарах по-голямата ми почивка заседнал в леглото Netflixing. И това е добро време. Но сега ние сме назад, назад във сесия, обратно в люлка на нещата. Имаме pset дължи този петък по обяд. Мисля, че вече сте Взе си викторина, така ли? Така че всеки, който има не е имал своите викторини, моля, дойде и да получите вашите викторини от мен в края на секцията. Или следите ме долу на територията на колежа. Аз ще го нося със себе си някъде. Крайната ни проект предварително предложение също. Така че за тези от нас, които никога не са взети този клас преди, глава на ъгъла на CS50 е много кулминира в тази бона проект, който учениците да предложат. И предварителното предложение, само обща представа от това, което човек може да искате да направите, за тяхното проект, тази идея се дължи понеделник следващия понеделник по обяд. Така че доста много, David мисля ще говорим повече за това в лекцията ако той не е вече. А има и солидна страница на нашия уебсайт обяснявайки всички изисквания на проекта. Но по същество, изберете всяка тема, която сте се интересувал през целия път си тук в CS, независимо дали става дума за игри, или дизайн или видео или нищо. И вие можете наистина вид Сега се прилагат някои от уроците че сме научили тук, в CS50-- Здравейте, welcome-- да хубав много провеждане окончателен проект по ваш избор. Всичко това е в резултат понеделник е Просто кратко отправка по имейл за мен, бърза присъда, харесват, хей, Andi, Аз съм наистина се интересуват от проектиране една игра, която прави това за IOS. Готино. Просто ме пуснете вашата кратка първоначална идеи за вашите окончателните проекти. И ние ще говорим чрез или не че всъщност е добра идея или не, ако това е осъществимо идея или не. Но само предварителното предложение се дължи следващия понеделник. pset6, нашата прекрасна web-- което не е наред. Pset7? pset6? Това е pset6, нали? pset6, нашият уеб сървър, се дължи Петък по обяд с покойния ден. Работно време от понеделник възобнови нормално до четвъртък 8:00-11:00 тази седмица. Мисля, че за Commons През следващите три нощи. Готино. Преди имахме в материал, има ли някой имате някакви въпроси, вицове, истории? Какво направихте за есента почивка? АУДИТОРИЯ: Какво да направя? АНДИ Пенг: Вече това е преди векове всъщност. Кристабел заминава за Ню Йорк. Аз останах тук и Netflixed. АУДИТОРИЯ: О, да бях тук. АНДИ Пенг: О, OK. АУДИТОРИЯ: Не си спомням какво конкретно. АНДИ Пенг: Това е добре. АУДИТОРИЯ: Netflixing вероятно. АНДИ Пенг: Netflixing. Да, това е добър момент. ДОБРЕ. Всичко е наред. Всякакви въпроси преди ние скочи в материала? Също така, ние ще се опитаме да ускори през секция днес не е твърде много, за да покрие. И да се надяваме, че ще се получи тук малко по-рано. Съжаляваме, че не бонбони, също. Аз съм разочарование особено по време на Хелоуин. Всичко е наред. Готино. Така че ние ще започнем да говорим за аргумент на командния ред, наречен коригират. коригират, всичко това е просто една система Unix обадете се провежда от командния ред да промените разрешенията за файлове. Така например, ние сме всички срещнали страница като това вероятно по някое време през нашия живот, че са интернет за употреба, където нашия уеб сървър има ни е дал грешката на Forbidden. Вие нямате разрешение за достъп, дрън, дрън, дрън, на този сървър. Всичко, което всъщност означава, е, че разрешенията които са прикрепени към каквото страница сте се опитвали да достъп не са отворени за вас. Така че доста много, коригират е начинът, по който можем да променя тези системни разрешения да даде на всеки, потребителят, групата, или по света, или на някой комбинация от тези достъп за някои файлове, директории, нещо наистина, каквато и да е система за една операционна система. Така че, ако някой от момчета имат компютри, ако се чувствате като след заедно с мен днес, напълно се колебайте да се объркат нещата просто аз н. Ако не, може просто да се мотае. Така че аз отивам да всъщност дръпнете моите терминал в момента. Така че заповедта да тече коригират, или поне що да се изброят разрешенията на вашия файл директория, е само LS-л. Както можете да видите, куп неща изскача повечето от които За нас е важно за лявата ръка тук. Вие, момчета, да видят един куп RS, WS, 1 /. Да. Това са по същество просто всички позволенията на файла да обясни какво някои директории и файлове в системата ви трябва. Така че нека да се върнем към точката на властта тук. Така в допълнение към имената на файловете като вие може да видите на правото, ние търсим да видите същество Просто колоната в ляво. Така в допълнение към просто имената на файловете, ние може да видите разрешенията на файлове, тяхното Собственик група, името на групата, към датата че файлът е последната модифицирани, и така нататък. Можете да видите много неща, използващи коригират. Така че начинът, по който четем коригират е, че първата буква ние до голяма степен игнорира от гледна точка на четене разрешения. Първата буква просто ни казва какво тип система ние сме достъп. D, в този случай, е папка или директория. Така че ние знаем, че в момента ми работно място раздел седем беше дадена директория. И тогава ще видите три триади, по същество просто три комплекта три знака. И вие може да се мисли за всеки като малко. Така че просто трябва три комплекта три бита, девет бита общо. Можете да ги третират в групи по три. Така първата група от три е винаги си потребителски разрешения. Вашият втора група от три е винаги ви е разрешено група. И трето вашия набор от три Винаги е като света, на разрешенията навсякъде. Така че предполагам, лесното въпрос, на който е това, което е разликата между потребители и групи. Основната разлика между потребители и групи е, че потребителят е само вие лично достъп до каквото и да е точно сега. A група може да бъде, ако имате множествена Потребителите на един компютър, например. Всички те могат да бъдат третирани като група. И тогава светът е Просто света, всеки. Така че можем да видим по-късно за това как можем да модифицирате тези, в различни разрешения. Така че доста много, ние сме ще продължава да се съсредоточи от страна на ляво, където за директорията CS50 виждаме drwx, където R означава само, че е разбираемо. Ш просто означава, че е достъпна за писане. И тогава просто х означава, че е изпълним. Ще го мисля вид на няма смисъл. Тя трябва да бъде напр. Но всъщност х вид работи малко по-добре, защото можете да го запомнят по-добре. Така трите вида неща, може да направи, или можете да прочетете на файл, можете да имате разрешение да напише файл, или бихте могли да имате разрешение да се изпълни даден файл. И така начинът, по който всъщност представляват тези в бита е числото 4, 2, и 1. Така че всичко, което е четим е представена от броя на 4. Всичко това е за писане 2 е представен от. И всичко това е изпълнима както е представено от 1. Така че в този смисъл, ние също може да представляват тези numbers-- Здравейте, добре дошли, по различен начин. Извинете. Преди всички, аз отивам да се Извинявам се от името на всички, за вписване на класа сега. Забравих бонбони днес. Съжалявам, че съм провал тази седмица на Хелоуин. Аз ще докарам в двоен размер на бонбони следващия път, за да компенсирате това. Но във всеки случай, съжалявам за това, момчета, съжалявам. Така че начинът, по който ние всъщност да въведете на нашата команда аргументът е ние може да направи CHMOD група наклонена черта разрешения, където групата е само каквото група, което се опитваме да се промени. И разрешенията са каквото и да искате да добавите към него. Така например, плюс добавя разрешения, и изважда отнема разрешения. И видовете група имаме нашата а за всички, ф за потребителите, г за групи, или о за другите. Това е малко абстрактна точно сега. Но ние ще свършим някои примери само за да демонстрира това много бързо. Всеки добър за този слайд, за да мога да се премине? Готино. Така например, rwx. Преди да говорим за това, което той представлява, на първо място това, което се rwx означава? Ако видите, че това сигурно файл има права за rwx, какво означава това, че човек може да бъде в състояние да направя? АУДИТОРИЯ: четене, писане и изпълнение. АНДИ Пенг: Да, точно така. Можете да прочетете за запис и изпълнение. Тъй като всички три от тези, знаци са налице. Така че, ако ние вървим напред и да говори за това от гледна точка на бита, на rwx също могат да бъдат представени като 700. Тъй като можете да видите във всеки сортиране на разрешение файл директория, Има три тройки. В този случай, само първата триада има нещо там. Така че в този случай, г е 4, на W е 2, и х е 1. Ако добавите онези заедно, това е 7. И така, ако сте конвертирате то за двукомпонентни, това е 700. Тъй 7 е първата триада. 0, няма нищо настоящото във втората триада. И тогава там е нищо в настоящото третата триада, така че това е още една 0. Така че в същия смисъл, един куп триади може да бъде представена само в бита, просто в двоичен, както добре. Така че 700 означава точно същото нещо като rwx ------ по отношение на разрешения. Всеки ясно за това? Готино. И така коригират 111 ще даде които разрешения към файл? Да ви даде няколко момчета секунди, за да промениш това. Не забравяйте, че първото триада е за потребителя. Вторият триада е за групата. И третата триада е за всеки. И така коригират 111 ще даде които Тип на разрешения и на кого? Отнеме няколко секунди, за да мисля за това и да се върне. Да. АУДИТОРИЯ: Така че всеки може да го изпълни. АНДИ Пенг: Мда, точно така. АУДИТОРИЯ: Но никой не може да чете и пише. АНДИ Пенг: И не се колебайте да обясни на всички, как се стигна до това заключение. АУДИТОРИЯ: Е, за потребителя, група и по света, всичко е 1, която е кодът за изпълним. АНДИ Пенг: Да, точно така. Така че 1, в този случай, всичко, което знаем е, че това е изпълним код. Защото четенето е 4. Писането е 2. И изпълнимия е 1. Така е и трите триади са 1, че означава, че за света, за потребителя, и групата, те всички са изпълними. Всеки добър с това? ДОБРЕ. И така вторият начин че можем действително пиша това също е ли може просто да направя коригират плюс х. а означава цялата или всички. Плюсът означава даване на разрешения за. И тогава х означава изпълнима. Така че има две команди всъщност са идентични. Така че, ако искате да стартирате това във вашия терминал, правиш CHMOD 111, име на директория или вашия файл. Или можете да направите CHMOD плюс х, името на вашата директория файл. Същото нещо, просто по-лесен начин, може би, за някои да представлява или да промени файловите права. Всеки един OK с коригират преди да преминем? Готино. Така че сега ние ще се отправят в няколко слайда на много абстрактни понятия че аз съм доста много Ще бриз през. И това е напълно ОК, ако не разбирам всичко. Дори и сега, аз все още не го правят наистина разбирам всичко напълно. Но това е повече от получаване разбирането най-високо ниво за това как някои от тези неща работят. Така че ние ще говорим бързо за TCP / IP, който е само Transmission Control Протокол наклонена черта Internet Protocol. Спомнете си от лекция, Дейвид, каза той ви научи примера, където той ще мине бележките в плик до искал в началото на лекционната зала? Така че в залата юридическия факултет Дейвид показа същество как TCP / IP работи в смисъл, че всичко е е средство за гарантиране, че данните е бил доставен в целия сървър или по интернет. Така че в примера на плика и съобщението, потребителят в края можеше да види, че, о, имах нужда да получи четири пакети от информация. Но аз всъщност само получила три. Това означава, че трябва да липсва един. И една не е доставена. И така, TCP / IP в интернет, чрез компютъра и сървъра, прави точно същото нещо. Всичко, което прави е да посочите рамка, в която един изгубен данни пакети могат да бъдат получени и негодуват. Както в интернет, когато се опитвате за достъп до файлове онлайн или изпращане на файлове да ти приятел или Посетете уеб браузъри, хиляди и хиляди на милиарди и милиарди байтове информация се прехвърлят на милисекунда. И това е много, много объркващо. И това е наистина трудно да се всъщност знам какво е изпратена и това, което не е било изпратено. И така, TCP / IP просто уточнява сплотено рамка в който вашия уеб браузър и вашия сървър може вид комуникация един с друг, уверете се, че пакетите са всичко тук и нищо не е изгубено и всички данни, които сте поискали всъщност се показва правилно. Всеки OK върху само, че много Кратко високо ниво разбирам? Готино. Така че след това отиваме да се движат в говори за HTTP, които е само Hypertext Transfer Protocol. HTTP, всичко това е каквото е всяка страница или файл е достъпен на уебсайта си, сървъра връща HTTP статус код в отговор Към искането като се уверите, че или, о, това искане премина през. И всичко е показва правилно. Или, о, не, 404. Нещо се обърка. О, аз не може да покаже. Всичко това е е, че каквото и вие се опитвате да отворите, използвате като потребителят се опитвате да отворите, на internet-- просто като се уверите, че вас, имат успешно преглеждана каквото и да е или не успешно преглеждана каквото и да е. И така статута HTTP Код просто ви осигурява средство да бъде в състояние да се знае дали или не е била успешна или не. Така например, например искане за. Тук можете да видите, че е обикновено обикновено четири линии. Имаме GET HTTP 1.1, който е само на искане метод URL адреса на това протоколът версия, името на полето, и стойността на полето. Така няма нужда да се напълно запомните нещо тук. Просто вид запозна себе си с това как те изглеждат. В този пример, искането за метод URL е просто каквото искане изпращате сървъра. Подобно, хей, сървър, аз наистина искам да достъп дрън, дрън, дрън, HTTP страница. Версията на протокола е точно каквото Версия за вашия хост или вашия сървър е с помощта на достъп до информация. Името на поле е на интернет страницата или URL, който се опитвате да отворите, в този случай, www.apple.com. И стойността на полето е Просто обикновено име, стойност. И това може да бъде някаква комбинация на букви или цифри или каквото. Така че един типичен искане, така че това, което вашия компютър всъщност изпраща на сървъра, който казва, хей, Знаете ли какво ми трябва това показва, това е вид на искане че те реално получават. Един пример отговор на това, което сървър ще изпрати обратно към вас Би било почти едно и също нещо, освен с код на състоянието в горната част. Така 200, 2 0 0 винаги кода на статут за OK. Подобно, OK, това искане премина през. Можете успяхме да влезем всичко правилно. Животът е добър. Животът е наред. Всичко е напълно добре. И така, това просто казва на браузъра си и вашия сървър, хей, добро всичко е. Имам цялата информация, имам нужда. Готино. Но проблемът е, понякога проблеми идват когато have-- издържи Мисля Говорих за дубликати. Имате по-малко добри отговори. Така например, 404 е Страницата не е намерена. Понякога има Forbidden достъп. Имате различни други кодове за състояние, че аз съм сигурни, че всички сте виждали, когато сте опитвайки се да се правят изследвания в интернет. И вашият браузър ви дава на, не, не може да влезе. И вие сте като, добре, глупости. Така че просто доста много, има някои доста общи кодове за състояние. Може да се запознаете с кои от тях това са. Най-смешното този, който Мисля, че съм чувал of-- ако се случи да гледам всички от тях онлайн, по някаква причина има всъщност истински статус код наречена 418 Аз съм чайник. Гугъл, където произход на това е от. И очевидно една първоаприлска " Преди няколко десетилетия Day, някого, че ще е забавно за създаване на нов код на състоянието, наречено 418 Аз съм чайник. Законосъобразно, името на този код се нарича Аз съм чайник. Забравя коя страница ще трябва да отидете на практика правят този дисплей. Но очевидно, всъщност можете да получите код на състояние съм чайник някак чрез прави нещо. Така че има стотици и стотици кодове за състояние. Някои от тях правят повече разум, отколкото други. Но доста много просто запозна себе си с най-често срещаните. Исканата орган субект е кратък и як, очевидно. Така че понякога има повече плашещи грешки, отколкото аз съм чайник. Но това е едно, че аз предполагам някак си се надявам да се удари. Но аз не мисля, че ще. Всеки добър само на статут кодове, молби, процеси, вземане сигурен информация се доставя правилно? Така че сега ние ще преход в на забавна част от точка днес, където можем да поговорим малко за HTML. HTML, всичко това е HyperText Markup Language. Това е просто стандартен език използвате, за да създадете всички уеб страници в интернет. Така че всяка уеб страница, това, което е любимата си уеб страница? Какво е вашето любимо уеб страница? АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Съжаляваме? АУДИТОРИЯ: Tumblr. АНДИ Пенг: Tumblr. Така Tumblr е написан на HTML. И така, ние всъщност ще отида през и поиграете с някои от тези неща, по-късно. Доста сте всичко Трябва да се научим, да знаете, да пишат HTML можете вероятно Просто Google в интернет. HTML, това не е програма като C където можете да създадете променливи и направете готини неща с него. Това е повече от просто, о, това е начинът, I Искам нещата да се появяват на моя сайт. И аз съм просто ще го сложи вътре. И то се случва да го оформите. Така HTML, в известен смисъл, това е точно като на форматиране или шаблон език. Това е много по-лесно. Това е много по-лесно да се учи, много по-лесно да се напише в от типичните си програмиране език, много лесно, много лесен достъпен и лесен. Така че ние всъщност ще играе наоколо, пишат нашите собствени страници днес. Но преди да започнем, аз просто искам да разясни няколко кратки най-добри практики. Тъй като HTML е толкова лесно език и защото дори ако го направите няколко неща погрешно, че понякога може да не забележи, ние искаме да се уверите, че ние сме всъщност се придържа към нашите най-добри практики за да се уверите, че нещата, които би могло да се случва наоколо, но Не винаги ще трябва да излизат полето уверете се, че те са сведени до минимум. Така че доста много, уверете се, Вашите затварят всички ваши тагове когато пишете в HTML. Ако сте отваряне на тяло, се уверете, че сте я закрият с тяло някъде. Вие искате да се уверите, че вашият уеб страница валидира с помощта това, което се нарича W3 валидатора. Можете просто Google, че онлайн, а има и линк към него. И след това, което искате да отделни HTML, което е вашият език за маркиране от вашия стил, който е езикът CSS, че David демонстрира, че ние сме също ще играят малко с лекция. Готино. Така че всеки път, когато искате да стартирате HTML на CS50 уреда, отиваме да изпълните програма, наречена Apache, който не е просто построен през уеб сървър, че всички в CS50 има достъп до. Ние наричаме това apache50 просто защото ние обичам да наричам всичко 50 в CS50. Така че начинът, по който можете да започнете в интернет CS50 сървър е чрез въвеждане на командата Онлайн apache50 започне точка. А ако искате да го прекрати по всяко време, можете да apache50 приключва не по точка. А ти просто да натиснете Enter. И това трябва да бъде в посока нагоре тук скоро. Да. Така че аз съм просто ще бързо да разясни пример за наистина кратко уеб страница. И ние ще прекарат като 10, 15 минути, играещи около написването нашите собствени уеб страници. ДОБРЕ. Така че тук в IDE-- може да се види, че всички? Не съвсем. Ето, аз ще я увеличите инча Току-що получих тази кратка шаблон тук с нищо реално в него. Ние просто ще бързо да напиша един HTML програма, в която ние просто да поздравиш света. Така че едно и също нещо, както в C, сега сме Просто ще го направя в HTML. Някой иска ли да всъщност просто опитам, че ми даде първата ви нещо ще трябва да се постави в HTML документ? Да. АУДИТОРИЯ: Скобите, на [недоловим]. АНДИ Пенг: Да. Така че нещо, което е много уникална за HTML че обикновено традиционно не срещнете в друга команда програмни езици ниво линия е, че ние действително да определя вида на файла че това ще бъде в горната част на нашия код. Така че в този instance-- Мисля това е правилната команда, нали? Да. На върха, просто искате да включите взрив DOCTYPE HTML в скоби просто да кажете на Вашия компютър, хей, внимавай. И HTML документ е смешен. И след това как искаме да започнем нашия файл? Ако ние просто искам да кажа здравей, имат уеб страница, която казва здравей на света, как да отида за изграждането на това? Всъщност, нека се обърнем към Google. И всъщност можем да направим това. Да. Ето. Така HTML. Както можете да видите, браузъра ми е всъщност автоматично стайлинг това за мен. Същото нещо, както в C, когато създаване на отворена фигурна скоба, Вашия браузър автоматично добавя в близост фигурна скоба. За щастие, нашият IDE обича да направите това за нас, както добре. Така че сега можем да вид латиница началото на етикет, и то се случва винаги да ни каже да не забравяйте да напишете края на тага. Мисля, че това трябва да се капитализира. И след това, което искаме да добавим, винаги, с глава, в която е заглавието. Ние просто искаме да се обадя, може би това здравей, а след това тялото. И там ще отида. Това е всъщност ни HTML документ. Така че начинът, по който всеки HTML документ винаги е оформена in-- едно и също нещо с инт основната невалидни. Винаги искам да имам HTML открит и близо таг в горната и долната част на кода си. Вие искате да имате вътре в главата която съдържа заглавието, точно каквото ще се покаже разделът на вашия уеб страница, а след това тялото отвътре, от които всъщност ще покаже съдържанието на каквото и да искате да направите. Така че, ако искате да стартирате в действителност това, аз отивам да я увеличите обратно. Всъщност можете да започнете apache50 започне точка. Готино. И така, както можете да видите, сега тази връзка е изскочил. Той казва, че вашият сайт е сега наличен в някои линка по-долу. Така че цялата ни IDE има done-- Не IDE, sorry-- да, нашата IDE е направил е да създадете уеб линк, върху който всички наши уеб страници може да бъде достъпен на сървъра. Така че нека да разгледаме тук. Нека да кликнете върху това, отидете на hello.html. И вие виждате един много прост страницата за здравей свят. ДОБРЕ. Ние всъщност ще просто Трябва everyone-- да, какво става? АУДИТОРИЯ: Имам един основен въпрос. АНДИ Пенг: Мда. АУДИТОРИЯ: Как да спестите файл си като HTML? АНДИ Пенг: Да. Така че ако трябва да се създаде нов файл, ако го направя New File, Untittle, ако го направя, section.html, бум, това е всичко, което трябва да направя. АУДИТОРИЯ: [недоловим]? АНДИ Пенг: No. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: No. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Да. Доста, разширяването на файла, който е вътре в IDE, който казва на компютъра, че казва на браузъра, хей, внимавай. Това ще бъде код написани на този език. Така например, в Microsoft Word, това, което правим всички документи на Word завърша с това, което разширение? .doc или .docx, нали? Всичко, което прави е да се уточнява към вашата операционна система, хей, имаш документ Word идва. Отворете го с Word. Същото е и с PDF файлове. Той знае, о, имам нужда да се отвори този файл с Adobe Reader или Adobe Acrobat. И така разширения работят на същия начин, както е във вашия компютър. Ако посочите кода си страница да бъде назован HTML, а след това го знае, О, имаш HTML код. Отивам да го третира като HTML код. Така че това е супер интелигентен в този смисъл. Така че всеки, нека да харесват 10 минути и просто да създадете собствени уебсайтове. Нека добавим в прекрасните неща. Чувствайте се свободни да се каже каквото си искате. Аз просто искам да се уверите, че сървъри на всички работещи правилно преди да ви освободи в pset. Защото, ако вашите сървъри не се кандидатира за pset, че ще бъде много, много лошо. Аз съм просто ще плува и виж това, което всеки е работа на. Как върви? АУДИТОРИЯ: Аз просто се обърна на моя компютър. АНДИ Пенг: Това е добре. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Просто си IDE. Да. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Всичко е наред. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Totally глоба. Всички ли достъп техния уеб сървър OK? Дали apache50 работи OK? Мисля, че в някои от другите раздели, ние имаше проблеми с хората, а не е в състояние да получите достъп до сървъра. Да. Така че просто стартирате apache50 пространство започне пространство период. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Мда. Добър? АУДИТОРИЯ: [недоловим]. АНДИ Пенг: О, OK. Така че би трябвало да има интервал. Така apache50-- АУДИТОРИЯ: аз го направих. АНДИ Пенг: --start пространство. АУДИТОРИЯ: О, пространството точка. АНДИ Пенг: Мда, пространство точка. Ето. Така че след това, ако имате една HTML страница, създадена, След това можете просто да отидете директно на връзката, че в него се посочва. И би трябвало да можете да получите достъп до нея. Всеки е в състояние да достъп до своите уеб страници OK? АУДИТОРИЯ: [недоловим]. АНДИ Пенг: О, това е ОК. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Да. Мисля, че всъщност можете да отворите то в рамките на вашия браузър, браузър а не само вашия IDE браузър. Да, мисля, че ако го копирайте и поставете. АУДИТОРИЯ: И след това как да го изключите? [Недоловим] АНДИ Пенг: Да, което правите apache50 спре, без срок. Да. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: При липсата на период от време. Да. Ето. Да. Ние създаваме нашите собствени уеб страници. АУДИТОРИЯ: О, страхотно. АНДИ Пенг: Да. АУДИТОРИЯ: Аз имам един въпрос. Така че Apache 50-- АНДИ Пенг: 50, да. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Какво? Това е странно. Виж, че е вид на издаване което се случва преди. ДОБРЕ. Виж ме след точка. Защото ние сме като някои проблеми със сървъра. И вие искате да се уверите, че вашият сървър е използвате, преди да започне pset. Защото ти започваш да се нуждаят от нея. Да. Има ли някой друг, който не е бил в състояние да получи техния сървър, за да започнете? За тези от вас, които искате да добавите допълнителна стил на вашите уеб страници, всъщност можем да направим това, което Давид стори в лекция, както и, който е създаде допълнителна стил лист, който е точка CSS, каскадни Style Sheet и всъщност просто го добавите инча Така например, аз току-що създадена почти почти точно същия този, Давид стори в лекция. Можете да доста много просто правя тялото. Имате какво се наричат ​​тагове, в която можете да приложите към IDE каквото вписванията искате в рамките на вашия актуален към HTML страница. Така тялото на страницата, може да направи текста подравняване център. И тогава аз ще творческа маркер, наречен отгоре вътре от които искам тези неща, за да да се случи, да възложат по-голям размер на пикселите за шрифта. Искам теглото на шрифта, за да бъдем смели. И аз искам цвета да да е синьо, просто произволно ценности, които реших да избера. Мога да се създаде друг таг, наречен средна. Размер на шрифта, да го направи малко по-малък. И тогава мога да се създаде друг таг нарича дъно, където искам размера на шрифта да бъде още по-малък все още. И така до голяма степен това е само пример на изходния код или код на стилове че е много лесно просто Google. Ако кажа, о, аз искам моята шрифта да бъде наклонен и тъмно зелено, вероятно можете да Google, и след това ще ви кажа подходящите тагове или документи за самоличност, за да създадете. И така, начинът, по който бихте направили действително вид има това в HTML документ или да използвате това е всичко, което трябва да правим тук е начело добавите линк към стила лист. Така че може просто да се свърже HREF равни независимо от наименованието на вашия стил на лист е. И тогава връзката е стил лист. Така в рамките на всеки HTML документ, толкова дълго, както ти се включи тази точка CSS лист, би трябвало да можете да получите достъп до и притежава свойствата там. Така например, тук съм просто създадете друг пример уеб страница. Това е добре дошъл да вписванията CS50 Вторник, от 02:00 до 03:30 с мен. И тогава аз съм добавя прекрасен образ, който ние потенциално би трябвало да може да се види. Така че, ако погледнете тук, ако отидете в style.html, ние създадохме уеб страница с котенца. Тъй като коте са страхотни. Така че добавянето на изображение е просто IMG SRC връзка. Доста, ако има каквато и да е функция който искате да добавите към вашия website-- така че нека да кажем, искате да добавите меню или бар търсене или като един image-- просто Google как се прави това. И просто цоп в този формат. А може просто доста много по-просто да го добавите инча Това наистина е много, много лесно. Ние създаваме нашата собствена уеб страници в момента. Ако искаш-- АУДИТОРИЯ: [недоловим] АНДИ Пенг: Съжаляваме? АУДИТОРИЯ: [недоловим]. АНДИ Пенг: О, Разделение е просто разделение ми каза, че, о, аз имам определен раздел, наречен средна, в която аз съм прилагане ми CSS маркер, и след това другата ми дивизия с дъното. Това е всичко, тя ви казва. Тъй като това е хубаво да се запази неща, спретнати, с цел, така че програмата не знае как точно да се изпълнява. И мисля, че мога да копирате поставете този се превърне в реална браузъра си, както добре. Тя трябва да се оправи. Да. Ура. Така че, ако всеки иска да просто опитайте да създадете уеб страница, ние ще вземем друг две до три минути. Аз просто искам да се уверите, сървъри на всички работещи и всеки има представа за това как да направите това. Ако вие искате да извадете си компютри. Все още не работи? АУДИТОРИЯ: Аз съм просто [недоловим]. АНДИ Пенг: Може би се опита да актуализира 50, както добре. Да. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Да. Така че начинът, по който можете да започнете нова уеб сървър на IDE е просто направя apache50 пространство старт пространство точка. Аз просто исках да се уверя сървъри на всички работещи ОК. АУДИТОРИЯ: Тук, на терминала? АНДИ Пенг: Да. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Apache. Всъщност, аз мисля, че си използвате нещо вече. Да, вие сте всъщност използвате друг сървър. Да, вие сте добре. Тъй като това е работа, вие сте OK. АУДИТОРИЯ: OK. АНДИ Пенг: Има две начина за показване сървъри. Така че, докато един от начините работи, всичко е наред. Ще вземем още една минута Просто някак да си свършим финалните щрихи на каквото и уеб страница вас, момчета искаха да направят. Дали всички, които работят по пътя? Сървъри на всички са използвате освен за твоята? Ние ще разберат това. И HTML е доста проста. Така че аз мисля, че всички сме добре. Да. Ще се върна. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: OK. АУДИТОРИЯ: Така че това е просто Започнах да се зареди. АНДИ Пенг: Не се тревожете. Така HTML, има изходен код, който ще бъде на линия след точка. Също така, Давид има цял китка, както и онлайн. Просто вид поглед върху него, за да видим как HTML страници са написани. Това е доста лесно. Всичко, което не знам, вие доста много по-просто Google и сте добре. Аз просто искам да се уверите, че Вашите сървъри се изпълняват. АУДИТОРИЯ: Има ли го правите това често? АНДИ Пенг: никога не се е случило с мен. Аз не знаех, че може дори да спят зимен сън. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Мисля everyone-- мината никога не е хибернира преди. И аз не знам защо. Странно е. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: е ваш зимен сън? АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Да. АУДИТОРИЯ: Всичко е наред. Така че, след като тя е отворена. АНДИ Пенг: OK. Ние ще се справим с някои сървър въпроси след точка. Вие трябва да се оправи. Въпреки че, вие искате да сте сигурни, че да ги разреши преди да си тръгнеш. Защото, ако вашия сървър не работи, тогава вие сте няма да бъде в състояние да направи pset, като всяка част от pset. Така че ако искате да се уверите, че това е работа. Готино. Всичко е наред. Кажете сбогом котенца. Прекарах дълго време търси че коте снимка, за да облече. Така че, във всеки случай. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Съжаляваме? АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Мисля, че е на интернет страницата. Подобно спец? АУДИТОРИЯ: [недоловим]. Мисля, че е просто спекулация онлайн в седмицата седем. Мисля, че това се нарича pset6, дори макар че сме на седмица седем, които е малко по компютинг. АУДИТОРИЯ: Но искам да кажа, ако сте искам да гледам 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. ДОБРЕ. Така Чар * strtok, това е функцията определение за тази функция, съдържаща в рамките на низ, з библиотеката. Ако Ви е приложена с вход на Чар * низ, който е само низ, или постоянна Чар * deliminator, разделител за кратко, всичко, което прави е да се счупи по-голям низ в серия от това, което наричаме символите, разделени с определена стойност. Така че в известен смисъл, ако трябва да се даде можете section.7.php, това е низ. Така че би било, ако аз трябваше да мине в тази, както ул ми, ул Чар * ми, ако ми беше deliminator точка, всичко това ще направим, е търсене чрез низ. И за първи път го вижда една точка, тя просто ще се завърне на показалеца до последната причина намерен в низа преди това. Така че тя ще отиде точно тук. И тя просто ще ми даде 7.php. И ако аз да се обадя на функционира още един път, тя ще ми даде само .php. И така, всичко, тази функция се прави се счупи по-големия низ по-малки в зависимост струни на това, което търсите. Така например, в вашия поглед нагоре функция ако искате да погледнете какво определени символи се появили или ако точки случват или разширения се случват, тази функция ще бъде доста полезен. Да. Няма проблем. Всичко това ще be-- да, какво става? АУДИТОРИЯ: Така, първи ред, ако сме използвали този пример, какво бихме вмъкнете в това? АНДИ Пенг: Да. Вие просто ще наричаме strtok низ запетая разделител. И низ е равна на section.7.php. И тогава сте разделител може да бъде равно на само точка. АУДИТОРИЯ: OK. АНДИ Пенг: Да. Ето така. Всички тези функции са доста подобно, когато ние преминаваме през тях. Те просто правят малко по-различни неща. Но всички те ще направи живота ви много по-лесно. Втората функция, това е като супер, супер, супер важно, е the-- побере. Ами сега. Strchr търсено през първата occurrence-- всъщност, да. Strchr е функцията, която Аз определено просто отиде. Така се игнорира това, което казах за първата функция. Това е действително нарича strchr. И така, какво ще се случи тук, е, ако които са ти дадени низ в Чар в, тя просто ще даде вие каквото и да било. Да. Така че мисля за него като ул, които е низ, и CHR като Чар. Така че всичко, което се опитвате да направите, е търсене за къде Чар е в рамките на низ. И така търси първите поява на характера в на ул низа. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Мда. И тогава, ако тя не беше намерен това, че ще се върне NULL. Така че нещо, което се случва да бъде много полезно за вас, момчета в правене на pset ако, да речем, което търсите за разширение като .docx за Word документ или .pdf за PDF документи, можете да го използвате вид да изглежда за каквато и да е по-късно всеки път, когато видите една точка, нали? И така до голяма степен, ако тичам, че чрез функцията, ако тя се връща NULL, тогава знаете, че тя не го намери точка, което означава това очевидно не е валидно разширение на файла. Или ако го връща нещо, тогава знаете то се случва да се върне на каквито и да било всъщност след разширяването. Така че тези от вас, които са имали Започнах да търся чрез справка и разбор, тази функция е Ще бъде супер полезно. Така че ние всъщност ще за да се докаже използването на този. Защо не вие ​​се опитайте да пишат функция булев изречение Чар * е, че просто връща истина, ако е е изречение и невярна друго. Така намек, ти започваш да, вероятно използвате strchr. Или пък търсите само в низ за определен характер. И така в едно изречение, това, което разделя присъда от не-свобода, какво специфичен характер? АУДИТОРИЯ: A пространство. АНДИ Пенг: A пространството, нали? И така, какво имаме вероятно ще искаме да направим в рамките на тази функция тук? АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Отиваме да искате да strchr низ за появата на пространството. Защото, ако той се връща нещо, тогава ние знаем, че това трябва да бъде едно изречение. Това означава, че ние трябва да имат място в този низ. Ако няма пространство, тогава ние знаем че, хей, предполагам, че не е низ. Това е може би само една наистина дълга дума. Така че аз ще ви дам няколко момчета минути, за да напишете тази функция. Да. АУДИТОРИЯ: Получихте ли този низ от потребителя? АНДИ Пенг: Да. Така че това е само една функция. Така че представете си вътре вашата основна функция вие вече have-- нека се тук. ДОБРЕ. Така че аз съм писал тази програма, където Имам моята основна функция, където Току-що създадени две струни. Първият от тях е Здравейте, моето име е Andi-- ясно, присъда. Вторият ми е само една Andi, очевидно не осъжда. И така, аз бягам и двете от тези, низове чрез тази функция. Искам вие да пишат студена изречение. И аз съм съхраняване на тези ценности, и след това просто да ги отпечатате. Така че мисля, че потребителят е ще премине в низ. И тогава започваш да се същество разбера дали това е присъда или не и да се върнете вярно или невярно съответно. Ако вие искате да дадете на жест или глави нагоре, главата кимване, е всеки, който е готов да започне това, че ще бъде добър. Може би повече като 30 секунди? Всичко е наред. Нека да видим дали можете да се опитате написването на тази функция. Така че псевдо coding-- Смятам просто да вид минеш през това точно сега. Доста, ние знаем, функция, която ние трябва да използваме. Отиваме да се обадя, че функцията на нашият стринг и търсене на пространството. Ако тя се връща нещо, тогава ние трябва да знам, че е ясно, че това е едно изречение. Защото има пространства. След това ние ще се върне вярно. Else, ние ще се върне фалшиви. Някой иска да даде ме на първа линия на код че ние всъщност ще да използвате, за да напиша това? Това всъщност е най-трудното ред код, както добре. Да. АУДИТОРИЯ: Ако strtok s-- АНДИ Пенг: Just strchr. АУДИТОРИЯ: [вмъкване VOICES] пространство не е равно на нула. АНДИ Пенг: Cool. Точно така. Всеки се разбере, че на първа линия? Отиваме да се обадя strstr, което е функция, която търси струнния те години за Чар на пространството. И ако тя установи, че това ще върне указател към къде е това. Ако не го намерите, то се случва да се върне NULL. Така че, ако той се връща нищо друго освен NULL, тогава ние знаем, че е намерил пространство. Това прави ли смисъл? Готино. Всичко е наред. Така че, ако ние знаем, че е намерил космоса, какво искаме да направим? АУДИТОРИЯ: Връщане вярно. АНДИ Пенг: Мда. Върнете вярно. И тогава, някой иска да свършим функцията за мен? Да. Else, просто ей така. И се опитай съставянето на този. Да. Така че, както вие може да видите от изходи, помнят Булев тип в C винаги са изразени в двоичен. 1 е вярно. 0 е фалшива. Ако трябва да стартирате тази функция на една струна, която е Здравейте, Моето име Andi-- ясно, а sentence-- резултата отпечатва до 1, което е вярно. Вторият, което е просто С една дума, към резултатите разпечатан до 0, което е невярно. Всеки ясен вид за това как тази функция е написано? Да. АУДИТОРИЯ: Можем ли да направите, вместо не се равнява на не, се равнява е равна на 0, така, че да е равен на? АНДИ Пенг: No. Тъй strchr е функция. Отивам да се върнем към този. Така че това, което е от типа връщане на нашия strchr функция? АУДИТОРИЯ: О, OK. Или NULL. АНДИ Пенг: Да. Това е знак, че * ми казва, че каквото тази функция ще се върне, това ще бъде една показалка. Или показалеца ще бъде посочвайки, където е установено, че, или тя ще се върне указател към NULL. И в двата обстоятелство, че ще ходи да се върне указател към нещо. И така, ако ви се налага да се равняват Това се равнява, равни, 0, започваш да се получи грешка компилация. Поради това ще се върне указател. И ти започваш да се опита да сравни указател към цяло число. И компютърът не е ще му хареса това. Да, точно така. Готино. Всеки добър? И на второ място, ние ще отидем над функция, наречена strstr. Не се тревожете, ако тези функции са ви объркват. Те ме обърква. Като такъв, вие може да се наблюдава, всички те звучат почти същото. Точно когато сте объркани, издърпайте string.h библиотеката. И вие може да сортирате чрез който един, който. Така strstr, всичко, което прави, е търсения низ за цял друг низ. Е, къде strchr само на търсенията за един символ, strstr търсено през целия низ. Затова исках да гледам, аз не правя знам, Здравейте, моето име е Анди. А името на най-добрия ми приятел също е Andi. Ако исках да се търси в тази присъда за цялата дума на Andi, ми игла би било каквото и да търсите. И си купа сено е независимо което търсите го инча Така че, ако търсите за конкретна дума в рамките на едно изречение, тази дума ще бъде вашата игла. И тогава самият изречение ще бъде вашата купа сено. И така, той просто търси първата поява на низ иглата в низ купа сено. Тя връща на показалеца до първата поява. С изключение, не забравяйте, в този случай, това е най- първата поява на целия низ че търсите за, а не само един символ. И така, това е почти едно и също нещо, тъй като функцията ние просто направихме, само с малко повече специфичност. Тъй като търси повече от един символ. И че използването им е точно същото като този, който ние просто го направих. Всеки OK с това? ДОБРЕ. Последно една отиваме да отидете над strrchr е, което не е бърка с strstr или с strchr. strrchr разполага с допълнително R там. Бъдете внимателни, когато пишете. Можете да откриете себе си, включително допълнително R или не, включително на г, и след това си функция е имам не ще да работи. И ти започваш да бъде объркан. Бъдете внимателни, че сте правописа всички тези функции правилно. Така strrchr е точно едно и също нещо, както strchr освен това търси не първото възникване на специфичен характер, а по-скоро последната поява. И така, в този смисъл, това е почти точно същото. Но вместо преместване предаде в низ, започваш да се движат назад в низ. Точно същото нещо, ти си просто търсене в различен ред. И така, това би могло да бъде супер, супер полезно за вашето търсене функция, първият функция на вашия pset. Нека да се преструваме, че ние трябваше да напише функция на невалидни разширение, в която ние мине име постоянна Чар * файл, просто низ, името на файла, който взема в това име и щампи удължителя на този файл. Така например, ако аз трябваше да премине в низ от 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. АУДИТОРИЯ: OK. АНДИ Пенг: Да. Той посочва, когато го намерих. Да. 30 секунди може би? Да. Всеки добър или може би малко повече време? Покажи на ръцете? Покажи на главите? Готино. Всеки, който иска да ми даде първите ред код за тази програма? АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Така че на първо място, нека може би се разбие. Така че това, което е от типа връщане на strrchr? Нека се върнем. strrchr, какъв е видът замяна? АУДИТОРИЯ: Char * АНДИ Пенг: Това е знак *, нали? Което означава, че вие ​​вероятно ще да искате да създадете друг Чар * да натура на магазина, когато това е завръщането си, нали? Защото, ако ти се обадя strrchr на функция, това ще ви дам един указател към където и да се установи, че последният срок, нали? Но ти започваш да искаш да съхраняване, че някъде, нали? И така, как да се кодира това в нашата програма? АУДИТОРИЯ: Караш на Чар * [недоловим]. АНДИ Пенг: Да. АУДИТОРИЯ: [недоловим]. АНДИ Пенг: strrchr. Да. О, изпусна г там. АУДИТОРИЯ: име на файла [недоловим]. Какво е? О, това е просто е. АНДИ Пенг: О, това е просто е. Мда, съжалявам. Моя грешка. Примерите не съвпадат. АУДИТОРИЯ: И тогава Дот. АНДИ Пенг: Мда. Бъдете внимателни, когато момчета are-- тук, нека да я увеличите инча Ето. Бъдете внимателни, когато момчета пишете, особено когато правиш само на Чар. Това наистина е много лесно да се случайно просто направя двойни кавички, а не единично. Това няма да работи. Вашият компилатор ще се оплаче. И си функция е просто няма да работи. И така, бъдете внимателни, когато правиш неща със символа, че това е единични кавички. И така прави този ред на код да има смисъл за всеки? Ние сме за създаване на Чар * показалка. Защото strrchr декларации нещо от типа на показалеца. И така, ние ще наричаме strchr на лидер, който е низ, файлът назове, че ние сме минаваща инча И ние не търсим последният Например на срок, който е само за единно цитат Дот апостроф. Да. АУДИТОРИЯ: Когато правим ние използваме двойни кавички и когато правим ние използваме единични кавички? АНДИ Пенг: Да. Така двойни кавички са винаги се използва, когато има поредица от повече от един. Така че, ако сте прави strstr, който е този, който ви търси низ за струнен, вие ще го предадат в двойни кавички. Но всяко време това е просто един символ, което искате да направите единични кавички. Това е нещо добро, трябва да имате предвид. Така че сега ние имаме свой показалка, какво ще правим с него? Питам ви, момчета, за да да ги извежда, нали? Така [недоловим], който искате да дайте ми линията на код? АУДИТОРИЯ: printf-- АНДИ Пенг: Да. АУДИТОРИЯ: --you нужда от държач на място. АНДИ Пенг: Мда. АУДИТОРИЯ: Печат носителят на място. Аз не знам какво мястото титуляр е, но точка към него. ДОБРЕ. Нека да пропуснете, че за сега след това. АУДИТОРИЯ: И тогава comma-- АНДИ Пенг: Pointer, нали? АУДИТОРИЯ: Pointer, Мда. АНДИ Пенг: Така вид подвеждащ въпрос, има нещо общо с указатели и струнни че сме вид говореше за вече. Какъв вид на притежателя място, което правим необходимо за една показалка за Чар *? АУДИТОРИЯ: [недоловим]. АНДИ Пенг: Да. По-лесно е, отколкото си момчета мисля, че е. АУДИТОРИЯ: String? АНДИ Пенг: Това е просто низ, точно. Защото не забравяйте струни наистина не съществува. A Чар * е точно едно и също нещо като низ. И така, наистина това е това, което е трябвало да се използва през цялото време. ДОБРЕ. Да видим дали можем да се опитаме да стартирате този. Нека да направим едно разширение изработка. Готино. Вие, момчета, да видят как съм преминал в 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 тази седмица. Да.