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 на цьому тижні. Так.