1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [За възпроизвеждане на музика] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID Malan: Това е CS50, и Това е началото на седмица осем. 5 00:00:13,350 --> 00:00:17,510 И ние сме толкова развълнувани да приветстваме обратно, голяма изненада, собствена Ramon CS50 е 6 00:00:17,510 --> 00:00:22,160 Галван, изгряваща старши, който е бил прекарва последните няколко месеца 7 00:00:22,160 --> 00:00:26,190 От юли в LA, в Холивуд, буквално работи по чисто нов телевизор 8 00:00:26,190 --> 00:00:31,930 шоу, наречено Colony, създателят на които е всъщност самият той Harvard стипца. 9 00:00:31,930 --> 00:00:36,610 И така, ние сме много развълнувани да видим това дебют в мрежата САЩ през януари тази година. 10 00:00:36,610 --> 00:00:40,370 Така че очаквайте, че, както и за повече Ramon за идните седмици. 11 00:00:40,370 --> 00:00:42,550 >> Знайте сега, че краят е близо. 12 00:00:42,550 --> 00:00:47,400 И какво означава това е, че там не е всичко, което е останало много от CS50, тъжно да се каже. 13 00:00:47,400 --> 00:00:49,400 Ние имаме само три проблем набори left-- има 14 00:00:49,400 --> 00:00:52,510 проблем зададете six-- което е в ръцете си сега, или скоро ще бъдат, 15 00:00:52,510 --> 00:00:56,080 поради по-късно тази week-- има за цел да се преодолее нашите светове на командния ред, където 16 00:00:56,080 --> 00:00:59,450 ние сме прекарали по-голямата част от времето си, използвайки C, и в света на уеб програмиране. 17 00:00:59,450 --> 00:01:02,350 Е, вие ще видите много идеи назаем от работата на командния ред, 18 00:01:02,350 --> 00:01:04,560 но също така много нови и интересни идеи 19 00:01:04,560 --> 00:01:07,929 които също ще бъде уместен за мобилни приложения и технологии, за 20 00:01:07,929 --> 00:01:10,470 по-общо, с която можете момчета са всички познати днес 21 00:01:10,470 --> 00:01:12,090 на лаптопи и телефони и други подобни. 22 00:01:12,090 --> 00:01:15,220 >> Така че не ще приложат уеб страница или уеб сайт 23 00:01:15,220 --> 00:01:17,620 само по себе си, но действителен уеб сървър. 24 00:01:17,620 --> 00:01:21,590 Ще напиша останалата част на уеб сървър написан на C, чиято цел в живота 25 00:01:21,590 --> 00:01:25,410 е да приема HTTP заявки, тези виртуални пликове пазим говорим 26 00:01:25,410 --> 00:01:29,780 за това и всъщност отговори или с някои статични content-- като точка HTML 27 00:01:29,780 --> 00:01:32,310 файл, или една точка JPEG или всеки друг брой файлове, 28 00:01:32,310 --> 00:01:37,070 или дори файл PHP с което вашия уеб сървър ще се тълкува, че PHP 29 00:01:37,070 --> 00:01:38,332 код и изплюе резултатите. 30 00:01:38,332 --> 00:01:40,540 Сега, ние сме ви предоставили доста рамка 31 00:01:40,540 --> 00:01:43,100 за наистина it-- дистрибуция код за проблем 32 00:01:43,100 --> 00:01:47,496 определя шест е с дължина над 1000 линии, а много от които е коментари, за да бъдат fair-- 33 00:01:47,496 --> 00:01:49,370 но това е наистина означаваше да бъде възможност 34 00:01:49,370 --> 00:01:52,570 да си цапаме ръцете гмуркане в доста голям проект 35 00:01:52,570 --> 00:01:55,570 че ние сме много специално издълбани парчета за вас, 36 00:01:55,570 --> 00:01:59,046 така че наистина, когато излезете CS50 и влиза в реалния свят на програмиране 37 00:01:59,046 --> 00:02:00,920 и искам да се бъркам в произволен брой проекти, 38 00:02:00,920 --> 00:02:03,253 вие ще имате много по-голям комфорт свалянето някакъв източник 39 00:02:03,253 --> 00:02:05,020 код, някои отворен код проектира в интернет, 40 00:02:05,020 --> 00:02:08,174 и гмуркане в и вземане промени, които ви е удобно. 41 00:02:08,174 --> 00:02:11,340 Проблем определя седем ще бъде около да създавате свои собствени уеб-базирано приложение 42 00:02:11,340 --> 00:02:14,140 който взема динамичен вход и дава динамичен продукцията под формата 43 00:02:14,140 --> 00:02:16,920 на etrade.com-подобен сайт. 44 00:02:16,920 --> 00:02:20,800 И проблем зададете осем ще се фокусира върху все още друг език, известен като JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> В същото време, на финала Проектът е на хоризонта. 46 00:02:24,170 --> 00:02:26,800 Така нареченото предварително предложението се дължи на една седмица от днес. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- на спецификацията, който е на website-- CS50 е 48 00:02:29,930 --> 00:02:33,260 е доста случайни възможност за можете да изпратите един доста кратък и ясен имейл 49 00:02:33,260 --> 00:02:35,170 на учението колега само за да го запознае 50 00:02:35,170 --> 00:02:38,250 или й на какво си мислиш, да него или нея се използва като трибуна. 51 00:02:38,250 --> 00:02:40,980 И да има здрав разум check-- дали сте мислене 52 00:02:40,980 --> 00:02:43,210 около отхапваща твърде много или може би твърде малко, 53 00:02:43,210 --> 00:02:46,480 или може би имате каквато и никаква идея и искате да проведете разговор. 54 00:02:46,480 --> 00:02:48,480 >> След това е предложение, и доклад за състоянието, 55 00:02:48,480 --> 00:02:51,860 т.нар CS50 Hackathon тук Cambridge за Харвард и Йейл студенти 56 00:02:51,860 --> 00:02:52,362 приличат. 57 00:02:52,362 --> 00:02:54,320 Крайният проекта изпълнението е след това право. 58 00:02:54,320 --> 00:02:59,290 И тогава един CS50 справедлива тук, в Кеймбридж, както и друга в Ню Хейвън. 59 00:02:59,290 --> 00:03:02,500 Така че предложението, да погледнем уебсайта за тези подробности. 60 00:03:02,500 --> 00:03:06,530 >> Но по-вълнуващо, също е възможност да се изцапаш ръцете, 61 00:03:06,530 --> 00:03:09,350 и вашите умове, отворени за цяло куп теми и инструменти 62 00:03:09,350 --> 00:03:12,920 и техники, които са спомагателни към основната учебна програма на курса, 63 00:03:12,920 --> 00:03:14,810 но все пак свързана. 64 00:03:14,810 --> 00:03:18,400 И също така прекрасен трамплин към прави наистина готино окончателните проекти, които 65 00:03:18,400 --> 00:03:22,020 надхвърлят материал ние сме обхванати официално в проблем определя или в лекция. 66 00:03:22,020 --> 00:03:24,446 Така че отидете на уеб сайта CS50 за целият списък на семинари. 67 00:03:24,446 --> 00:03:26,070 Ако не сте регистрирали все още, това е добре. 68 00:03:26,070 --> 00:03:29,860 Давай напред и да се запишете още и ние ще последващи действия, с живо линк за стрийминг, 69 00:03:29,860 --> 00:03:31,844 деня и часа, е на сайта. 70 00:03:31,844 --> 00:03:33,760 И всичко ще бъде записани и пуснати онлайн 71 00:03:33,760 --> 00:03:35,800 ако не може да направи определени дни и часове. 72 00:03:35,800 --> 00:03:39,380 >> Що се отнася до това, което предстои thereafter-- добре, Разбира се, там е CS50 Hackathon. 73 00:03:39,380 --> 00:03:43,560 Тази снимка, изземване, от нула седмица взето около 4 AM една вечер през последните години. 74 00:03:43,560 --> 00:03:46,900 Панаирът на CS50, което отново ще се проведе в двата града. 75 00:03:46,900 --> 00:03:49,760 И след това, само за да се устроя семена, въпреки че ние все още 76 00:03:49,760 --> 00:03:54,080 има един месец плюс ляво на семестъра, ако искате да се присъедините към собственото преподаване на CS50 77 00:03:54,080 --> 00:03:56,770 персонала, и искате да започнете мислене за да стане CA, 78 00:03:56,770 --> 00:03:59,550 или преподаване колеги, знам, че ние ще започнем да говорим повече за това 79 00:03:59,550 --> 00:04:00,630 по-късно този семестър. 80 00:04:00,630 --> 00:04:03,470 Но тук е на снимката повечето от тазгодишното издание на отбора. 81 00:04:03,470 --> 00:04:06,950 >> И така, PHP-- и аз бях толкова тъжен миналата седмица, че [? Allyse?] Любезно 82 00:04:06,950 --> 00:04:09,370 Отидох в усилията за получаване на нас тези прекрасни подпори 83 00:04:09,370 --> 00:04:11,720 че аз не се окажете с помощта, така че наистина просто изглеждаше доста глупаво 84 00:04:11,720 --> 00:04:15,160 че имахме една лопата седя тук всички ден миналата сряда, и малко лъжица. 85 00:04:15,160 --> 00:04:17,709 Но това беше моят метафоричен начин да се опитва да рисува 86 00:04:17,709 --> 00:04:21,600 на снимката, защо ние сме в преход от C до език като PHP. 87 00:04:21,600 --> 00:04:25,480 И същото може да се каже за всеки брой languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 или букети от others-- но докато в C, например, за написването на програмата в C 89 00:04:31,270 --> 00:04:34,050 може обикновено да бъде като като лъжица като този 90 00:04:34,050 --> 00:04:36,770 и изкопаване на дупка в земята, в пясъка или калта. 91 00:04:36,770 --> 00:04:39,770 PHP позволява да направите много по- по-големи хапки от проблема, 92 00:04:39,770 --> 00:04:42,842 писането далеч по-малко код с помощта на много по-малък инструмент, 93 00:04:42,842 --> 00:04:45,050 защото има толкова много по- функционалност сглобени инча 94 00:04:45,050 --> 00:04:47,633 >> Сега, ако бяхме наистина драматична, щяхме да имаме нещо да лопата 95 00:04:47,633 --> 00:04:48,760 тук, но така да бъде. 96 00:04:48,760 --> 00:04:51,370 Междувременно, от друга метафора измислихме 97 00:04:51,370 --> 00:04:53,770 е, разбира се, бихте могли да използва нещо като гаечен ключ 98 00:04:53,770 --> 00:04:56,610 да чука в нещо като пирон. 99 00:04:56,610 --> 00:04:58,980 Но, разбира се, правото инструмент за използване върви 100 00:04:58,980 --> 00:05:01,360 да бъде не толкова език, наречен C-- 101 00:05:01,360 --> 00:05:03,590 и сега аз просто раздразнен [? Sanders,?], Вероятно, 102 00:05:03,590 --> 00:05:07,890 ние ще предупредим later-- така правилният инструмент да се използва често 103 00:05:07,890 --> 00:05:09,640 Няма да бъде този инструмент най-ниската степен. 104 00:05:09,640 --> 00:05:13,720 И наистина, C не е език, който повечето от вас са някога ще се използват, 105 00:05:13,720 --> 00:05:15,590 или задължително трябва да използвате отново. 106 00:05:15,590 --> 00:05:18,350 >> И в действителност, малко secret-- единственият път 107 00:05:18,350 --> 00:05:23,160 Аз използвам C себе си е доста много между Септември и декември на всяка есен 108 00:05:23,160 --> 00:05:23,870 семестър. 109 00:05:23,870 --> 00:05:25,790 И това е, защото ние я използват като възможност 110 00:05:25,790 --> 00:05:27,852 да преподават основите на програмиране, 111 00:05:27,852 --> 00:05:29,810 а с него и компютъра научни основи, данни 112 00:05:29,810 --> 00:05:32,435 конструкции, алгоритми и like-- но много бързо ще ви 113 00:05:32,435 --> 00:05:35,010 виж сега, че синтаксисът и идеите залегнали C 114 00:05:35,010 --> 00:05:37,530 са толкова прекрасно прехвърля на по-модерно 115 00:05:37,530 --> 00:05:41,130 високи нива езици, като PHP и Python и Perl и Java 116 00:05:41,130 --> 00:05:46,750 и Objective-C-- всъщност, не толкова Objective-C-- но Swift, тези по-нови 117 00:05:46,750 --> 00:05:50,010 езици, че много от вас ще След това се бъркам с вас крайния проект. 118 00:05:50,010 --> 00:05:55,070 >> Така че, без повече приказки, нека действително използвате PHP за решаване на някои проблеми. 119 00:05:55,070 --> 00:06:00,230 Спомнете си, че в началото на деня, последно седмица, ние просто използва CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 написахме финичък малка програма че току-що каза, "Здравей, свят". 121 00:06:02,990 --> 00:06:05,680 И тогава аз го записва в файл, наречен hello.php. 122 00:06:05,680 --> 00:06:07,280 И тогава аз се завтече тази команда. 123 00:06:07,280 --> 00:06:08,080 >> И защо? 124 00:06:08,080 --> 00:06:09,900 На английски език, какво става тук? 125 00:06:09,900 --> 00:06:12,760 Какво правех, когато Тичах тази команда? 126 00:06:12,760 --> 00:06:13,405 >> Да? 127 00:06:13,405 --> 00:06:16,572 >> АУДИТОРИЯ: Има някаква функция PHP гласи, че това, което се разбира, че in--. 128 00:06:16,572 --> 00:06:19,696 DAVID Malan: Добре, има някаква функция PHP-- и ми позволи да бъде по-конкретен, 129 00:06:19,696 --> 00:06:21,810 има една програма, наречена PHP, а.к.а. 130 00:06:21,810 --> 00:06:25,872 Преводач, който разбира съдържанието на hello.php, 131 00:06:25,872 --> 00:06:27,830 и да го интерпретира отгоре отдолу, отляво надясно, 132 00:06:27,830 --> 00:06:29,590 и прави това, което казват тези команди. 133 00:06:29,590 --> 00:06:33,320 Командите в hello.php, разбира се, е просто източник code-- функции 134 00:06:33,320 --> 00:06:35,750 и променливи и примки и подобни, които самите ние 135 00:06:35,750 --> 00:06:37,460 са започнах да пиша в PHP. 136 00:06:37,460 --> 00:06:40,240 >> Но за разлика от C, което е компилиран език, 137 00:06:40,240 --> 00:06:42,810 PHP можете просто да го напиша, и да го ползвате. 138 00:06:42,810 --> 00:06:46,420 Можете да пропуснете, че посредник стъпка от го превръщат в нули и единици, 139 00:06:46,420 --> 00:06:47,790 и след това да го използвате. 140 00:06:47,790 --> 00:06:50,510 И така, какво е наобратно на това? 141 00:06:50,510 --> 00:06:52,690 Защо сме прескочите стъпка? 142 00:06:52,690 --> 00:06:55,238 Защо по-модерни езици са склонни да пропуснете тази стъпка? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Каква беше ползата? 145 00:07:01,220 --> 00:07:02,080 >> Или просто интуитивно? 146 00:07:02,080 --> 00:07:04,200 Дори Не сме писмено много PHP преди, 147 00:07:04,200 --> 00:07:07,210 това, което е от полза, за да не съставяне на кода си мислиш? 148 00:07:07,210 --> 00:07:08,520 Не? 149 00:07:08,520 --> 00:07:09,610 Не извърши? 150 00:07:09,610 --> 00:07:11,350 Надраскване главата си? 151 00:07:11,350 --> 00:07:12,614 Да. 152 00:07:12,614 --> 00:07:13,600 >> АУДИТОРИЯ: Повече динамична. 153 00:07:13,600 --> 00:07:14,683 >> DAVID Malan: Повече динамичен? 154 00:07:14,683 --> 00:07:16,032 За какво говориш? 155 00:07:16,032 --> 00:07:17,000 >> АУДИТОРИЯ: [недоловим] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID Malan: OK, добре, така че в зависимост от входа, 158 00:07:22,390 --> 00:07:23,470 не е нужно да го компилирате всеки път. 159 00:07:23,470 --> 00:07:24,990 И това наистина е толкова просто, колкото това, което that-- 160 00:07:24,990 --> 00:07:26,990 е точката на продължаващото за съставяне на кода си? 161 00:07:26,990 --> 00:07:29,480 Това е само една стъпка, която е making-- това е изискваща, 162 00:07:29,480 --> 00:07:31,900 през последните няколко седмици, два пъти повече стъпки 163 00:07:31,900 --> 00:07:33,820 като само с тичане програма. 164 00:07:33,820 --> 00:07:36,940 Той е бил полезен в виждайки, че сте виж някои съобщения за грешки и т.н., 165 00:07:36,940 --> 00:07:38,720 но това е все още само едно досадно стъпка. 166 00:07:38,720 --> 00:07:41,810 >> И така програмисти реализираните с течение на времето, защо да не направим ние 167 00:07:41,810 --> 00:07:45,327 започнете да пишете езици, които не го правят нужда от това доста механично стъпало, 168 00:07:45,327 --> 00:07:47,160 така че може просто да напише кода си и да го ползвате. 169 00:07:47,160 --> 00:07:48,920 Но каква е цената че видяхме ние платихме 170 00:07:48,920 --> 00:07:50,910 миналата седмица, с един конкретен пример? 171 00:07:50,910 --> 00:07:51,650 Да? 172 00:07:51,650 --> 00:07:52,370 >> Speed. 173 00:07:52,370 --> 00:07:54,690 Така [? какво е?] преводачи малко по-бавно, 174 00:07:54,690 --> 00:07:57,330 в които са нули и единици приятно и бързо за компютър 175 00:07:57,330 --> 00:08:00,070 да се разбере, понеже Intel CPU, или каквото и да е, 176 00:08:00,070 --> 00:08:03,070 само разбира какво се случва на тези модели на битове. 177 00:08:03,070 --> 00:08:05,370 Като има предвид, преводач е програма, която наистина 178 00:08:05,370 --> 00:08:07,980 трябва да прочете източник Ascii код, който си написал, 179 00:08:07,980 --> 00:08:12,700 и да го конвертирате, така да се каже, или разбера как го преобразува в крайна сметка 180 00:08:12,700 --> 00:08:13,525 да нули и единици. 181 00:08:13,525 --> 00:08:15,650 Така че просто отнема малко малко на хитовия спектакъл. 182 00:08:15,650 --> 00:08:16,858 Така че това е малко на компромис. 183 00:08:16,858 --> 00:08:21,570 Сега, ако правим това тук, нека отидете напред и да направим един пример, както следва. 184 00:08:21,570 --> 00:08:26,610 Ако отида в тук, нов файл, аз ще съм да запазите това отново е hello.php. 185 00:08:26,610 --> 00:08:31,450 И сега аз ще отида напред и да каже, "печат Hello World" - 186 00:08:31,450 --> 00:08:35,130 и припомни, че мога да използвам за печат, аз не правя трябва да се използва за печат-F. И сега тук, 187 00:08:35,130 --> 00:08:42,039 ако го направя PHP на hello.php, huh-- I не изглежда да са го тълкува. 188 00:08:42,039 --> 00:08:43,412 Какво съм направил погрешно? 189 00:08:43,412 --> 00:08:44,710 >> АУДИТОРИЯ: Ъгловите гривните. 190 00:08:44,710 --> 00:08:47,015 >> DAVID Malan: Да, имате нужда този ъгъл скоба до върха. 191 00:08:47,015 --> 00:08:49,390 Така че това е вид досадно, но свикнете с него бързо. 192 00:08:49,390 --> 00:08:53,500 Ако имам да пиша PHP код, I по принцип трябва да кажете на програмата, 193 00:08:53,500 --> 00:08:56,950 или кажете на преводача, хей PHP, тук идва някои PHP код. 194 00:08:56,950 --> 00:09:00,440 И тогава за добра мярка, бих затворите това не с това, а по-скоро 195 00:09:00,440 --> 00:09:03,740 с ъгъл само въпросителен знак скоба, така че сега тук, 196 00:09:03,740 --> 00:09:06,840 ако аз тичам това отново, сега Аз получите желания резултат. 197 00:09:06,840 --> 00:09:09,820 >> Сега нека да направим лека оптимизация, Просто така, че сте го виждали преди. 198 00:09:09,820 --> 00:09:14,040 Това е вид досадно, че аз трябва да тичам PHP пространство hello.php, 199 00:09:14,040 --> 00:09:16,060 защото в миналото I може просто да напишете дот наклонена черта 200 00:09:16,060 --> 00:09:17,560 име на програма, която е един вид приятно. 201 00:09:17,560 --> 00:09:19,420 Това е вид на по-добро потребителско изживяване. 202 00:09:19,420 --> 00:09:24,160 >> Така се оказва, можете да направите това в PHP с following-- I 203 00:09:24,160 --> 00:09:28,780 можете да използвате тази доста загадъчен заклинание в горната тук, 204 00:09:28,780 --> 00:09:31,740 което обикновено се нарича жилище, при което това е рязък символ, 205 00:09:31,740 --> 00:09:34,270 така да се каже, че това е взрив или удивителен знак. 206 00:09:34,270 --> 00:09:38,490 И това вече е пътят към една програма на типичната система Linux, че 207 00:09:38,490 --> 00:09:41,500 се нарича среда, или Околна среда. 208 00:09:41,500 --> 00:09:43,920 И това line-- дълга история short-- линия една просто 209 00:09:43,920 --> 00:09:48,710 казва, хей компютър, намери ПОЗ преводач за мен в околната среда, 210 00:09:48,710 --> 00:09:50,610 го намерите в паметта си, така да се каже. 211 00:09:50,610 --> 00:09:54,130 >> И това, което сега е хубаво, е че ако сляза тук, 212 00:09:54,130 --> 00:09:57,750 Мога да направя точка наклонена черта Здравейте дот PHP, or-- хмм. 213 00:09:57,750 --> 00:09:59,000 Разрешението е отказано. 214 00:09:59,000 --> 00:10:02,350 Е, вие ще видите дори повече от това с проблем определя седем, ако 215 00:10:02,350 --> 00:10:04,060 все още не сте, с разрешения. 216 00:10:04,060 --> 00:10:06,510 Оказва се, че имам нужда да изпълните тази команда 217 00:10:06,510 --> 00:10:10,779 Наречен [? chamod?] за промяна mode-- плюс х hello.php. 218 00:10:10,779 --> 00:10:13,820 Имам нужда [недоловим] този един допълнителен стъпка, която се казваше моя компютър, 219 00:10:13,820 --> 00:10:16,400 направи hello.php изпълним. 220 00:10:16,400 --> 00:10:21,310 И сега гледайте какво happens-- дот Слаш hello.php, той просто работи. 221 00:10:21,310 --> 00:10:23,310 Не трябва да се уточни преводачът вече. 222 00:10:23,310 --> 00:10:26,680 И аз може да го направи още по-красива, Все още, ако преименувате това нещо. 223 00:10:26,680 --> 00:10:30,570 Ако аз hello.php движат само Hello-- така забележите в горния ляв ъгъл, 224 00:10:30,570 --> 00:10:32,860 името на програмата е Наистина сега просто Hello. 225 00:10:32,860 --> 00:10:37,300 Сега не мога да го правят да изглежда като програма на С, Въпреки че това е написано в PHP-- 226 00:10:37,300 --> 00:10:39,210 или откровено произволен брой на други езици. 227 00:10:39,210 --> 00:10:41,480 >> Така че пределната аксесоар, не функционална разлика. 228 00:10:41,480 --> 00:10:44,460 Но това е само малко любопитство сега, така че можете да се пишат програми 229 00:10:44,460 --> 00:10:48,989 на всеки език, а потребителят не Трябва да знаете, или пука какви са тези. 230 00:10:48,989 --> 00:10:51,030 Е, нека да разгледаме по- непреодолими например сега 231 00:10:51,030 --> 00:10:52,850 че съм я прати в аванс. 232 00:10:52,850 --> 00:10:54,955 И това се нарича quote.php. 233 00:10:54,955 --> 00:10:56,740 И това е на разположение онлайн. 234 00:10:56,740 --> 00:11:00,299 И забележете, че това е доста short-- но това е една програма, която е командния ред 235 00:11:00,299 --> 00:11:02,840 Ще погледнем нагоре цените на акциите за мен, което всъщност ще 236 00:11:02,840 --> 00:11:04,230 да бъде уместен за проблем определя седем. 237 00:11:04,230 --> 00:11:05,396 >> Така че нека да видим какво правя. 238 00:11:05,396 --> 00:11:08,640 На самия връх Нося отворена скоба въпросителен знак PHP. 239 00:11:08,640 --> 00:11:13,372 Тогава аз имам тази линия, с което съм изискваща файл, наречен functions.php-- 240 00:11:13,372 --> 00:11:15,080 ние ще видим повече за това след малко, 241 00:11:15,080 --> 00:11:17,340 но това е като C е версия на остър включват, 242 00:11:17,340 --> 00:11:19,090 където искате да отидете включва друг файл. 243 00:11:19,090 --> 00:11:23,720 PHP призовава го изисква, въпреки че има и включва функция. 244 00:11:23,720 --> 00:11:26,861 И се оказва, че е function.php Просто нещо, което аз написах преди клас. 245 00:11:26,861 --> 00:11:29,860 Сложих го в същата директория, защото Исках да фактор някои код 246 00:11:29,860 --> 00:11:31,800 че ние може да искате да използвате на друго място. 247 00:11:31,800 --> 00:11:34,560 >> В същото време, можете вероятно заключим, какво се случва тук. 248 00:11:34,560 --> 00:11:39,200 Това е малко по-различна от C-- но това, което мога да кажа от гарантира правилното използване? 249 00:11:39,200 --> 00:11:41,180 Превод на по-технически. 250 00:11:41,180 --> 00:11:45,950 При какви обстоятелства съм отказване на програмата, или да излизате? 251 00:11:45,950 --> 00:11:47,074 Да? 252 00:11:47,074 --> 00:11:47,990 >> АУДИТОРИЯ: Когато не разполагате две командния ред аргументи. 253 00:11:47,990 --> 00:11:49,480 >> DAVID Malan: Когато аз нямам да командва аргументи линия. 254 00:11:49,480 --> 00:11:52,396 И не забравяйте, че един от тези, аргументи е самото име на програмата. 255 00:11:52,396 --> 00:11:55,340 И вторият ще бъде друга дума пиша след напомнянето. 256 00:11:55,340 --> 00:11:57,460 Така че точно като C, това е моят начин на проверка, 257 00:11:57,460 --> 00:12:00,022 е оказал съдействие на потребителя и стартирате програмата, както възнамерявах? 258 00:12:00,022 --> 00:12:01,730 Сега, има нещо малко по-различна 259 00:12:01,730 --> 00:12:04,020 с C-- на първо място ние получите този знак за долар, 260 00:12:04,020 --> 00:12:07,710 и това, което прави един долар подпише обозначи в PHP? 261 00:12:07,710 --> 00:12:08,440 Само една променлива. 262 00:12:08,440 --> 00:12:11,731 Това е all-- само една променлива, последвано от каквото си искате действително да го наричат. 263 00:12:11,731 --> 00:12:14,000 Забележете, че има нещо липсва от моя PHP програма, 264 00:12:14,000 --> 00:12:18,210 точно като него липсваше последния седмица, в сравнение с С, което е това? 265 00:12:18,210 --> 00:12:21,620 >> А видове, но и нещо друго. 266 00:12:21,620 --> 00:12:26,409 Не е нещо function-- основна функция. 267 00:12:26,409 --> 00:12:27,450 Няма по-основна функция. 268 00:12:27,450 --> 00:12:29,680 Ти просто започнете да пишете кода си без да се налага 269 00:12:29,680 --> 00:12:32,790 да се притеснявате за доста произволно конвенция на именуване някои подразбиране 270 00:12:32,790 --> 00:12:33,880 Основната функция. 271 00:12:33,880 --> 00:12:36,720 Така арг C е просто наистина глобална променлива 272 00:12:36,720 --> 00:12:39,049 че преводачът прави достъпна за мен. 273 00:12:39,049 --> 00:12:40,090 Сега, това е интересно. 274 00:12:40,090 --> 00:12:41,140 Така че гледам неща. 275 00:12:41,140 --> 00:12:43,370 Dollar знак е на склад ляво, това е променлива ми. 276 00:12:43,370 --> 00:12:45,120 От дясната страна, там е очевидно 277 00:12:45,120 --> 00:12:50,270 функция в PHP призова за справка, че Аз съм минаваща последната ми командния ред 278 00:12:50,270 --> 00:12:51,902 аргумент to-- каквото и думата е. 279 00:12:51,902 --> 00:12:53,610 И ние ще видим как това работи в един миг. 280 00:12:53,610 --> 00:12:55,380 >> И тогава накрая аз съм докладване цената. 281 00:12:55,380 --> 00:12:58,650 Аз съм един отпечатване дял на такъв и такъв. 282 00:12:58,650 --> 00:13:02,082 И не забравяйте, това е най- начин в PHP-- начин в PHP-- 283 00:13:02,082 --> 00:13:04,290 където не е нужно да правите на знака за долар S вече. 284 00:13:04,290 --> 00:13:06,782 Можете да използвате само фигурни скоби и да се включат в някоя променлива. 285 00:13:06,782 --> 00:13:09,240 Не е нужно да се притеснявате за използвайки ФОРМАТ по същия начин. 286 00:13:09,240 --> 00:13:13,530 >> И като се отмени, когато поставите променлива вътре в двойни кавички, като този, 287 00:13:13,530 --> 00:13:17,370 използвате фантазия техника нарича променлива интерполация. 288 00:13:17,370 --> 00:13:20,380 Това просто означава, включете променливата тук. 289 00:13:20,380 --> 00:13:23,760 И като настрана, някои от вас, които идват от други програмни среди, 290 00:13:23,760 --> 00:13:26,960 не можете да използвате апострофи около струни за да направите това. 291 00:13:26,960 --> 00:13:30,290 Трябва да използвате двойни кавички за променлива интерполация да работят. 292 00:13:30,290 --> 00:13:32,740 В противен случай ще буквално виж тези фигурни скоби. 293 00:13:32,740 --> 00:13:34,500 >> Така че накрая, нека да вървим напред и да стартирате тази. 294 00:13:34,500 --> 00:13:36,690 Позволете ми да направя моя терминал малко по-голям. 295 00:13:36,690 --> 00:13:41,940 Нека да вървим напред и да тичам вътрешността на моя цитат директория. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? цитат?] PHP цитат дот PHP, 297 00:13:46,950 --> 00:13:50,290 и аз отивам да търсите за нещо като GOOG, който е негов символ махало, 298 00:13:50,290 --> 00:13:55,510 и една акция от новата си име, Alphabet Inc, струва $ 717, считано от днес. 299 00:13:55,510 --> 00:13:58,680 Добре, ако искаме да тичам това отново, всеки, 300 00:13:58,680 --> 00:14:02,600 имам друг на акция те искат да гледам? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft мисля, че е този, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Мисля, че Yahoo е може би това. 303 00:14:09,720 --> 00:14:12,130 И Facebook е, че. 304 00:14:12,130 --> 00:14:13,740 >> И така, какво е тази програма правите? 305 00:14:13,740 --> 00:14:16,306 Магията изглежда се вгражда в тази справка функция. 306 00:14:16,306 --> 00:14:17,430 Така че нека да хвърлим един бърз поглед. 307 00:14:17,430 --> 00:14:21,815 >> Оказва се, че не идва с PHP, тя е в functions.php. 308 00:14:21,815 --> 00:14:23,690 И ние няма да мине през това в големи подробности, 309 00:14:23,690 --> 00:14:28,040 но забележете оперативна дума тук е че по линия на шест functions.php-- 310 00:14:28,040 --> 00:14:29,440 Аз буквално казват функция. 311 00:14:29,440 --> 00:14:31,050 I посочва името на моята функция. 312 00:14:31,050 --> 00:14:34,330 Тогава аз зададени всеки доводи, и параметри, 313 00:14:34,330 --> 00:14:36,480 Искам тази функция да не take-- видове. 314 00:14:36,480 --> 00:14:37,580 И тогава аз го приложат. 315 00:14:37,580 --> 00:14:39,240 >> И аз ще махам с ръка при изпълнението, 316 00:14:39,240 --> 00:14:42,115 тъй като това е доста напреднала полето сега, но ние ще го видим отново в действителност 317 00:14:42,115 --> 00:14:44,700 за една седмица в проблем определя седем. 318 00:14:44,700 --> 00:14:47,490 Но мога да се почисти тази линия, също. 319 00:14:47,490 --> 00:14:49,590 Аз също се включват в днешния код версия 320 00:14:49,590 --> 00:14:52,340 на цитата, който е без точков PHP файл. 321 00:14:52,340 --> 00:14:57,270 Защото това, което е вероятно най- Начало на програмата, наречена просто цитирам? 322 00:14:57,270 --> 00:15:00,140 Това т.нар shebang-- на доста загадъчен заклинание 323 00:15:00,140 --> 00:15:04,590 която казва намерите PHP и след това го изпълни на моя код тук. 324 00:15:04,590 --> 00:15:07,360 >> Добре, така че носи ни, където сме спрели 325 00:15:07,360 --> 00:15:09,560 Последният time-- макар и с някои по-съвременни примери. 326 00:15:09,560 --> 00:15:13,980 Всякакви въпроси до този момент за PHP или какво правим? 327 00:15:13,980 --> 00:15:15,570 No-- оправи. 328 00:15:15,570 --> 00:15:16,180 Да? 329 00:15:16,180 --> 00:15:19,610 >> АУДИТОРИЯ: Вътре в HTML файлове, да направя you-- 330 00:15:19,610 --> 00:15:22,226 [? нали?] [? просто го наричаме?] а [недоловим] PHP файл? 331 00:15:22,226 --> 00:15:23,350 DAVID Malan: Добър въпрос. 332 00:15:23,350 --> 00:15:26,070 В уеб контекст, който сме буквално да прехвърлите да, 333 00:15:26,070 --> 00:15:28,028 не използвате т.нар вертеп в горната част, 334 00:15:28,028 --> 00:15:31,980 защото уеб server-- често програма, наречена Apache или Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, или произволен брой други уеб сървър софтуер, 336 00:15:37,470 --> 00:15:40,636 знае, че когато го вижда файл дот PHP, че тя 337 00:15:40,636 --> 00:15:42,010 би трябвало да работи на преводача върху него. 338 00:15:42,010 --> 00:15:43,468 Той не гледа, че на първа линия. 339 00:15:43,468 --> 00:15:45,580 Така че този първи трик линия е само когато сте 340 00:15:45,580 --> 00:15:48,330 написването на командния ред programs-- които ние няма да правим супер често, 341 00:15:48,330 --> 00:15:52,510 но това е нашият начин за преминаване С нашите примери до сега нашата PHP. 342 00:15:52,510 --> 00:16:00,680 >> Така че нека наистина се преодолее този свят от света на команди в интернет 343 00:16:00,680 --> 00:16:02,230 като направите следното. 344 00:16:02,230 --> 00:16:05,090 Нека да вървим напред и да изготви тук само за миг. 345 00:16:05,090 --> 00:16:09,940 Така че, ако имаме уеб сървър, или по-скоро ако имаме лаптопа си тук, 346 00:16:09,940 --> 00:16:11,280 която ще направи по този начин. 347 00:16:11,280 --> 00:16:14,250 И тук имаме интернет в някаква форма. 348 00:16:14,250 --> 00:16:18,210 И тогава насам, ние имаме сървър в building-- 349 00:16:18,210 --> 00:16:20,760 това е начинът, по интернет works-- и тук 350 00:16:20,760 --> 00:16:23,120 е сървър с някои светлини може би. 351 00:16:23,120 --> 00:16:27,530 Какво всъщност се случва между тези две връзки? 352 00:16:27,530 --> 00:16:29,240 >> Така че в тази сграда е уеб сървър. 353 00:16:29,240 --> 00:16:31,420 Това е просто един компютър че е тичане някои операционната 354 00:16:31,420 --> 00:16:34,561 system-- може би свободния софтуер, наречен Apache, които CS50 IDE работи. 355 00:16:34,561 --> 00:16:36,310 Така че всъщност можете да мисля, че на тази сграда 356 00:16:36,310 --> 00:16:38,579 като сградата, в които CSt0 IDE се съхранява. 357 00:16:38,579 --> 00:16:40,870 Това е, когато всичко, което трябва сметки, където всички вас 358 00:16:40,870 --> 00:16:43,130 имате собствен уеб сървър бягане, всички от вас 359 00:16:43,130 --> 00:16:45,730 имат свои собствени уникални URL адреси, като сме започнали да обсъждат, 360 00:16:45,730 --> 00:16:47,280 и ще видите още в P. определя шест. 361 00:16:47,280 --> 00:16:49,450 >> Тук е моят лаптоп някъде другаде в интернет. 362 00:16:49,450 --> 00:16:54,550 И така, когато посетите даден URL, който принадлежи за мен, че интернет трафик ще 363 00:16:54,550 --> 00:16:58,360 към сървъра, на сървъра получател на HTTP request-- 364 00:16:58,360 --> 00:17:02,900 като получите index.html и това е отговори на този уеб страница. 365 00:17:02,900 --> 00:17:04,280 Така че това е обща парадигма. 366 00:17:04,280 --> 00:17:07,089 Като има предвид всичко до сега днес, всичко 367 00:17:07,089 --> 00:17:09,660 се случва само в пределите на тази сграда. 368 00:17:09,660 --> 00:17:12,910 Бях с моя лаптоп, но Бях свързан с CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 така че всички от тези програми тичах е вътре в този сървър, само себе си. 370 00:17:17,369 --> 00:17:22,660 >> Но сега, нека да започнем повторно използване на PHP да напише някои реални програми, които 371 00:17:22,660 --> 00:17:24,230 се сервират с уеб сървър. 372 00:17:24,230 --> 00:17:30,320 И за да направите това, аз отивам да отидете в цял куп примери 373 00:17:30,320 --> 00:17:33,710 че се въведе тази идея тук. 374 00:17:33,710 --> 00:17:38,500 Така че това е един вид един луксозен начин на описване на парадигмата на програмиране. 375 00:17:38,500 --> 00:17:41,540 >> И всъщност, като излезете CS50 или работи по окончателните проекти, 376 00:17:41,540 --> 00:17:43,520 или отнеме известно следвайте на класа, вие ще започнете 377 00:17:43,520 --> 00:17:45,740 да се види, че world-- особено израснал 378 00:17:45,740 --> 00:17:48,300 с езици като C които са супер ниска level-- 379 00:17:48,300 --> 00:17:51,290 осъзнават, че има по-добър начини за писане на софтуер. 380 00:17:51,290 --> 00:17:53,290 Има някои модели можете да следвате, 381 00:17:53,290 --> 00:17:57,640 някои начини за организиране на вашите файлове и начини за именуване на вашите функции, 382 00:17:57,640 --> 00:18:00,300 така че дълга история кратко, света е дошъл 383 00:18:00,300 --> 00:18:04,340 с цял куп акроними и имена за начини за програмиране. 384 00:18:04,340 --> 00:18:06,260 Това са само техники може да се използват. 385 00:18:06,260 --> 00:18:09,660 >> И един от тях се нарича MVC, за Model View Controller. 386 00:18:09,660 --> 00:18:12,270 И това е само, за сега, прекалено сложно 387 00:18:12,270 --> 00:18:18,960 начин да се каже как трябва да изложи сайт на PHP-базирани, в нашия случай. 388 00:18:18,960 --> 00:18:22,140 Как да организирате файловете, как да организирате вашата логика, 389 00:18:22,140 --> 00:18:26,220 по начин, който го прави по-лесно да се напиши по-сложни уебсайтове? 390 00:18:26,220 --> 00:18:28,550 И наистина, ние бързо ще стигнем до там с р-зададете седем. 391 00:18:28,550 --> 00:18:32,020 >> Така че в света на MVC, ти започваш за да видите, че нашата код може по принцип 392 00:18:32,020 --> 00:18:38,290 да се характеризира като образец код, или код контролер, или вижте код. 393 00:18:38,290 --> 00:18:40,200 И аз отивам да тя свръхопростяването като follows-- 394 00:18:40,200 --> 00:18:42,074 контролера е мозъците на вашата програма, 395 00:18:42,074 --> 00:18:44,100 това е, когато всички от интересна логика случва. 396 00:18:44,100 --> 00:18:46,110 Така че всичко, което сме били писмено до този момент в клас, 397 00:18:46,110 --> 00:18:48,210 е нещо като контролер code-- това е контролирането 398 00:18:48,210 --> 00:18:50,585 вашата програма, вашите примки, си условия, вашите функции 399 00:18:50,585 --> 00:18:52,100 и променливи и всичко това. 400 00:18:52,100 --> 00:18:56,160 >> Прегледи, сега, ще бъде малко по- по-очевидна в света на интернет. 401 00:18:56,160 --> 00:18:59,360 A мнение е естетиката на вашия сайт. 402 00:18:59,360 --> 00:19:04,080 Това е това, което потребителят sees-- изображенията, на HTML таблици, на HTML тагове, както и всички 403 00:19:04,080 --> 00:19:08,220 на това, всички от пухкав естетиката неща, които не е толкова трудно да пиша, 404 00:19:08,220 --> 00:19:11,380 но е само това, което генерира, е т.нар гледката, естетиката. 405 00:19:11,380 --> 00:19:13,880 И модел, в крайна сметка, ще да бъде на база данни, която stuff-- 406 00:19:13,880 --> 00:19:16,510 ние ще започнем да се гмурне в цялата колкото повече тази сряда. 407 00:19:16,510 --> 00:19:19,740 Така контролер е логиката, мнение е естетическата неща, 408 00:19:19,740 --> 00:19:23,500 и модел ще бъде, където ние съхраняваме нашите реални данни. 409 00:19:23,500 --> 00:19:26,410 >> Така че нека да погледнем на това по-конкретно със следния пример. 410 00:19:26,410 --> 00:19:34,700 Отивам да отидат в моята директория тук на днешния източник code-- всички от които 411 00:19:34,700 --> 00:19:35,770 е на разположение онлайн. 412 00:19:35,770 --> 00:19:37,800 И аз ще отида в версия нула. 413 00:19:37,800 --> 00:19:41,500 И тук is-- нека да го наречем на Версия за нула на уебсайта CS50 е. 414 00:19:41,500 --> 00:19:43,010 Няма много тук изобщо. 415 00:19:43,010 --> 00:19:46,810 Това е много проста уеб страница, която е вероятно използва това, което току-що HTML tags-- 416 00:19:46,810 --> 00:19:48,970 Предполагам, че от последните примери? 417 00:19:48,970 --> 00:19:49,890 >> Какво е това? 418 00:19:49,890 --> 00:19:53,920 H1-- вероятно за този голям смели заглавието, това лого до върха, CS50. 419 00:19:53,920 --> 00:19:55,080 И какво друго е в играта? 420 00:19:55,080 --> 00:19:55,799 Да? 421 00:19:55,799 --> 00:19:56,840 АУДИТОРИЯ: неподреден списък. 422 00:19:56,840 --> 00:19:59,990 DAVID Malan: неподреден list-- така че UL маркер и може би няколко LI тагове. 423 00:19:59,990 --> 00:20:01,840 И ако не си спомняте това, честно казано не е от значение. 424 00:20:01,840 --> 00:20:04,170 Това са пухкави вид подробности по изпълнението на HTML 425 00:20:04,170 --> 00:20:06,378 че можете бързо да погледнете нагоре и отново сте на път. 426 00:20:06,378 --> 00:20:10,040 Ние ще се съсредоточи повече върху програмирането идеи, които са най-сочни парчета. 427 00:20:10,040 --> 00:20:12,890 >> Така че нека просто да хвърлите бърз погледнете на HTML-- и наистина 428 00:20:12,890 --> 00:20:16,880 ако се отворят източника на оглед тук, Мда, Това е точно това, което става тук. 429 00:20:16,880 --> 00:20:18,440 Има един таг UL. 430 00:20:18,440 --> 00:20:20,630 Загнездена вътрешността на който е да LI тагове. 431 00:20:20,630 --> 00:20:24,470 И тогава аз назаем URL на действителния конспекта тук. 432 00:20:24,470 --> 00:20:27,570 >> И тогава в lectures.php е очевидно 433 00:20:27,570 --> 00:20:31,640 друга динамично генерирани страница че ще трябва, нека да see-- ах, 434 00:20:31,640 --> 00:20:33,170 през първите две седмици на лекция. 435 00:20:33,170 --> 00:20:36,600 Така нула седмица и една седмица нека Посетете this-- ако видите изходния код на страницата 436 00:20:36,600 --> 00:20:38,120 също супер проста. 437 00:20:38,120 --> 00:20:42,430 Те са водещи до две страници наречено week0.php и week1.php. 438 00:20:42,430 --> 00:20:44,040 Така че, помисли сега какво се случва. 439 00:20:44,040 --> 00:20:50,630 >> Когато кликнете върху week0.php, моя лаптоп прави искане за week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Уеб сървъра, a.k.a., CS50 IDE, се получава, че виртуалната плик. 442 00:20:58,110 --> 00:21:01,040 Тя видя съобщение подобни, се week0.php. 443 00:21:01,040 --> 00:21:05,060 След това тя се интерпретира файл, отгоре до долу, от ляво на right-- файла 444 00:21:05,060 --> 00:21:07,720 наречено week0.php-- и изплю резултатите. 445 00:21:07,720 --> 00:21:10,510 Така че във вътрешността на този файл, week0.php, трябва да бъде 446 00:21:10,510 --> 00:21:15,410 Логиката на контролер, който генерира този HTML, и скоро ще видите, че. 447 00:21:15,410 --> 00:21:19,340 >> Но за сега, нека да кликнете върху нула седмица и сега имаме сряда и петък, 448 00:21:19,340 --> 00:21:25,260 и сега имаме слайдовете бавно от нула седмици. 449 00:21:25,260 --> 00:21:27,400 И вие може да си припомни това от обратния път, когато. 450 00:21:27,400 --> 00:21:29,340 Така че това е всичко, този сайт се прави. 451 00:21:29,340 --> 00:21:31,120 >> Така че нека да разгледаме как се прави това. 452 00:21:31,120 --> 00:21:34,290 Отивам да се върна в изходния код тук, в CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 и аз отивам да се отворят index.php. 454 00:21:36,660 --> 00:21:38,910 В горната част на този файл е един куп коментари. 455 00:21:38,910 --> 00:21:43,000 И след това в средата на този файл, той, Оказва се, не е PHP код, каквато. 456 00:21:43,000 --> 00:21:47,380 Защото, ако не са в някое от отворена скоба въпросителен знак PHP тагове, 457 00:21:47,380 --> 00:21:49,180 вие сте свободни да съм сложил HTML. 458 00:21:49,180 --> 00:21:51,480 >> Защото това, което ПОЗ преводач, е трябвало да се направи, 459 00:21:51,480 --> 00:21:53,938 е, когато го прочете това file-- отгоре надолу, наляво, за да right-- 460 00:21:53,938 --> 00:21:59,100 интерпретира само код го вижда между тези ъглови скоби въпросителен знак. 461 00:21:59,100 --> 00:22:02,380 И нещо друго, което не го прави признае като PHP, той просто изплюва. 462 00:22:02,380 --> 00:22:05,080 И HTML е между вещите тя просто ще изплюе. 463 00:22:05,080 --> 00:22:09,090 >> Така че този файл може да има е наречен index.html, 464 00:22:09,090 --> 00:22:11,690 но аз съм именуване всичко дот PHP като трамплин. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- аналогично underwhelming, това е просто някакъв HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, по подобен начин само някои HTML. 467 00:22:19,840 --> 00:22:22,300 >> Но сега нека да сложи на пословичната инженеринг шапка, 468 00:22:22,300 --> 00:22:24,400 и помисли как можем да подобрим това. 469 00:22:24,400 --> 00:22:28,541 Не е трудно да се направи това, но аз натура на децентрализиране на копиране и поставяне. 470 00:22:28,541 --> 00:22:31,540 И всъщност, ако правя два седмици, вие знам какво вероятно ще правиш? 471 00:22:31,540 --> 00:22:34,940 Отивам да отидете на week1.php, аз съм Ще подчертая всичко. 472 00:22:34,940 --> 00:22:39,110 Отивам да го копирате, поставете го в нов файл, наречен week2.php, 473 00:22:39,110 --> 00:22:42,440 ощипвам някои от тях, както и да бъде на пътя ми. 474 00:22:42,440 --> 00:22:45,240 >> Така че на базата на това, което сме вижда в C вече, 475 00:22:45,240 --> 00:22:46,860 това не се чувства добре, да се надяваме. 476 00:22:46,860 --> 00:22:49,610 Copy, паста рядко правилното решение. 477 00:22:49,610 --> 00:22:51,429 И така, какво можем да започнем да направим, за да подобрим това? 478 00:22:51,429 --> 00:22:53,345 Къде са възможностите за по-добър дизайн? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> По времето, когато стигнем до седмица осем, че ще ходи 481 00:22:58,760 --> 00:23:00,910 да бъде много досадно ако искам да се промени 482 00:23:00,910 --> 00:23:03,930 шрифта на всеки един от страниците си, или ако искам 483 00:23:03,930 --> 00:23:06,522 за промяна на структурата на оформлението. 484 00:23:06,522 --> 00:23:08,396 Е, къде е възможност за по-добър дизайн? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Ами, нека да помисли за това, което е споделяни между всички тези файлове. 487 00:23:15,160 --> 00:23:21,696 >> Ето една седмица, ето седмица нула, ето lectures.php, 488 00:23:21,696 --> 00:23:25,790 ето index.php-- това, което е едно и също и това, което е различно, грубо казано, 489 00:23:25,790 --> 00:23:26,760 Във всеки от тези файлове? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Да? 492 00:23:32,060 --> 00:23:34,560 >> АУДИТОРИЯ: [недоловим] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID Malan: OK, добре. 495 00:23:42,160 --> 00:23:46,115 Така че има един модел, със сигурност, при която всеки път, когато изберете лекция I, 496 00:23:46,115 --> 00:23:48,250 Аз трябва да се генерира много подобен изглеждаща страница. 497 00:23:48,250 --> 00:23:50,375 И така може би мога да се наберат факта, че наистина, 498 00:23:50,375 --> 00:23:53,060 ние умишлено числено индексира нашата lectures-- 499 00:23:53,060 --> 00:23:55,290 ако мога да сложа още по- думи в отговор на въпроса си. 500 00:23:55,290 --> 00:23:59,984 И това, което е единственото нещо, наистина, че се променя между седмица one-- 501 00:23:59,984 --> 00:24:02,400 и нека да превъртите надолу, така че това е приблизително в същия place-- 502 00:24:02,400 --> 00:24:05,480 така че тук е нула седмица приблизително в горната част. 503 00:24:05,480 --> 00:24:12,370 Ето една седмица, седмица нула, една седмица нула седмица. 504 00:24:12,370 --> 00:24:14,370 OK, буквално, ако знаете нито една програма не каквато, 505 00:24:14,370 --> 00:24:16,286 сега това е точно като модел за съвпадение на играта. 506 00:24:16,286 --> 00:24:17,200 Така че това, което е по-различно? 507 00:24:17,200 --> 00:24:18,765 Да? 508 00:24:18,765 --> 00:24:19,777 >> АУДИТОРИЯ: [недоловим] 509 00:24:19,777 --> 00:24:22,360 DAVID Malan: Добре, така че титлата се променя, все така леко. 510 00:24:22,360 --> 00:24:24,010 Нулева върви, разбира се, до един. 511 00:24:24,010 --> 00:24:25,570 Същото нещо се случва в тага H1. 512 00:24:25,570 --> 00:24:28,790 И ние съвсем не го виждам толкова лесно, защото адресите са малко дълги. 513 00:24:28,790 --> 00:24:30,670 Но тези URL адреси се променят леко. 514 00:24:30,670 --> 00:24:34,490 >> Но това, което не се променя е, смея да каже, повечето от съдържанието на page-- 515 00:24:34,490 --> 00:24:38,530 на HTML тагове е същото, на главата е една и съща, титлата е почти същата, 516 00:24:38,530 --> 00:24:40,659 тялото е същото, и почти всичко останало 517 00:24:40,659 --> 00:24:42,450 е същата, с изключение на тези малки ощипвам. 518 00:24:42,450 --> 00:24:45,310 Така че как можем да отида за факторинг някои от това? 519 00:24:45,310 --> 00:24:48,740 >> Ами нека да предложи точно че в следващата версия. 520 00:24:48,740 --> 00:24:53,890 Така че тук, в една версия, имам точните същите файлове, плюс няколко други. 521 00:24:53,890 --> 00:24:59,730 Ето index.php-- и дори ако никога не сте виждали преди PHP, 522 00:24:59,730 --> 00:25:05,511 аз какво правя вероятно да се реши този problem-- въз основа на това, което виждате тук? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Да, е, че лек ангажимент? 525 00:25:12,760 --> 00:25:13,450 Не? 526 00:25:13,450 --> 00:25:16,020 Да, давайте. 527 00:25:16,020 --> 00:25:17,380 >> АУДИТОРИЯ: [недоловим] 528 00:25:17,380 --> 00:25:18,380 >> DAVID Malan: Да. 529 00:25:18,380 --> 00:25:20,380 >> АУДИТОРИЯ: [недоловим] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID Malan: Имам нужда от теб, за да говори малко по-силно. 532 00:25:28,669 --> 00:25:31,084 >> АУДИТОРИЯ: [недоловим] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID Malan: OK, добре. 535 00:25:36,660 --> 00:25:38,620 И аз think-- беше Трудно е да се you-- но чувам 536 00:25:38,620 --> 00:25:42,690 мисля, че това, което става е, че най- маркерите, които са били чести до върха, 537 00:25:42,690 --> 00:25:47,710 и таговете, които бяха често на дъно, вече са отчетени навън, 538 00:25:47,710 --> 00:25:51,140 или свежда до какви файлове? 539 00:25:51,140 --> 00:25:53,476 Header.php и footer.php-- и отиваме 540 00:25:53,476 --> 00:25:55,600 да се направят някои ощипвам да отговори на загрижеността ви просто 541 00:25:55,600 --> 00:25:59,370 повдигнат въпрос за промяна на номера, за Например, ако аз ви чул правилно. 542 00:25:59,370 --> 00:26:02,060 >> Но това изглежда е същността на това. 543 00:26:02,060 --> 00:26:04,820 Ако е имало огромно количество съкращения в горната част на страницата, 544 00:26:04,820 --> 00:26:06,736 и огромно количество излишък на дъното, 545 00:26:06,736 --> 00:26:09,280 нека буквално маркирайте и нарязани, че съдържанието се, 546 00:26:09,280 --> 00:26:13,270 сложете го в отделна file-- точно като идеята за CSS, където ние отразено от 547 00:26:13,270 --> 00:26:16,710 много сходни естетика, пуснати то в отделна точка PHP файл, 548 00:26:16,710 --> 00:26:20,340 използвате изискват mechanism-- които е като C остър include-- които 549 00:26:20,340 --> 00:26:23,570 по същество е като да кажеш, отидете вземете съдържанието на header.php, 550 00:26:23,570 --> 00:26:25,370 и копирайте ги тук. 551 00:26:25,370 --> 00:26:29,490 >> Но какво означава това е, че в момента в index.php, имам тези две линии. 552 00:26:29,490 --> 00:26:32,130 В lectures.php, аз също имат тези две линии. 553 00:26:32,130 --> 00:26:35,230 В week0.php, аз също имат тези две линии. 554 00:26:35,230 --> 00:26:38,380 >> Така че сега, ако искам да се промени Заглавието на всички от моите страници, 555 00:26:38,380 --> 00:26:40,530 или I искате да промените фундаменталната структура, 556 00:26:40,530 --> 00:26:44,380 Мога да го промените сега само едно място, или две places-- горния и долния, 557 00:26:44,380 --> 00:26:45,429 съответно. 558 00:26:45,429 --> 00:26:47,970 Сега отправна кодът е да погледнем малко по-загадъчен, нали? 559 00:26:47,970 --> 00:26:53,590 Но ако мислите, че за това, което страницата е doing-- ако аз съм с искане week0.php, 560 00:26:53,590 --> 00:26:59,880 точно като за съставянето над here--, когато се иска week0.php, 561 00:26:59,880 --> 00:27:00,960 какво означава това? 562 00:27:00,960 --> 00:27:04,410 >> Буквално, този файл е поискано от браузъра. 563 00:27:04,410 --> 00:27:06,240 Мрежата server-- a.k.a. 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- грабва този файл, week0.php, и чете 565 00:27:09,250 --> 00:27:10,780 тя горе до долу, от ляво на дясно. 566 00:27:10,780 --> 00:27:15,400 На първа линия, тя веднага се сблъсква отворена скоба въпросителен знак PHP, изисква 567 00:27:15,400 --> 00:27:17,872 удар с глава на дот PHP и т.н. какво PHP интерпретатора 568 00:27:17,872 --> 00:27:20,580 does--, който е вграден в интернет сървър, защото ние предварително конфигурирано 569 00:27:20,580 --> 00:27:24,580 то за you-- той автоматично отива в header.php, копия на съдържанието 570 00:27:24,580 --> 00:27:25,640 пасти ги тук. 571 00:27:25,640 --> 00:27:28,790 >> Но след срещите преводачески въпросителен знак в близост скоба, 572 00:27:28,790 --> 00:27:30,320 така че е направено всичко, мисля. 573 00:27:30,320 --> 00:27:33,400 Сега тя просто сляпо плюе посочени линии два през седем, 574 00:27:33,400 --> 00:27:35,240 защото това е просто сурова HTML. 575 00:27:35,240 --> 00:27:38,470 Взима да се подредят осем, а не, че същата магия again-- отваряне на досието, 576 00:27:38,470 --> 00:27:41,460 заграбването на съдържанието, и изисква от тях или да ги поставите 577 00:27:41,460 --> 00:27:42,480 Добре тогава, или там. 578 00:27:42,480 --> 00:27:44,210 >> Но аз просто намекна за бъг. 579 00:27:44,210 --> 00:27:48,610 Това е частична крачка назад, защото ако погледнем в header.php, 580 00:27:48,610 --> 00:27:50,850 Аз бях вид нарязани корнер. 581 00:27:50,850 --> 00:27:56,250 Каква функция съм се откажат, за за да получат това спорно по-добър дизайн? 582 00:27:56,250 --> 00:27:57,305 Да? 583 00:27:57,305 --> 00:27:58,180 АУДИТОРИЯ: [недоловим] 584 00:27:58,180 --> 00:28:00,570 DAVID Malan: Да, аз вид на подстрижете nontrivial корнер. 585 00:28:00,570 --> 00:28:04,489 Можете посочи, че това, което се променя е заглавието, броят в заглавието, 586 00:28:04,489 --> 00:28:05,530 и броя на H1. 587 00:28:05,530 --> 00:28:08,170 Така че моето решение е, OK, нека просто преименуване на страницата, 588 00:28:08,170 --> 00:28:10,080 и не се занимава с този проблем, каквато. 589 00:28:10,080 --> 00:28:12,130 Така че това е частичен стъпка назад със сигурност. 590 00:28:12,130 --> 00:28:14,300 >> Но какво да се отбележи тук е, че това, което съм направил 591 00:28:14,300 --> 00:28:17,200 е отразено в противен случай цялата общата неща. 592 00:28:17,200 --> 00:28:21,520 И в footer.php, забележите I заложен всички от които, макар и по-малка, 593 00:28:21,520 --> 00:28:22,790 Общата неща. 594 00:28:22,790 --> 00:28:26,070 Така че аз трябва да по някакъв начин сега е в състояние да предприеме още една крачка напред, и да определи 595 00:28:26,070 --> 00:28:27,160 че въпросите заглавие. 596 00:28:27,160 --> 00:28:28,180 Така че нека да го направя. 597 00:28:28,180 --> 00:28:35,060 >> Позволете ми да отида в моята втора версия тук, които, отново, има същите файлове 598 00:28:35,060 --> 00:28:36,825 с изключение на едно ново попълнение. 599 00:28:36,825 --> 00:28:38,950 И това е малко по- многословен, но нека да видим дали можем 600 00:28:38,950 --> 00:28:40,550 може да дразни, освен това, което става тук. 601 00:28:40,550 --> 00:28:45,370 Така че вместо да изискват header.php и footer.php, 602 00:28:45,370 --> 00:28:50,180 Аз като че ли се само една изискваща file-- нарича, разбира се, helpers.php. 603 00:28:50,180 --> 00:28:52,560 И нека да предвидят сега, това, което е вътре в helpers.php 604 00:28:52,560 --> 00:28:55,330 е просто един куп функции че съм написал, точно както преди. 605 00:28:55,330 --> 00:28:57,550 Но аз го нарича helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Сега изглежда, в Онлайн три и 10, аз съм 607 00:29:00,370 --> 00:29:02,840 наричайки две functions-- направи удар с глава, направи долния. 608 00:29:02,840 --> 00:29:05,040 Тези, не идват с PHP, аз написах тези себе си. 609 00:29:05,040 --> 00:29:07,880 И аз ги поставя в helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Сега, ние виждал само този синтаксис веднъж, и това беше супер кратко. 611 00:29:11,210 --> 00:29:15,330 Но това е очевидно аргумент да направи удар с глава, функцията. 612 00:29:15,330 --> 00:29:16,450 Защо ли това? 613 00:29:16,450 --> 00:29:18,522 Ами тук е близо скоба, тук е отворена скоба. 614 00:29:18,522 --> 00:29:21,230 И разбира се, точно както в C, нещо между тези скоби 615 00:29:21,230 --> 00:29:23,350 е input-- или аргумент на функцията. 616 00:29:23,350 --> 00:29:26,710 >> Какъв е типът данни на този аргумент, въз основа на това, което съм подчертано? 617 00:29:26,710 --> 00:29:30,820 Какво правят тези квадратни скоби посочва, базирани на миналата седмица? 618 00:29:30,820 --> 00:29:33,390 Да, това е един array-- специално асоциативен масив. 619 00:29:33,390 --> 00:29:35,700 И този синтаксис несъмнено е малко по-фънки, 620 00:29:35,700 --> 00:29:38,860 но това е просто преминаване в една двойка ключове стойност. 621 00:29:38,860 --> 00:29:43,530 Ключът е, цитирам цитата заглавието, а стойността е CS50. 622 00:29:43,530 --> 00:29:46,220 >> Ако бяхме направили това в C, тя вместо това могъщество 623 00:29:46,220 --> 00:29:49,400 изглежда по-скоро това, просто цитирам цитата CS50-- 624 00:29:49,400 --> 00:29:52,460 или действително би било къдрава скоби, или нещо подобно, че в C, 625 00:29:52,460 --> 00:29:55,580 когато ключът е нула, и стойността е CS50. 626 00:29:55,580 --> 00:29:59,840 Но отново, в PHP, въпреки че синтаксис е, отново, малко странно, 627 00:29:59,840 --> 00:30:02,860 тя ви позволява да премине в думи, вместо номера 628 00:30:02,860 --> 00:30:05,120 да се сдружават с ключове ценности. 629 00:30:05,120 --> 00:30:06,390 >> И така, какво означава всичко това? 630 00:30:06,390 --> 00:30:09,750 Ако аз отида в helpers.php, нека да погледнем на тази функция. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, скоро renderHeader е моята функция, 632 00:30:13,620 --> 00:30:16,220 и знам, че защото виждам функцията ключовата дума тук. 633 00:30:16,220 --> 00:30:19,450 Това е ново от него C-- очевидно приема аргумент, наречен data-- 634 00:30:19,450 --> 00:30:22,400 но бих могъл да нарече това нищо, но аз го нарича данни, 635 00:30:22,400 --> 00:30:25,090 само за да бъде малко clean-- и просто да вземе предположение, особено 636 00:30:25,090 --> 00:30:28,173 ако сте се програмира по някакъв друг висше ниво на езика и преди, нещо, 637 00:30:28,173 --> 00:30:29,820 горе C, концептуално. 638 00:30:29,820 --> 00:30:33,820 >> Какво прави равен отворена скоба квадратна скоба вероятно означава? 639 00:30:33,820 --> 00:30:35,540 Или какво може да означава това? 640 00:30:35,540 --> 00:30:39,660 Ние не сме виждали това в C. Да? 641 00:30:39,660 --> 00:30:40,480 >> Един празен масив. 642 00:30:40,480 --> 00:30:45,440 По-специално, това означава, че ако потребителят не поставя renderHeader 643 00:30:45,440 --> 00:30:49,340 с аргумент, аз съм все още продължава да има аргумент, наречен данни, 644 00:30:49,340 --> 00:30:52,327 но стойността му по подразбиране е щеше да бъде празен масив. 645 00:30:52,327 --> 00:30:53,660 Така че това е просто едно хубаво удобство. 646 00:30:53,660 --> 00:30:56,493 Не е нужно да се крещи на потребителя, или казват, че използват моя функция погрешно. 647 00:30:56,493 --> 00:30:59,849 Мога само да дава на потребителя по подразбиране стойност, ако не се интересува особено. 648 00:30:59,849 --> 00:31:01,890 Сега тази функция, аз съм ще махне ръцете ми в. 649 00:31:01,890 --> 00:31:07,620 Но този екстракт функция позволява нас, за да премине тези променливи в данните 650 00:31:07,620 --> 00:31:10,360 в header.php по следния начин. 651 00:31:10,360 --> 00:31:13,100 И това е последното парче, Мисля, от фънки синтаксис. 652 00:31:13,100 --> 00:31:15,860 Тук е моята нова версия от него header.php-- 653 00:31:15,860 --> 00:31:20,140 използва, за да се каже, буквално, отворена скоба заглавието CS50, и това беше всичко. 654 00:31:20,140 --> 00:31:21,766 И едно и също нещо за H1. 655 00:31:21,766 --> 00:31:24,310 >> Сега тя очевидно казва нещо доста фънки. 656 00:31:24,310 --> 00:31:28,030 И нека да опрости това за момент, както следва. 657 00:31:28,030 --> 00:31:31,020 Това е, което съм промених заглавието да бъде. 658 00:31:31,020 --> 00:31:35,140 Въпреки това, той става все по-малко грозно постоянно отворени скоби с PHP, 659 00:31:35,140 --> 00:31:36,610 и след това да използвате функцията за печат. 660 00:31:36,610 --> 00:31:40,810 Оказва се, че PHP е с стенограмите нотация за това, което е просто 661 00:31:40,810 --> 00:31:45,050 знак за равенство, която е технически по- функция, наречена ехо вместо печат, 662 00:31:45,050 --> 00:31:46,800 но това е едно и също нещо, ефективно. 663 00:31:46,800 --> 00:31:48,440 >> Това просто изглежда по-добре. 664 00:31:48,440 --> 00:31:50,510 Това е просто една синтактична захар, ако щете, 665 00:31:50,510 --> 00:31:52,260 който прави моя код изглежда малко по-добре. 666 00:31:52,260 --> 00:31:54,010 Но се оказва, и ние ще видим това отново 667 00:31:54,010 --> 00:31:57,420 не след дълго, ние трябва да наричаме това дразнещо дълго функция, наречена 668 00:31:57,420 --> 00:32:00,582 HTML специални символи в PHP, защото се оказва, 669 00:32:00,582 --> 00:32:02,790 има някои суровини че потребителят може да ни даде, 670 00:32:02,790 --> 00:32:05,160 или, че потребителите могат да ни дадат, които се случва да пробие нашия сайт. 671 00:32:05,160 --> 00:32:07,035 Но ще видим, че през следващата седмица с JavaScript. 672 00:32:07,035 --> 00:32:10,740 Но за сега, просто знам, че този файл, headers.php, просто 673 00:32:10,740 --> 00:32:13,040 отнема титлата, че Минах през това направи 674 00:32:13,040 --> 00:32:17,380 уверите, че е безопасно да се инжектира в уеб страница, и то я изплюва като титлата си 675 00:32:17,380 --> 00:32:18,640 и като ми H1. 676 00:32:18,640 --> 00:32:24,440 Така че, ако аз отида в тази версия сега, забележите, че има лекции заглавието му обратно, 677 00:32:24,440 --> 00:32:28,630 нула седмица има заглавието му назад и наистина, аз съм генериране на HTML 678 00:32:28,630 --> 00:32:32,110 е идентично с това, което моята първа версия was-- с изключение на моя празно, 679 00:32:32,110 --> 00:32:35,150 защото аз бях започнал форматиране кода ми малко по-различно. 680 00:32:35,150 --> 00:32:38,082 Но аз съм генерира всички кода ми пука за. 681 00:32:38,082 --> 00:32:39,790 Така че нека да спрем за само за момент и да видим 682 00:32:39,790 --> 00:32:42,200 ако има някакви въпроси или объркване съм създал. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Добре, така че нека да се обърне малко по-трудно тук 685 00:32:48,150 --> 00:32:51,500 да се види дали има по- възможност за подобрение. 686 00:32:51,500 --> 00:32:56,130 Helpers.php също имаше тази функция, наречена renderFooter. 687 00:32:56,130 --> 00:32:59,652 И това, което е забележително за renderHeader и renderFooter? 688 00:32:59,652 --> 00:33:02,610 И отново, за днешните цели, знаете че функцията екстракт е просто 689 00:33:02,610 --> 00:33:08,280 моят начин на преминаващите доводи в header.php и footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Съжаляваме? 692 00:33:11,780 --> 00:33:13,056 >> АУДИТОРИЯ: [недоловим] 693 00:33:13,056 --> 00:33:15,180 DAVID Malan: Да, аз само променила изискват ред. 694 00:33:15,180 --> 00:33:19,410 Така буквално, че съм извършил греха на копиране и поставяне, за пореден път. 695 00:33:19,410 --> 00:33:21,920 Това не е огромен брой на линиите, но дойде on-- 696 00:33:21,920 --> 00:33:25,220 ако аз съм копирате и поставите всичко само за да се промени една малка дума, 697 00:33:25,220 --> 00:33:28,610 и една малка дума, че Alan точки изход е Footer тук, в сравнение заглавна тук. 698 00:33:28,610 --> 00:33:30,670 В противен случай, всичко е идентични, с изключение на, 699 00:33:30,670 --> 00:33:32,180 разбира се, Имената на функциите му. 700 00:33:32,180 --> 00:33:33,690 И така, какво можем да направим по-добре? 701 00:33:33,690 --> 00:33:39,810 >> Ами нека да отворят тази версия тук, при което в helpers.php, 702 00:33:39,810 --> 00:33:42,300 защо не мога просто да се малко по-умен за това? 703 00:33:42,300 --> 00:33:46,410 Напиши малко по-сложно код, но наричаме го направи? 704 00:33:46,410 --> 00:33:48,470 Така че това, което са ми коренно се промени? 705 00:33:48,470 --> 00:33:51,770 >> Той приема аргумент now-- два аргумента, данните все още. 706 00:33:51,770 --> 00:33:54,444 И тогава какво е първото име вероятно се използва за, 707 00:33:54,444 --> 00:33:55,860 въз основа на това, което четете тук? 708 00:33:55,860 --> 00:33:58,452 Дори и някои от синтаксиса е все още нов. 709 00:33:58,452 --> 00:33:59,660 Какво е знак за долар шаблон? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Съжаляваме? 712 00:34:03,016 --> 00:34:03,710 >> АУДИТОРИЯ: колонтитулите. 713 00:34:03,710 --> 00:34:04,510 >> DAVID Malan: колонтитулите. 714 00:34:04,510 --> 00:34:07,134 Така че очевидно, аз реших, че ако единственото нещо, което се променя 715 00:34:07,134 --> 00:34:10,159 е това, което аз искам шаблон да print-- и чрез шаблон 716 00:34:10,159 --> 00:34:13,100 Искам да кажа, че това е проект за код, който аз искам да изход, 717 00:34:13,100 --> 00:34:16,350 но искам да включите в някои values-- така че ако това е само глава 718 00:34:16,350 --> 00:34:20,440 или долен колонтитул, защо не съм задаване на параметри че и позивна на аргумент долар 719 00:34:20,440 --> 00:34:21,409 шаблон? 720 00:34:21,409 --> 00:34:26,250 И тогава този фънки синтаксис ми позволява да се създаде път в променлива тук. 721 00:34:26,250 --> 00:34:28,030 >> Така знак за долар път е променлива. 722 00:34:28,030 --> 00:34:31,120 Какво прави този синтаксис направите, ако сте запознати? 723 00:34:31,120 --> 00:34:32,512 Да? 724 00:34:32,512 --> 00:34:34,065 >> АУДИТОРИЯ: [недоловим] 725 00:34:34,065 --> 00:34:34,940 DAVID Malan: Точно така. 726 00:34:34,940 --> 00:34:37,600 Ако шаблон е, цитирам цитата, глава, или ако е шаблон, 727 00:34:37,600 --> 00:34:41,170 цитат цитата, долния, че има линия че съм подчерта, линия осем, 728 00:34:41,170 --> 00:34:46,330 просто като това име, като с глава, и слепване на дот PHP. 729 00:34:46,330 --> 00:34:49,750 Така че ние не разполагаме с този оператор в C. Тази точка е с оператор 730 00:34:49,750 --> 00:34:54,520 нещо невероятно в PHP-- ако сте запознат с JavaScript или Java, 731 00:34:54,520 --> 00:34:56,949 можете да използвате плюса подпише, за да се направи конкатенация. 732 00:34:56,949 --> 00:34:59,974 >> В C, това е болка в neck-- и аз съм толкова съжалявам, в р-зададете шест, 733 00:34:59,974 --> 00:35:02,390 започваш да трябва да направите, this-- това е болка в областта на шията 734 00:35:02,390 --> 00:35:03,930 да свързвам струни. 735 00:35:03,930 --> 00:35:04,670 Защо? 736 00:35:04,670 --> 00:35:06,580 Ами, защото ако имаш низ, който е толкова дълго, 737 00:35:06,580 --> 00:35:09,538 и друг низ, който е толкова дълго, не може просто да ги включите заедно. 738 00:35:09,538 --> 00:35:11,070 Какво трябва да направите, вместо в C? 739 00:35:11,070 --> 00:35:11,680 Да? 740 00:35:11,680 --> 00:35:12,380 >> АУДИТОРИЯ: [недоловим] 741 00:35:12,380 --> 00:35:15,090 >> DAVID Malan: Трябва да се изчистване памет, или да използвате масив на стека. 742 00:35:15,090 --> 00:35:17,214 И вие всъщност трябва да направи този масив достатъчно голям 743 00:35:17,214 --> 00:35:20,940 за да се побере това, плюс това, плюс наклонената черта нула. 744 00:35:20,940 --> 00:35:24,994 След това ги свързвам заедно с използване на разбърква котка или ръчно с по линия, 745 00:35:24,994 --> 00:35:26,160 или произволен брой техники. 746 00:35:26,160 --> 00:35:27,760 И ние ще ви покажем няколко в р-зададете шест. 747 00:35:27,760 --> 00:35:29,080 >> Това е болка в областта на шията. 748 00:35:29,080 --> 00:35:34,190 И това е наистина това, което искам да кажа за това сравнение this-- като C в сравнение с PHP. 749 00:35:34,190 --> 00:35:36,870 Вие просто се толкова много повече функционалност безплатно, 750 00:35:36,870 --> 00:35:39,030 така че можете да се съсредоточите, в идеалния случай, веселбата 751 00:35:39,030 --> 00:35:41,190 част от кодиране, на проект, който искате да се реши, 752 00:35:41,190 --> 00:35:43,190 а не дреболии ниско ниво. 753 00:35:43,190 --> 00:35:49,840 >> Така че това просто генерира header.php или footer.php въз основа на които една аз наричам. 754 00:35:49,840 --> 00:35:52,280 И наистина, ако отида в index.php, известие 755 00:35:52,280 --> 00:35:56,230 всичко, което е changed-- Вместо наричайки направи удар с глава или да направи футър, 756 00:35:56,230 --> 00:36:00,230 Обаждам се оказва, следвана от името на шаблона, че искам да направя. 757 00:36:00,230 --> 00:36:02,370 И вие ще видите това, също в проблем определя седем, 758 00:36:02,370 --> 00:36:05,530 чрез което да ви позволи да използвате същата функция, за да направи букети 759 00:36:05,530 --> 00:36:07,550 и букети от различни уеб страници. 760 00:36:07,550 --> 00:36:10,570 >> Така че, вместо да живеят твърде много повече на тези details-- 761 00:36:10,570 --> 00:36:13,210 които ще видите отново в проблем набор seven-- нека погледнем 762 00:36:13,210 --> 00:36:16,850 сега в началото на разтвор за по-интересен проблем. 763 00:36:16,850 --> 00:36:19,310 До този момент, ние сме нищо направено има записани данни. 764 00:36:19,310 --> 00:36:22,920 Всъщност, единственият път, който някога сме спасени нещо, което сме правили в този клас 765 00:36:22,920 --> 00:36:31,030 е, когато имахме един много прост демо известно време обратно, при която ние използвахме файл IO в C, 766 00:36:31,030 --> 00:36:34,520 и мисля, че аз напечатани в Мое име, и Име на Хана, а името на Мария, 767 00:36:34,520 --> 00:36:37,610 или може би името на Анди, и тогава ние спаси CSV file-- 768 00:36:37,610 --> 00:36:39,430 разделени със запетая стойности файл. 769 00:36:39,430 --> 00:36:43,530 >> И ние използвахме fopen-- Мисля ние използвахме fprintf доколкото си спомням, 770 00:36:43,530 --> 00:36:44,910 и ние запазена файл. 771 00:36:44,910 --> 00:36:46,920 Сега, това е най-простата форма на база данни. 772 00:36:46,920 --> 00:36:50,230 Ако искате да направите уеб сайт за Програмни Фрош УИ, като първокурсници 773 00:36:50,230 --> 00:36:53,390 да се регистрирате за спорт, можете идеално искам да направя нещо с тези данни. 774 00:36:53,390 --> 00:36:55,370 Миналата седмица направихме нищо с data-- ние току-що каза, 775 00:36:55,370 --> 00:36:56,661 сте се регистрирали, не съвсем. 776 00:36:56,661 --> 00:36:58,950 Или може би аз емайл на Проктър и това беше всичко. 777 00:36:58,950 --> 00:37:02,110 >> Но би било хубаво, ако можех дам, че Проктър файл CSV, 778 00:37:02,110 --> 00:37:03,340 като файл Excel. 779 00:37:03,340 --> 00:37:05,090 Или още по-добре, че ще било хубаво, ако можех 780 00:37:05,090 --> 00:37:08,830 постави имена на тези потребители и общежитието имена и всичко това 781 00:37:08,830 --> 00:37:11,740 в база данни, която просто живее вечно, 782 00:37:11,740 --> 00:37:13,530 докато не решите да изтриете данните. 783 00:37:13,530 --> 00:37:15,645 Базата данни, която позволява мен, да намират информация. 784 00:37:15,645 --> 00:37:18,070 И наистина, това е, което е база данни. 785 00:37:18,070 --> 00:37:20,470 >> Ние Ви представим днес, и следващата седмица, също технология 786 00:37:20,470 --> 00:37:25,020 наречено SQL-- на Structured Query Език, който е друг език. 787 00:37:25,020 --> 00:37:28,750 Това е по същество една програмиране език, но за бази данни. 788 00:37:28,750 --> 00:37:31,760 И на база данни за сега, просто мисля за като супер фантазия версия 789 00:37:31,760 --> 00:37:35,710 на Microsoft Excel или Google Spreadsheets, или Apple Numbers. 790 00:37:35,710 --> 00:37:39,950 Това е като цяло програма, която позволява можете да съхраните цял куп данни 791 00:37:39,950 --> 00:37:43,960 в редове и колони, доста като може би в Excel. 792 00:37:43,960 --> 00:37:47,100 >> Но това, което е хубаво, особено ако ние не сме супер запознат с Excel, 793 00:37:47,100 --> 00:37:52,040 какво SQL ви позволява да направите, е заявка за това информация от написването реда код 794 00:37:52,040 --> 00:37:55,220 когато можете, дори ако вашият база данни има един милион реда в нея, 795 00:37:55,220 --> 00:37:57,190 можете да намерите неща, супер бързо. 796 00:37:57,190 --> 00:37:59,950 В действителност, е особено Excel зле големи масиви от данни. 797 00:37:59,950 --> 00:38:02,460 И в действителност, до няколко Преди години, се оказа, 798 00:38:02,460 --> 00:38:08,890 Excel ще позволи само да съхранявате до 65,535 редици data-- които 799 00:38:08,890 --> 00:38:12,020 звучи като много, но в време бях аспирант 800 00:38:12,020 --> 00:38:14,920 и си спомням препъване това, защото аз се генерира 801 00:38:14,920 --> 00:38:17,900 CSV файлове за изследванията ми и аз Исках да ги анализира бързо 802 00:38:17,900 --> 00:38:19,530 само с отваряне в Excel. 803 00:38:19,530 --> 00:38:23,730 Разбира се, компютъра ми просто се разби, защото имах повече от 65,000 редове. 804 00:38:23,730 --> 00:38:27,210 >> Но къде са 65,535 идват от? 805 00:38:27,210 --> 00:38:29,670 Какво правеше Microsoft, вероятно? 806 00:38:29,670 --> 00:38:32,430 Ако сте добре с правомощията си на две? 807 00:38:32,430 --> 00:38:37,160 Да, те са били с помощта на 16-битов стойност да представлява номера на реда. 808 00:38:37,160 --> 00:38:41,310 И два до 16 е 65,536-- минус едно, защото ако 809 00:38:41,310 --> 00:38:45,414 индекс нула означава, че е бил Най брой редове мога да имам. 810 00:38:45,414 --> 00:38:46,830 И това е просто решение за дизайн. 811 00:38:46,830 --> 00:38:52,760 Чрез спестяване на 16 бита, те ме ограничава до 16,000 редове, вместо 4 милиарда 812 00:38:52,760 --> 00:38:54,322 които съм могъл да има идеално. 813 00:38:54,322 --> 00:38:57,030 Но за сега, ние ще представим това повече в уеб контекст. 814 00:38:57,030 --> 00:39:00,390 И това, което е хубаво за SQL е, че дори макар че той е доста мощен и доста 815 00:39:00,390 --> 00:39:04,050 сложна, тя наистина се свежда до четири основни операции, четири 816 00:39:04,050 --> 00:39:08,060 ключови функции, ако will-- изберете, за извличане на данни, търсене 817 00:39:08,060 --> 00:39:12,510 за данни; изтриване или изтриване на данни; вмъкнете за добавяне на редове в базата данни; 818 00:39:12,510 --> 00:39:13,410 и актуализиране. 819 00:39:13,410 --> 00:39:17,010 Така че, ако някога сте се използва Google Електронни таблици, Apple, Microsoft Numbers 820 00:39:17,010 --> 00:39:19,310 Excel, вие сте изпълнени, Най-вероятно всички 821 00:39:19,310 --> 00:39:22,530 на тези операции като човек от само с помощта на клавиатурата и mouse-- 822 00:39:22,530 --> 00:39:26,050 вкарване на данни, с помощта на очите си за да изберете или да потърсите информация, 823 00:39:26,050 --> 00:39:28,360 или актуализирани данни или изтриване на данни. 824 00:39:28,360 --> 00:39:29,870 >> И така, какво означава това? 825 00:39:29,870 --> 00:39:34,300 Е, предварително инсталиран в CS50 IDE е една програма, наречена MySQL. 826 00:39:34,300 --> 00:39:37,050 Това е безплатна, с отворен код база данни, която е супер популярен. 827 00:39:37,050 --> 00:39:40,590 Facebook, например, го използва за тази ден, наред с други инструменти, които те използват. 828 00:39:40,590 --> 00:39:44,300 И много много популярни уеб сайтове използват тя в голямата си част, защото е бърз, 829 00:39:44,300 --> 00:39:45,230 и тъй като това е безплатно. 830 00:39:45,230 --> 00:39:46,820 Въпреки че със сигурност съществуват алтернативи. 831 00:39:46,820 --> 00:39:49,580 И някои от вас може би бъркам с алтернативи за окончателните проекти. 832 00:39:49,580 --> 00:39:55,330 >> Това е снимка, междувременно, на уеб-базиран инструмент, наречен PhpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Това е съвпадение, че този уеб-базиран инструмент също е 834 00:39:58,260 --> 00:40:01,720 написан на език, PHP, но това, което е писано да се направи 835 00:40:01,720 --> 00:40:04,620 е да ни даде на уеб-базиран интерфейс към база данни. 836 00:40:04,620 --> 00:40:07,180 Тъй като обикновено е MySQL нещо, исторически вас, 837 00:40:07,180 --> 00:40:08,770 ще си взаимодействат с единствената с команден ред. 838 00:40:08,770 --> 00:40:10,811 И би било супер досадно и тайнствена да има 839 00:40:10,811 --> 00:40:14,487 да въведете текстови команди, за да изберете данни, вмъкнете данните, и изтриване на данни. 840 00:40:14,487 --> 00:40:16,820 Така че някои хора в интернет пише уеб-базирана програма 841 00:40:16,820 --> 00:40:18,900 че просто нека да управлявате данните в нашата база данни. 842 00:40:18,900 --> 00:40:23,040 Това е като двойно кликване върху Excel, и използвате уеб-базирана версия него. 843 00:40:23,040 --> 00:40:26,370 >> И това, което ще използвате този за в крайна сметка през следващата седмица, а не в р-зададете шест, 844 00:40:26,370 --> 00:40:28,680 но е да се изгради нещо наречено CS50 финансите, което 845 00:40:28,680 --> 00:40:32,630 ще има база данни от Потребителите, с потребителски имена и пароли, 846 00:40:32,630 --> 00:40:34,860 долара възлиза че те имат в банковите си сметки. 847 00:40:34,860 --> 00:40:37,280 Това ще бъде нещо, което се използва за съхранение 848 00:40:37,280 --> 00:40:39,910 символите и количествата на запасите, които потребителите 849 00:40:39,910 --> 00:40:42,567 Купих си, използвайки виртуална долара, които ще дадат на тях. 850 00:40:42,567 --> 00:40:44,900 И това ще позволи на потребителите да се регистрирате за вашия сайт, 851 00:40:44,900 --> 00:40:47,190 така че дори приятелите си могат да настройват към вашия уеб сайт 852 00:40:47,190 --> 00:40:49,360 и действително да се регистрирате, влезете в системата, и си поиграете 853 00:40:49,360 --> 00:40:52,807 и се опитват да се намери виновен в кода си, и се опитайте да намерите грешки в своя уебсайт. 854 00:40:52,807 --> 00:40:55,390 И те просто ще се регистрират от самите добавяйки, ефективно, 855 00:40:55,390 --> 00:40:58,120 чрез код пишете на вашата база данни. 856 00:40:58,120 --> 00:41:02,470 >> Например, това е бърз скрийншот на каква база данни може да изглежда така. 857 00:41:02,470 --> 00:41:05,190 Това е от един от миналогодишните solutions-- 858 00:41:05,190 --> 00:41:07,760 това е като мини Excel файл, съхраняван в нашата база данни, 859 00:41:07,760 --> 00:41:09,950 съхранявана в този софтуер, наречен MySQL. 860 00:41:09,950 --> 00:41:13,260 От лявата страна, аз съм явно дал на всеки потребител с уникален номер. 861 00:41:13,260 --> 00:41:16,200 Във втората колона, дадох всеки потребител name-- моята собствена 862 00:41:16,200 --> 00:41:16,880 между тях. 863 00:41:16,880 --> 00:41:21,430 И на дясната страна, Аз съм ги дал хашиш. 864 00:41:21,430 --> 00:41:26,760 >> Сега това е всъщност парола, но това не е обикновен текстов парола. 865 00:41:26,760 --> 00:41:30,160 Това е криптирана парола, ако щете, или парола хашиш. 866 00:41:30,160 --> 00:41:32,000 Което ще се върнем, за да не след дълго. 867 00:41:32,000 --> 00:41:34,340 >> Но ако сте чели една статия за това как 868 00:41:34,340 --> 00:41:37,950 паролата си в някакъв банка или някои уебсайт може да са били изложени на риск, 869 00:41:37,950 --> 00:41:39,630 като цяло той може да означава едно от следните две неща. 870 00:41:39,630 --> 00:41:42,780 Така че това е само един откъс от шест потребители. 871 00:41:42,780 --> 00:41:45,460 Всички вие сега мога да проумея изложени чрез хакване или напукване 872 00:41:45,460 --> 00:41:47,690 какви пароли нашите шест хората са. 873 00:41:47,690 --> 00:41:49,720 Но ако някога сте придобили сигнал или извинение 874 00:41:49,720 --> 00:41:52,803 от компания или уеб сайт поговорка, Съжалявам, хакер разби в нашата база данни, 875 00:41:52,803 --> 00:41:56,360 вероятно ще трябва да смените парола, какво може да означава това? 876 00:41:56,360 --> 00:41:59,670 >> Е, едно, би могло да означава компанията е била по-глупаво, 877 00:41:59,670 --> 00:42:03,630 и е съхраняване парола в колона като тази, некриптиран. 878 00:42:03,630 --> 00:42:05,840 Което означава, че противникът, който е откраднал базата данни, 879 00:42:05,840 --> 00:42:07,440 буквално знае си потребителско име и парола. 880 00:42:07,440 --> 00:42:08,960 Това е най-лошия възможен сценарий. 881 00:42:08,960 --> 00:42:11,710 И както ще видите в р-сет седем, така че лесно да се избегне. 882 00:42:11,710 --> 00:42:15,624 Няма абсолютно никакво извинение за това форма на глупостта в днешния интернет. 883 00:42:15,624 --> 00:42:18,540 Two-- и ние ще намерим някои статии да свидетелства фактът, че това все още 884 00:42:18,540 --> 00:42:21,710 се случва, nonetheless-- две, може би противникът 885 00:42:21,710 --> 00:42:23,840 открадна тази версия на базата данни. 886 00:42:23,840 --> 00:42:27,110 Което е още един вид лошо, защото сега те знаят, че аз имам шест клиенти, 887 00:42:27,110 --> 00:42:29,270 Знам имената на потребителите на тези шестима клиенти, 888 00:42:29,270 --> 00:42:32,910 и знам, че кодираната версии, или хешираното версии, 889 00:42:32,910 --> 00:42:34,340 на пароли тези шест клиентите. 890 00:42:34,340 --> 00:42:37,010 Но всеки от вас, които биха могли са направили [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 където можете напукани пароли, или е взела Един поглед към тази версия на проблема 892 00:42:41,150 --> 00:42:46,280 набор, защо е все още малко тревожен ако противникът знае вашия хеш 893 00:42:46,280 --> 00:42:47,435 пароли? 894 00:42:47,435 --> 00:42:49,732 >> АУДИТОРИЯ: Защото те биха могли въведете цялата речника 895 00:42:49,732 --> 00:42:50,690 в хеш функция. 896 00:42:50,690 --> 00:42:54,520 И ако вашата парола е речник Думата, [? те могат просто match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID Malan: Точно така, противникът може просто да пишат код, като някои от вас 898 00:42:57,640 --> 00:43:00,526 направил за [? Hacker?] 2, чрез която можете обхождане 899 00:43:00,526 --> 00:43:03,400 всички думи в речника, или всички възможни комбинации на 900 00:43:03,400 --> 00:43:06,610 чрез Z и един през nine-- което звучи като много, и това е. 901 00:43:06,610 --> 00:43:08,361 Но за компютър, това е дяволски много бързо. 902 00:43:08,361 --> 00:43:10,610 И в действителност, това е точка на [? Hacker 2,?] Беше 903 00:43:10,610 --> 00:43:12,540 да вземат неща, които буквално изглежда по този начин, 904 00:43:12,540 --> 00:43:14,900 и обратно инженерство какво всъщност беше. 905 00:43:14,900 --> 00:43:17,270 >> Така че ние ще разгледаме как можем съхраняването това по-ефективно. 906 00:43:17,270 --> 00:43:20,210 Оказа се, за щастие в MySQL, там ще бъде типове данни. 907 00:43:20,210 --> 00:43:22,800 И един от най-забавните части за дизайна на базата данни, за да бъдем честни, 908 00:43:22,800 --> 00:43:25,810 е действително да реши за себе си как трябва да сте представител на данните? 909 00:43:25,810 --> 00:43:29,630 Ако сте представител на телефонен номер, както е пад, като голям брой, или дълго? 910 00:43:29,630 --> 00:43:31,630 Или искаш да всъщност го направя като последователност от символи? 911 00:43:31,630 --> 00:43:33,780 И не може да има много нетривиални въздействия от тази. 912 00:43:33,780 --> 00:43:36,714 >> В действителност, един от най- Най-ранните, забавни истории уместен 913 00:43:36,714 --> 00:43:39,880 е, когато Mark Zuckerberg строеше Facebook, той е написан в, 914 00:43:39,880 --> 00:43:42,300 и все още до голяма степен е написано на PHP. 915 00:43:42,300 --> 00:43:45,400 И един от най-големите предизвикателства те се сблъскват в началото на деня беше мащабиране. 916 00:43:45,400 --> 00:43:48,820 Когато те държат добавяне училище след училище след училище, доколкото ми е известно, 917 00:43:48,820 --> 00:43:51,639 един от оригинални решения е по същество да копирате и поставите 918 00:43:51,639 --> 00:43:53,430 някои от базите данни, и някои от кода, 919 00:43:53,430 --> 00:43:55,346 така че е Harvard тичане на своя собствен сървър, 920 00:43:55,346 --> 00:43:56,995 и MIT е действал на своя собствен сървър. 921 00:43:56,995 --> 00:43:59,120 И затова, за някои от вас, които биха могли да се припомни, 922 00:43:59,120 --> 00:44:01,510 не можеш да имаш приятели в други мрежи. 923 00:44:01,510 --> 00:44:05,050 >> Вие вероятно нямате приятели MIT или Харвард преди 10 години, или така, 924 00:44:05,050 --> 00:44:07,467 но вие не може да обхване мрежи за частично тази причина. 925 00:44:07,467 --> 00:44:10,550 И един от най-големите предизвикателства за Марк и за компании като Facebook 926 00:44:10,550 --> 00:44:13,460 е всъщност работа стотици и хиляди и милиони 927 00:44:13,460 --> 00:44:14,460 на заявки в секунда. 928 00:44:14,460 --> 00:44:16,501 Така че нещата ще започнем Говорим за тази седмица 929 00:44:16,501 --> 00:44:19,860 са наистина ще да е уместна написването добър софтуер и популярно 930 00:44:19,860 --> 00:44:23,040 успешните инструменти, които може да се справи много потребители. 931 00:44:23,040 --> 00:44:25,460 >> Така че ние ще говорим за неща, като индексиране и търсене, 932 00:44:25,460 --> 00:44:26,910 но и че е за днес. 933 00:44:26,910 --> 00:44:28,780 Ние ще ви видя повече в сряда. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUSIC - "Зайнфелд" ТЕМА] 936 00:44:33,902 --> 00:44:35,943 DAVID Malan: Можете да него, и се изважда от него. 937 00:44:35,943 --> 00:44:38,859 И не е нужно да си с някои предварително определена сума на паметта. 938 00:44:38,859 --> 00:44:40,580 Е, това, което е, че ще се обади? 939 00:44:40,580 --> 00:44:42,369 >> SPEAKER 1: Е, какво се случва? 940 00:44:42,369 --> 00:44:43,535 SPEAKER 2: Какво искаш да кажеш? 941 00:44:43,535 --> 00:44:44,451 Той изнасяше лекция. 942 00:44:44,451 --> 00:44:47,650 DAVID Malan: И ние можем да използваме по- функция, наречена изчистване да memory-- 943 00:44:47,650 --> 00:44:50,050 >> SPEAKER 1: Защо да не се движат в ръцете му? 944 00:44:50,050 --> 00:44:52,450 >> SPEAKER 2: Ами that's-- знаете ли, това е нормално. 945 00:44:52,450 --> 00:44:57,162 Това е точно като той има само големи колбаси висят там. 946 00:44:57,162 --> 00:44:59,040 >> SPEAKER 1: Това е нормално? 947 00:44:59,040 --> 00:45:03,096 >> SPEAKER 2: Да, аз мисля, че ние Просто се предположи той случайно 948 00:45:03,096 --> 00:45:06,840 заменя дезодорант си с лепило. 949 00:45:06,840 --> 00:45:07,608