[Гуляе музыка] Дэвід малая: Гэта CS50, і гэта пачатак тыдня восем. І мы так рады вітаць таму, вялікі сюрпрыз, уласны Рамон CS50 ў Гальван, узыходзячая старэйшы, які быў Правёўшы апошнія некалькі месяцаў з ліпеня ў Лос-Анджэлесе, у Галівудзе, літаральна працуе на новым тэлевізары шоў пад назвай Калонія, стваральнікам якога на самай справе сам Гарвардскі галын. І таму мы вельмі рады бачыць гэта Дэбют у сеткі ЗША ў студзені гэтага года. Так што сочыце за што, а для больш Рамон для тыдняў прыехаць. Ведайце ж цяпер, што канец блізкі. І тое, што гэта азначае, што там не усё, што многае засталося CS50, на жаль. У нас ёсць толькі тры праблемы наборы left-- ёсць Праблема ўсталяваць six--, які знаходзіцца ў Вашы рукі цяпер ці ў бліжэйшы час будзе, у канцы гэтага week-- закліканая ліквідаваць нашы светы ў камандным радку, дзе мы правялі вялікую частку нашага часу, выкарыстоўваючы З, а свет вэб-праграмавання. Ну, вы ўбачыце шмат ідэй запазычаныя з працы з каманднага радка, але таксама шмат новага і цікавыя ідэі якія таксама будзе дарэчы для мабільныя прыкладання і тэхналогіі, для ў больш агульным, з дапамогай якога Хлопцы ўсе знаёмыя ў цяперашні час на наўтбуках і тэлефонах і да таго падобнае. Такім чынам, вы будзеце ажыццяўляць не вэб-старонкі, або вэб-сайт як такой, але фактычна вэб-сервер. Вы будзеце пісаць астатнія вэб-сервера напісана ў C, мэта якога ў жыцці гэта атрымаць HTTP запытаў, гэтыя віртуальныя канверты мы працягваць казаць о, а на самай справе адказаць альбо некаторыя статычныя content-- як кропка HTML файл або кропка JPEG ці любое іншае лік файлаў, ці нават файл PHP з дапамогай вэб- сервер будзе інтэрпрэтаваць гэтую PHP Код і выплюнуў вынікі. Зараз, мы падалі вам зусім няшмат рамках для it-- сапраўды Код размеркавання праблемы ўсталяваць шэсць даўжынёй больш за 1000 ліній, А многія з якіх прадстаўлены водгукі, каб быць fair-- але гэта на самай справе азначае быць магчымасць каб атрымаць вашыя рукі брудныя дайвінг у даволі вялікім праекце што мы вельмі канкрэтна выразаныя кавалкі для вас, так што на самой справе, калі вы выходзіце CS50 і ўвесці рэальны свет праграмавання і хочаце, каб плёскацца ў любую колькасць праектаў, Вы будзеце мець значна больш камфорт запампоўкі некаторыя крыніца Код, некаторыя з адкрытым зыходным кодам праекта ў Інтэрнэце, і дайвінг ў і робіць Змены, якія вы лічыце патрэбным. Праблема ўсталяваць сем будзе пра зрабіць свой уласны вэб-дадатак які прымае дынамічны ўвод і вырабляе дынамічны выхад у выглядзе вэб-сайта etrade.com-як. І праблема ўсталяваць восем будуць сканцэнтраваны на яшчэ іншую мову вядомы як JavaScript. Між тым, канчатковае Праект знаходзіцца на гарызонце. Так званы папярэдняй заяўкі з-за тыдзень з сённяшняга дня. Папярэдне proposal-- ў адпаведнасці са спецыфікацыяй, які знаходзіцца на website-- CS50 ў з'яўляецца даволі выпадковы магчымасць для каб вы адправіць ліст даволі кароткі у вучэнне таварыша проста інфармаваць яго ці яе, што вы думаеце, у выкарыстоўваць яго ці яе ў якасці рупара. І ёсць здаровае check-- Ці вы думаеце аб адкусваючы занадта шмат ці, можа быць, занадта мала, ці, можа быць, вы паняцця не маеце наогул і хочаце ўдзельнічаць у размове. Пасля гэтую прапанову і справаздачу аб стане, так званы CS50 Hackathon тут Кембрыдж для Гарварда і Йеля студэнтаў падобныя. Канчатковы праект-х Рэалізацыя тады з-за. А потым CS50 справядліва тут, у Кембрыджы, а таксама яшчэ адзін у Нью-Хейвене. Так прапанове, зірніце на вэб-сайт для тых прыватнасцяў. Але больш узбуджальна, таксама з'яўляецца магчымасць атрымаць вашыя рукі брудныя, і вашы розумы, адкрытыя для цэлага куча тым і інструментаў і метады, якія з'яўляюцца дапаможнымі да асноўнай праграме Курсу, але тым не менш звязаны паміж сабой. А таксама выдатны прыступкамі да рабіць сапраўды класныя канчатковыя праекты, якія выходзяць далёка за рамкі матэрыялу мы разгледзелі афіцыйна ў задачы ўсталёўвае або лекцыі. Так што на сайт CS50 для Увесь спіс семінараў. Калі вы яшчэ не зарэгістраваць, гэта нармальна. Ідзіце наперад і зарэгістравацца яшчэ, і мы будзем сачыць за жывой сувязі струменевага дзень і час на сайце. І ўсё будзе запісаны і паставіць онлайн калі вы не можаце зрабіць у пэўныя дні тыдня і час. Пра тое, што наперадзе thereafter-- добра, Вядома, ёсць CS50 Hackathon. Гэтая фатаграфія, нагадаем, з нуля тыдзень прынятыя каля 4 гадзін раніцы ў адзін з вечароў мінулага года. CS50 кірмаш, якая зноў адбудзецца ў абодвух гарадах. А потым, на завод насення, хоць мы па-ранейшаму ёсць у месяц плюс злева ад семестра, калі Вы хацелі б далучыцца да ўласнай вучэнне CS50 ў персанал, і вы хочаце, каб пачаць думаць пра становіцца CA, або вучэнне малайчына, ведае, што мы пачынаем казаць аб тым, што больш пазней у гэтым семестры. Але на фота тут Найбольш каманды ў гэтым годзе. І так, PHP--, і я быў так сумна на мінулым тыдні, што [? Allyse?] Ласкава пайшоў у намаганні атрымання нас гэтыя выдатныя рэквізіт што я не ў канчатковым выніку з дапамогай, так што на самай справе проста паглядзеў роду дурное што ў нас рыдлёўку седзячы тут усё дзень у мінулую сераду, і трохі лыжку. Але гэта быў мой метафарычны спосаб паспрабаваць намаляваць карціна, чаму мы пераходу з С у мове, як PHP. І тое ж самае можна сказаць і пра любую Колькасць languages-- Java, Python, Ruby або пучкі others-- але ў той час як у З, напрыклад, напісаць праграму на З можа быць, як правіла, прымаючы лыжку, як гэта і капаць яму ў зямля, у пясок або бруд. PHP дазваляе заняць значна вялікія ўкусы з праблемы, пісаць код значна менш выкарыстоўваючы значна меншую інструмент, таму што ёсць значна больш, Функцыянальнасць сабрана ст. Цяпер, калі мы сапраўды драматычныя, мы нешта лапатай тут, але так яно і будзе. Між тым, з другога Метафара мы прыдумалі ёсць, вядома, вы маглі б выкарыстоўваць нешта накшталт гаечны ключ забіваць чымсьці накшталт цвіка. Але, вядома, права інструмент для выкарыстання збіраецца быць не столькі мова называецца C-- і цяпер я проста раздражнёны [? Сандэрс ,?] Магчыма, мы гэта выправім later-- так правільны інструмент для часта выкарыстоўваюць ня будзе гэта самы нізкі ўзровень інструментам. І на самай справе, З не з'яўляецца мовай, які большасць з вас калі-небудзь выкарыстоўваць, ці абавязкова выкарыстоўваць зноў. І на самай справе, трохі secret-- адзіны раз Я выкарыстоўваю C я даволі шмат паміж Верасень і снежань кожнага падзення семестр. І гэта таму, што мы выкарыстоўваць яго як магчымасць каб навучыць асновам праграмавання, а разам з ім кампутара навука асновы, дадзеныя структуры, алгарытмаў і like-- але вельмі хутка будзе вам бачым, што сінтаксіс і ідэі, якія ляжаць C так цудоўна перадачы на ​​больш сучасныя высокаўзроўневых моў, як PHP і Python і Perl, Java і і Objective-C-- самай справе, не так шмат Мэта-C-- але Свіфт, гэтыя новыя мовы, што многія з вас будзе то плёскацца з вамі канчатковага праекта. Так што без далейшых цырымоній, давайце на самай справе выкарыстоўваць PHP, каб вырашыць некаторыя праблемы. Нагадаем, што на ранняй стадыі, у мінулым тыдні мы проста выкарыстоўвалі CS50 IDE, мы напісалі невялікую праграму DINKY што толькі што сказаў, "Прывітанне, свет". І тады я выратаваў яго ў файл называецца hello.php. І тады я пабег гэтую каманду. І чаму? У ангельскай мове, што тут адбываецца? Што я раблю, калі Я пабег гэтую каманду? Да? АЎДЫТОРЫЯ: Там нейкая функцыя PHP які чытае тое, што in-- разумее. Дэвід малая: Добра, ёсць некаторая функцыя PHP-- і дазвольце мне быць больш канкрэтным, ёсць праграма пад назвай PHP, таксама вядомае, як Перакладчык, які разумее змесціва hello.php, і інтэрпрэтуе яго зверху знізу, злева направа, і робіць тое, што кажуць гэтыя каманды. Каманды ў hello.php, вядома, толькі крыніца code-- функцыі і зменныя і завесы і і да т.п., што мы самі пачалі пісаць у PHP. Але ў адрозненне ад C, які з'яўляецца кампіляваная мова, PHP вы проста напісаць яго, і запусціць яго. Вы прапусціць гэты крок пасярэдніка пераўтварэння яго ў нулёў і адзінак, а затым запусціць яго. І так, што з ног на гэта? Чаму мы прапускаючы крок? Чаму больш сучасныя мовы як правіла, каб прапусціць гэты крок? Што выгада? Ці проста інтуітыўна? Нават калі мы не маю напісана шмат PHP раней, што выгадна не пра кампіляцыі кода вы думаеце? Няма? Ня здзяйсненні? Чухаць галаву? Так. АЎДЫТОРЫЯ: больш дынамічным. Дэвід малая: Больш дынамічны? Што вы маеце на ўвазе? АЎДЫТОРЫЯ: [неразборліва] Дэвід малая: ОК, добра, так у залежнасці ад ўваходных дадзеных, Вы не павінны сабраць яго кожны раз. І гэта сапраўды так проста, як тое, што that-- з'яўляецца кропкай працягу скампіляваць код? Гэта ўсяго толькі адзін крок, што гэта making-- гэта патрабуе, На працягу апошніх некалькіх тыдня, у два разы больш крокаў як толькі што выкананне праграмы. Гэта было карысна ў тым, што вы ўбачыць некаторыя паведамленні пра памылкі і г.д., але гэта яшчэ толькі раздражняе крок. І таму праграмісты зразумелі, на працягу доўгага часу, чаму б нам пачаць пісаць мовах, якія ня трэба што даволі механічнай крок, так што можна проста напісаць код і запусціць яго. Але якой цаной што мы ўбачылі мы заплацілі на мінулым тыдні, з аднаго канкрэтным прыкладзе? Да? Хуткасць. Так [? што?] перакладчыкі трохі павольней, у тым, што нулі і адзінкі ў прыгожа і хутка для кампутара каб зразумець, таму што Працэсар Intel, або тое, што ёсць, проста разумее, што адбываецца на з гэтымі мадэлямі біт. У той час як перакладчыка гэта праграма, якая на самой справе павінен прачытаць крыніца Ascii код, які вы напісалі, і пераўтварыць яго, так бы мовіць, або высветліць, як яна пераўтворыць у канчатковым рахунку, у нулёў і адзінак. Так што проста займае крыху трохі прадукцыйнасці. Так што гэта крыху кампраміс. Цяпер, калі мы робім гэта тут, дазвольце мне ісці наперад і рабіць прыклад наступным чынам. Калі я іду сюды, новы файл, я збіраюся захаваць гэта зноў hello.php. А цяпер я збіраюся ісці наперад і сказаць, "друк прывітанне свет" - і ўспомніць, што я магу выкарыстоўваць друк, я не павінны выкарыстоўваць друк-F. А цяпер сюды, калі я PHP ў hello.php, huh-- я здаецца, не інтэрпрэтавалі яго. Што я зрабіў не так? Аўдыторыя: кутнія бранзалеты. Дэвід малая: Так, вам трэба што дужка наверсе. Так што гэта выгляд раздражняе, але вы абвыкнеце да яго хутка. Калі я павінен напісаць PHP код, я як правіла, неабходна, каб паведаміць праграме, або распавесці перакладчыка, эй PHP, вось некаторыя PHP-код. І тады для добрай мерай, я б зачыніць гэта не з гэтага, а з кутом маркі проста пытанне кранштэйн, так што зараз тут, калі я запускаю гэта зноў, цяпер Я атрымаць жаданы вынік. Зараз давайце зробім невялікае аптымізацыі, проста так, што вы бачылі раней. Гэта свайго роду раздражняе, што я павінны працаваць PHP прастору hello.php, таму што ў мінулым я можа проста напісаць кропка слэш Назва праграмы, якая з'яўляецца своеасаблівай прыемна. Гэта свайго роду лепшага карыстацкага досведу. Вось і атрымліваецца, вы можаце зрабіць гэта у PHP з following-- I можна выкарыстоўваць гэта даволі загадкавым загавор у верхняй тут, якія, як правіла, называецца прытон, прычым гэта рэзкае сімвал, так бы мовіць, гэта выбух або клічнік. І гэта ў цяперашні час з'яўляецца шлях да праграмы на звычайнай сістэме Linux, што называецца сераду, або акр. І гэта line-- доўгую гісторыю short-- адна лінія толькі кажа, эй кампутар, знайсці PHP перакладчык для мяне ў навакольным асяроддзі, знайсці яго ў памяці, так бы мовіць. І што цяпер прыемна, гэта што калі я іду сюды, Я магу зрабіць кропка слэш прывітанне кропка PHP, или-- хм. Ўведзена адмоўлена. Ну, вы ўбачыце нават больш гэтага з праблемай ўсталяваць сем, калі вы ўжо не маеце, з дазволамі. Аказваецца, што мне трэба для выканання гэтай каманды называецца [? chamod?] для змены mode-- плюс х hello.php. Мне трэба [неразборліва] гэта адзін дадатковы крок, які кажа мой кампутар, зрабіць hello.php выкананы файл. А цяпер паглядзіце, што happens-- кропка скараціць hello.php, ён проста працуе. Мне не трэба, каб паказаць інтэрпрэтатар больш. І я магу зрабіць гэта, нават прыгажэй, яшчэ, калі я перайменаваць гэтую рэч. Калі перамясціць hello.php проста Hello-- так заўважыць у левым верхнім куце, Назва праграмы з'яўляецца сапраўды цяпер проста Прывітанне. Цяпер я магу зрабіць яго падобным на праграму C, нават калі гэта напісана ў PHP-- або адкрыта любую колькасць іншых моў. Так лімітавая павышэнне, няма функцыянальнай розніцы. Але гэта ўсяго толькі трохі цікаўнасці Цяпер, так што вы можаце пісаць праграмы, на любой мове, і карыстальнік не павінны ведаць, ці ўсё роўна, што гэта такое. Ну, давайце паглядзім на больш пераканаўчым прыкладам у цяперашні час што я на хуткую руку загадзя. І гэта называецца quote.php. І гэта даступна онлайн. І заўважце, што гэта даволі short-- але гэта праграма каманднага радка, што гэта будзе выглядаць коштаў на акцыі для мяне, што на самой справе адбываецца быць дарэчныя для праблем ўсталяваць сем. Такім чынам, давайце паглядзім, што я раблю. На самым версе я атрымаў якая адкрывае дужка знак пытання PHP. Тады я атрымаў гэтую лінію, у выніку чаго я якія патрабуюць файл пад назвай functions.php-- мы збіраемся, каб убачыць Больш падрабязна пра гэта ў трохі, але гэта, як З-х версія рэзкае ўключаюць, дзе вы хочаце пайсці ўключыць іншы файл. PHP называе гэта патрабуе, хоць гэта таксама мае функцыю ўключаюць у сябе. І аказваецца, што гэта function.php проста што-то я ўжо пісаў класа. Я паклаў яго ў тым жа каталогу, таму што Я хацеў, каб вынесці код што мы маглі б выкарыстоўваць у іншым месцы. Між тым, вы можаце, верагодна, выснову, што тут адбываецца. Гэта крыху адрозніваецца ад C-- але што я маю на ўвазе гарантаваць належнае выкарыстанне? Перавесці гэта больш тэхнічна. Пры якіх абставінах гэта я выхад з праграмы, або выхадзе? Да? АЎДЫТОРЫЯ: Калі ў вас няма два аргументу каманднага радка. Дэвід малая: Калі я не камандаваць аргументы радка. І памятайце, што адзін з тых, Аргументы сама назва праграмы. І другі будзе іншае слова я друкую пасля радку. Гэтак жа, як C, гэта гэта мой спосаб праверкі, зрабіў карыстальнік супрацоўнічаць і запусціць праграму як я збіраўся? Цяпер, ёсць сёе-тое трохі адрозніваецца з C-- у першую чаргу мы ёсць гэты знак даляра, і тое, што робіць долар увайдзіце абазначэння ў PHP? Проста пераменная. Гэта all-- проста пераменная наступным усё, што вы хочаце на самай справе назваць гэта. Звярніце ўвагу, ёсць нешта адсутнічае з маёй праграмы PHP, гэтак жа, як гэта было ў мінулым адсутнічае тыдзень, у параўнанні з C, які з'яўляецца што? А віды, але яшчэ сёе-тое. Там няма то function-- асноўную функцыю. Там няма асноўнай функцыяй. Вы проста пачаць пісаць код без турбавацца аб даволі адвольнае Канвенцыя наймення па змаўчанні некаторыя Функцыя галоўны. Так аргумент З толькі сапраўды глабальная пераменная што перакладчыка робіць даступнымі для мяне. Цяпер, гэта цікава. Так што глядзіце на рэчы. Знак даляра акцыі на выйшла, што мая пераменная. На правай баку, ёсць, мабыць, функцыя ў PHP называецца пошук, што Я перадаю свой апошні каманднага радка Аргумент, мэтай якіх усе слова. І мы ўбачым, як гэта працуе ў дадзены момант. А потым, нарэшце, я паведамляю цану. Я друкую адным Доля такой-то. І памятайце, што гэта спосаб PHP-- чынам у PHP-- дзе вы не павінны рабіць знак даляра S больш. Вы можаце проста выкарыстоўваць фігурныя дужкі і падключыць якой-небудзь зменнай. Вы не павінны турбавацца аб выкарыстоўваючы Printf такім жа чынам. І, як у бок, калі вы кладзе зменную ўнутры падвойных двукоссяў, як гэта, Вы карыстаецеся фантазіі тэхніку называецца інтэрпаляцыя зменных. Гэта проста азначае, падключыце зменную тут. І, як у бок, некаторыя з вас, хто прыйшоў ад іншых слаёў праграмавання, Вы не можаце выкарыстоўваць адзінарныя двукоссі вакол струны, каб зрабіць гэта. Вы павінны выкарыстоўваць двайныя двукоссі для інтэрпаляцыя зменных, каб працаваць. У адваротным выпадку вы будзеце літаральна ўбачыць гэтыя фігурныя дужкі. Так, нарэшце, давайце ісці наперад і працаваць у гэтым. Дазвольце мне зрабіць мой тэрмінал трохі больш. Дазвольце мне ісці наперад і працаваць ўнутры маёй цытатай каталогу. [? CDsource?] [? М.?] [? цытата?] PHP цытатай кропка PHP, і я збіраюся шукаць нешта як GOOG, які з'яўляецца яго Біржавы сімвал, і адна акцыя новым імем, Алфавіт Inc, кошт $ 717, як сёння. Добра, калі мы хочам, каб Запусцім, хто ёсць яшчэ адзін біржавых зводак яны хочуць, каб паглядзець? Microsoft, я думаю, гэта адно, MSFT-- $ 53. Я думаю, што Yahoo з'яўляецца, можа быць ,. І ў тым, што Facebook. Так што гэтая праграма робіць? Магія, здаецца, быць убудаваныя у гэтай функцыі пошуку. Такім чынам, давайце зірнем. Атрымліваецца, што не прыйшоў з PHP, гэта ў functions.php. І мы не будзем ісці праз гэта вельмі падрабязна, але зьвярніце ўвагу на аператыўнае слова тут што на лініі шосты functions.php-- Я літаральна сказаць, функцыю. Я паказаць імя маёй функцыі. Я тады паказаць любы аргументы, або параметры, Я хачу, каб функцыя не take-- ніякія тыпы. І тады я яго рэалізацыі. І я буду махаць рукой на рэалізацыю, так як гэта даволі прасунуты права цяпер, але мы будзем бачыць яго зноў на самай справе на тыдзень ў задачы ўсталяваць сем. Але я магу ачысціць гэта таксама. Я таксама уключыў у сёння код версія цытаты, якая не мае кропка PHP файл. Таму што тое, што, як мяркуецца, на Верхняя частка праграмы пад назвай проста працытаваць? Гэта так званая shebang-- даволі загадкавым загавор што кажа знайсці PHP, а затым запусціць яго на сваім кодзе тут. Добра, так што прыносіць нам, дзе мы спыніліся Апошняе time-- хоць і з некаторыя больш прасунутыя прыклады. Любыя пытанні да гэтага часу пра PHP або тое, што мы робім? No-- усё ў парадку. Да? АЎДЫТОРЫЯ: Унутры HTML файлы, рабіць you-- [? Вы?] [? проста назваць яго?] а [неразборліва] PHP файл? Дэвід малая: Добры пытанне. У кантэксце Вэб, які мы знаходзімся літаральна аб пераходзе да, Вы не карыстаецеся так званы прытон у верхняй частцы, таму што вэб-server-- часта Праграма называецца Apache або Microsoft IIS, Internet Information Server, або любую колькасць іншага праграмнага забеспячэння вэб-сервера, ведае, што, калі ён бачыць файл кропка PHP, што гэта варта запусціць інтэрпрэтатар на ім. Гэта не глядзіць на гэтай першага радка. Так першай лініі трук проста, калі вы пісаць каманднага радка programs-- які мы не будзем рабіць супер часта, але гэта наш спосаб пераадолення нашы прыклады C да гэтага часу нашай PHP. Так што давайце сапраўды пераадолець гэты свет ад свету з каманднага радка ў Сеткі робячы наступнае. Дазвольце мне ісці наперад і рабіць тут на імгненне. Так што, калі ў нас ёсць вэб-сервер, ці, дакладней, калі ў нас ёсць свой ноўтбук тут, якія я буду маляваць, як гэта. І вось у нас ёсць Інтэрнэт у нейкім выглядзе. А потым сюды, у нас ёсць сервер у building-- гэта, як Інтэрнэт works-- і тут гэта сервер з некаторымі агнямі, можа быць. Што адбываецца на самай справе паміж гэтымі двума злучэннямі? Такім чынам, у гэтым будынку з'яўляецца вэб-сервер. Гэта проста кампутар які працуе ў некаторых аперацыйных система-- магчыма свабоднае праграмнае забеспячэнне пад назвай Apache, які працуе CS50 IDE. Такім чынам, вы можаце фактычна думаю, з гэтага будынка як будынак, у які захоўваецца CSt0 IDE. Вось дзе ў вас ва ўсіх рахункі, дзе вы ўсё мець свой уласны вэб-сервер працуе, вы ўсё ёсць свае ўласныя унікальныя адрасы, як мы пачалі абмяркоўваць, і вы будзеце бачыць больш у П. ўстаноўлены шэсць. Вось мой ноўтбук дзесьці яшчэ ў Інтэрнэце. І таму, калі я наведваю URL, які належыць мне, што інтэрнэт-трафік будзе на сервер, сервер-х атрымання HTTP-request-- падобна атрымаць index.html, і гэта адказваючы на ​​гэтай вэб-старонцы. Так што гэта наогул парадыгма. У той час як усё да Да гэтага часу сёння, усё адбываецца толькі ў абмяжоўваецца гэтага будынка. Я выкарыстаў свой ноўтбук, але Я быў звязаны з CS50 IDE, так што ўсе з гэтых праграм я бег быў ўнутры гэтага сервера, самой. Але цяпер, давайце пачнем паўторнага PHP напісаць некалькі праграм, якія фактычныя падаюцца да вэб-серверам. А для гэтага, я збіраюся пайсці у цэлай кучай прыкладаў што ўвесці гэтую ідэю тут. Так што гэта свайго роду мудрагелісты спосаб апісання парадыгмы праграмавання. І на самай справе, як вы выйдзеце CS50 або працаваць на канчатковых праектаў, або ўзяць некаторыя ідуць ад класа, вы пачнеце бачыць, што world-- асабліва якія вырасьлі з моў, такіх як C якія з'яўляюцца супер нізкай level-- разумею, што ёсць лепш спосабы напісання праграмнага забеспячэння. Ёсць пэўная шаблоны вы можаце прытрымлівацца, некаторыя спосабы арганізацыі файлаў і спосабы наймення функцый, так што карацей кажучы, свет прыйшоў з цэлай кучай скарачэнняў і імёны шляхоў праграмавання. Гэта ўсяго толькі метады, якія Вы маглі б выкарыстоўваць. І адзін з іх завецца MVC, для мадэлі View Controller. І гэта толькі для Цяпер, празмерна складаным спосаб сказаць, як вы павінны выкласці сайт PHP на аснове, у нашым выпадку. Як вам арганізаваць вашыя файлы, як вы арганізаваць вашу логіку, такім чынам, што робіць яго лягчэй напісаць больш складаныя вэб-сайты? І на самай справе, мы хутка трапіць з р-ром сем. Такім чынам, у свеце MVC, вы збіраецеся бачыць, што наш код можа наогул можна ахарактарызаваць як любы код мадэлі, ці код кантролера, або від Код. І я збіраюся спрашчаць яго як follows-- кантролер з'яўляецца мазгі вашай праграмы, гэта, дзе ўсё цікавая логіка бывае. Так што ўсе мы былі пісаць да гэтага часу ў класе, накшталт як кантролер code-- гэта кантроль ваша праграма, вашы завесы, ваш ўмовы, вашы функцыі і зменныя і ўсё такое. Праглядаў, цяпер, будуць крыху больш відавочным ў свеце ў Інтэрнэце. Выгляд эстэтыка вашага сайта. Гэта тое, што карыстальнік sees-- малюнка, HTML-сталы, HTML тэгі і ўсё таго, што ўсе пухнаты эстэтыкі рэчы, якія не тое, што цяжка напісаць, але толькі тое, што вы генерацыі, гэта так званы выгляд, эстэтыка. І мадэль, у выніку, будзе быць stuff-- база дадзеных, якая мы пачнем дайвінг ва ўсе тым больш у гэтую сераду. Так кантролер логіка, погляд эстэтычнае рэчы, і мадэль будзе дзе мы захоўваем нашы фактычныя дадзеныя. Такім чынам, давайце паглядзім на гэта больш канкрэтна на наступным прыкладзе. Я збіраюся пайсці ў мой каталог тут сённяшняй крыніцы code-- усе з якіх даступна онлайн. І я збіраюся ісці ў версіі нулявы. А вось is-- давайце называць яго на Версія нуль сайце CS50 ст. Там не так шмат тут наогул. Гэта вельмі просты вэб-старонкі, што гэта верагодна, выкарыстоўваючы тое, што HTML-tags-- толькі здагадацца з апошніх прыкладаў? Што гэта? H1-- верагодна, што вялікі смелы Назва, лагатып, што наверсе, CS50. І, што яшчэ ў гульні? Да? АЎДЫТОРЫЯ: Ненумераваны спіс. Дэвід малая: неўпарадкаваных list-- так UL тэг і, магчыма, пару LI тэгаў. І калі вы не памятаеце, гэтыя, гэта сумленна не мае значэння. Гэтыя пухнатыя роду Дэталі рэалізацыі HTML што вы хутка шукаць і вы зноў на вашым шляху. Мы засяродзіцца на праграмаванні ідэі, якія з'яўляюцца больш сакавітымі штук. Так што давайце проста ўзяць хуткі паглядзець на HTML-- і сапраўды калі я адкрываю крыніца выгляд тут, ды, Гэта менавіта тое, што адбываецца тут. Там у тэг UL. Укладзеныя ўнутры, што з'яўляецца LI тэгаў. І тады я запазычаў URL фактычнага праграме тут. І тады ў lectures.php па-відаць, іншы дынамічна старонка што будзе мець, давайце see-- ах, першыя два тыдні лекцыі. Так нуля тыдзень і тыдзень з, давайце паглядзець на this-- калі я паглядзець зыходны код старонкі, таксама супер проста. Яны вядуць да двух старонак называецца week0.php і week1.php. Так што цяпер разгледзець, што адбываецца. Калі я націскаю на week0.php, мой ноўтбук робіць запыт на week0.php. Вэб-сервер, таксама вядомае, як, CS50 IDE, атрымлівае віртуальны канверт што. Гэта адлюстроўваецца паведамленне як, атрымаць week0.php. Затым інтэрпрэтацыі файл, верхняя уніз, налева, каб right-- файл называецца week0.php-- і выплёўваючы вынікаў. Так ўнутры гэтага файла, week0.php, павінны быць логіка кіравання, які генеруе Гэты HTML-і мы хутка ўбачым, што. Але цяпер, дазвольце мне націсніце на нулявы тыдні, і цяпер у нас ёсць сераду і пятніцу, і цяпер у нас ёсць слайды павольна нулявы тыдні. І вы памятаеце гэта ад шляху назад, калі. Дык вось гэты вэб-сайт робіць. Такім чынам, давайце разгледзім, як гэта робіць гэта. Я збіраюся вярнуцца ў Зыходны код тут, у CS50 IDE, і я збіраюся адкрыць index.php. У верхняй часткі гэтага файла гэта куча каментароў. І тады ў сярэдзіне гэтага файла, яго Аказваецца, няма PHP кода б там ні было. Таму што, калі ў вас няма якой-небудзь з адкрыты кранштэйн знак пытання PHP тэгі, Вы вольныя проста паставіць HTML. Таму што тое, што PHP- перакладчык павінен рабіць, калі ён чытае гэтую file-- зверху ўніз, злева right-- гэта толькі інтэрпрэтуе код ён бачыць паміж гэтыя дужкі знак пытання. І нешта яшчэ, што гэта не прызнаць PHP, ён проста выплёўвае. І HTML-ці сярод рэчаў гэта будзе проста выплюнуць. Так гэты файл можа мець былі index.html, але я ўсё называючы кропка PHP як трамплін. Lectures.php-- аналагічна захапленне, гэта толькі некаторыя HTML. Week0.php, аналагічна толькі некаторыя HTML. Але цяпер давайце на праславуты інжынерна капялюш, і разгледзім, як мы можам палепшыць гэта. Гэта не цяжка зрабіць, але я накшталт з ператварыліся ў копіі і пасты. І на самай справе, калі я тыдзень два, вы ведаю, што я, верагодна, буду рабіць? Я збіраюся паехаць у week1.php, я збіраецца вылучыць ўсё. Я збіраюся скапіяваць яго, ўставіць яго у новы файл з назвай week2.php, змяніць некаторыя адрасы, і быць на маім шляху. Так на аснове таго, што мы бачыў у C ўжо гэта не адчувае сябе добра, з надзеяй. Капіяванне, устаўка рэдка правільнае рашэнне. Так што мы можам пачаць зрабіць, каб палепшыць гэта? Якія магчымасці для лепшага дызайну? Да таго часу, я атрымліваю, каб тыдзень восем, гэта будзе каб быць сапраўды раздражняе калі я хачу, каб змяніць шрыфт кожнага з мае старонкі, або калі я хачу змяніць структуру макета. Дык дзе ж магчымасць для лепшага дызайну? Ну, давайце разгледзім тое, што падзяліўся ва ўсіх гэтых файлаў. Вось тыдні адзін, вось тыдзень нуля, вось lectures.php, вось index.php-- што тое ж самае, і Чым адрозніваецца, груба кажучы, у кожным з гэтых файлаў? Да? АЎДЫТОРЫЯ: [неразборліва] Дэвід малая: ОК, добра. Так што карціна, вядома ж, у выніку чаго кожны раз, калі я выбіраю лекцыі я, Я павінен быць генеравання вельмі падобны, стар. І таму, магчыма, я магу выкарыстоўваць той факт, што на самой справе, мы свядома колькасна індэксуецца наш lectures-- калі я магу паставіць яшчэ слова ў адказ. І тое, што гэта адзінае, што, на самай справе, што змяняецца паміж тыдзень одно-- і дазвольце мне пракруціць ўніз, каб гэта прыкладна ў той жа place-- так вось нуля тыдзень, прыкладна зверху. Вось тыдні адзін, тыдзень нуля, тыдні адзін, нуль тыдзень. ОК, літаральна, калі вы ведаеце, няма праграмы наогул, гэта цяпер гэтак жа, як малюнак лагічнай гульні. Дык чым жа адрозніваецца? Да? АЎДЫТОРЫЯ: [неразборліва] Дэвід малая: Добра, так што назва змяняецца, ледзь-ледзь. Нуль будзе, вядома, да аднаго. Тое ж самае адбываецца ў тэгу H1. І мы не зусім разумею, як лёгка, таму што URL-адрасы трохі доўга. Але гэтыя URL-адрасы змяняюцца нязначна. Але тое, што не мяняецца па-за, смею сказаць, большасць з змесціва page-- HTML-тэгі той жа, галава тое ж самае, што назва амаль тое ж самае, цела ж, і амаль усё астатняе тое ж самае, за выключэннем маленькія хітрасці тыя. Так як мы можам ісці аб факторынг некаторыя з гэта? Ну дазвольце мне прапанаваць менавіта што ў наступнай версіі. Дык вось у версіі адной, у мяне ёсць дакладная тыя ж файлы, а таксама некалькі іншых. Вось index.php-- і нават калі Вы ніколі не бачылі раней, чым PHP, што я, верагодна, рабіць, каб вырашыць гэтае problem-- аснове таго, што вы бачыце тут? Так, гэта тое, што невялікім прыхільнасці? Няма? Так, ісці далей. АЎДЫТОРЫЯ: [неразборліва] Дэвід малая: Так. АЎДЫТОРЫЯ: [неразборліва] Дэвід малая: Я хачу, каб ты казаць толькі крыху гучней. АЎДЫТОРЫЯ: [неразборліва] Дэвід малая: ОК, добра. І я think-- было цяжка пачуць, але я you-- думаю, што вы атрымліваеце на гэта, што тэгі, якія былі распаўсюджаны да верхняй, і тэгі, якія былі распаўсюджаныя на знізу, у цяперашні час вынесена, або зьвяду да таго, што файлы? Header.php і footer.php-- і мы збіраемся каб зрабіць некаторыя хітрасці, каб ліквідаваць заклапочанасць вы проста узняты пытанне аб змене нумара, для Напрыклад, калі я правільна пачуў цябе. Але гэта, здаецца, сутнасць яго. Калі б не было велізарная колькасць рэзерваванне ў верхняй частцы старонкі, і велізарная колькасць рэзерваванне на дне, давайце літаральна разыначкай і скараціць гэта змест з, змясціць яго ў асобную file-- проста як ідэя CSS, дзе мы факторизовали вельмі падобныя эстэтыка, пастаўленыя гэта ў асобным файле PHP кропка, выкарыстоўваць патрабуюць mechanism-- якія гэта як-дыез ўключаць: які па сутнасці, як кажуць ісці захапіць змесціва header.php, скапіруйце і ўстаўце іх тут. Але тое, што гэта азначае, што ў цяперашні час у index.php, у мяне ёсць гэтыя дзве лініі. У lectures.php, я таксама ёсць тыя дзве лініі. У week0.php, я таксама ёсць тыя дзве лініі. Так што цяпер, калі я хачу, каб змяніць назва ўсіх маіх старонак, ці я хачу змяніць фундаментальная структура, Я магу змяніць яго цяпер толькі ў адным месцы, ці два places-- верхні і ніжні калантытула, адпаведна. Цяпер стартавая Кодэкса глядзець трохі больш загадкавае, праўда? Але калі вы думаеце, аб тым, што старонка у doing-- калі я з просьбай week0.php, гэтак жа, як на чарцяжы над here-- калі week0.php запытваецца, што гэта азначае? Літаральна гэты файл прасіў у браўзэры. Вэб-server-- таксама вядомае CS50 ID-- хапае гэтага Файл, week0.php, і чытае гэта зверху ўніз, злева направа. На першай лініі, адразу ж сутыкаецца з яго якая адкрывае дужка знак пытання PHP, патрабуюць Загаловак кропка PHP, і так што РНР does--, што ўбудаваны ў вэб Сервер, таму што мы папярэдне настроены гэта для you-- ён аўтаматычна пераходзіць у header.php, капіюе змесціва, ўстаўляе іх тут. Але тады інтэрпрэтатар сустракае знак пытання побач кранштэйн, так што гэта ўсё робіцца думаць. Цяпер ён проста слепа плюе з ліній другога па сем, таму што гэта проста сырой HTML. Атрымлівае ў лінію восем, і робіць, што жа магія again-- адкрыцця файла, захопліваючы змесціва, і патрабуючы ад іх або устаўляючы іх прама тады ці там. Але я проста спасылаўся на памылку. Гэта няпоўны крок назад, таму што, калі мы паглядзім у header.php, Я накшталт адрэзаць куток. Што функцыя я адмовіцца, каб каб атрымаць гэтую спрэчную лепшы дызайн? Да? АЎДЫТОРЫЯ: [неразборліва] Дэвід малая: Так, я як бы Выразаць нетрывіяльнае кут. Вы адзначылі, што тое, што было змяненне была назва, колькасць у назве, і колькасць у H1. Так што маё рашэнне было, добра, давайце проста перайменаваць старонку, а не займацца тым, што Праблема наогул. Дык вось няпоўны крок назад напэўна. Але тое, што характэрна тут Гэта тое, што я зрабіў у адваротным выпадку улічаны з усяго агульнай матэрыялу. І ў footer.php, звярніце ўвагу, я улічаны з усіх, што, хоць менш, агульны матэрыял. Так што я нейкім чынам трэба зараз змогуць зрабіць яшчэ адзін крок наперад, і выправіць што пытанні назву. Так давайце зробім гэта. Дазвольце мне ісці ў маім другім варыянце тут, што, зноў жа, мае тыя ж самыя файлы для аднаго новае дадатак выключэннем. І гэта крыху больш, шматслоўны, але давайце паглядзім, калі мы можа дражніць адзін ад аднаго, што тут адбываецца. Такім чынам, замест таго, каб патрабаваць header.php і footer.php, Я, здаецца, толькі адзін які патрабуе file-- называецца, вядома, helpers.php. І дазвольце мне прадугледжваюць зараз, што ўнутры helpers.php гэта ўсяго толькі купка функцый што я напісаў, як і раней. Але я назваў яго helpers.php. Цяпер, па-відаць, у лінія тры і 10, я выкліку двух functions-- аказваць загаловак, аказваюць калантытула. Тыя, не прыходзяць з PHP, я напісаў тыя сябе. І я паклаў іх у helpers.php. Зараз, мы бачылі толькі гэты сінтаксіс адзін раз, і гэта было супер кароткім. Але гэта па-відаць аргумент аказваць загаловак, функцыі. Чаму я гэта ведаю? Ну вось блізкі Хлопец, вось адкрытая дужка. І, вядома, як і ў C, нічога паміж гэтымі дужкамі з'яўляецца input-- або аргумент функцыі. Які тып дадзеных гэтага аргументу, на аснове таго, што я вылучыў? Што рабіць гэтыя квадратныя дужкі паказваюць, на аснове апошняга тыдня? Так, што гэта array-- спецыяльна асацыятыўны масіў. І гэта праўда, сінтаксіс трохі напалоханы, але гэта проста праходзіў ў адной ключавой пары значэнняў. Ключ, цытата канец цытаты Назва і значэнне CS50. Калі мы зрабілі гэта ў C, гэта магло б замест выглядаць прыкладна так, проста цытата канец цытаты CS50-- ці на самай справе было б кучаравыя брекеты, ці нешта падобнае ў C, дзе ключ роўны нулю, і значэнне CS50. Але, зноў жа, у PHP, хоць Сінтаксіс, зноў жа, крыху дзіўна, гэта дазваляе перадаваць у словы замест нумара каб звязаць ключы са значэннямі. Такім чынам, што ж ўсё гэта значыць? Калі я іду ў helpers.php, давайце паглядзім на гэтую функцыю. renderHeader.php, а renderHeader гэта мая функцыя, і я ведаю, што, таму што бачу функцыя Ключавое слова тут. Гэта новае ад C-- яго, па-відаць прымае аргумент з імем data-- але я мог бы назваць гэта што-небудзь, але я назваў яго дадзеныя, проста быць трохі clean-- і проста ўзяць здагадку, асабліва калі вы праграмавалі ў некаторых іншых вышэй узровень мовы, перш чым, нешта вышэй C, канцэптуальна. Што робіць роўны адкрыты кранштэйны квадратную дужку, верагодна, маеце на ўвазе? Або тое, што, магчыма, гэта значыць? Мы не бачылі гэта ў С. Да? Пусты масіў. У прыватнасці, гэта азначае, што калі карыстальнік не называць renderHeader з аргументам, я ўсё яшчэ збіраюся мець аргумент з імем дадзеных, але яго значэнне па змаўчанні будзе пусты масіў. Так што гэта проста добры зручнасць. Я не павінен крычаць на карыстальніка, ці сказаць, што вы выкарыстоўвалі мая функцыя не так. Я магу толькі даць карыстачу па змаўчанні значэнне, калі я не асабліва хвалюе. Зараз гэтая функцыя, я збіраецца махаць рукамі ст. Але гэты экстракт функцыя дазваляе нам перадаць гэтыя зменныя ў дадзеных у header.php наступным чынам. І гэта апошняя частка, Я думаю, што, фанкі сінтаксісу. Вось мой новая версія з header.php-- яго гаварыў, у літаральным сэнсе, адкрытым Кранштэйны назву CS50, і што гэта было. І тое ж самае для H1. Цяпер, па-відаць, кажа ён нешта вельмі напалоханы. І дазвольце мне спрасціць гэта на імгненне, як след. Гэта тое, што я змяніў свой тытул, каб быць. Тым не менш, гэта становіцца трохі непрыгожа пастаянна адкрытых дужках з PHP, а затым выкарыстоўваць функцыю друку. Атрымліваецца, што PHP мае скарочаны абазначэння для гэтага, які з'яўляецца толькі знак роўнасці, які з'яўляецца тэхнічна Функцыя называецца рэха замест друку, але гэта тое ж самае, эфектыўна. Гэта проста выглядае лепш. Гэта проста сінтаксічны цукар, калі хочаце, што робіць мой код выглядае трохі лепш. Але, аказваецца, і мы ўбачым гэта зноў у хуткім часе, мы павінны назваць гэта раздражняльна доўга функцыя называецца HTML спецыяльныя сімвалы ў PHP, таму што ён аказваецца Ёсць пэўныя ўваходы што карыстальнік можа даць нам, або, што карыстальнікі могуць даць нам, што збіраюцца разбіць наш сайт. Але мы ўбачым, што ў наступным тыдзень з JavaScript. Але цяпер, проста ведаю, што гэты файл, headers.php, проста прымае тытул, які Я прайшоў у гэта зрабіць упэўнены, што гэта бяспечна ўводзіць у Інтэрнэце старонка, і ён выплёўвае яго, як мой тытул і як мой H1. Так што, калі я іду ў гэтай версіі цяпер, заўважыць, што лекцыі мае тытул таму, нулявы тыдні мае сваю назву таму, і на самай справе, HTML я генерацыі ідэнтычны таму, што мой першы варыянт was-- для майго прабелаў, за выключэннем, таму што я пачаў фарматаванне мой код крыху па-іншаму. Але я ўсё генеруецца код, які я хвалюе. Такім чынам, дазвольце мне спыніцца на толькі на імгненне і ўбачыць калі ёсць якія-небудзь пытанні або спутанность свядомасці я стварыў. Добра, так што давайце круціць крыху больш складана тут каб убачыць, калі ёсць магчымасць для паляпшэння. Helpers.php таксама было гэта функцыя, званая renderFooter. І тое, што характэрна аб renderHeader і renderFooter? І зноў, для сённяшніх мэтаў, ведаюць, што функцыя экстракт проста мой спосаб перадачы аргументаў у header.php і footer.php. На жаль? АЎДЫТОРЫЯ: [неразборліва] Дэвід малая: Так, я толькі зменены патрабуюць лінія. Так літаральна, я здзейсніў грэх капіявання і ўстаўкі, яшчэ раз. Гэта не вялікая колькасць ліній, але прыходзяць on-- калі я капіявання і ўстаўкі усё проста змяніць адзін слоўца, і адна маленькая слова, што Алан паказвае аўт ніжні калантытул тут, у параўнанні з загалоўка тут. У адваротным выпадку, усё ідэнтычныя, за выключэннем, Вядома, імёны функцыі. Так што мы маглі б зрабіць лепш? Ну дазвольце мне адкрыць гэтую версію тут, у выніку чаго ў helpers.php, чаму я не проста атрымаць трохі разумнейшыя пра гэта? Напісаць ледзь складаней Код, але назваць гэта зрабіць? Так што я прынцыпова змянілася? Ён прымае аргумент now-- два аргументу, дадзеныя па-ранейшаму. І тады тое, што першы Назва, верагодна, выкарыстоўваецца для, на аснове таго, што вы чытаеце тут? Нават калі некаторыя з сінтаксісу ўсё яшчэ з'яўляецца новай. Што шаблону знак даляра? На жаль? АЎДЫТОРЫЯ: верхні ці ніжні калантытул. Дэвід малая: верхні ці ніжні калантытул. Такім чынам, відавочна, я вырашыў, што калі Адзінае, што змяняецца гэта тое, што я хачу, шаблон каб print-- і па шаблоне Я маю на ўвазе, гэта праект для код, які я хачу для вываду, але я хачу, каб падключыць некаторыя values-- так што калі гэта толькі загаловак ці ніжні калантытул, чаму я не параметрызацыі што і называюць знак даляра аргумент шаблон? І тады гэта фанкі сінтаксіс дазваляе мне стварыць шлях у зменнай. Так знак даляра шлях зменнай. Што робіць гэты сінтаксіс рабіць, калі вы знаёмыя? Да? АЎДЫТОРЫЯ: [неразборліва] Дэвід малая: Дакладна. Калі шаблон, цытата канец цытаты, Загаловак, або калі шаблон, канец цытаты цытаты, склеп, гэтая лінія існуе што я вылучыў, лінія восем, проста прымаючы гэтае імя, як загаловак, і аб'яднання яе з кропкавай PHP. Такім чынам, мы не павінны гэтага аператара у C. Гэты аператар з'яўляецца кропка дзіўная рэч у PHP-- калі вы знаёмыя з JavaScript або Java, Вы можаце выкарыстоўваць плюс увайдзіце зрабіць канкатэнацыі. У C, гэта боль у neck-- і мне так шкада, у р-шэсць ўсталяваць, Вы будзеце мець, каб зрабіць this-- гэта боль у шыі для аб'яднання радкоў. Чаму? Ну, таму што, калі ў вас ёсць радок гэта так доўга, і яшчэ радок гэта так доўга, Вы не можаце проста падключыць іх разам. Што вы замест гэтага зрабіць у C? Да? АЎДЫТОРЫЯ: [неразборліва] Дэвід малая: Вы павінны Таноса памяці, або выкарыстоўваць масіў у стэку. І вы на самой справе трэба зрабіць гэта досыць вялікі масіў каб адпавядаць гэта плюс гэта, плюс зваротны слеш нуля. Затым аб'яднаць іх разам з дапамогай змяшаць ўручную або котку з цыкл, або любую колькасць метадаў. І мы пакажам вам некалькі ў р-ўсталяваць шэсць. Гэта боль у шыі. І гэта сапраўды тое, што я маю на ўвазе гэта супраць this-- як C у параўнанні з PHP. Вы проста атрымаеце значна больш Функцыянальнасць бясплатна, так што вы можаце засяродзіцца, у ідэале, на весялосьць частка кадаванні Праект вы хочаце вырашыць, а не на ўзроўні дробязяў нізкай. Так што гэта проста генеруе header.php або footer.php на падставе якіх я называю. І на самай справе, калі я іду у index.php, апавяшчэнне усё, што changed-- Замест называючы аказаць загаловак або ніжні калантытул зрабіць, Я тэлефаную зрабіць, за ім імя шаблону, што я хачу зрабіць. І вы ўбачыце, гэта таксама, ў задачы ўсталяваць сем, у выніку чаго мы дазваляем вам выкарыстоўваць тая ж функцыя, каб зрабіць букеты і гронкі розных вэб-старонак. Такім чынам, замест спыняцца занадта больш на тых details-- якія вы ўбачыце зноў у Праблема набор seven-- давайце паглядзім на цяпер пачатку раствора да больш цікавай праблеме. Да гэтага часу, мы нічога не маю зрабіць ёсць захаваныя дадзеныя. На самай справе, адзіны раз, мы калі-небудзь захаваны тое, што мы зрабілі ў гэтым класе гэта калі ў нас быў вельмі просты дэма некаторы час таму, у выніку чаго мы выкарыстоўвалі файл IO ў C, і я думаю, я набраў у імя Маё, і Імя Ганны, і імя Марыі, ці, можа быць, імя Эндзі, і тады мы захавалі file-- CSV значэння, падзеленыя коскамі файл. І мы выкарыстоўвалі fopen-- Я думаю, мы выкарыстоўвалі fprintf, як я памятаю, і мы захавалі файл. Цяпер, што гэта самы просты Форма базы дадзеных. Калі вы хочаце, каб зрабіць вэб-сайт для Праграма Фрош чаты, у выніку чаго першакурснікаў можа зарэгістравацца на спорт, ты ідэальна хачу зрабіць што-то з гэтымі дадзенымі. На мінулым тыдні, мы нічога не рабілі з data-- мы проста сказаў Вы зарэгістраваныя, не на самай справе. Ці, можа быць, я паслаў па электроннай пошце Проктор, і што гэта было. Але было б нядрэнна, калі б я мог даць, што Проктор файл CSV, як файл Excel. Або, яшчэ лепш, гэта было б добра, калі б я мог змясціць імёны гэтых карыстальнікаў і інтэрната імёны і ўсё, што у базу дадзеных, проста жыве вечна, пакуль я не выбраць для выдалення дадзеных. База дадзеных, якая дазваляе мне запыт інфармацыі. І на самай справе, гэта тое, што база дадзеных. Ўвядзем сёння, і на наступным тыдні, таксама тэхналогія называецца SQL-- структурны запыт Мова, які з'яўляецца іншы мова. Гэта істотна праграмавання мова, але для баз дадзеных. І база дадзеных зараз, проста думаю, як супер модныя версіі з Microsoft Excel або Google Табліцы, ці яблычны лікаў. Гэта ў цэлым праграма, якая дазваляе захоўваць цэлую кучу дадзеных у радках і слупках, досыць як вы маглі б у Excel. Але тое, што прыемна, асабліва калі мы не супер знаёмыя з Excel, тое, што SQL дазваляе зрабіць запыт гэта Інфармацыя ў пісьмовым выглядзе радкоў кода дзе вы можаце, нават калі ваш база дадзеных мае мільён радкоў у ім, Вы можаце знайсці рэчы вельмі хутка. На самай справе, Excel асабліва дрэнна на вялікіх набораў дадзеных. І на самай справе, да некалькіх гадоў таму, аказалася Excel толькі дазволіць вам захоўваць да 65,535 радкоў, якія data-- гучыць, як шмат, але ў той раз я быў аспірантам, і я памятаю, спатыкаючыся гэта таму, што я быў генерацыі Файлы CSV для майго даследавання, і я хацеў прааналізаваць іх хутка проста адкрыўшы ў Excel. Вядома, мой кампутар проста разбіўся, таму што я быў больш, чым 65000 радкоў. Але дзе ж 65,535 прыйшлі? Што рабіць Microsoft, па-відаць? Калі вы добра з паўнамоцтвамі двух? Так, яны былі з выкарыстаннем 16-біт значэнне ўяўляюць лік радкоў. І два 16 з'яўляецца 65,536-- мінус адна, таму што калі вы нулявой адзнакі азначае, што быў Найбольшая колькасць радкоў я мог бы. І гэта было толькі дызайнерскае рашэнне. Пры захаванні 16 біт, яны абмежаваныя мяне 16000 радкоў, а не 4 млрд, якія я мог мець у ідэале. Але цяпер, мы збіраемся ўвесці гэты больш у вэб-кантэксце. І тое, што прыемна пра SQL з'яўляецца тое, што нават хоць гэта даволі магутная і даволі складаныя, гэта сапраўды кіпіць да чатырох ключавых аперацый, чатыры Асноўныя функцыі, калі вы выберыце, will-- для вымання дадзеных, пошуку для дадзеных; выдаляць або выдаленне дадзеных; ўставіць для дадання радкоў у базе даных; і абнаўленне. Так што калі вы калі-небудзь выкарыстоўвалі Google Табліцы, Apple, Microsoft Лікі Excel, як Вы выканалі, хутчэй за ўсё, усе з гэтых аперацый, як чалавека па толькі з дапамогай клавіятуры і mouse-- ўстаўкі дадзеных, выкарыстоўваючы свае вочы для выбару або пошуку дадзеных, або дадзеныя абнаўлення або выдалення дадзеных. Такім чынам, што ж гэта значыць? Ну, папярэдне ўсталяваныя ў CS50 IDE з'яўляецца праграма пад назвай MySQL. Гэта бясплатна, з адкрытым зыходным кодам базы дадзеных, што супер папулярным. Facebook, напрыклад, выкарыстоўвае яго для гэтага дзень, сярод іншых інструментаў, якія яны выкарыстоўваюць. І шмат вельмі папулярных вэб-сайтаў выкарыстоўваць гэта ў значнай ступені таму, што гэта хутка, і таму, што гэта бясплатна. Хоць, безумоўна, існуюць альтэрнатывы. І некаторыя з вас, магчыма, плёскацца з альтэрнатывы для канчатковых праектаў. Гэта здымак экрана, тым часам, з вэб-інструмент называецца PhpMyAdmin. Гэта супадзенне, што гэта вэб-інструмент таксама напісана на мове РНР, але тое, што ён хацеў зрабіць гэта даць нам на аснове вэб- Інтэрфейс да базы дадзеных. Паколькі MySQL, як правіла, з'яўляецца тое, гістарычна, вам будуць узаемадзейнічаць толькі з з каманднага радка. І гэта было б супер раздражняе і таямніцай мець ўвесці тэкставыя каманды для выбару Дадзеныя, ўставіць дадзеныя і выдаляць дадзеныя. Такім чынам, некаторыя людзі ў Інтэрнэце напісаў вэб-праграмы што проста дайце нам кіраваць дадзеныя ў нашай базе дадзеных. Гэта як двойчы пстрыкнуўшы па Excel і працуе іх вэб-разрадных версій. І тое, што вы збіраецеся выкарыстоўваць гэта для у канчатковым рахунку, на наступным тыдні, а не ў р-ўсталяваць шэсць, але нешта пабудаваць называецца CS50 Фінансы, якія будзе мець базу дадзеных карыстальнікі, з імёнамі карыстальнікаў і паролямі, даляр сумы, якія яны маюць у сваіх банкаўскіх рахункаў. Гэта будзе тое, што вы карыстаецеся для захоўвання сімвалы і велічыні запасаў, што карыстальнікі купіў з дапамогай віртуальнай даляраў, што вы будзеце даваць ім. І гэта адбываецца, каб дазволіць карыстальнікам каб зарэгістравацца для вашага сайта, так што нават вашыя сябры можаце наладзіцца на свой вэб-сайт а на самай справе зарэгіструйцеся, увайсці, і пагуляць і паспрабаваць знайсці няспраўнасць у кодзе, і паспрабаваць знайсці памылкі ў свой вэб-сайт. І яны проста зарэгістравацца, дадаўшы сябе, па сутнасці, з дапамогай кода вы пішаце ў базу дадзеных. Напрыклад, гэта хуткі скрыншот што база дадзеных можа выглядаць. Гэта з адной з solutions-- леташнія гэта як міні-Excel падаць, захоўваецца ў нашай базе дадзеных, захоўваюцца ў гэтым праграмнае забеспячэнне пад назвай MySQL. На левай баку, мабыць, У мяне улічваючы кожнаму карыстальніку унікальны нумар. У другой калонцы, я даў усе карыстальнік name-- маё сярод іх. А на правай баку, Я даў ім хэш. Зараз гэта сапраўды паролю але гэта не просты тэкставы пароль. Гэта зашыфраваны пароль, калі Вы будзеце, або хэш пароля. Які мы вернемся да хуткім часе. Але калі вы калі-небудзь чытаў артыкул пра тое, як пароль у нейкі банк ці некаторыя вэб-сайт можа быць скампраметаваная, ён можа, як правіла азначаць адно з двух рэчаў. Так што гэта проста ўрывак з шасці карыстальнікаў. Усё цяпер вы можаце зразумець з з дапамогай узлому або расколін якія паролі нашых шасці народныя. Але калі вы калі-небудзь атрымлівалі папярэджанне або прабачэнне ад кампаніі або на сайце прымаўцы, прабачце, хакер ўварваліся ў нашай базе дадзеных, Вы, верагодна, варта змяніць свой пароль, што можа азначаць? Ну, адзін, можа азначаць, што Кампанія была больш ідыёцкі, і быў захоўвання пароль у калонцы, як гэта, ў незашыфраваным выглядзе. Што азначае, што праціўнік, хто скраў базу дадзеных, літаральна ведае вашыя Лагін і пароль. Гэта горшы сцэнар. І, як вы ўбачыце ў р-набор сем, так лёгка пазбегнуць. Там няма абсалютна ніякага апраўдання за што форма глупства ў сучасным Інтэрнэце. Two-- і мы знойдзем некалькі артыкулаў каб сведчыць той факт, што гэта па-ранейшаму бывае, nonetheless-- два, можа быць, праціўнік скраў гэтую версію базы дадзеных. Якія яшчэ выгляд дрэнна, таму што цяпер яны ведаюць, што ў мяне ёсць шэсць кліентаў, Я ведаю імёны карыстальнікаў з гэтых шасці кліентаў, і я ведаю, зашыфраваны версіі, або версіі, HASHED пароляў гэтых шасці кліентаў. Але любы з вас, хто можа зрабілі [? Хакер 2?] дзе вы расколіны паролі, або ўзяў Погляд на гэтай версіі праблемы набор, чаму гэта да гэтага часу мала турбуе калі праціўнік ведае ваш хэш паролі? АЎДЫТОРЫЯ: Таму што яны маглі увядзіце цэлы слоўнік у хэш-функцыі. І калі ваш пароль слоўнік Слова [? яны могуць проста match--?] Дэвід малая: Роўна, праціўнік можна проста напісаць код, як і некаторыя з вас зрабіў для [? Хакер?] 2, у якім вы перабору ўсе словы ў слоўніку, ці ўсе магчымыя камбінацыі А праз Z і адзін праз nine-- якая гучыць, як шмат, і гэта. Але для кампутара, гэта па-чартоўску хутка. І на самай справе, што было кропка [? Хакер 2 ,?] Быў прыняць рэчы, якія літаральна выглядае так, і зваротны інжынірынг тое, што было на самай справе. Такім чынам, мы будзем глядзець на тое, як мы можам захоўваць гэта больш эфектыўна. Аказваецца, на шчасце, у MySQL, там збіраюцца быць тыпы дадзеных. І адзін з пацешных частак аб праектаванне баз дадзеных, каб быць сумленным, на самай справе вырашыць для сябе як вы павінны прадстаўляць дадзеныя? Калі вы ўяўляеце, як нумар тэлефона цэлалікавых, як вялікі нумар, або доўгі? Ці вы на самой справе зрабіць гэта як паслядоўнасць знакаў? І можа быць вельмі нетрывіяльныя наступствы гэтага. На самай справе, адзін з раннія, вясёлыя гісторыі Герман калі Марк Цукерберг будуе Facebook, ён быў першапачаткова напісаны на, і да гэтага часу ў значнай ступені напісаная ў PHP. І адна з самых вялікіх праблем, яны сутыкнуліся рана было маштабавання. Калі яны працягвалі дадаваць школу пасля Школа пасля школы, па маіх звестках, адзін з арыгінальных рашэнняў па сутнасці, скапіруйце і ўстаўце некаторыя з баз дадзеных і частка кода, так што Гарвард быў працуе на ўласным серверы, і Масачусецкага тэхналагічнага інстытута быў запушчаны на ўласным серверы. І гэта было, чаму, для некаторых з вас, хто, магчыма, памятаеце, Вы не маглі мець сяброў у іншых сетках. Вы, напэўна, няма сяброў на Масачусецкі тэхналагічны інстытут Гарвардскі або 10 або каля таго гадоў таму, але вы не маглі займаць сетак для часткова па гэтай прычыне. І адна з самых вялікіх праблем для Марк і для кампаній, такіх як Facebook на самай справе апрацоўкі сотні і тысячы і мільёны запытаў у секунду. Такім чынам, тое, што мы пачнем казаць аб гэтым тыдні сапраўды будзе дарэчы, каб напісанне добрай праграмы, і ў народзе паспяховыя інструменты, можа апрацоўваць вялікая колькасць карыстальнікаў. Такім чынам, мы будзем казаць аб тым, як індэксацыі і пошуку, але гэта на сёння. Мы будзем бачыць Вас на працягу больш у сераду. [МУЗЫКА - "Seinfeld" ТЭМА] Дэвід малая: вы можаце гэта, і адняць з яго. І вы не павінны прытрымлівацца некаторыя загадзя вызначаныя аб'ём памяці. Ну, тое, што, што будзе называцца? СПІКЕР 1: Ну, што адбываецца? СПІКЕР 2: Што вы маеце на ўвазе? Ён чытаў лекцыю. Дэвід малая: І мы можам выкарыстоўваць Функцыя называецца Таноса ў memory-- СПІКЕР 1: Почему не рукі рухаецца? СПІКЕР 2: Ну that's-- Вы ведаеце, што гэта нармальна. Гэта проста, як ён толькі што сардэлек вісіць. СПІКЕР 1: Гэта нармальна? СПІКЕР 2: Так, я думаю, што мы толькі выказаць здагадку, што ён выпадкова замяніць яго дэзадарант з суперклея.