[Музички] Дејвид MALAN: Ова е CS50, и ова е почеток на недела осум. И ние сме толку возбудени за добредојде назад, големо изненадување, сопствена Рамон CS50 е Galvan, растечки постар кој е трошење на изминатите неколку месеци од јули во Лос Анџелес, во Холивуд, буквално работат на сосема нов телевизор шоуто колонија, креаторот на кој е всушност самиот Харвард стипса. И така ние сме многу возбудени да го видите ова деби на мрежата САД овој јануари. Па Stay tuned за тоа како и за повеќе Рамон за следните недели да дојде. Знам дека на крајот е близу. И она што ова значи дека таму не е сите дека многу лево на CS50, тажно да се каже. Имаме само три проблеми сетови left-- има проблем во собата six-- кој е во ваши раце сега или наскоро ќе биде, поради подоцна оваа week-- е со цел да се премости нашите светови на командната линија, каде што ние сме поминува најголем дел од нашето време со користење C, а во светот на веб програмирање. Па, ќе видите многу идеи позајмени од работата во командната линија, но исто така и голем број на нови и интересни идеи кои се, исто така, ќе биде germane за мобилни апликации и за технологијата, поопшто, со која ќе момци се познати денес на лаптопи и мобилни телефони и слично. Значи, вие не ќе се спроведе веб-страница, или веб-сајт по себе, туку вистински веб сервер. Ќе напише остатокот од веб серверот напишан во C, чија цел во животот е да се добијат на HTTP барања, оние виртуелен коверти можеме да зборуваме за, а всушност се одговори или со некои статични content-- како точка на HTML фајл, или точка JPEG или било кој друг број на датотеки, или дури и на датотеката PHP при што вашиот веб- серверот се случува да се протолкува дека PHP код и плукаат на резултатите. Сега, ние сме ви се предвидени со доста на рамка за навистина it-- дистрибуција код за проблемот постави шест е долга повеќе од 1.000 линии, Многу од нив е коментари, да биде fair-- но ова е навистина значеше да биде можност да ја добиете вашата раце валкани нуркање во прилично големи проекти дека ние сме многу конкретно издлабена парчиња за вас, така што навистина кога ќе излезете и CS50 влезе во реалниот свет на програмирање и сакаат да плискам во било кој број на проекти, ќе имаш многу поголема удобност симнување на некои извор код, некои со отворен код проектираат на интернет, и нуркање во и правење промени што ви одговара. Проблемот постави седум се случува да биде во врска со правење на своја сопствена web-базирана апликација кој ги зема динамичен влезните и произведува динамична излез во форма на etrade.com-како веб-сајт. И проблемот постави осум ќе се фокусира на уште На други јазици познат како JavaScript. Во меѓувреме, конечните Проектот е на хоризонтот. Т.н. пред-предлог се должи на една недела од денес. Претходна proposal-- по спецификација, кој е на website-- CS50 е е убава можност за повик можете да испратите е-маил прилично содржаен да ги настава колеги само за да го известуваат или неа на што мислиш, да се него или неа, се користи како резонатор. И да имаат здрав разум check-- дали сте размислување за гризење исклучи премногу многу или можеби премногу малку, или можеби имаш никаква идеја и сакаат да се вклучат во разговор. Потоа е предлог и извештај за статусот, т.н. CS50 хакатон тука во Кембриџ за Харвард и Јеил студенти слично. Конечниот проект е имплементација е тогаш пресметуваат. А потоа и CS50 фер тука, во Кембриџ, како и уште една во Њу Хејвен. Па овој предлог, да погледнам во на веб-сајтот за оние подробности. Но повеќе возбудливо, исто така, е можност да се добие вашата раце валкани, и вашиот ум отворена за цела куп на теми и алатки и техники кои се помошни на основни силабусот на предметот е, но сепак поврзани. А исто така прекрасен етапите кон прави навистина кул конечниот проекти кои одат подалеку од материјал сме покриени формално во проблемот поставува или во предавањето. Па одат на веб-CS50 за целиот список на семинари. Ако не се регистрирани уште, тоа е во ред. Оди напред и да се регистрирате уште и ние ќе надоврзе со живо стриминг врска, денот и часот кога е на веб страната. И сè ќе биде евидентираат и се стави на интернет ако не може да се направи определени денови и времиња. За тоа што се наоѓа напред thereafter-- добро, Се разбира, тука е и CS50 хакатон. Оваа слика, да се потсетиме, од нула недела преземени околу 04:00 на една вечер во изминатите години. Фер на CS50, кој повторно ќе се одржи во двата града. И тогаш, само да се засади семе, иако ние сеуште имаат еден месец плус лево на семестар, ако што би сакале да се приклучат на сопствената наставна CS50 е персоналот, и сакате да започнете размислува да стане Калифорнија, или настава колеги, знаете дека ние ќе почнеме да зборуваме повеќе за тоа кон крајот на овој семестар. Но на сликата тука е поголемиот дел од овогодинешниот тим. И така, и PHP-- Бев многу тажен минатата недела дека [? Allyse?] Љубезно отиде во напорите за добивање нас овие прекрасни реквизити дека не сум го постигнете со користење, така што навистина изгледаше глупаво што ги имавме со лопата седи тука сите ден во средата минатата недела, и малку лажица. Но, тоа беше мојата метафорична начин се обидува да се наслика на слика за тоа зошто ние сме во транзиција од C до јазик како PHP. А истото може да се каже на сите број на languages-- Java, Python, Ruby или гроздовете на others-- но додека во Ц, на пример, пишување програма во C вообичаено може да биде како земање на лажица се допаѓа ова и да копа дупка во теренот, во песок или кал. PHP овозможува да преземе многу поголеми каснувања од проблемот, пишување далеку помалку код користење далеку помал алатка, затоа што има толку многу повеќе функционалност споено во. Сега, ако бевме навистина драматични, ние ќе мора нешто да лопата тука, но тоа да биде така. Во меѓувреме, на другиот метафора дојдовме до е, се разбира, можете да користи нешто како клуч за да ги нападне во нешто како шајка. Но, се разбира, правото алатка за употреба се случува да не биде толку многу на јазик наречен C-- и сега јас само караше [? Сандерс,?] Најверојатно, ќе утврдат дека later-- така право алатка да се користи често нема да биде ова најниско ниво алатка. И навистина, Ц не е јазик кој повеќето од вас некогаш ќе се користи, или мора да значи треба да се користи повторно. И всушност, малку secret-- единствениот пат Јас се користи C себе е доста помеѓу Септември и декември секоја есен семестар. А тоа е затоа што ние го користат како можност да ги учат основите на програмирање, а со тоа и компјутер наука основи, податоци структури, алгоритми и like-- но многу брзо ќе ви Гледам сега дека синтаксата и на основните идеи C се толку прекрасно преносливи до помодерни повисоко ниво на јазиците, како и PHP и Python и Perl и Java и Objective-C-- всушност, не толку многу Целта-C-- но Свифт, овие поновите јазици кои многумина од вас ќе тогаш плискам со вас финалниот проект. Значи без понатамошно ado, ајде да се, всушност, го користите PHP за решавање на некои проблеми. Потсетиме дека на почетокот на, последните недела, ние само се користат CS50 ИРО, ние напиша спретнат малку програма дека само рече: "Здраво светот." И потоа ми се зачувани во датотека наречена hello.php. А потоа Истрчав оваа команда. И зошто? На англиски јазик, што се случува овде? Што бев прават кога Истрчав оваа заповед? Да? ПУБЛИКАТА: Има некои PHP функција кој пишува она што се in-- разбира тоа. Дејвид MALAN: Добри се, има некои на функцијата PHP-- и дозволете ми да биде поконкретен, има програма наречена PHP, a.k.a. Преведувач, која ги разбира содржината на hello.php, и ја преведува врвот до долу, лево кон десно, и да го прави она што велат тие заповеди. Команди во hello.php, се разбира, е само извор code-- функции и променливи и јамки и слично, дека ние самите ја почна со пишување во PHP. Но, за разлика Ц, кој е Составувач јазик, PHP можете само да го напишете, и да ја стартувате. Го прескокнете дека посредник чекор конвертирање на нули и единици, и потоа да ја извршува. И уште па што е главата на ова? Зошто сме скокнеш чекор? Зошто повеќе модерни јазици имаат тенденција да го прескокнете овој чекор? Она што беше од корист? Или само интуитивно? Дури и ако ние не сме напишана многу PHP и досега, што е од корист за да не составувањето на вашиот код мислите? Не? Не сториле? Почеша главата? Је. ПУБЛИКАТА: подинамичен. Дејвид MALAN: подинамичен? Што мислиш? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Добро, добро, па во зависност од влезниот, вие не мора да го компајлирате секој пат. И тоа е навистина како едноставно како што that-- е поентата на континуираното да компајлирате вашиот код? Ова е само еден чекор, тоа е making-- тоа се бара, во изминатите неколку недели, двојно повеќе чекори како само трчање вашата програма. Тоа е корисно за гледање дека види некои пораки за грешка и така натаму, но тоа е сепак само досадни чекор. И па програмери реализира со текот на времето, зошто да не се почнете со пишување јазици кои не се треба тоа прилично механички чекор, така што само може да се напише Вашиот код и да ја стартувате. Но, што е цена што сме го виделе плативме минатата недела, со еден конкретен пример? Да? Брзина. Така [? што е?] преведувачи малку побавно, во таа нули и единици се убаво и брзо за компјутер да се разбере, бидејќи Интел процесор, или што и да е, само го разбира она што се случува на со овие модели на битови. Со оглед на тоа преведувач е програма која навистина мора да прочитате извор на ASCII код кој сте го напишале, и да го претворите, така да се каже, или дознаам како да се конвертира во крајна линија да нули и единици. Па тоа само се малку малку на намалување на перформансите. Така, тоа е малку на трампа. Сега ако го правиме тоа овде, нека ме оди напред и да се направи еден пример како што следува. Ако одам во тука, новата датотека, јас ќе одам за да се спаси ова повторно е hello.php. И сега ќе одам да се оди напред и да каже, "печати Здраво светот" - и да се потсетиме дека можам да користам за печатење, јас не мора да се користи за печатење-F. И сега овде, ако го направам PHP на hello.php, huh-- јас не чини да го толкува. Што направив погрешно? ПУБЛИКАТА: Заоблениот нараквици. Дејвид MALAN: Да, ви се потребни тој агол заградата до врвот. Така, тоа е вид на досадни, но ќе се навикнеш на тоа брзо. Ако треба да се напише PHP код, што генерално треба да му кажете на програмата, или да им кажам на преведувач, еј PHP, тука доаѓа некои PHP код. А потоа за добра мерка, јас би затвори ова не со ова, туку со аголот само прашалник заградата, така што сега овде, ако јас се кандидира ова, повторно, сега Јас го добиете саканиот резултат. Сега ајде да се направи мало оптимизација, само така што вие сте го виделе досега. Ова е вид на досадни дека јас треба да се кандидира на PHP простор hello.php, затоа што во минатото јас само да го напишете точка коса црта име на програмата, која е вид на убаво. Тоа е вид на подобро искуство за корисниците. Значи излегува можете да го направите ова во PHP со following-- јас да го користите овој прилично криптичната инкантација на врвот тука, која е генерално се нарекува shebang, при што овој е остар симбол, така да се каже, ова е страшен тресок или извичник. И ова сега е на пат да создаде програма на еден типичен систем Линукс, кој се нарекува животната средина, или env. И ова line-- долга приказна short-- линија еден само вели, еј компјутер, се најде на PHP преведувач за мене во животната средина, да го најдете во вашата меморија, така да се каже. И она што сега е убаво, се дека ако одам долу тука, Јас може да се направи точка коса црта здраво точка PHP, or-- хм. Барањето е одбиено. Па, ќе се види дури и повеќе од тоа со проблемот постави седум, ако веќе не сте, со дозволи. Излегува дека ми треба за да ја извршите оваа команда наречен [? chamod?] за промена mode-- плус х hello.php. Ми треба [Беззвучен] ова едно дополнително чекор кој ја раскажува мојот компјутер, направи hello.php извршна. И сега се види она што happens-- точка црта hello.php, тоа само ќе трае. Јас не треба да се определи толкувачот повеќе. И можам да ја направат уште поубава, Сепак, ако преименувам тоа нешто. Ако јас hello.php преселат во само Hello-- така известување во горниот лев агол, името на програмата е Навистина сега само Здраво. Сега можам да го направите да изгледа како C програма, иако тоа е напишано во PHP-- или искрено било кој број на други јазици. Толку маргинална подобрување, нема функционални разлики. Но, тоа е само малку љубопитност сега, така што ќе може да им пишуваат програми на било кој јазик, а корисникот не мора да се знае или се грижат тие правила. Па, ајде да се погледне во повеќе релевантни пример сега дека јас крави до однапред. И ова се нарекува quote.php. Која е достапна на интернет. И ќе забележите дека тоа е прилично short-- но тоа е програма која е командната линија случува да се погледне нагоре на цените на акциите за мене, што навистина се случува да биде соодветен за проблемот постави седум. Да видиме што јас го правам. Во самиот врв, имам отворена заграда прашалник PHP. Тогаш имам оваа линија, при што, јас сум бара фајл наречен functions.php-- ние ќе треба да се види повеќе за ова во малку, но тоа е како на C верзија на остри вклучуваат, каде што сакате да одите вклучуваат друга датотека. PHP повикува го бара тоа, и покрај тоа што Исто така, има вклучуваат функција. И излегува дека е function.php само нешто што сум го напишала пред класа. Го ставив во истиот директориум, бидејќи Сакав да се фактор на некои код дека ние можеби ќе сакате да се користи на други места. Во меѓувреме, вие веројатно може да подразбирам она што се случува тука. Ова е малку различен од C-- но што мислам кога го велам обезбеди правилна употреба? Преведи ја оваа повеќе технички. Под кои околности јас сум напуштање на програмата, или излегување? Да? ПУБЛИКАТА: Кога немате две командната линија аргументи. Дејвид MALAN: Кога немам да командува со аргументите на командната линија. И се сеќавам дека еден од оние аргументи е самото име на програмата. А втората ќе биде друг збор што типот по брза. Па само како C, овој е мојот начин на проверка, не соработуваше со корисникот и стартување на програмата, како што се наменети? Сега, има по нешто малку поинаку со C-- прв од сите ние има овој знак за долар, и она што го прави еден долар логирај се означи во PHP? Само една променлива. Тоа е само една променлива all-- проследено со што и да сакате да се, всушност, го нарекуваат. Забележите дека има нешто исчезнати од мојата PHP програма, исто како што се водат за исчезнати последните недела, наспроти Ц, кој е што? А видови, но и нешто друго. Не постои нешто function-- главната функција. Нема главната функција. Само на проектот пишување Вашиот код без да се грижите за прилично произволно Конвенција за именување на некои стандардно Главната функција. Па arg C е само навистина глобалната променлива дека преведувач става на располагање на мене. Сега, ова е интересно. Па гледам нагоре работи. Знак за долар парк е на лево, тоа е променлива ми. На десната страна, таму е очигледно функција во PHP, кој се нарекува пребарување Јас сум поминува мојот последен командната линија аргумент to-- што и зборот е. И ние ќе се види како тоа работи во еден момент. А потоа и на крај јас сум известување цената. Јас сум еден печатење Учеството на тој и тој. И се сеќавам, ова е начинот на PHP-- начин во PHP-- каде што не треба да правите доларот знак S повеќе. Вие само може да се користи големи загради и приклучок во некои променлива. Вие не мора да се грижите за со користење на printf на ист начин. И како настрана, кога ќе се стави на променлива внатрешноста на двојни наводници, како таков, користите фина техника наречен променлива интерполација. Тоа само значи дека го приклучиш на променлива тука. И како настрана, некои од вас кои доаѓаат од други програмирање средини, Вие не може да Користете единечен наводник околу стрингови за да го направите тоа. Морате да го користите наводници за променлива интерполација да работат. Во спротивно ќе буквално види оние големите загради. Па на крај, ајде да одиме напред и да ја стартувате тоа. Дозволете ми да направам мојот терминал малку поголем. Дозволете ми да оди напред и да се кандидира внатрешноста на мојот цитат директориум. [? CDsource?] [? АМ?] [? Цитат?] PHP цитат точка PHP, а јас ќе одам да бараат нешто како GOOG, кој е нејзиниот симбол тикер, и една акција на спорот со името, Азбука Inc, која чини $ 717, почнувајќи од денес. Добро, ако сакаме да работи ова, повторно, секој имаат уште една акција во тие сакаат да се погледне нагоре? Мајкрософт мислам дека е овој, MSFT-- $ 53. Мислам дека Yahoo е можеби тоа. И Фејсбук е тоа. Значи она што е оваа програма се прави? Магијата изгледа дека е опфатен во тој пребарување функција. Значи, да се земе брз поглед. Излегува дека не доаѓа со PHP, тоа е во functions.php. И нема да одат преку ова во голема детали, но информации на Оперативниот збор овде е дека на линија шест од functions.php-- Јас буквално велат функција. Јас го зададете името на мојата функција. Јас тогаш наведете било аргументи, или параметри, Сакам таа функција да take-- нема типови. И јас тогаш се имплементира. А јас ќе се бранува раката на имплементација, бидејќи тоа е прилично напредната право сега, но ние ќе го видам повторно, всушност, во една недела во проблемот постави седум. Но, можам да се исчисти ова, исто така. Јас, исто така се вклучени во денешната код верзија на понуда, која нема точка PHP фајл. Бидејќи она што е веројатно во врвот на програма наречена само цитирам? Дека т.н. shebang-- на прилично криптичната инкантација кој се вели дека се најде PHP и потоа се пушта и на мојот код овде. Добро, така што носи нас да каде што застанавте последните time-- иако со некои понапредни примери. Било какви прашања во врска со досега PHP, или она што го правиме? No-- ред. Да? ПУБЛИКАТА: Во внатрешноста на HTML датотеки, направете you-- [? Дали ти ?] [? само го нарекуваат?] на [Беззвучен] PHP фајл? Дејвид MALAN: Добро прашање. Во веб контекст, што сме буквално за да транзиција кон, што не го користат т.н. shebang на врвот, бидејќи на веб server-- често програма наречена Apache или Microsoft IIS, Internet Information Server, или било кој број на други веб сервер софтвер, знае дека кога го гледа датотека точка PHP, дека треба да се кандидира на преведувач на него. Тоа не се погледне на првата линија. Па ова првиот трик линија е само кога сте пишување командната линија programs-- која нема да се направи супер често, но тоа е нашиот начин на премостување нашите С примери до сега нашите PHP. Па ајде да навистина се премости овој свет од светот на командната линија за да го веб- од тоа што следува. Дозволете ми да оди напред и да се подготви овде за само еден миг. Значи, ако ние сме на веб сервер, или подобро кажано, ако имаме мојот лаптоп овде, кои јас ќе подготви се допаѓа ова. И тука имаме интернет во некоја форма. А потоа во текот тука, имаме сервер во building-- ова е како на интернет works-- и овде е сервер со некои можеби и светла. Она што всушност се случува помеѓу овие две врски? Така што во овој објект е на веб сервер. Тоа е само еден компјутер тоа е водење на некои оперативни system-- можеби на слободен софтвер наречен Apache-то, кое CS50 ИРО работи. Така може да се, всушност, мислам дека на оваа зграда како на зграда во која CSt0 IDE е зачувана. Тоа е каде што сите од вас имаат сметки, каде што сите од вас имате свој веб сервер работи, на сите вас имаат свој уникатен URL, Почнавме да се дискутира за тоа, и ќе видите повеќе во P. постави шест. Еве го мојот лаптоп некаде на друго место на интернет. И така, кога ќе го посетам URL, кој припаѓа за мене, дека интернет сообраќај се случува во текот на серверот, серверот е добивањето на HTTP request-- како да добијат index.html и тоа е одговарање на оваа веб страница. Значи тоа е општата парадигма. Со оглед на сè што се до сега, денес, се ' се случува само во границите на оваа зграда. Јас бев со користење мојот лаптоп, но Јас бев поврзан CS50 ИРО, така што сите од овие програми трчав беше во внатрешноста на тој сервер, сама по себе. А сега, ајде да почнеме повторно користење на PHP за да напишете некои вистински програми кои се сервира од страна на web серверот. И да го направите тоа, јас ќе одам да се оди во еден куп примери со кои се воведува оваа идеја овде. Значи ова е вид на фенси начин опишувајќи парадигма на програмирање. И всушност, како ќе излезете CS50 или работат на конечниот проекти, или да преземе некои го следат на класа, ќе започне да се види дека world-- особено дека израснав со јазици како C кои се супер ниска level-- сфаќаат дека има е подобро начини на пишување софтвер. Постојат одредени шеми може да се следи, одредени начини на организирање на вашите датотеки и начинот на именување на вашите функции, така што ја скратам приказната, светот излезе со целиот куп на акроними и имиња за начините на програмирање. Ова се само техники можете да го користите. А еден од нив е наречен MVC, за модел погледнете контролорот. И ова е само за сега, премногу комплицирано начин да се каже како треба да се постават надвор веб-страница на PHP-базирани, во нашиот случај. Како да си ги организирате вашите датотеки, како се организирате вашата логика, на тој начин што го прави полесно да пишуваат покомплицирано веб-страниците? И навистина, ние брзо ќе одам таму со р-постави седум. Така во светот на MVC, си оди да видиме дека нашиот код може генерално се карактеризираат или како модел код, или код контролор, или да ја видите код. А јас ќе одам да се го поедноставуваат како follows-- контролорот е Мозоците на вашата програма, тоа е каде што сите од Интересно логика случува. Значи се што ние сме биле пишување досега во класа, е вид на како контролор code-- тоа е контролирање вашата програма, вашиот петелки, вашиот услови, вашиот функции и променливи и сето тоа. Ставови, сега, се случува да биде малку повеќе од очигледна во светот на интернет. Еден поглед е естетиката на вашиот вебсајт. Тоа е она што корисникот sees-- на слики, на HTML маси, на HTML тагови, и сите на тоа, сите на меки естетски работи кои не е тешко да се напише, но е само она што го создаваат, е т.н. поглед, естетиката. И модел, во крајна линија, се случува да биде база на податоци stuff-- која ќе почнеме со нуркање во сите толку повеќе оваа среда. Па контролорот е логика, Глетката е естетски работи, и модел ќе биде каде ни ги чува нашите вистински податоци. Значи, да се погледнеме во овој поконкретно со следниот пример. Одам да одам во мојата листа овде на денешната извор code-- од кои сите е достапна на интернет. А јас ќе одам да се оди во верзија нула. И тука is-- ајде да го наречеме Верзија за нула на веб CS50 е. Таму не е многу тука на сите. Тоа е многу едноставна веб страница, која е најверојатно со помош на кој HTML tags-- само погоди од минатото примери? Што е тоа? H1-- веројатно за тоа големи дебели назив односно лого до врвот, CS50. И што друго е во игра? Да? ПУБЛИКАТА: неподреден список. Дејвид MALAN: неподредени list-- па UL таг и можеби неколку ЛИ тагови. И ако не се сеќавам на овие, тоа искрено не е важно. Овие се вид на меки Детали за имплементација на HTML дека можете брзо да се погледне нагоре и ќе се вратите на вашиот пат. Ние ќе се фокусира повеќе на програмирање идеи кои се на juicier парчиња. Па да се земе брз се погледне на HTML-- и навистина ако јас се отвори извор на погледот тука, То, Тоа е токму она што се случува овде. Има еден таг ul. Вгнездени внатре во тоа е да ЛИ тагови. А потоа го позајмив на URL на реалните програмата тука. А потоа и во lectures.php е очигледно друг динамички генерирани страници што се случува да имаат, ајде да see-- ах, во првите две недели на предавање. Така нула недела и една недела, ајде погледнете this-- ако јас видите изворниот, исто така супер едноставен. Тие водат до две страници наречен week0.php и week1.php. Па сметаат дека сега што се случува. Кога кликнувам на week0.php, мојот лаптоп е правење на барање за week0.php. На веб серверот, a.k.a., CS50 ИРО, прима таа виртуелна плик. Тоа е гледање порака како, да добијат week0.php. Тогаш тоа е толкување на датотеката, врвот до дното, лево кон right-- датотеката наречен week0.php-- и плукање од резултатите. Па во внатрешноста од оваа датотека, week0.php, мора да биде логички контролер која е генерирање овој HTML, и ние наскоро ќе се види тоа. Но, за сега, дозволете ми да кликнете на нула недела и сега имаме среда и петок, и сега имаме слајдови полека од нула недела. И може да се сети ова од порано тогаш. Значи тоа е сите овој веб-сајт се прави. Значи, да се разгледа како таа го прави ова. Одам да се вратите назад во изворниот код овде, во CS50 ИРО, а јас ќе одам да се отвори index.php. На врвот од оваа датотека, е еден куп на коментарите. И потоа во средината од оваа датотека тоа, Излезе, не е PHP код она. Затоа што ако немате некој од отворена заграда прашалник PHP тагови, вие сте слободни да само стави HTML. Затоа што на PHP Преведувачот треба да прави, е кога тоа го чита ова file-- врвот до дното, од лево кон right-- тоа го толкува само кодот што го гледа меѓу оние аглести загради прашалник. И се друго што не е така признава како PHP, тоа само се плука. И HTML е меѓу работи тоа само ќе плукаат. Значи оваа датотека може да има е повикан index.html, но јас сум се што именување дот PHP како отскочна штица. Lectures.php-- слично underwhelming, тоа е само некои HTML. Week0.php, слично само некои HTML. Но сега ајде да се стави на пословичен инженеринг шапка, и сметаат дека како можеме да ја подобриме. Тоа не е тешко да се направи ова, но јас вид на сведе копирајте. И всушност, ако јас се направи на две недели, ќе знам што јас сум веројатно нема да се направи? Одам да се оди на week1.php, јас сум сакал да нагласам сè. Одам да го копирате, ставете го во нова датотека наречена week2.php, tweak некои адреси, и да биде на мојот начин. Па врз основа на тоа што сме го виден во C веќе, ова не се чувствувам добро, се надевам. Копирате, паста ретко вистинското решение. Така што можеме да почнете да се направи за да се подобри ова? Каде се можностите за подобар дизајн? Од времето кога дојде до недела осум, тоа се случува да се биде навистина досадно ако сакам да се промени на фонтот на секој еден од моите страници, или ако сакам да се промени структурата на изгледот. Значи, каде што ќе имаат можност за подобар дизајн? Па, ајде да се разгледа она што е дели во сите овие датотеки. Еве една недела, еве недела нула, еве lectures.php, index.php-- тука е она што е исто и Она што е различно, едноставно кажано, во секоја од овие датотеки? Да? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Добро, добро. Па постои шема, сигурно, при што секој пат кога ќе се избере предавање, Јас треба да се генерираат многу сличен изглед страница. И така можеби можам да се потпора на фактот дека, навистина, ние намерно бројно индексирани нашите lectures-- дали можам да се стави уште повеќе зборови во вашиот одговор. И она што е само работа, навистина, тоа се менува помеѓу недела one-- и дозволете ми да се движите надолу, така што е приближно во исто place-- па тука е нула недела приближно на врвот. Еве една недела, недела нула, една недела, нула недела. Добро, буквално, ако знаете нема програма она, сега ова е само како шема за појавување на играта. Значи она што е различно? Да? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Добро, така што насловот се менува, некогаш толку малку. Нула ќе, се разбира, на еден. Истото се случува во Н1 таг. А ние не сосема да го видите како лесно, бидејќи на адресите се малку долго. Но оние адреси се менуваат малку. Но, она што не го менува е, се осмелувам да велат, најголем дел од содржините на page-- на HTML таг е исто, главата е истиот, насловот е речиси иста, телото е иста, и речиси се друго е иста, освен за оние малку измени. Па како можеме да се обратите за факторинг некои од ова? Па нека ме предложи точно дека во следната верзија. Па овде во една верзија, имам точната Истото датотеки, плус неколку други. Еве index.php-- па дури и ако никогаш не сте виделе пред PHP, Што сум јас, најверојатно се прави за да се реши овој problem-- врз основа на она што го гледате овде? Да, тој е мала посветеност? Не? Да, да продолжи. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Ми треба да зборуваат само малку погласно. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Добро, добро. И јас think-- тоа беше тешко да you-- но слушам дека она што сте добивање на е дека тагови кои биле вообичаени до врвот, и етикетите кои беа заеднички на дното, сега се констатирано и надвор, или пренесува на она датотеки? Header.php и footer.php-- и ние ќе да се направат некои измени на поштенската адреса што ја загрижува само покренати во врска со промена на броевите, за На пример, ако јас си слушнал правилно. Но тоа се чини дека е главното обележје на тоа. Ако имаше огромна сума на вишок на врвот на страницата, и огромна сума на вишок на дното, ајде буквално само врв и намалување на таа содржина надвор, го стави во посебна file-- исто како идејата на CSS, каде што констатирано и надвор многу слични естетика, стави тоа во посебна точка PHP фајл, користете бараат mechanism-- која е како C остар include-- која во суштина е како да кажеш оди зграби содржината на header.php, и копирај ги тука. Но, она што ова значи е дека сега во index.php, имам овие две линии. Во lectures.php, јас, исто така, располага со овие две линии. Во week0.php, јас, исто така, располага со овие две линии. Па сега, ако сакам да се промени насловот на сите мои страни, и јас сакам да го промени основните структура, Можам да го промени сега во само едно место, или две places-- заглавјето и подножјето, соодветно. Сега почнуваат кодот е да се погледне малку повеќе криптичната, нели? Но, ако се размислува за она што страната е doing-- ако сум барајќи week0.php, исто како на цртежот над here-- кога се бара week0.php, што значи тоа? Буквално, оваа датотека е побарано од страна на пребарувач. Веб server-- a.k.a. CS50 ID-- зграпчува овој датотека, week0.php, и чита тоа врвот до дното, лево кон десно. On line еден, таа веднаш налетува отворена заграда прашалник PHP, да бараат заглавие точка PHP, и така она што на PHP преведувач does-- кој е изграден во веб- сервер, бидејќи ние преконфигуриран тоа за you-- тоа автоматски оди во header.php, копии на содржините, пасти ги тука. Но, тогаш на средби преведувач прашалник блиску заграда, па тоа е направено размислување. Сега е само слепо плука од две линии низ седум, бидејќи тоа е само HTML-. Добива да се редат осум, и тоа го прави истата магија again-- отворањето на датотеката, грабање на содржините, и барајќи од нив или да ги вметнувате право тогаш и таму. Но јас само алудираше на бубачки. Ова е делумно чекор назад, бидејќи ако гледаме во header.php, Јас сум вид на намалување на аголот. Што функција никако не можев да се откаже со цел да го добие овој спорен подобар дизајн? Да? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, јас вид пресечат некој nontrivial агол. Ви посочи дека она што се менува беше насловот, бројот во насловот, а бројот на Н1. Значи мојот решение е, во ред, ајде да преименувате страница, и не се занимаваат со тоа проблем воопшто. Значи тоа е делумно чекор наназад за сигурен. Но, она што е да се спомене тука е дека она што сум го сторил е констатирано и на друг начин од сите вообичаени работи. И во footer.php, забележиш јас констатирано од сите на кои, иако помала, заеднички работи. Па јас треба некако сега можат да се земе уште еден чекор напред, и да ја поправите дека прашањата титула. Па ајде да го направите тоа. Дозволете ми да одам во мојата втора верзија тука, што, пак, ја има истата датотеки со исклучок на еден нов додаток. И тоа е малку повеќе опширниот, но ајде да видиме дали ние може да ги разграничат што се случува тука. Така, наместо да се бара header.php и footer.php, Ми се чини дека треба да се бара само еден file-- нарекува, се разбира, helpers.php. И дозволете ми да се предвиди сега, она што е внатре на helpers.php е само еден куп на функции дека сум го напишала, како и порано. Но јас го нарече helpers.php. Сега очигледно, во линија од три до 10, јас сум повикувајќи две functions-- направат глава, да се потпрат подножјето. Оние кои не се со PHP, напишав оние себе. И ги ставам во helpers.php. Сега, ние сме само видел оваа синтакса еднаш, и тоа беше супер краток. Но, ова е очигледно расправија за да го направи со глава, на функцијата. Зошто ми знаеш тоа? Па тука е блиску paren, тука е отворена paren. И, се разбира, исто како и во C, нешто помеѓу овие загради е input-- или аргумент на функцијата. Она што е типот податоци на овој аргумент, врз основа на она што сум го истакна? Што прават оние квадратни загради укажуваат на, врз основа на минатата недела? Да, тоа е array-- конкретно асоцијативна низа. И оваа синтакса признаеме е малку фанки, но ова е само поминува во еден пар клучеви вредност. Клучот е, цитат unquote Наслов, а вредноста е CS50. Ако ние не го сторил тоа во C, наместо тоа би можело да изгледаат повеќе како ова, само цитат unquote CS50-- или, всушност, тоа ќе биде кадрава протези, или нешто слично во C, каде клучот е нула, а вредноста е CS50. Но, повторно, во PHP, и покрај тоа што Синтаксата е, повторно, малку чудно, тоа ви овозможува да се помине во зборови наместо на броеви да се дружат клучеви со вредности. Значи она што не сето ова значи? Ако одам во helpers.php, ајде да погледнеме на оваа функција. renderHeader.php, наместо renderHeader е мојата функција, и знам дека бидејќи гледам функцијата клучниот збор овде. Ова не е ново од него C-- очигледно го нарекува аргумент data-- но можев да го нарековте ништо, но јас го нарече податоци, само за да биде малку и clean-- само да се погоди, особено ако сте програмирани во некои други повисоко ниво јазик досега, нешто погоре Ц, концептуално. Што значи еднакво отворена заграда квадратни заградата веројатно значи? Или она што би можело да значи? Ние не го видел ова во C. Да? Празна низа. Поточно, тоа значи дека ако корисникот не свика renderHeader со аргумент, јас сум се уште е во тек да имаат аргумент повика на податоците, но неговата вредност е ќе биде празна низа. Па тоа е само еден убав погодност. Јас не мора да се развикам на корисникот, или да се каже што се користи моите функција ред. Јас само може да се даде на корисник стандардно вредност, ако јас не особено се грижат. Сега оваа функција, сигурен сум случува да се бранува во моите раце. Но овој екстракт функција овозможува нас да помине овие променливи податоци во header.php на следниот начин. И ова е последното парче, Мислам дека, на фанки-синтакса. Тука е мојата нова верзија од неа header.php-- користат да се каже, буквално, отворен Држач за титулата CS50, и тоа беше тоа. И истото за Н1. Сега е очигледно дека нешто многу фанки. И дозволете ми да се поедностави овој за момент како што следува. Тоа е она што јас сум промени мојот наслов да биде. Сепак, тоа е добивање малку грдо постојано отворена заграда со PHP, а потоа користете ја функцијата за печатење. Излегува дека PHP има стенографија нотација за тоа, што е само знак за еднаквост, која е технички функција наречена ехо наместо за печатење, но тоа е иста работа, ефикасно. Дека само изгледа подобро. Тоа е само синтаксички шеќер, ако сакате, што го прави мојот код погледне малку подобро. Но, се покажа, како и ние ќе се види тоа повторно пред долго време, ние треба да се јавите на оваа annoyingly долги функција наречена HTML специјални карактери во PHP, бидејќи излегува постојат одредени влезови дека корисникот може да ни даде, или што корисниците би можеле да ни даде, кој се случува да се пробие нашиот сајт. Но, ќе видиме дека следната недела со JavaScript. Но, за сега, само знам дека оваа датотека, headers.php, едноставно да освои титула која Јас помина во, тоа го прават сигурни дека тоа е безбедно да се инјектира во веб- страница, и тоа плука како мојата титула и како што ми Н1. Па ако одам во оваа верзија сега, забележи дека предавања има титулата назад, нула недела има нејзиниот наслов назад, и Всушност, јас сум генерирање на HTML е идентично со она што мојата прва верзија was-- освен моите празни места, бидејќи почнав форматирање мојот код малку поинаку. Но јас сум генерирана сите кодот Јас се грижат за. Значи, дозволете ми да пауза за само еден миг и да се види ако има било какви прашања или конфузија Јас направивме. Добро, па ајде да свртете малку потешко тука да се види дали има еден можност за подобрување. Helpers.php исто така имаше ова функција, наречен renderFooter. И она што е да се спомене за renderHeader, и renderFooter? И повторно, за денешните потреби, знаеме таа функција екстрактот е само мојот начин на полагање аргументи во header.php и footer.php. Жал ми е? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, јас само смени бара линија. Значи буквално, сум го сторил грев од копирање и вметнување, уште еднаш. Тоа не е некој огромен број на линии, но дојде on-- ако сум копирање и вметнувате сето само да се промени еден мал збор, и еден мал збор дека Алан поени надвор е Footer тука, наспроти насловот овде. Во спротивно, се е идентични, освен за, се разбира, имиња на функцијата. Значи она што можеме да направиме подобро? Па дозволете ми да се отвори оваа верзија овде, при што во helpers.php, зошто да не само да се добие малку попаметен за ова? Пишуваат малку покомплицирано код, но тоа го викаме, направи? Значи она што не сум фундаментално се промени? Таа ги зема аргумент now-- два аргументи, податоците се уште. И тогаш што е првото името веројатно се користи за, врз основа на она што ти ја читаш оваа ситуација? Дури и ако некои од синтаксата се уште е нова. Она што е знак за долар дефиниција? Жал ми е? ПУБЛИКАТА: заглавието или подножјето. Дејвид MALAN: заглавието или подножјето. Значи очигледно, решив дека ако единственото нешто што се менува е она што сакам дефиниција да print-- и по дефиниција Мислам ова е план за законик, што сакам да излез, но сакам да го приклучиш во некои values-- па ако тоа е само насловот или подножје, зошто не можам параметризирање дека и повик знак аргументот долар дефиниција? А потоа оваа фанки синтакса ми овозможува за да се создаде пат во променлива тука. Така знак за долар пат е променлива. Што значи оваа синтакса направи, ако сте запознаени? Да? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Токму така. Ако шаблон е, цитат unquote, насловот, или ако шаблон е, цитат unquote, footer, таа линија таму што сум ги истакна, линија осум, едноставно прима тоа име, како и насловот, и тоа concatenating со точка PHP. Значи ние не го имаат ова оператор во C. Овој оператор точка е неверојатно нешто во PHP-- ако сте запознаени со JavaScript или Јава, можете да го користите плус потпише да се направи конкатенација. Во C, тоа е болка во neck-- и многу ми е жал, во п-собата шест, ви се случува да треба да направите this-- тоа е болка во вратот да concatenate жици. Зошто? Па, затоа што ако имаш стринг кој е толку долго, и некој друг збор кој е толку долго, вие не само да ги вклучиме заедно. Што ви е наместо да се направи во Ц? Да? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Мора да Примерок меморија, да се користи низа на магацинот. И што всушност треба да направи таа низа е доволно голема да одговара на ова, плус тоа, плус обратна коса црта нула. Потоа да ги concatenate заедно користење промешува мачка или рачно со за телефонска линија, или било кој број на техники. И ви покаже неколку во п-собата шест. Тоа е болка во вратот. И ова е навистина она што сакам да кажам во врска со ова наспроти this-- како C наспроти PHP. Можете само да добијат многу повеќе функционалност за слободни, така што ќе може да се фокусира, Идеално, на забава дел на кодирање, Проектот сакате да се реши, наместо дреболии ниско ниво. Па ова само генерира header.php или footer.php врз основа на кој еден ќе се јавам. И, навистина, ако одам во index.php, огласот сето она што е changed-- Наместо повикувајќи ги направи заглавието или самото подножје, Јас го повикувам направат, по што следи назив на образец во кој сакам да го направам. И ќе видите дека ова, исто така, проблем во собата во седум, при што ќе ви овозможи да го користите истата функција за да се направи гроздовете и гроздовете на различни веб страници. Така, наместо да се задржиме премногу многу повеќе на оние details-- која ќе се видиме повторно во проблем сет seven-- да ги погледнеме сега во почетокот на решение кон повеќе интересен проблем. Досега, ние сме ништо има направено запишани податоци. Всушност, единствениот пат што некогаш сте спасени нешто што го направиле во оваа класа е кога имавме многу едноставна демонстрација некое време назад, при што се користи датотека IO во C, и мислам дека јас ја внеле во мое име, и Името на Ана, а името на Марија, или можеби името на Енди, и тогаш ние спаси CSV file-- одвоени со запирки вредности датотека. И ние се користи fopen-- мислам ние се користи fprintf како што се сеќавам, и ние заштедивме датотека. Сега, тоа е наједноставниот форма на база на податоци. Ако сакате да се направи веб-сајт за Програма Frosh Инстант пораки, при што бруцоши да се регистрирате за спорт, можете идеално Сакате да направите нешто со податоците. Минатата недела, ние го сторивме ништо со data-- ние едноставно се рече, сте регистрирани, навистина не. Или можеби и јас преку е-маил на Проктор, и тоа беше тоа. Но, тоа би било убаво ако можев даде дека Проктор CSV датотека, како една датотека Excel. Или уште подобро, тоа ќе било убаво кога би можел стави имињата на тие корисници и dorm имиња и сето тоа во базата на податоци што само живее вечно, додека не го изберете за бришење на податоците. База на податоци која овозможува мене да ја проверам информацијата. И навистина, тоа е она што е базата на податоци. Ќе се воведат и денес, и следната недела, исто така, една технологија наречен SQL-- структурирана пребарување Јазик, што е на друг јазик. Тој во суштина е програмирање јазик, но за бази на податоци. И база на податоци за сега, само мислам на како супер фенси верзија на Microsoft Excel или Google Табеларни пресметки, или Apple броеви. Тоа е обично една програма која им овозможува на да ги чувате на целиот куп на податоци во редови и колони, сосема како што може во Excel. Но она што е убаво, особено ако ние не сме супер запознаени со Excel, што SQL ви овозможува да направите е ова пребарување информации со пишување на линии на код каде што може да се, дури и ако вашиот база на податоци има милион редови во него, може да се најдат работи супер брзо. Всушност, Excel е особено лошо на големи множества податоци. И всушност, до неколку пред неколку години, се покажа Ексел да дозволи само да ги чувате до 65.535 линии на кои data-- звучи како многу, но во времето кога бев град студент, и се сеќавам трипал над ова, бидејќи јас бев генерирање CSV датотеки за моето истражување и јас сакаше да ги анализира брзо само со отворањето во Excel. Се разбира, мојот компјутер само се урна, бидејќи имав повеќе од 65.000 редови. Но, каде е 65.535 доаѓаат од? Што прави Мајкрософт, веројатно? Ако си добар со вашите моќ на двете? Да, тие се со користење на 16-битна вредност да го претставуваат бројот на спорот. И двајца до 16 е 65,536-- минус еден, бидејќи ако се Индекс нула значи дека беше поголемиот број на редови Јас би можеле да имаат. И тоа е само дизајн одлука. Со заштеда на 16 бита, тие ми се ограничени 16.000 редови, наместо на 4 милијарди долари, кој би можел да има идеално. Но, за сега, ние ќе треба да воведе ова повеќе во веб контекст. И она што е убаво за SQL е дека дури и иако тоа е прилично моќна и убава софистицирани, тоа навистина врие сведува на четири клучни операции, четири клучните функции, ако will-- изберете, за превземање на податоците, барајќи за податоци; бришење или бришење на податоците; вметнете за додавање на редови на базата на податоци; и ажурирање. Значи, ако некогаш сте се користи Google Табеларни пресметки, броеви Епл, Мајкрософт Ексел, сте погубен, најверојатно, сите на овие операции, како човек од страна на само со користење на вашата тастатура и mouse-- внесување на податоци, со користење на вашите очи за да изберете или да пребарувате за податоци, или ажурирање на податоците, или бришење на податоците. Па што значи тоа? Па, пре-инсталиран во CS50 IDE е програма наречена MySQL. Тоа е бесплатен, софтвер со отворен код база на податоци која е супер популарен. Фејсбук, на пример, го користи за оваа ден, меѓу другите алатки кои тие ги користат. И многу многу популарни веб-сајтови користат тоа во голем дел, бидејќи тоа е брзо, и поради тоа што е бесплатен. Иако секако постојат алтернативи. И некои од вас може да плискам со алтернативи за конечниот проекти. Ова е скриншот, пак, на веб-базирана алатка наречена phpMyAdmin. Тоа е случајно тоа што овој веб-базирана алатка, исто така, напишани на јазик, PHP, но она што тоа е со цел да се направи е да ни даде на веб-базирани интерфејс на базата на податоци. Бидејќи MySQL, обично е нешто, историски вас, ќе комуницирате со само со командна линија. И тоа ќе биде супер досадни и таинствени да имаат да напишете текстуална команди за да изберете податоци, внес на податоци и бришење на податоците. Па некои луѓе на интернет напиша на веб-базирана програма дека само нека се управуваат на податоци во нашата база на податоци. Тоа е како да двоен-клик на Excel и водење на веб-базирана верзија на истите. И она што ви се случува да го користите овој за на крајот од следната недела, а не во п-собата шест, но е да се изгради нешто наречен CS50 финансии, кое се случува да имаат база на податоци корисници, со кориснички имиња и лозинки, суми во долари дека тие имаат во нивните банкарски сметки. Тоа се случува да биде нешто што се користи за чување на симболи и количините на акции, кои на корисниците купиле со користење на виртуелни долари, кои ќе им даде на нив. И тоа се случува да им овозможи на корисниците да се регистрирате за вашиот сајт, така што дури и вашите пријатели да се вклучите во вашиот веб-сајт а всушност се регистрирате, се најавите, и се позанимавам и да се обиде да најде мана во вашиот код, и да се обидат да најдат грешки во вашиот вебсајт. И тие едноставно ќе се регистрирани од страна на се додава, ефикасно, преку кодот што ги пишувате на вашата база на податоци. На пример, ова е брз скриншот за тоа што базата на податоци може да изгледа. Ова е од една од минатогодишниот solutions-- ова е како мини Excel поднесе, се чуваат во нашата база на податоци, се чуваат во овој софтвер наречен MySQL. На левата страна, јас сум очигледно со оглед на секој корисник единствен број. Во втората колона, јас сум со оглед секој корисник name-- моето меѓу нив. А од десната страна, Сум ги даде хаш. Сега ова е всушност лозинката, но тоа не е обичен текст лозинка. Тоа е енкриптирана лозинка, ако ќе, или лозинката хаш. Која ние ќе се вратам на пред долго. Но, ако некогаш сте се прочита статија за тоа како вашата лозинка во некоја банка или некои веб-сајт може да се нанесе штета, генерално може да значи една од две работи. Значи ова е само извадок од шест корисници. Сите вие ​​сега може да се пресмета надвор преку хакирање или напукнување она што нашите лозинки шест лица се. Но, ако некогаш сте добиле предупредување или извинување од една компанија или веб-сајт изрека, Жалам, хакер влегол во нашата база на податоци, веројатно ќе треба да се промени вашиот лозинката, што би можело да значи тоа? Па, една, може да значи Компанијата е повеќе моронско, и е чување на вашата лозинка во колумна вака, некриптирани. Што значи дека на еден противнички играч, кој украл базата на податоци, буквално го знае вашиот корисничко име и лозинка. Тоа е најлошото можно сценарио. И како што ќе видите во п-сет седум, така лесно да се избегне. Апсолутно не постои оправдување за кои форма на глупоста во интернет денес. Two-- и ние ќе се најдат некои статии да сведочи фактот дека ова се уште се случи, nonetheless-- две, можеби на еден противнички играч украл оваа верзија на базата на податоци. Кој се уште е вид на лоши, затоа што сега тие знаат дека имам шест клиенти, Знам дека на кориснички имиња на оние шест клиенти, и знам криптирани верзии, или hashed верзии, на лозинки тие шест клиенти. Но, ниту еден од вас кои би можеле да има направено [? Хакер 2?] каде што пробиени лозинки, или се Еден поглед на таа верзија на проблемот сет, зошто тоа се уште е малку загрижувачки ако на еден противнички играч знае вашиот хаш лозинки? ПУБЛИКАТА: бидејќи тие може да влезат во целиот речникот во функција на хаш. И ако вашата лозинка е речник збор, [? тие само може да match--?] Дејвид MALAN: Токму така, на еден противнички играч може само да се напише код, како што некои од вас правеше за [? Хакер?] 2, при што ќе iterate во текот сите зборови во речникот, или сите можни комбинации на А преку Z и еден преку nine-- кој звучи како многу, и тоа е. Но, за компјутер, тоа е прилично ебам брзо. И всушност, тоа беше точка на [? Хакер 2,?] Беше да се работи на тој буквално изгледа вака, и обратна инженер што всушност е. Па ние ќе се погледне во тоа како ние може да чувајте го овој поефикасно. Излезе, за среќа во MySQL, таму се случува да биде типови на податоци. И еден од забава делови за база на податоци дизајн, да бидам искрен, е, всушност, се одлучува за себе како треба да претставуваат податоци? Треба да ви претставува телефонски број како int, како голем број, или долго? Или сакате да се, всушност, го направи тоа како секвенца од знаци? И не може да има многу не-тривијални влијанија на оваа. Всушност, еден од најрано забава germane приказни е кога Марк Цукерберг градеше Фејсбук, што беше првично напишано во, и се уште во голема мера е напишана во PHP. И еден од најголемите предизвици тие се соочуваат на почетокот беше скалирање. Кога тие се чуваат додавајќи училиште по училиште по училиште, според моите сознанија, една од оригиналните решенија во суштина беше да копирате и залепите некои од бази на податоци и дел од кодот, така што Харвард беше водење на свој сервер, и МИТ беше работи на свој сервер. И затоа, за некои од вас кои би можеле да се потсетиме, дека нема да имаш пријатели во други мрежи. Вие веројатно нема да има пријатели во МИТ или Харвард пред 10 или повеќе години, Но, вие не би можеле да span мрежи за делумно таа причина. И еден од најголемите предизвици за Марко и за компании како што се Фејсбук е, всушност, ракување со стотици и илјадници и милиони на барања во секунда. Значи она што ние ќе започнеме Станува збор за оваа недела се навистина се случува да биде соодветен за пишување добри софтвер, и популарно успешна алатки кои може да се справи со голем број на корисници. Па ние ќе се подели како индексирање и пребарување, но дека тоа е за денес. Ние ќе се видиме за повеќе во средата. [Музика - "Seinfeld" тема] Дејвид MALAN: Може да се тоа, и одземе од него. И вие не мора да се држи со некои однапред определен износ на меморијата. Па, што е тоа што се случува да се вика? ЗВУЧНИЦИ 1: Па, што се случува? ЗВУЧНИЦИ 2: Што сакаш да кажеш? Тој е давање на предавање. Дејвид MALAN: И ние може да се користи функција наречена Примерок да memory-- ЗВУЧНИЦИ 1: Зошто не се рацете се движат? ЗВУЧНИЦИ 2: Па that's-- што знаете, тоа е нормално. Тоа е исто како тој има само големи колбаси виси таму. ЗВУЧНИЦИ 1: Тоа е нормално? ЗВУЧНИЦИ 2: Да, јас мислиме само да се претпостави тој случајно заменува дезодоранс со неговиот superglue.