ANDI Пэн: Мы амаль праз усе psets. На самай справе, мы праз большасць з самых складаных psets. Так што мы на самай справе проста збіраецца роду брызу праз пару тыдняў. Мы збіраемся, каб пачаць гаварыць аб нашых Канчатковыя праекты, падзеі прыдумляць у бліжэйшыя некалькі тыдняў. І жыццё будзе вецер. Так што не занадта шмат сёння. Спадзяюся, на самай справе вецер праз парадак дня на сёння, і тады адсюль з нейкай запас часу. Акрамя таго, я хачу папрасіць прабачэння з-за адсутнасці цукеркі сёння. Я не ведаю, чаму. Але на гэтым тыдні, прыводзячы Дзень усіх Святых, я б забыць цукеркі. Так што я на самой справе проста велізарны расчараванне для вас прама цяпер. Таму што я памятаю, у літаральным сэнсе цукеркі для кожнага класа, але Хэлоўіна. Але на наступным тыдні, Я навяду падвоіць колькасць цукерак каб на што, усё для вас. Гэта будзе выдатна. Так што я пару аб'яваў пра якую планаванне. У мяне ёсць некалькі пытанняў планавання. Тады мы ідзем, каб перайсці на казаць пра тое, што называецца CHMOD. Мы будзем казаць пра хутка TCP / IP HTTP. І тады мы будзем кадзіраваць нашы уласны вэб-сайт з дапамогай HTML і CSS. І тады я, можа быць, на самой справе пакінуць як 20 хвілін, каб пагаварыць пра pset6. Таму што на самой справе pset6 шмат рэчы, якія мы ўжо бачылі раней, але я хацеў, каб абнавіць некаторыя з гэтых паняццяў а таксама навучыць пару новых функцый. Прахладны. Таму ў першую чаргу, дабро запрашаем ад разрыву. Я спадзяюся, што вы перапынак быў прыемным. Ці будзе ў вас для перапынку? АЎДЫТОРЫЯ: Пайшоў у Нью-Ёрку. ANDI Пэн: Вы пайшлі ў Нью-Ёрк? Я думаю, што палова нашай школы адправіўся ў Нью-Ёрку. Усё ў парадку. Я правёў большую частку маёй перапынку сядзячы лад жыцця ў ложку Netflixing. І гэта быў добры час. Але мы зараз назад, таму ў сесія, назад у арэлі рэчаў. У нас ёсць PSET належнае ў гэтую пятніцу апоўдні. Я думаю, вы ўжо узяў свой тэст, так? Такім чынам, любы, хто мае не было іх віктарыны, калі ласка, прыходзьце і атрымаеце віктарыны ад мяне ў канцы часткі. Або адсочваць мяне на кампусе. Я буду мець гэта са мной куды-небудзь. Наша канчатковы праект папярэдняга прапановы таксама. Так што для тых з нас, хто ніколі не прымаў гэты клас перш, замкавы камень CS50 вельмі шмат завяршыліся ў гэтым Грандыёзны праект, што студэнты прапануюць. І перадпраектныя прапановы, толькі агульная ідэя што адным можаце зрабіць для іх Праект, гэтая ідэя з-за панядзелак, у наступны панядзелак апоўдні. Так даволі шмат, я думаю, што Дэвід будзе больш гаварыць пра гэта ў лекцыі калі ён ужо не мае. І ёсць цвёрдае старонка на нашым сайце, тлумачачы усе патрабаванні праекта. Але па сутнасці, выбраць любая тэма, што ў Вас ёсць былі зацікаўлены ў на працягу ўсяго часу тут у CS, няхай гэта будзе гульнявой або дызайн або відэа ці што-небудзь. І вы можаце сапраўды збольшага Цяпер прымяніць некаторыя з урокаў, што мы даведаліся тут, у CS50-- прывітанне, welcome-- ў значнай ступені правядзенне канчатковы праект па вашаму выбару. Усё, што з-за панядзелак толькі кароткі рэклама па электроннай пошце для мяне, хутка прысуд, як, эй, Анди, Я сапраўды зацікаўлены ў праектаванні гульня, якая робіць гэта для IOS. Прахладны. Проста дайце мне ваш кароткую пачатковую ідэі для вашых канчатковых праектаў. І мы будзем казаць праз або няма гэта на самай справе добрая ідэя або няма, калі гэта магчыма ідэя ці не. Але толькі перадпраектныя прапановы з-за наступны панядзелак. pset6, нашы мілыя web--, што гэта няправільна. Pset7? pset6? Гэта pset6, праўда? pset6, наш вэб-сервер, з-за У пятніцу апоўдні з канца дня. Гадзіннік рэзюмэ звычайна з панядзелка у чацвер з 8:00 да 11:00 на гэтым тыдні. Я думаю, што для суполак Наступныя тры ночы. Прахладны. Перш, чым мы мелі ў матэрыял, хто-небудзь ёсць якія-небудзь пытанні, жарты, апавяданні? Што ты зрабіў для падзення перапынку? АЎДЫТОРЫЯ: Што мне рабіць? ANDI Пэн: Ужо гэта даўным-даўно на самай справе. Christabel адправіўся ў Нью-Ёрку. Я застаўся тут і Netflixed. АЎДЫТОРЫЯ: О, так, я быў тут. ANDI Пэн: О, добра. АЎДЫТОРЫЯ: Я не памятаю што канкрэтна. ANDI Пэн: Гэта нармальна. АЎДЫТОРЫЯ: Netflixing напэўна. ANDI Пэн: Netflixing. Так, гэта добра правесці час. ДОБРА. Добра. Любыя пытанні перад мы скачам ў матэрыял? Акрамя таго, мы збіраемся, каб паспрабаваць хуткасць праз раздзел сёння, не занадта шмат, каб пакрыць. І, спадзяюся, мы атрымаем тут трохі рана. Выбачайце за ня цукеркі, а таксама. Я расчараваў асабліва падчас Хэлоўіна. Добра. Прахладны. Такім чынам, мы збіраемся, каб пачаць гаварыць аб аргумент каманднага радка называецца CHMOD. CHMOD, усё гэта проста сістэма Unix выкліку праводзіцца з каманднага радка змяніць правы доступу да файлаў. Так, напрыклад, мы ў Усе сутыкаліся старонку як гэта, верагодна, калісьці ў наша працягласць жыцця быць інтэрнэт- Карыстальнік, дзе наш вэб-сервер мае даў нам памылку забаронена. Вы не маюць дазволу на доступ, бла, бла, бла, на гэтым серверы. Усе, што на самой справе азначае з'яўляецца тое, што правы доступу што былі прымацаваныя да таго, што Старонка, якую вы спрабуеце атрымаць доступ, не былі адчыненыя для вас. Так даволі шмат, CHMOD гэта шлях, у якім мы можам змяніць гэтыя дазволы сістэмы даць кожнаму карыстальніку, група, ці свет, або любы Спалучэнне гэтых доступу у некаторых файлах каталогі, нічога на самай справе, любы від сістэмы на аперацыйная сістэма. Так што, калі які-небудзь з хлопцаў ёсць кампутары, калі вы адчуваеце, як пасля разам са мной сёння, цалкам не саромейцеся проста ўвядзіце рэчы цаля Калі няма, то вы можаце проста боўтацца. Так што я збіраюся на самай справе цягнуць да майго тэрмінала прама цяпер. Такім чынам, каманда для запуску CHMOD, ці, прынамсі, проста пералічыць дазволу вашага Каталог файлаў, проста LS-л. Як вы можаце бачыць, куча матэрыял ўсплывае, большасць з якіх Важна да нас на левы бок тут. Вы, хлопцы, ўбачыце кучу RS, WS, 1 /. Так. Тыя, па сутнасці, толькі усе правы доступу да файлаў растлумачыць, што некаторыя каталогі і файлы ў вашай сістэме ёсць. Такім чынам, давайце вернемся да магутнасць Справа тут. Такім чынам, у дадатак да імёнах файлаў як вы, хлопцы, можаце ўбачыць на правай, мы хочам, каб убачыць сутнасці проста калонка злева. Такім чынам, у дадатак да проста імёны файлаў, мы можна ўбачыць дазволу файлаў, іх Уладальнік групы, назва групы, дата што ў мінулым файл быў змененыя, і гэтак далей. Вы можаце ўбачыць шмат рэчаў, выкарыстоўваючы CHMOD. Такім чынам, шлях, які мы чытаем, што CHMOD першая літара мы ў значнай ступені ігнараваць у тэрмінах дазволаў для чытання. Першая літара проста кажа нам, што тып сістэмы мы доступе. д, у дадзеным выпадку, з'яўляецца Тэчка або каталог. Такім чынам, мы ведаем, што ў цяперашні час сваю працоўную раздзел сем з'яўляецца каталогам. І тады вы ўбачыце тры трыяды, па сутнасці, толькі тры камплекты з трох знакаў. І вы можаце думаць адзін пра як няшмат. Такім чынам, вы проста ёсць тры набору тры біта, дзевяць бітаў у агульнай складанасці. Ты звяртаешся іх у групы па тры. Такім чынам, першая група з трох з'яўляецца заўсёды вашы правы карыстальніка. Ваш другой групы з трох з'яўляецца заўсёды вашы правы доступу для групы. І ваш трэці набор з трох заўсёды, як свет, усюды дазволу. Так што я думаю проста задаць пытанне, што розніца паміж карыстальнікам і групай. Асноўнае адрозненне паміж карыстальнікам і групай з'яўляецца тое, што карыстальнік проста асабіста доступу ўсё гэта прама цяпер. Група можа быць, калі ў вас ёсць некалькі карыстальнікі на адным кампутары, напрыклад. Усе яны могуць разглядацца як групы. І тады свет толькі свет, усё. Такім чынам, мы бачым у далейшым, як мы можам змяніць тыя ў розных дазволах. Так даволі шмат, мы збіраецца ранейшаму сканцэнтраваны на часткі злева, дзе для каталогаў CS50 мы бачым drwx, дзе R азначае толькі тое, што гэта чытаецца. Ш проста азначае, што гэта запісы. А потым проста х азначае, што гэта выкананы. Можна падумаць, што гэта свайго роду з не мае сэнсу. Яна павінна быць электроннай. Але на самой справе х выгляд працуе трохі лепш, таму што вы можаце ўспомніць яго лепш. Такім чынам, тры тыпу рэчаў, якія вы можа зрабіць, вы можаце прачытаць файл, вы можаце мець дазвол, каб напісаць падаць, ці вы маглі б мець дазвол запусціць файл. І так як мы на самай справе, што ўяўляюць тых, у бітах гэты лік 4, 2, 1 і. Таму ўсе, што гэта чытаецца гэта прадстаўлены на лік 4. Усё гэта запісы прадстаўлена 2. І нічога, што гэта выкананы як прадстаўлена 1. Так што ў гэтым сэнсе, мы можам таксама ўяўляюць гэтыя numbers-- прывітанне, дабро запрашаем, у іншаму. Выбачайце. Перад усім, я збіраюся папрасіць прабачэння ад імя ўсіх ўводу клас у цяперашні час. Я забыўся цукеркі сёння. Мне шкада, што я няўдачнік На гэтым тыдні Хэлоўіна. Я прывяду два разы больш цукеркі ў наступны раз, каб зрабіць для яго. Але ў любым выпадку, прабачце пра тое, што хлопцы, прабачце. Такім чынам, шлях, які мы можам на самай справе ўваход на нашай каманды аргумент мы можна зрабіць дазволу групы слэш CHMOD, дзе група толькі што б там ні Група мы спрабуем змяніць. І правы доступу што мы хочам дадаць да яго. Так, напрыклад, плюс дадае дазволу, і адняць забірае правы. І віды групы ў нас ёсць A для ўсіх, і, для карыстальнікаў, г для груп, ці пра іншых. Гэта крыху абстрактны прама цяпер. Але мы пойдзем за пару прыкладаў проста каб прадэманстраваць гэта вельмі хутка. Усё добра на гэтым слайд, так што я магу рухацца далей? Прахладны. Так, напрыклад, RWX. Перш чым мы пагаворым аб тым, што яна ўяўляе сабой, у першую чаргу, што ж RWX на ўвазе? Калі вы бачыце, што гэта напэўна файл мае дазволу RWX, што ж, што азначае, што чалавек можа быць у стане зрабіць? АЎДЫТОРЫЯ: чытанне, запіс і выкананне. ANDI Пэн: Так, менавіта так. Вы можаце прачытаць запіс і выкананне. Таму што ўсе тры з іх персанажы прысутнічаюць. Так што, калі мы ідзем наперад і казаць пра гэта ў тэрмінах бітаў, RWX таксама можа быць прадстаўлены ў выглядзе 700. Таму што, як вы можаце бачыць у любы Сартаваць дазволу файлавай дырэкторыі, ёсць тры трыяды. У гэтым выпадку, толькі першы Трыяда-небудзь там. Такім чынам, у гэтым выпадку, т = 4, ш = 2, і х роўны 1. Калі вы дадаеце іх разам, гэта 7. І таму, калі вам канвертаваць гэта двайковы, гэта 700. З 7 з'яўляецца першым трыяды. 0, няма нічога прысутнічае ў другой трыяды. І тады нічога не прысутнічае ў трэці трыяды, так што гэта яшчэ 0. Такім чынам, у гэтым жа сэнсе куча трыяд можа быць прадстаўлена толькі ў бітах, так у двайковым, а таксама. Так 700 азначае тую ж самую рэч, як RWX ------ пункту гледжання дазволаў. Усё ясна, на што? Прахладны. І так CHMOD 111 дасць якія правы да файла? Дай вам, хлопцы, пару секунд, каб пераўтварыць гэта. Памятаеце, першы трыяда для карыстальніка. Другі трыяда ў групе. І трэці трыяда для ўсіх. І так CHMOD 111, які дасць тып дазволаў і для каго? Вазьміце пару секунд думаю пра гэта і вярнуцца назад. Так. АЎДЫТОРЫЯ: Так кожны можа выканаць яго. ANDI Пэн: Так, менавіта так. АЎДЫТОРЫЯ: Але ніхто не можа чытаць ці пісаць. ANDI Пэн: І не саромейцеся каб растлумачыць ўсім, як вы прыйшлі да такой высновы. АЎДЫТОРЫЯ: Ну, для карыстальніка, Група, і ў свеце, гэта ўсё 1, які з'яўляецца код выкананага файла. ANDI Пэн: Так, менавіта так. Так 1, у гэтым выпадку, усе мы ведаем, што гэта выкананы код. Таму што чытанне 4. Ліст 2. І выкананы 1. Так усе тры трыяды 1, што азначае, што ў свеце, для карыстальніка, і ў групе, яны усе выкананыя. Усё добра з гэтым? ДОБРА. І таму другі спосаб што мы можам на самай справе напісаць гэта таксама вы можа проста зрабіць CHMOD плюс х. сродкі усе ці ўсіх. Плюс азначае адмову дазволу на. І тады х азначае выкананы. Так што дзве каманды фактычна ідэнтычныя. Так што, калі вы хочаце запусціць гэта ў тэрмінале, вы CHMOD 111, імя Ваш каталог альбо выяву. Ці вы можаце зрабіць CHMOD плюс х, Імя Вашага файла каталога. Тое ж самае, толькі больш просты спосаб, магчыма, для некаторых ўяўляюць або змены правы доступу да файлаў. Кожны парадку з CHMOD перш чым мы пяройдзем? Прахладны. Так што цяпер мы збіраемся, каб узначаліць ў Некалькі горак вельмі абстрактных паняццяў што я даволі шмат збіраецца вецер праз. І гэта цалкам нармальна, калі вы не ўсе разумеюць. Нават цяпер, я ўсё яшчэ сапраўды ня усе разумеюць цалкам. Але гэта больш аб атрыманні разуменне верхняга ўзроўню пра тое, як некаторыя з гэтых рэчаў працуюць. Такім чынам, мы будзем казаць хутка аб TCP / IP, які знаходзіцца ўсяго кіравання каробкай перадач Пратакол скараціць Internet Protocol. Нагадаем, з лекцыі, Дэвід, ён навучыць вас прыклад, дзе ён праходзіць ноты ў канверце да як вяршыня лекцыйным зале? Такім чынам, у юрыдычнай школе зале Дэвід прадэманстраваў істотна як TCP / IP працуе ў пачуццё, што ўсё гэта гэта з'яўляецца сродкам забеспячэння, што дадзеныя быў дастаўлены па серверу або ў Інтэрнэце. Такім чынам, у прыкладзе канверта і паведамленне, карыстач у канцы было відаць, што, ну, мне трэба, каб атрымаць чатыры пакеты інфармацыі. Але я на самой справе атрымаў толькі тры. Гэта азначае, што я павінен быць адсутнічае адзін. І не было дастаўлена. І так TCP / IP у Інтэрнэце, з дапамогай кампутара і сервера, робіць тую ж самую рэч. Усё гэта робіць пазначыць рамкі, у якіх загінулы дадзеныя пакеты могуць быць абураныя і атрымаў. Як у Інтэрнэце, калі вы спрабуеце доступ да файлаў на сайце або адправіць файлы Вашаму сябру або паглядзець на вэб браўзэры, тысячы і тысячы з мільярдаў і мільярдаў байтаў інфармацыі перадаюцца ў мілісекунду. І гэта сапраўды, сапраўды заблытанай. І гэта сапраўды цяжка на самай справе ведаем, што было адпраўлена і што не было адпраўлена. І так TCP / IP проста паказвае згуртаванай рамкі у якім ваш вэб- браўзэра і сервера можа мець зносіны выгляд адзін з адным, гэтак жа, пераканайцеся, што пакеты усё тут і нічога страцілі і ўсе дадзеныя, якія вы запытаныя фактычна адлюстроўваецца няправільна. Усё ОК, што вельмі проста Кароткае высокі ўзровень разумееце? Прахладны. Такім чынам, мы збіраемся, каб перамясціць ў размову пра HTTP, які проста пратакол перадачы гіпертэксту. HTTP, усё гэта з'яўляецца тое, што любая старонка або файл даступны на вэб-сайце, сервер вяртае HTTP Код стану ў адказ з просьбай пераканаўшыся, што альбо, пра, гэты запыт прайшоў. І ўсё ў правільным адлюстраванні. Або, о, не, 404. Што-то пайшло не так. О, я не магу паказаць. Усё гэта ў тым, што ўсё, што Вы спрабуеце атрымаць доступ, выкарыстоўваць у якасці карыстальніка спрабуе атрымаць доступ да, на internet-- толькі пераканаўшыся, што вы альбо паспяхова Доступ усё, што было ці не паспяхова звярталіся б там ні было. І таму статус HTTP код проста дае вам сродак у стане ведаць, ці ён не быў паспяховым ці не. Так, напрыклад, прыклад запыту на. Вы можаце паглядзець тут гэта звычайна, як правіла, чатыры радкі. У нас ёсць GET HTTP 1.1, які знаходзіцца ўсяго URL-адрас запыту метад, пратакол версія, імя поля, і значэнне поля. Так што не трэба цалкам запомніць што-небудзь тут. Проста выгляд азнаёміцца самастойна з тым, як яны выглядаюць. У гэтым прыкладзе запыт метад Спасылка на гэта проста тое, што запыт вы адпраўляеце на сервер. Як, эй, сервер, я сапраўды хачу Доступ бла, бла, бла, HTTP старонка. Версія пратаколу толькі што б там ні Версія хост або сервер выкарыстоўвае для доступу да інфармацыі. Імя поля з'яўляецца вэб-сайт або Спасылка, што вы спрабуеце атрымаць доступ, у гэтым выпадку, www.apple.com. І значэнне поля проста, як правіла, імя, значэнне. І гэта можа быць якой-небудзь камбінацыі літар ці лічбаў або што заўгодна. Такім чынам, тыповы запыт, так што тое, што на самой справе кампутар пасылае на сервер, які кажа, эй, Вы ведаеце, што мне гэта трэба адлюстроўвацца, гэта выгляд запыту што яны фактычна атрымліваюць. Прыклад адказу ад таго, што сервер будзе адпраўляць назад да вас будзе ў значнай ступені тое ж самае, за выключэннем кода стану ў верхняй. Так 200, 2 0 0 заўсёды код стану для ОК. Маўляў, добра, гэты запыт прайшоў. Вы былі ў стане атрымаць доступ усё правільна. Жыццё добрая. Жыццё выдатная. Ўсё цалкам добра. І так гэта проста кажа ваш браўзэр і ваш сервер, эй, добра ўсё ст. Я атрымаў усю інфармацыю, мне трэба. Прахладны. Але праблема ў тым Часам праблемы прыдумаць калі вы апошні have-- Я думаю, Я казаў пра дублікатаў. Вы павінны менш добрыя водгукі. Так, напрыклад, 404 гэта старонка не знойдзена. Вы часам маюць доступ Забаронены. У вас ёсць розныя іншыя Коды стану, што я што вы ўсе бачылі, калі вы спрабуе зрабіць даследаванне ў Інтэрнэце. І ваш браўзэр дае вам , Няма, не можа атрымаць доступ. А ты як, ну, дзярмо. Так што даволі шмат, ёсць некаторыя даволі распаўсюджаныя коды статусу. Можа быць, азнаёміцца з якой тыя, тыя. Самае смешнае, што адным Я думаю, што калі-небудзь чуў of-- калі вам здарыцца паглядзець ўсе з іх онлайн, чаму ёсць на самай справе рэальная код стану называецца 418 я чайнік. Я гугле, дзе Паходжанне гэтага быў. І, мабыць, адзін першакрасавіцкі " Дзень пару дзесяцігоддзяў таму, хто думаў, што гэта было б весела каб стварыць новы код стану пад назвай 418 Я чайнік. Законна, назва гэта код называецца я чайнік. Я забыўся, што старонка, якую вы павінны перайсці на самай справе зрабіць гэта дысплей. Але, мабыць, вы можаце на самой справе атрымаць код статусу Я чайнік-то праз што-то рабіць. Так што сотні і сотні кодаў стану. Некаторыя з іх робяць больш сэнс, чым іншыя. Але ў значнай ступені толькі азнаёміцца самастойна з самых распаўсюджаных. Запытаная цела суб'ект кароткі і тоўсты, па-відаць. Так што часам Ёсць больш палохалыя памылак, чым я чайнік. Але гэта той, які я думаю, вы, здаецца, спадзяюся патрапіць. Але я не думаю, што вы будзеце. Усё добра толькі на статус коды, запыты, працэсы, выраб упэўнены, што інфармацыя паступае правільна? Так што цяпер мы збіраемся пераходу у пацешнай часткі секцыі сёння, дзе мы трохі пагаворым аб HTML. HTML, усё гэта гіпертэксту Мова разметкі. Гэта проста стандартны мову можна выкарыстоўваць для стварэння ўсіх вэб старонкі ў Інтэрнэце. Такім чынам, любы вэб-старонкі, што Ваш любімы вэб-старонкі? Які ваш любімы вэб-старонкі? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: На ​​жаль? АЎДЫТОРЫЯ: Tumblr. ANDI Пэн: Tumblr. Так Tumblr напісана ў HTML. І таму мы на самай справе ісці да канца і пагуляць з некаторымі з гэтых рэчаў у далейшым. Практычна ўсе вам трэба вучыцца, ведаеце, напісаць HTML вы можаце, верагодна, Проста Google у Інтэрнэце. HTML, гэта не праграма, як C дзе вы можаце ствараць зменныя і рабіць класныя рэчы з ім. Гэта больш за ўсё, аб, гэта, як я хочуць, каб з'явіцца на маім сайце. І я проста хачу, каб пакласці яго ў. І гэта будзе стыль яго. Так HTML, у пэўным сэнсе, гэта проста, як фарматавання або шаблон мову. Гэта нашмат прасцей. Гэта нашмат прасцей, каб даведацца, нашмат лягчэй пісаць у чым ваш тыповы праграмавання мова, вельмі лёгка, вельмі даступны карыстачу і прыязныя. Такім чынам, мы на самай справе адбываецца, каб гуляць вакол, напісаць свае старонкі сёння. Але перш, чым мы пачнем, я проста хачу, каб перайсці кароткія лепшыя практыкі. Паколькі HTML з'яўляецца такі просты мову і таму, што нават калі вы пару рэчаў няправільна, часам можа не заўважыць, мы хочам, каб пераканацца, што мы на самай справе прытрымліваючыся нашых лепшых практык каб пераканацца, што рэчы, якія можа ісці вакол, але не заўсёды будзе ісці прама, не пераканайцеся, што яны зведзены да мінімуму. Так даволі шмат, пераканайцеся, што Вашы закрыцця ўсе тэгі калі вы пішаце ў HTML. Калі вы адкрываеце Цела, пераканайцеся, што вы закрыццё яго цела недзе. Вы хочаце, каб пераканацца, што ваш вэб-старонкі правярае з дапамогай тое, што называецца W3 валідатар. Вы можаце проста Google, што ў Інтэрнэце, і ёсць спасылка на яго. І тады вы хочаце, каб асобны HTML-, што Ваш мова разметкі ад вашага стылю, які з'яўляецца мовай CSS, што Давід паказалі, што мы таксама будзе гуляць трохі з лекцыяй. Прахладны. Так у любы час вы хочаце запусціць HTML на CS50 прыбора, мы збіраемся запусціць Праграма называецца Apache, якія ўсё гэта проста убудаваны вэб-сервер, што ўсё ў CS50 мае доступ да. Мы называем гэта apache50 толькі таму, што мы падабаецца называць усё 50 у CS50. Такім чынам, шлях, які вы пачынаеце CS50 Інтэрнэт сервер, увёўшы на вашай камандзе Лінія apache50 пачаць кропку. І калі вы хочаце, каб скончыць яго ў любым Час, вы гэтага не зробіце apache50 канец не кропка. І вы проста націсніце Enter. І гэта павінна быць загаловак тут у бліжэйшы час. Так. Так што я проста хачу, каб хутка перайсці прыклад сапраўды кароткага вэб-старонкі. І мы збіраемся правесці як 10, 15 хвілін гуляць вакол напісання ўласных вэб-старонак. ДОБРА. Дык вось у IDE-- можа ўсё бачыць, што? Ня, на самай справе. Вось, я маштабу. Я толькі што атрымаў гэтае кароткае шаблон тут нічога на самай справе ў ім. Мы проста збіраемся, каб хутка напісаць HTML-праграма, у якой мы толькі што павітацца з светам. Гэтак жа, як і ў C, зараз мы толькі збіраецца гэта зрабіць у HTML. Хто-небудзь хоча, каб на самой справе проста паспрабуйце даць мне першае, што вы б паставіць у HTML дакуменце? Так. Аўдыторыя: кранштэйны, кнопку [неразборліва]. ANDI Пэн: Так. Так што-то, што вельмі унікальны для HTML, што мы звычайна традыцыйна ня сутыкаюцца ў іншую каманду мовы праграмавання лінейнага ўзроўню з'яўляецца тое, што мы на самай справе паказаць тып файла што гэта будзе у верхняй частцы кода. Такім чынам, у гэтым я думаю, што instance-- гэта права каманда, праўда? Так. У верхняй частцы, вы проста хочаце, каб уключыць Выбух DOCTYPE HTML у дужках толькі расказаць кампутар, эй, глядзець. І дакумент HTML прыходзіць. А потым, як мы хочам каб пачаць наш файл? Калі мы проста хочам сказаць, прывітанне, ёсць вэб-старонкі, якая кажа прывітанне да свету, як мы ідзем аб будаўніцтве гэтага? На самай справе, давайце звернемся да Google. І мы можам на самай справе гэта зрабіць. Так. Там мы ідзем. Так HTML. Як вы можаце бачыць, мой браўзэр на самай справе аўтаматычна кладкі гэта для мяне. Тое ж самае, як і ў C, калі вам стварыць адкрытую фігурную дужку, Ваш браўзэр аўтаматычна дадае ў цесным фігурнай дужкай. На шчасце, наш IDE любіць зрабіць гэта для нас. Так што цяпер мы можам роду тыпу пачатак тэга, і гэта будзе заўсёды казаць нам памятаю, каб увесці канец тэга. Я думаю, што гэта павінна быць капіталізаваць. А потым мы хочам дадаць, заўсёды, галава, у якой ёсць назва. Мы проста хочам, каб, можа быць, выклікаць гэта прывітанне, а затым цела. І там вы ідзяце. Гэта значыць фактычна наша HTML-дакумент. Такім чынам, спосаб, што любы HTML-дакумент заўсёды ў стылі in-- ж самае з Int асноўны пустэчу. Вы заўсёды хочаце мець HTML адкрыты і які зачыняе тэг У верхняй і ніжняй часткі кода. Вы хочаце мець галаву ўнутры які змяшчае назву, проста ўсё, што збіраецца, каб адлюстраваць ўкладку вашага вэб старонка, а затым цела, усярэдзіне якога фактычна адлюстравання змесціва таго, што вы хочаце зрабіць. Так што, калі вы хочаце, каб рэальна працаваць гэта, я іду, каб аддаліцца. Вы можаце фактычна пачаць apache50 пачаць кропку. Прахладны. І так як вы можаце бачыць, цяпер гэтая спасылка выскачыў. Гэта кажа ваш сайт зараз даступныя ў нейкі спасылку ніжэй. Такім чынам, усе нашы IDE мае done-- ня IDE, sorry-- ды, наш IDE зрабіў гэта стварыць сетку спасылка на які ўсе нашы вэб-старонак могуць быць даступныя на сэрвэры. Такім чынам, давайце зірнем тут. Давайце націснем на гэта, перайдзіце да Hello.html. І вы бачыце, вельмі просты Вэб-старонка для прывітанне свет. ДОБРА. Мы на самай справе адбываецца толькі ёсць everyone-- так, то, што здарылася? АЎДЫТОРЫЯ: У мяне ёсць асноўнае пытанне. ANDI Пэн: Так. АЎДЫТОРЫЯ: Як захаваць Ваш файл як HTML? ANDI Пэн: Так. Так, калі б я, каб стварыць новы файл, калі я новы файл, Untittle, калі я раблю, section.html, бум, гэта ўсё, што я павінен рабіць. АЎДЫТОРЫЯ: [неразборліва]? ANDI PENG: Няма АЎДЫТОРЫЯ: [неразборліва]. ANDI PENG: Няма АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Так. Даволі шмат, пашырэнне на файл, які знаходзіцца ўнутры вашага IDE, што кажа кампутар, што кажа аглядальнік, эй, глядзець. Гэта будзе код напісаны на гэтай мове. Так, напрыклад, у Microsoft Слова, тое, што робяць усе дакументы Word, заканчвацца, якое пашырэнне? .doc .docx або, праўда? Усё, што робіць Паказвае Ваша аперацыйная сістэма, эй, ў вас ёсць дакумент Word, падышоўшы. Адкрыйце яго з Word. Тое ж самае з PDF-файлаў. Ён ведае, пра, мне трэба каб адкрыць гэты файл з Adobe Reader або Adobe Acrobat. І так пашырэньні Працуйце з гэтак жа, як на кампутары. Калі вы пакажыце вашу старонку код будзе названы HTML, то яна ведае ой, у вас ёсць HTML-код. Я збіраюся разглядаць яго як HTML кода. Так што гэта супер разумны ў гэтым сэнсе. Такім чынам, кожны, давайце, як 10 хвілін і проста ствараць свае ўласныя вэб-сайты. Давайце дадамо ў выдатных рэчаў. Не саромейцеся казаць усё, што вы хочаце. Я проста хачу, каб пераканацца, што серверы усеагульныя працуеце правільна перш, чым мы вызваліць вас у PSET. Таму што, калі вашы серверы не балатавацца на PSET, што будзе на самой справе, вельмі дрэнна. Я проста хачу, каб плаваць вакол і бачыць, што ўсё гэта працуе. Як гэта адбываецца? АЎДЫТОРЫЯ: Я проста уключыў мой кампутар. ANDI Пэн: Гэта нармальна. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Проста ваш IDE. Так. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Гэта нармальна. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: цалкам нармальна. Ці ўсё доступ да іх вэб-сервера ў парадку? З'яўляецца apache50 працуе ОК? Я думаю, што ў некаторых іншыя раздзелы, мы былі праблемы з людзьмі, не магчымасць доступу да сервера. Так. Такім чынам, вы проста запусціце apache50 прастору пачаць касмічную перыяд. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Так. Добра? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: О, добра. Такім чынам, вы павінны мець прастору. Так apache50-- АЎДЫТОРЫЯ: я і зрабіў. ANDI Пэн: --start прастору. АЎДЫТОРЫЯ: О, прастору кропка. ANDI Пэн: Так, прастору кропка. Там вы ідзяце. Такім чынам, калі ў вас ёсць HTML-старонка, створаная, то вы можаце проста перайсці непасрэдна па спасылцы, што паказвае. І вы павінны быць у стане атрымаць доступ да яго. Усе атрымалася доступ да сваіх вэб-старонак у парадку? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: О, гэта нармальна. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Так. Я думаю, што вы можаце адкрыць гэта ў вашым браўзэры, браўзэр і не толькі ваш IDE-браўзэр. Так, я думаю, што калі вы капіруеце і ўстаўляеце яго. АЎДЫТОРЫЯ: А потым як мы яго выключыць? [Неразборліва] ANDI Пэн: Так, вы apache50 спыняцца не перыяд. Так. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Пры адсутнасці перыяду. Так. Там мы ідзем. Так. Мы ствараем нашы ўласныя вэб-старонкі. АЎДЫТОРЫЯ: О, крута. ANDI Пэн: Так. Залы: У мяне пытанне. Так Apache 50-- ANDI Пэн: 50, да. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Што? Гэта дзіўна. Глядзі, што было свайго роду пытання што адбываецца раней. ДОБРА. Глядзі на мяне пасля падзелу. Таму што ў нас ёсць некаторыя праблемы з серверам. І вы хочаце, каб зрабіць Пераканайцеся, што ваш сервер , Перад запускам у PSET. Таму што вы будзеце мець патрэбу ў гэтым. Так. Ці ёсць хто-то яшчэ, што не было магчымасць атрымаць іх сервер, каб пачаць? Для тых з вас, хто хоча, каб дадаць дадатковая стыль вашых вэб-старонак, мы можам на самай справе рабіць тое, што Дэвід зрабіў у лекцыі, а таксама, што стварыць дадатковы стыль ліст, якое з'яўляецца кропка CSS, Cascading Стыль Ліст і на самай справе проста дадаць яго ў. Так, напрыклад, я толькі што стварылі у значнай ступені амаль дакладна такі ж адным Дэвід зрабіў у лекцыі. Вы можаце ў значнай ступені проста зрабіць цела. Вы ёсць тое, што называюць тэгі, у якіх Вы можаце звярнуцца да IDE незалежна раздзел Вы хочаце ў вашай актуальна HTML старонкі. Такім чынам, цела старонкі, вы можна зрабіць выраўноўванне тэксту цэнтр. І тады я буду творчы тэг называецца верхняя ўнутры з якіх я хачу гэтыя рэчы адбудзецца, прызначыць большы памер піксэлях для шрыфта. Я хачу вага шрыфта павінен быць адважным. І я хачу, каб колер быць сінім, проста адвольнае значэння, што я вырашыў выбраць. Я магу стварыць яшчэ адзін тэг з імем сярэдні. Памер шрыфта, зрабіць гэта крыху менш. І тады я магу стварыць іншы тэг называецца ніжняй, дзе я хачу памер шрыфта яшчэ менш па-ранейшаму. І так у значнай ступені гэта толькі прыклад з зыходнага кода або зыходных табліц стыляў што гэта вельмі лёгка проста Google. Калі ты кажаш, о, я хачу, каб мой шрыфт каб быць курсівам і цёмна-зялёны, Вы, верагодна, Google, а затым ён скажа вам, адпаведныя тэгі або ідэнтыфікатары, каб стварыць. І так як, што вы на самай справе выгляд у гэтага ў HTML дакуменце або выкарыстоўваць гэта ўсё ў вас ёсць каб зрабіць тут у галаву Дадаць спасылку на табліцу стыляў. Такім чынам, вы можаце проста звязаць HREF роўных усе імя вашага стыляў ёсць. І тады адносіны табліца стыляў. Такім чынам, усярэдзіне любога дакумента HTML, да таго часу, як вы ўключыць гэты пункт CSS ліст, Вы павінны быць у стане атрымаць доступ да і валодаюць ўласцівасцямі існуе. Так, напрыклад, тут Я толькі стварыць яшчэ адзін прыклад вэб-старонкі. Гэта дабро запрашаем у профіль CS50 Па аўторках з 2:00 да 03:30 са мной. А потым я дадаў, што выдатны вобраз мы патэнцыйна павінны быць у стане бачыць. Так што, калі вы паглядзіце тут, калі вы ідзяце ў style.html, мы стварылі вэб-старонку з кацянятамі. Таму што кацяня з'яўляюцца дзіўнымі. Таму даданне малюнак толькі IMG SRC спасылку. Даволі шмат, калі ёсць якой-небудзь функцыі Вы хочаце, каб дадаць да вашага website-- так скажам, Вы хочаце, каб дадаць меню ці панэль пошуку або як image-- толькі Google, як гэта зрабіць. І вы проста пляснуць у гэтым фармаце. І вы можаце проста даволі шмат проста дадаць яго ў. Гэта сапраўды, вельмі проста. Мы ствараем наш уласны вэб-старонкі прама зараз. Калі ты хочаш-- АЎДЫТОРЫЯ: [неразборліва] ANDI Пэн: На ​​жаль? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Аб, DIV проста падзел распавядаў мне, што, ну, у мяне ёсць некаторая частка называецца сярэдні, у якім я ўжываю мой CSS тэг, а затым мой іншы падзел з ніжняй. Гэта ўсё, што кажа вам. Таму што гэта прыемна трымаць рэчы акуратныя ў парадку, так што праграма ведае, як менавіта працаваць. І думаю, што я магу скапіяваць ўстаўце у маёй фактычнай браўзэры, а таксама. Гэта павінна быць у парадку. Так. Ўра. Так што, калі кожны хоча, каб проста паспрабуйце стварыць вэб-старонку, мы будзем прымаць яшчэ два-тры хвіліны. Я проста хачу, каб пераканацца, што серверы усеагульныя працуеце і кожны мае Ідэя пра тое, як гэта зрабіць. Калі вы, хлопцы, жадаеце, каб прыняць вашыя кампутары. Тым не менш не працуе? АЎДЫТОРЫЯ: Я проста [неразборліва]. ANDI Пэн: Можа быць, паспрабаваць абнавіць 50, а таксама. Так. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Так. Такім чынам, шлях, які вы пачынаеце новы вэб-сервер на IDE проста зрабіць apache50 прастору Старт касмічнай кропкі. Я проста хацеў, каб пераканацца, серверы усеагульныя працуеце ОК. АЎДЫТОРЫЯ: Тут, на тэрмінале? ANDI Пэн: Так. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Apache. На самай справе, я думаю, што ты працуе ўжо нешта. Так, вы на самой справе працуе іншы сервер. Так, вы добра. Пакуль што працуе, ты ў парадку. АЎДЫТОРЫЯ: ОК. ANDI Пэн: Там двое спосабы запуску сервераў. Да таго часу, як адзін са спосабаў працуе, усё ў парадку. Мы возьмем яшчэ хвіліну проста выгляд скончыць рыскі на тое, што вэб-старонкі, вы, хлопцы хацелі зрабіць. Усё працуе, дарэчы ,? Серверы Усеагульныя з'яўляюцца Акрамя таго, для запуску вашых? Мы разбярэмся, што з. І HTML даволі просты. Так што я думаю, што мы ўсе добра. Так. Я вярнуся. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: ОК. АЎДЫТОРЫЯ: Так што гэта проста пачаў, каб загрузіць. ANDI Пэн: Не турбуйцеся. Так HTML, ёсць зыходны код, які будзе онлайн пасля падзелу. Акрамя таго, Дэвід цэлае куча онлайн, а таксама. Проста выгляд погляд на яго, каб бачыць, як HTML-старонкі напісаныя. Гэта даволі лёгка. Усё, што вы не ведаеце, вы ў значнай шмат як раз Google, і вы добра. Я проста хачу, каб пераканацца, што Вашы серверы працуюць. АЎДЫТОРЫЯ: ён робіць гэта часта? ANDI Пэн: Гэта ніколі не здарылася са мной. Я не ведаю, гэта можа нават зімуюць. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Я думаю, што everyone-- мой ніколі не зімавалі раней. І я не ведаю, чаму. Гэта дзіўна. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: тваё зімуюць? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Так. АЎДЫТОРЫЯ: Гэта нармальна. Таму, як толькі гэта адкрыта. ANDI Пэн: ОК. Мы будзем мець справу з нейкай сервер пытанні пасля падзелу. Вы павінны быць у парадку. Хоць, вы хочаце, каб пераканацца, што вы атрымаць іх вырашыць, перш чым пакінуць. Таму што, калі ваш сервер-х не працуе, то вы не будзе ў стане зрабіць PSET, як і любы часткі PSET. Такім чынам, вы хочаце, каб пераканацца, што гэта працуе. Прахладны. Добра. Развітайцеся кацянят. Я правёў шмат часу, шукае што кацяня карціна надзець. Так, у любым выпадку. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: На ​​жаль? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: я думаю, што гэта на вэб-сайце. Як спецыфікацыі? АЎДЫТОРЫЯ: [неразборліва]. Я думаю, што гэта проста спекуляцыя онлайн на тыдзень сем. Я думаю, гэта называецца pset6, нават хоць мы на тыдзень, якая сем трохі вылічэнняў. АЎДЫТОРЫЯ: Але я маю на ўвазе, калі вам хачу паглядзець at-- калі вы хачу, каб падцягнуць нашу версію вэб-сайт з нашага раз'ядноўваць? Так як server.c з'яўляецца PSET, праўда? Калі вы хочаце, каб глядзець на гэта, як, як гэта правярае? ANDI Пэн: О, так на самой справе PSET, усё, што мы робім тут implementing-- тут, Я пайду па гэтым коратка. Такім чынам, для ўсіх, хто проста атрымаў у раздзеле, вы, хлопцы, пашанцавала. Існуе вельмі мала матэрыялу на самай справе ахопліваюць сёння. Я проста хачу, каб правесці наступны 20 хвілін пераходзячыя Pset дапамогі. Таму што некаторыя карысныя Функцыі, якія дапамогуць вашым жыцці. І, спадзяюся, мы будзем з адсюль у як 20 хвілін. ДОБРА. Так pset7 няправільна. Нават калі мы на тыдзень сем, гэта на самай справе pset6. Я змяніць гэта. Усё, што мы робім у pset6 стварае вэб-сервер. Гэта гучыць вельмі страшна. І асабліва для тых, з вас, хто ўжо паглядзеў на код размеркавання, ёсць шмат кода, шмат кода. Але зусім ОК. Таму серцевины частка на самай справе стварэння сервер выконваецца намі. Усё, што вы на самай справе спытаў зрабіць у гэтым PSET проста зрабіць некаторыя маніпуляцыі з радкамі ў файле ўводу / высновы. Гэта на самай справе як даволі просты. Такім чынам, калі вы спачатку загрузіць that-- якія тут на самой справе ўжо загружаныя PSET і разгледзелі? Добра. Так. Там як 500 радкоў кода што вы збіраецеся быць, як што адбываецца? І гэта цалкам нармальна. Пераканайцеся, што вы глядзіце скразныя. Таму што Дэвід и-- я не ведаю. Я не думаю, што гэта Zamyla, гэта адно. Але я думаю, некаторыя іншыя скразныя даволі карысным у плане проста даючы вам ведаць што адбываецца ўнутры вашага кода. І гэта зусім ОК. Таму што чатыры функцыі, якія вы прапанавана ажыццявіць на самай справе ад нуля да агульнага з рэальнай серверы. Усе яны павінны зрабіць, гэта проста разбор розных радкоў, пошук па струн, каб пераканацца, што робіце тое, што яны павінны рабіць. Так з гэтай мэтай, ёсць некаторыя вельмі, вельмі карысныя функцыі, асабліва для радка маніпуляцыі, што мы ўсе павінны перайсці, што я думаў, што я быць вельмі карысным для вас, хлопцы каб даведацца, перш чым спрабаваць PSET. І ўсе яны ўтрымліваюцца ў вашым string.h бібліятэкі. Там, напэўна, больш карысным Функцыі Я не ўключаныя тут, таму што я альбо ніколі не выкарыстоўваць іх ці можа быць, я проста не ведаў, што яны існуюць. Не саромейцеся, каб зірнуць праз student.h. Таму што гэта будзе шмат функцый, якія вельмі карысныя. Такім чынам, шэсць, што я выкарыстоўваю больш за ўсё ў маёй PSET, калі я рабіў гэта на мінулым тыдні былі strtok, strchr, strrcher, strstr, strcasecmp, і выклік гэтай функцыі. І так апошнія два можа здацца даволі добра знаёмыя большасці з вас. Вул выпадак параўнаць, усё гэта робіць параўнанне струны, каб праверыць іх на роўнасць, у тым ліку справы. І STRCPY проста капіюе адзін радок у буфер. І так гэтыя двое павінны здацца вельмі знаёмыя з вамі, хлопцы ў гэтай кропцы. Таму што мы выкарыстоўвалі іх шмат, асабліва за апошнія psets. Але, магчыма, першыя чатыры Вы не бачылі да гэтага часу. Але я збіраюся проста хадзіць праз іх. Таму што яны збіраюцца зрабіць вашу жыццё сапраўды, сапраўды лёгка for-- ня лёгка, але значна прасцей для гэтай маючай адбыцца PSET. ДОБРА. Так сімвал * strtok, гэта функцыя вызначэнне для гэтай функцыі, якія змяшчаюцца у радку, ч бібліятэкі. Калі вы атрымліваеце ўваход асмаленага * Радок, якая з'яўляецца проста радок, або пастаянная сімвал * deliminator, падзельнік для сцісласці, Усё гэта робіць, тым больш парушэнне Радок у серыі, што мы называем жэтоны, падзеленых пэўным значэннем. Такім чынам, у пэўным сэнсе, калі б я, каб даць Вы section.7.php, гэта радок. Так што было б, калі б я прайсці у гэтай якасці майго вул, мой сімвал * вул калі мой deliminator быў кропка, усё гэта будзе зрабіць, гэта пошук праз радок. І ў першы раз ён бачыць кропку, было б проста вярнуцца да паказальніка да апошняй лексемы знойдзенага у радку перад гэтым. Так яна будзе ісці прама тут. І было б проста даць мне 7.php. І калі б я называю функцыянаваць яшчэ раз, гэта дасць мне толькі .php. І так усё гэта робіць функцыя разбураецца на вялікую радок у невялікіх радкоў у залежнасці на тое, што вы шукаеце. І так, напрыклад, у ваш погляд на функцыі калі вы хочаце, каб паглядзець на тое, што некаторыя сімвалы адбылося або калі пункту адбудзецца або пашырэння адбудзецца, Гэтая функцыя будзе даволі карысна. Так. Не турбуйцеся. Гэта ўсё be-- так, то, што здарылася? АЎДЫТОРЫЯ: Такім чынам, у першым радку, калі б мы выкарыстоўвалі гэты прыклад, што б мы ўставіць у гэта? ANDI Пэн: Так. Вы проста называеце strtok радок коска падзельнік. І радок роўная section.7.php. І тады вы падзельнік можа быць роўны толькі кропка. АЎДЫТОРЫЯ: ОК. ANDI Пэн: Так. Гэтак жа, як, што. Усе гэтыя функцыі з'яўляюцца дастаткова падобна, калі мы ідзем праз іх. Яны проста робяць трохі розныя рэчы. Але ўсе яны збіраюцца зрабіць вашу жыццё нашмат прасцей. Другая функцыя, гэта адзін як супер, супер, супер важна, гэта the-- затрымаць. Ай. Strchr пошукі першым occurrence-- самай справе, так. Strchr гэта функцыя, якая Я вызначана толькі пайшоў. Так ігнараваць тое, што я сказаў, для першай функцыі. Гэта на самай справе называецца strchr. Так што тут будзе здарылася, калі Вам далі радок у паўкокс з, было б проста даць Вы ўсё, што было. Так. Так што думайце пра яго, як вул, якая гэта радок, і CHR, як сімвал. Такім чынам, усе вы спрабуеце зрабіць, гэта пошук для якой знак у межах радка. І так ён шукае першы ўваходжанне сімвала з у радок радок. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Так. І потым, калі ён не знайшоў гэта, ён збіраецца вярнуцца NULL. Так-то, што будзе вельмі карысна для вас, хлопцы робяць у PSET Калі, скажам, вы шукаеце пашырэнне, як .docx для Словы дакумент або .pdf для PDF дакумента, Вы можаце выкарыстоўваць выгляд, каб яна выглядала а ўсё, што пасля гэтага кожны раз, калі вы бачыце кропку, праўда? І так даволі шмат, калі вы запусціць, што з дапамогай функцыі, калі яна вяртае значэнне NULL, то вы ведаеце, што гэта не знайсьці ягонага кропка, якая азначае, што гэта відавочна не з'яўляецца дапушчальным пашырэнне файла. Ці, калі яна вяртае то, то вы ведаеце, ён збіраецца вярнуцца Што б ні на самай справе пасля пашырэння. Так што тыя, з вас, хто быў пачаў шукаць праз пошуку і разабраць, для гэтай функцыі будзе супер карысна. Такім чынам, мы на самай справе адбываецца каб прадэманстраваць з дапамогай гэтага. Чаму не вы, хлопцы, паспрабуйце напісання Функцыя BOOL прысуд сімвал * з, што проста вяртае ісціну, калі ёй гэта Прысуд і хлусня ў адваротным выпадку. Так намякнуць, што вы збіраецеся каб, верагодна, выкарыстоўваць strchr. Ці вы проста пошук у Радок для пэўнага характару. І так у сказе, тое, што аддзяляе прысуд ад не-прапановы, тое, што спецыфіка? АЎДЫТОРЫЯ: Прастора. ANDI Пэн: Прастора, праўда? І так, што мы, верагодна, будзе хачу зрабіць у гэтай функцыі тут? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Мы збіраемся, каб strchr хочаце Радок для з'яўлення прасторы. Таму што, калі яна вяртае нешта, то мы ведаем, што гэта павінна быць прапанову. Гэта азначае, што мы павінны маюць месца ў гэтым радку. Калі няма месца, то мы ведаем, што, эй, думаю, гэта не радок. Гэта, напэўна, проста вельмі доўгае слова. Таму я дам вам хлопцы пару хвілін, каб напісаць гэтую функцыю. Так. АЎДЫТОРЫЯ: Вы атрымліваеце гэты радок ад карыстальніка? ANDI Пэн: Так. Так што гэта проста функцыя. Такім чынам, уявіце, усярэдзіне асноўнай функцыі Вы ўжо have-- давайце тут. ДОБРА. Так што я напісаў гэтую праграму, дзе У мяне ёсць асноўнай функцыі, дзе Я толькі што стварылі два радкі. Першы Прывітанне, мяне завуць гэта Andi-- ясна, прысуд. Мой другі проста Эндзі, відавочна не прысуд. І так я бягу і тых, струны праз гэтую функцыю. Я хачу, каб вы, хлопцы, каб напісаць халодны прысуд. І я захоўваць гэтыя значэння, а потым проста іх друку. Так што падумайце, што карыстальнік збіраецца перайсці ў радок. І тады вы будзеце па сутнасці высветліць, калі гэта прапанова ці не і вярнуцца сапраўдным або ілжывым, адпаведна. Калі вы, хлопцы, жадаеце, каб даць вялікія пальцы або галавы ўверх, кіўком галавы, хто-небудзь гатовы пачаць гэта, што было б добра. Можа быць, як яшчэ 30 секунд? Добра. Давайце паглядзім, калі вы можаце паспрабаваць пісаць гэтую функцыю. Так псеўда coding-- Я проста хачу, каб выгляд прайсці праз гэта прама цяпер. Даволі шмат, мы ведаем, што функцыя, якую мы павінны выкарыстоўваць. Мы збіраемся называць гэтую функцыю на наша радок і пошук прасторы. Калі яна вяртае нешта, то мы павінны ведаю, што, відавочна, гэта прысуд. Таму што прабелы. Тады мы ідзем, каб вярнуцца праўда. У адваротным выпадку, мы збіраемся вярнуцца ілжывым. Хто-небудзь хоча, каб даць мне першая лінія кода што мы на самай справе адбываецца выкарыстоўваць, каб напісаць гэта? Гэта на самай справе цяжкая радок кода, а таксама. Так. АЎДЫТОРЫЯ: Калі strtok S-- ANDI Пэн: Проста strchr. АЎДЫТОРЫЯ: [Рэле ГАЛАСЫ] прастора не роўны нулю. ANDI Пэн: Прахладны. Цалкам дакладна. Усе разумеюць, што першую лінію? Мы збіраемся называць strstr, якая з'яўляецца функцыяй, што шукае радок з для паўкокс прасторы. І калі ён знаходзіць яго, ён збіраецца вяртае паказальнік на, дзе гэта. Калі ён не знойдзе яго, ён збіраецца вярнуцца NULL. Так што, калі яна вяртае нічога, акрамя NULL, то мы ведаем, што знайшоў месца. Ці мае гэта сэнс? Прахладны. Добра. Так што, калі мы ведаем, што гэта знайшоў прастору, тое, што мы хочам зрабіць? АЎДЫТОРЫЯ: Вярнуцца праўда. ANDI Пэн: Так. Вярнуцца праўда. А потым, хто-небудзь хоча скончыць функцыю для мяне? Так. У адваротным выпадку, проста так. І паспрабуйце скампіляваць гэты. Так. Такім чынам, як вы, хлопцы, можаце бачыць з выхады, памятаеце Booleans ў C заўсёды выяўляюцца ў двайковай сістэме. 1 дакладна. 0 фальшыва. Калі б мы былі запусціць гэты функцыя на радок, якая адной з'яўляецца Прывітанне, Andi-- мяне завуць Відавочна, sentence-- вынік раздрукаваць 1 гэта дакладна. Другі, які з'яўляецца толькі слова, вынік друкуецца 0, што няправільна. Усё ясна, выгляд, як гэтая функцыя была напісана? Так. АЎДЫТОРЫЯ: Можа мы таксама робім, а не не роўная няма, роўна роўны 0, так, што ён роўны? ANDI PENG: Няма Таму strchr функцыя. Я збіраюся вярнуцца да гэтай. Так што тып якое вяртаецца нашай функцыі strchr? АЎДЫТОРЫЯ: О, добра. Або NULL. ANDI Пэн: Так. Гэта сімвал *, які кажа мне, што ўсё, што гэтая функцыя будзе вяртаць, гэта будзе паказальнік. Альбо паказальнік будзе паказваючы, дзе ён яго знайшоў, ці гэта збіраецца вярнуцца паказальнік на NULL. У любым акалічнасці, ён збіраецца вярнуць паказальнік на нешта. І таму, калі вы былі прыраўнаваць гэта роўна, роўна, 0, Вы збіраецеся атрымаць памылку кампіляцыі. Таму што гэта будзе вяртаць паказальнік. І вы збіраецеся, каб паспрабаваць параўнаць паказальнік на цэлы лік. І кампутар не спадабаецца гэта. Так, менавіта так. Прахладны. Усё добра? А па-другое, мы збіраемся пайсці па функцыі называецца strstr. Не турбуйцеся, калі гэтыя функцыі блытаю. Яны блытаеш мяне. Такім чынам, вы, хлопцы, маглі бачыць, усе яны гучаць амаль гэтак жа. Проста, калі вы заблыталіся, падцягнуць string.h бібліятэку. І вы, хлопцы, можаце сартаваць праз якія, які. Так strstr, усё, што робіць пошук радок для ўсёй іншай радка. Дык дзе strchr усяго пошукі для аднаго знака, strstr пошукі ўсёй радка. Так што я хацеў паглядзець, я не ведаеце, Прывітанне, мяне завуць Эндзі. І імя майго лепшага сябра таксама Эндзі. Калі б я хацеў, каб шукаць у гэтым прысуд для ўсёй словам Andi, мой іголкі б усё, што вы шукаеце. І ваш стозе сена б там ні было Вы шукаеце для яго ў. Так што калі вы шукаеце канкрэтнае слова ў сказе, што слова будзе ваш іголку. І тады само прапанову будзе ваш стог. І так ён проста шукае першае з'яўленне струннага іголкі у радку стозе сена. Яна вяртае паказальнік на першае ўваходжанне. Акрамя гэтага, памятаеце, у гэтым выпадку, гэта Першае з'яўленне ўсёй радкі што вы шукаеце для, а не проста сімвал. І такім чынам, гэта амаль Тое ж самае, што і функцыя мы толькі што зрабілі, толькі з трохі больш спецыфіка. Таму што вы шукаеце больш, чым проста адзін знак. І выкарыстанне сапраўды такі ж як той, які мы толькі што зрабілі. Усё ў парадку з гэтым? ДОБРА. Апошняя, якую мы збіраемся пайсці больш гэта strrchr, што не блытаць з strstr або strchr. strrchr мае дадатковую г у там. Будзьце асцярожныя, калі вы друкуеце. Вы можаце знайсці сабе ў тым ліку дадатковая г ці не уключаючы г, а затым ваша функцыя атрымліваецца не збіраецца працаваць. І вы будзеце ў замяшанні. Будзьце асцярожныя, што вы напісанне усе гэтыя функцыі правільна. Так strrchr з'яўляецца дакладным Тое ж самае, як strchr за выключэннем таго, ён шукае не першы ўваходжанне названага сімвала, а апошняе з'яўленне. І так, у гэтым сэнсе, гэта амаль дакладна такі ж. Але замест перамяшчэння наперад у радку, Вы збіраецеся рухацца таму ў выглядзе радка. Дакладнае ж самае, вы проста пошук у іншым парадку. І так гэта можа быць супер, супер карысна для вашага пошуку Функцыя, першы Функцыя на PSET. Давайце прадставім, што нам трэба напісаць функцыя пустэч пашырэння, у якім мы прайсці пастаянным сЬаг імя * файл, проста радок, імя файла, які прымае ў гэтым імёнах і выводзіць з пашырэння гэтага файла. Так, напрыклад, калі б я перайсці ў радок pset7.zip, гэта будзе проста раздрукаваць пашырэнне, якое .zip. І гэта будзе працаваць для якой-небудзь пашырэння, .docx для Word або .pdf для PDF файл або .html для HTML файла. Даволі шмат, напісаць функцыя, якая можа зрабіць гэта. Я на самой справе адбываецца ў перайсці да IDE. Гэта не load-- мы ідзем. Такім чынам, усё, што я зрабіў тут стварыў сімвал *, першы струнны, называецца pset7.zip. Я збіраюся павялічыць. Я стварыў другога радка называецца finalpaper.docx. І напішыце мне, што, калі функцыя называецца збіраецца проста раздрукаваць пашырэння імёнаў файлаў. Можа быць, узяць пару хвілін, каб думаць, аб тым, як вы збіраецеся гэта зрабіць. Трохі больш складаным чым апошні, але выкарыстанне амаль сапраўды гэтак жа. Так. Так што пішыце пашырэнне функцыю называюць што, калі я даю вам імя файла, калі б я быў, каб даць вам pset7.zip-- I Вы хочаце, каб раздрукаваць толькі .zip. Калі я даю вам падабаецца finalpaper.docx, проста раздрукаваць .docx, толькі пашырэнне файла які. Гэта на самай справе толькі займае два радкі кода. Таму паспрабуйце, каб убачыць, калі вы можа, можа быць, зрабіць гэта ў гэтым. На самай справе, гэта толькі займае адзін радок кода. Але дзве лініі, верагодна, больш стандартнага. Якую функцыю мы, верагодна, захоча патэлефанаваць? АЎДЫТОРЫЯ: strrchr. ANDI Пэн: strrchr, права. Таму што мы шукаем ад правай злева. Я не даць вам, хлопцы, прыклад, як гэта, але калі я даў вам прыклад, як у www.apple.com і я проста хацеў .com, гэта было б прыкладам, дзе Вы хочаце, каб выклікаць апошні асобнік перыяду, а не першы, ці не так? Калі б вы былі выкліку strchr, яго б ужо даў вам Apple.com. Калі вы назвалі strrchr, яго даў бы вам .com. І так што будзьце асцярожныя, на якім ways-- ў маім прыкладзе, Вы маглі б, верагодна, маглі б толькі што напісаў яго, выкарыстоўваючы strchr, так як ёсць толькі адна кропка. Але ў іншых выпадках, якія не могуць быць так. І так заўсёды імкнуся праектаваць код, так што that-- так? АЎДЫТОРЫЯ: Такім чынам, у Напрыклад, вы толькі што сказалі ,, калі вы strrchr гэта было б даць вам .com ці проста прыйсці? ANDI Пэн: Гэта дасць вам .com. АЎДЫТОРЫЯ: ОК. ANDI Пэн: Так. Гэта паказвае, дзе ён яе знайшоў. Так. 30 секунд, можа быць? Так. Усе добра ці, можа быць, крыху больш часу? Паказаць рук? Паказаць кіраўнікоў? Прахладны. Хто-небудзь хоча даць мне першы радок кода для гэтай праграмы? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Такім чынам, перш за ўсё, давайце, можа быць, разарваць гэты ўніз. Так што тып якое вяртаецца strrchr? Давайце вернемся. strrchr, што тып якое вяртаецца? АЎДЫТОРЫЯ: Чар * ANDI Пэн: Гэта сімвал *, праўда? Гэта азначае, што вы, верагодна, хочуць стварыць яшчэ адзін знак * у выглядзе крамы, калі гэта вярнуцца да, ці не так? Таму што, калі вы тэлефануеце функцыя strrchr, ён збіраецца даць вам паказальнік на там, дзе ён знайшоў, што апошні перыяд, дакладна? Але вы будзеце жадаць, каб захоўваць што дзесьці, праўда? І так як мы код гэта ў нашай праграме? АЎДЫТОРЫЯ: Вы робіце паўкокс * [неразборліва]. ANDI Пэн: Так. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: strrchr. Так. О, прапусціў R ёсць. АЎДЫТОРЫЯ: Імя файла [неразборліва]. Што гэта? О, гэта проста S. ANDI Пэн: О, гэта проста S. Так, прабачце. Маё дрэннае. Прыклады не супадаюць. АЎДЫТОРЫЯ: А потым кропка. ANDI Пэн: Так. Будзьце асцярожныя, калі вы, хлопцы, are-- тут, дазвольце мне павялічыць. Там мы ідзем. Будзьце асцярожныя, калі вы, хлопцы, набіраеце, асабліва калі вы робіце толькі сімвал. Гэта сапраўды лёгка выпадкова толькі зрабіць падвойныя двукоссі, а не адзін. Гэта не будзе працаваць. Ваш кампілятар будзе скардзіцца. І ваша функцыя з'яўляецца проста не будзе працаваць. І таму будзьце асцярожныя пры вы робіце рэчы з сімвалаў, што гэта адзінкавыя двукоссі. І так робіць гэтую лінію Код сэнсу для ўсіх? Мы ствараем сімвал * паказальнік. Таму strrchr вяртаецца нешта тыпу паказальнік. І такім чынам мы збіраемся называць strchr на S, які з'яўляецца радком, файл імя, што мы перадаем ст. І мы шукаем апошні Асобнік перыяд, які толькі адзінарныя двукоссі кропка адзінарныя двукоссі. Так. АЎДЫТОРЫЯ: Калі мы выкарыстоўваем падвойныя двукоссі і калі мы выкарыстоўваем адзінарныя двукоссі? ANDI Пэн: Так. Так двайныя двукоссі заўсёды, калі вам ёсць радок больш аднаго. Так што, калі вы робіце strstr, які з'яўляецца той, які вам пошук радок для радкі, вам будзе праходзіць у падвойныя двукоссі. Але ў любы час, гэта проста адзін знак, Вы хочаце, каб зрабіць адзінкавыя двукоссі. Гэта добрая рэч, каб трымаць у розуме. Так што цяпер у нас ёсць нашы паказальнік, што мы з ім рабіць? Я прашу вас, хлопцы, друк яго, праўда? Так [неразборліва], Вы хочаце, каб даць мне радкі кода? АЎДЫТОРЫЯ: printf-- ANDI Пэн: Так. АЎДЫТОРЫЯ: -Вы павінны трымальнік месца. ANDI Пэн: Так. АЎДЫТОРЫЯ: Надрукаваць трымальнік месца. Я не ведаю, што месца Трымальнік але сэнсу. ДОБРА. Давайце прапусціць што цяпер, то. АЎДЫТОРЫЯ: А потым comma-- ANDI Пэн: Паказальнік, праўда? АЎДЫТОРЫЯ: Паказальнік, так. ANDI Пэн: Так свайго роду пытанне з падвохам, мае справу з паказальнікамі і радкамі што мы накшталт казалі пра ўжо. Якія месцы трымальніка зрабіць мы трэба для паказальніка для паўкокс *? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Так. Гэта прасцей, чым вы, хлопцы, думаю, што гэта. АЎДЫТОРЫЯ: String? ANDI Пэн: Гэта проста радок, дакладна. Таму што памятаю радкі самай справе не існуе. Паўкокс * з'яўляецца дакладным Тое ж самае ў выглядзе радка. І так на самой справе гэта S з'яўляецца тое, што павінны былі выкарыстоўвацца ўсе разам. ДОБРА. Давайце паглядзім, калі мы можам паспрабаваць запусціць гэты. Давайце зробім пашырэнне вытворчасці. Прахладны. Вы, хлопцы, паглядзець, як я прайшоў у psset7.zip і finalpaper.docx, і ён проста друкуе .zip-і .docx? Зрабіце пачуццё? ОК Таму я думаю, у вашым Паглядзіце Функцыя ў PSET вы знаходзіцеся будуць пытацца, калі Радок мае пэўную канцоўку, Вы павінны даць пэўны код памылкі. І так гэта будзе даволі жудасна. Таму што, калі вы можаце высветліць з таго, што пашырэнне, Затым вы можаце параўнаць, што пашырэнне, каб убачыць, калі ён супадае з вызначаным пашырэннем. І тады вы можаце вярнуцца паведамленне пра памылку, праўда? Так. АЎДЫТОРЫЯ: Такім чынам, мы не павінны дадаць 1 або што-небудзь? Паказальнік пойдзе the-- ANDI Пэн: Не. АЎДЫТОРЫЯ: --point пасля яго. ANDI Пэн: Так. Гэта паказвае дакладна на дзе з'яўленне было. Так, напрыклад, тут, мы шукаючы перыяд. Так што гэта збіраецца вярнуцца паказальнік на гэты перыяд. І тады гэта будзе друкаваць з пачынаючы перыяд. Такім чынам, вы не павінны дадаць 1. Хоць, гэта цалкам нармальна, каб, калі вы калі-небудзь не ўпэўненыя, проста выгляд з праверыць яго самастойна. Пабудаваць прыклад праграмы. Праверце гэта самі і ўбачыць, дзе гэта друк. Гэта таксама не дрэнны спосаб зрабіць гэта. Прахладны. І гэта ў значнай ступені ўсё Я быў для вас, хлопцы сёння. Сёння мы зрабілі шмат Pset рэчы. Таму, калі ёсць сумневы, як Я сказаў, заўсёды шукаць string.h бібліятэка для гэтага PSET. Там будзе шмат функцыя ў там, што можа быць карысна. Некаторыя з іх не можа быць карысным. Я не ведаю. Уэйд праз яго, ёсць цэлая куча з іх. strstr, strchr, strrchr з'яўляюцца супер, супер карысна, а таксама у strcpys і strcasecmps што мы ўжо выкарыстоўвалі. Гэта проста шмат важдацца з струны, вызначэння, калі яны роўныя, атрымліваць матэрыял з радкоў і будучы ў стане правільна адкрываць файлы. Гэта шмат файлаў I / O. PSET на самай справе не так ужо і дрэнна. Вы збіраецеся ўзяць на гэта глядзець, спампаваць яго, і ўбачыць цэлую кучу кода. Не турбуйцеся, код, які вы на самай справе пісаць гэта зусім не дрэнна. Калі хто мае праблемы з іх Сервер, прыходзьце да мяне пасля падзелу. Прашу прабачэння яшчэ раз, што не чаго цукеркі Дзень усіх Святых. Я не ведаю, што са мной здарылася. Але ў нас будзе двайны цукеркі ў наступны раз. І поспехі ў вашым PSET на гэтым тыдні. Так.