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 до 3: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 на этой неделе. Ага.