[Мусиц плаиинг] Давид Малан: Ово је ЦС50, и ово је почетак недеље осам. И ми смо толико узбуђен да дочека назад, велико изненађење, ЦС50 сопствене Рамон Галван, растућа виши који је био проводи у последњих неколико месеци од јула у Лос Анђелесу, у Холивуду, буквално ради на новом ТВ Схов се зове Колонија, творац који је заправо Харварду стипса сам. И тако смо веома узбуђени да види ово деби на УСА Нетворк ово јануара. Дакле, стаи тунед за то, и за више Рамон за недељама које долазе. Сада знам да је крај близу. А шта то значи да нема све толико остало од ЦС50, тужно је рећи. Имамо само три проблема сетови лефт-- нема Проблем сет сик-- који је у руке сада или ће ускоро бити, због касније ове Недељу има за циљ да премости наши светови командној линији, где смо провели већину нашег времена коришћења Ц, а свет веб програмирања. Па, видећете много идеја позајмљено из командне линије рада, али и доста нових и интересантне идеје које су такође ће бити Германе за мобилних апликација и за технологију, генерално, са којом сте момци су сви упознати данас на лаптоповима и телефонима и сл. Тако ћете не спроводи веб страница, или сајт по себи, већ стварни веб сервер. Ви ћете написати остатак веб сервера писан у Ц, чији је циљ у животу је да прими ХТТП захтева, те виртуал коверте чувамо говоримо о, и заправо реагују или са неки статични цонтент-- лике а дот ХТМЛ датотека, или тачка ЈПЕГ или било који други број фајлова, или чак ПХП фајл где ваш веб сервер ће интерпретирати ту ПХП број и испљунути резултате. Сада смо вас добили доста оквира за заиста тога-- дистрибуција кода за проблем сет шест је дуга преко 1.000 линије, Много која је коментара, да буду фаир-- али ово је стварно значи да буде прилика да се руке прљаве роњење у прилично великом пројекту да смо веома специфично исклесао комада за вас, тако да заиста када изађете из ЦС50 и улазе у стварни свет програмирања и желе да се бави било који број пројеката, имаћете много већа удобност довнлоадинг неки извор Код неке Опен Соурце пројектује на Интернету, и роњење у и израда промене које вам одговара. Проблем сет седам ће бити око чинећи свој веб базиране апликације која се динамички унос и производи динамичан излаз у облику од етраде.цом налик сајту. А Проблем сет осам ће се фокусирати на још други језик познат као ЈаваСцрипт. У међувремену, коначни Пројекат је на хоризонту. Такозвани пред-пропосал је због недељу дана од данас. Пре-понуду-- складу са спецификацији, који је на ЦС50 је вебсите-- је прилично повремени прилика за да шаљете прилично језгровит емаил на ваш демонстратор само да га апприсе или јој шта мислиш, да користити њега или њу као резонатор. И имају разум цхецк-- да ли размишљате о Одгризање превише много или можда премало, или можда имате никакву идеју и желе да се укључе у разговор. Након тога је предлог и статус извештај, тзв ЦС50 Хацкатхон овде у Кембриџ за Харвард и Јејл студената слично. Коначна Пројекат је Имплементација је тада због. А онда ЦС50 сајам овде, у Кембриџу, као и још један у Њу Хејвену. Тако предлога, погледајте веб сајт за оне појединости. Али више узбудљиво, такође, је прилика да се руке прљаве, и ваши умови отворене у целини гомила тема и алата и технике које су помоћни да у току језгра наставног плана и програма, али ипак повезани. Али и дивно степпинг камење да ради стварно цоол завршне пројекте који иду добро изнад материјала смо покривени формално у проблему поставља или предавања. Па иди на сајт ЦС50 за цео списак семинара. Ако још не региструју, то је у реду. Само напред и пријавите се још и ми ћемо прати уживо са линком стреаминг, дан и време је на сајту. И све ће бити снимио и ставио на мрежи ако не може учинити одређених дана и времена. А шта се налази испред тхереафтер-- добро, Наравно, ту је ЦС50 Хацкатхон. Ова фотографија, опозив, из седмице нула узети око 4 ПМ једне вечери у години раније. ЦС50 сајму, који опет ће се одржати у оба града. А онда, само да поставиш семе, иако смо и даље има месец дана, плус остало семестра, ако желите да се придружите ЦС50 сопствену учење особље и желите да почнете размишљам о томе како постати ЦА или демонстратор, знам да Почећемо говоримо више о томе Касније овог семестра. Али овде је на слици већина овогодишњег тима. И тако, ПХП-- и била сам тако тужна прошле недеље да [? Аллисе?] Љубазно отишао у напору добијања Амерички ова дивна Пропс да нисам на крају користе, тако да стварно само погледао мало глупо да смо имали лопату седи овде све дан прошле среде, и мало кашика. Али ово је била моја метафоричан начин покушава да наслика слика зашто смо транзиције од Ц до језика као ПХП. А исто би се могло рећи било Број лангуагес-- Јава, Питхон, Руби или гомиле Остали-- Али, док у Ц, на пример, писање програма у Ц Можда обично бити као узимајући кашику овако и копање рупу у тло, у песку или прашини. ПХП вам омогућава да се много веће угриза од проблема, писање далеко мање код коришћењем далеко мању алат, јер тако је много више функционалност пиецед у. Сада, ако смо заиста драматичан, ћемо морати нешто да ашов овде, али нека тако и буде. У међувремену, друга метафора смо смислили је, наравно, можеш користити нешто као кључем да закуца у нешто попут ексера. Али наравно, право алат за коришћење иде да не буде толико језик назван ц-- а сада сам љут [? Сандерс?] Вјероватно, средићемо то тако латер-- право алат за често користе неће бити ово најнижи ниво алат. И заиста, Ц није језик који већина вас је икада користити, или треба нужно користити поново. А у ствари, мало тајна-- једини пут Ја користим, Ц себи је прилично између Септембра и децембра сваке јесени семестар. А то је зато што смо користите га као прилику научити основе програмирања, а са њом компјутерском наука основе, подаци структуре, алгоритми и као-- али врло брзо хоћеш видим да је синтакси и идеје основни Ц су тако дивно преносива на модернија језици вишем нивоу, као што су ПХП и Питхон и Перл и Јава и циљ-ц-- ствари, не толико Циљ-ц-- али Свифт, ово новије језици који многи од вас ће онда површно витх иоу коначног пројекта. Дакле, без даљег одлагања, хајде да ствари користите ПХП да реше неке проблеме. Подсетимо се да је рано, задња недеље, само смо користили ЦС50 ИДЕ ми написао Динки мало програм то само рекао: "Здраво свете". И онда сам га спасио у фајл под именом хелло.пхп. А онда сам водио ову команду. И зашто? На енглеском, шта се овде дешава? Шта сам радио када Трчао сам ову команду? Да? ПУБЛИКА: Има неких функција тект да чита оно што је у-- то разуме. Давид Малан: Добро, има неких функција ПХП-- и пусти ме да будем прецизнији, постоји програм који се зове ПХП а.к.а. Тумач, да разуме садржај хелло.пхп, и тумачи одозго дно, с лева на десно, и ради шта ти кажем команде. Команди је хелло.пхп, наравно, је само извор цоде-- функције и варијабле и петље и слично, које смо сами су почела да пише у ПХП. Али за разлику од Ц, која је компајлерском језику, ПХП-само га напишем, и покрените га. Прескочите си ту посредника корак претварајући га нула и јединица, и онда ради. И шта је окренут ово? Зашто прескакање корак? Зашто више модерних језика имају тенденцију да прескочите овај корак? Шта је корист? Или само интуитивно? Чак и ако нисам написано много ПХП пре, оно што је корисно о томе да не састављања код мислиш? Ne? Није починио? Гребање главу? Да. ПУБЛИКА: Више динамичан. Давид Малан: Више динамичан? Шта си мислио? ПУБЛИКА: [неразумљиво] Давид Малан: Добро, добро, тако Зависно од улаза, не морате да га саставити сваки пут. И заиста је као једноставно као што то-- је тачка наставка саставити свој код? Ово је само корак који је макинг-- то захтијева, У последњих неколико недеља, двоструко више корака као само ради свој програм. Прошло је корисно у томе да вас видите неке поруке о грешкама и тако даље, али то је само досадни корак. И тако програмери схватио током времена, зашто не бисмо почнем да пишем језике које не треба да прилично механички корак, тако да само могу да пишем Ваш код и њиме управља. Али оно што је била цена да смо видели смо платили прошле недеље, са једном конкретном примјеру? Да? Брзина. Prema tome [? шта је?] преводиоци мало спорије, у томе и они су нула лепо и брзо за компјутер да разуме, јер је ЦПУ, или шта год да је, Само разуме шта се дешава о са тим обрасцима бита. Док преводиоца је програм који стварно мора да прочита извор АСЦИИ код које сте написали, и претворити га, да тако кажем, или схватити како то на крају претвара да нула и јединица. Дакле, то је само потребно мало Мало хит перформанси. Дакле, то је мало траде-офф. Сада, ако радимо овде, пусти ме само напред и уради један пример како следи. Ако ја одем унутра, нови фајл, ја ћу ово поново сачувате хелло.пхп. А сада ћу да наставим и кажу, "Принт Хелло Ворлд" - и сећам се да сам могу користити отисак, не знам морају да користе штампање Ф. А сада овде доле, ако урадим ПХП за хелло.пхп, хух-- сам не изгледа да га тумаче. Шта сам урадио погрешно? ПУБЛИКА: коси наруквице. Давид Малан: Да, треба да је угао носач на врху. Тако је некако нервира, али се навикнете на то брзо. Ако морам да пишем ПХП код, ја генерално треба да кажете програм, или реци преводиоца, хеј ПХП ево мало ПХП код. А онда за сваки случај, ја бих затварање овог није са овим, него са само питање углом марк носач, тако да сада овде, ако налетим поново, сада Ја добити жељени резултат. Хајде да урадимо мали оптимизација, тако да сам то раније. Ово је мало неугодно да сам морати да покренете ПХП простор хелло.пхп, јер је у прошлости сам могао само напишите дот сласх име програма, што је лепо. То је нека врста боље корисничко искуство. Тако испада можете да урадите ово у ПХП са фолловинг-- И Можете користити ову прилично загонетан бајалица на врху овде, који се генерално назива схебанг, при чему је оштар симбол, да тако кажем, ово је прасак или знак узвика. А ово сада је пут ка програму на типичном Линук систему који се зове окружење, или енв. И то лине-- дугу причу схорт-- прва линија једноставно каже, хеј рачунар, наћи ПХП преводилац за мене у окружењу, нашао у вашем сећању, да се тако изразим. И шта је сад лепо, зар да ако одем доле, Ја могу да урадим дот сласх здраво тачка ПХП, или-- ха. Дозвола одбијена. Па, видећете још више од тога са проблемом сет седам, ако вас већ нисте, са дозволама. Испоставило се да требам да изврши ову команду зове [? цхамод?] за промену моде-- је Плус Кс хелло.пхп. Требам [неразумљиво] ово један додатни корак који говори мој рачунар, да хелло.пхп извршну. И сад гледајте шта хаппенс-- дот сласх хелло.пхп, само ради. Не треба да наведете преводилац више. И могу учинити чак и лепши, ипак, ако преименовати ову ствар. Ако хелло.пхп пређемо на само Хелло-- тако приметити у горњем левом углу, Име овог програма је заиста сада само Здраво. Сада могу да изгледа као Ц програма, иако је написано у ПХП-- или искрено било који број других језика. Тако маргинална унапређење, не функционална разлика. Али то је само мали куриозитет сада, тако да можете писати програме на било ком језику, а корисник не морате да знате или брига шта они јесу. Па, хајде да погледамо Више убедљив пример сада да сам подизали унапред. И то се зове куоте.пхп. И то је доступан онлине. И приметите да је прилично схорт-- али је програм командне линије је то ће погледати цене акција За мене, који се заправо догађа да је Германе да проблема сет седам. Дакле, хајде да видимо шта радим. На самом врху ја имам отворена конзола знак питања тект. Онда имам ову линију, где сам захтева фајл под називом фунцтионс.пхп-- идемо да видимо Више о томе у мало, али ово је као Ц је верзија оштар укључују, gde želite da idete укључују још једну датотеку. Тект зове се захтевају, иако је такође има инцлуде функцију. И испоставило се да је фунцтион.пхп Само нешто што сам написао раније класе. Ставио сам га у истом директоријуму, јер Хтео сам да се неки фактор код да бисмо могли желите да користите на другом месту. У међувремену, вероватно можете закључити шта се овде дешава. Ово је мало другачији од ц-- али Шта ја подразумевам под осигурало правилно коришћење? Транслате то више технички. Под којим околностима а одвикавање програм, или излазе? Да? ПУБЛИКА: Када немате Две командне линије аргументи. Давид Малан: Када Немам да аргументе командне линије. И запамтите да је један од оних Аргументи је Сам назив овог програма. А други ће бити неку другу реч куцам после упита. Дакле, баш као Ц, ова је мој начин провјере, да ли је корисник сарађују и покрените програм као што сам намеравао? Сада, постоји нешто мало другачије са ц-- пре свега смо имају овај знак долара, и шта долар потписати означавају у ПХП? Само променљива. То је все-- само променљива следи год желите да заиста назвати. Обратите пажњу на нешто нестао из мог ПХП програма, баш као што је недостајало прошле недеље, насупрот Ц, што је шта? А врсте, али и нешто друго. Не постоји нешто фунцтион-- основну функцију. Нема основна функција. Само почнем да пишем Ваш број без да брине о прилично произвољно конвенција именовања неки дефаулт Функција главни. Дакле, АРГ, Ц ис јуст реалли глобална променљива да је преводилац ставља на располагање за мене. Дакле, ово је интересантно. Зато погледајте горе ствари. Доллар сигн Сток је на лево, то је мој променљива. На десној страни, очигледно нема функција у ПХП зове проналажење да Ја дајем мој последњи командну линију Аргумент да-- год је реч. И ми ћемо видети како ово ради у тренутку. И онда на крају да се јавим цену. Ја штампање један Удео тако и тако. И запамтите, ово је Начин на ПХП-- начин у ПХП-- где не треба да урадите долар знак с више. Можете само да користе витичасте и плуг у некој променљивој. Не морате да бринете о користећи принтф на исти начин. А успут, кад сте ставили променљиву унутар двоструким наводницима као што је ова, користите фенси технике назива променљива интерполација. То само значи да прикључите на променљиву овде. И успут, неки од вас који долазе од других програмских средина, не смете да користите апострофе око жице за то. Морате користити наводнике за променљива интерполација на посао. У супротном ћу буквално видим те витичасте. Па на крају, идемо напред и покрените ово. Дозволите ми да мој терминала мало већи. Пусти ме само напред и покрените у мом куоте директоријум. [? ЦДсоурце?] [? ПМ?] [? цитат?] ПХП цитат тачка ПХП и ја ћу тражити нешто као ГООГ, што је њен Тикер, и једна акција новим именом, Абецеда доо, кошта $ 717, од данас. У реду, ако желимо да рун то поново, неко још један Стоцк Тицкер желе да изгледају горе? Мицрософт мислим да је ова, МСФТ-- $ 53. Мислим да је Иахоо можда је. И Фацебоок је то. Дакле, шта је тај програм ради? Магија изгледа да буде уграђена у тој функцији проналажење. Дакле, хајде да бацимо поглед. Испоставило се да не долази са ПХП, то је у фунцтионс.пхп. И нећемо проћи кроз ово веома детаљно, не приметим оперативни реч овде да он лине шест од фунцтионс.пхп-- Ја буквално кажем функцију. Ја навести име моје функције. Онда сам навести било који аргументи или параметри, Желим да функција да таке-- нема типова. И онда сам га спроведе. И ја ћу махнем руком у имплементацији, јер је прилично напредни у праву сада, али ћемо га видети ствари у недељу у проблему сет седам. Али могу очистити ово, такође. Такође сам укључен у данашња код верзија цитата, који нема тачка ПХП датотеке. Јер оно што је вероватно На врх програма под називом само цитирам? То тзв схебанг-- прилично загонетан бајање која каже пронађу ПХП и онда покрените га на мом коду овде. У реду, тако да доноси да где смо стали последња времена-- готово мада са неки напреднији примера. Сва питања до сада о ПХП или шта радимо? Не-- реду. Да? ПУБЛИКА: Унутар ХТМЛ фајлови, ти-- [? зар не ?] [? само га зову?] А [неразумљиво] ПХП фајл? Давид Малан: Добро питање. У веб контексту, који смо дословно транзиције у, не користите тзв ствар на врху, јер веб сервер-- често Програм под називом Апацхе или Мицрософт ИИС Интернет Информатион Сервер или било који број осталих софтвера веб сервера, зна да када се види тачка ПХП фајл, то је то треба покренути преводиоца на њега. То не гледа тој првој линији. Дакле, овај први линије трик само кад си писање командна линија програмс-- коју неће учинити Супер често, али то је наш начин премошћавање наши Ц примери до сада наш ПХП. Дакле, хајде да заиста премости овај свет из командне линије света на веб радећи следеће. Пусти ме само напред и извући овде на тренутак. Дакле, ако имамо веб сервер, односно ако имамо свој лаптоп овде, што ћу извући овако. А овде имамо Интернет у неком облику. А онда овде имамо сервер у буилдинг-- ово је како интернет воркс-- и овде је сервер са неким светлима можда. Шта се заправо дешава између ова два везама? Дакле, у овој згради је веб сервер. То је само компјутер да води неким оперативним систем-- можда слободан софтвер под називом Апацхе која ЦС50 ИДЕ ради. Дакле, ви заправо могу мислите о овој згради као зграда у која ЦСт0 ИДЕ чува. То је место где све вас има рачуни, где сви ви имају свој веб сервер трчање, сви ви имају своје јединствене УРЛ адресе, као што смо почели да разговарају, а ви ћете видети више у П. сет шест. Ево мој лаптоп негде друго на интернету. И тако кад одем УРЛ који припада за мене је Интернет саобраћај ће над серверу, сервер је прима ХТТП рекуест-- Лике А да индек.хтмл и то је одговарање на тој интернет страници. Дакле, то је општа парадигма. Док свега горе До сада Данас, све се догађало само у ограничава овог објекта. Ја сам користећи мој лаптоп, али Ја сам повезан са ЦС50 ИДЕ, тако да све те програме сам трчао је унутар тог сервера, сама. Али сада, почнимо поновно коришћење ПХП да пишу неке стварне програме који се сервира од стране веб сервера. И за то, ја идем у гомила примера да уведе ову идеју овде. Дакле, ово је некако фенси начин описује парадигме програмирања. И у ствари, као што изађете ЦС50 или раде на завршним пројектима, или да неки прате на часу, ви ћете почети да видим да је ворлд-- посебно одрастао на језицима као што су Ц да су супер ниска левел-- схватите да постоји бољи начини писања софтвера. Постоје одређена обрасци можете пратити, одређени начин организовања датотеке и начини именовање своје функције, тако да скратим причу, свет је дошао до са хрпом скраћеница и имена за начине програмирања. Ово су само технике можете користити. А један од њих се зове ДСЦ, Модел Виев Цонтроллер за. И ово је само за Сада, превише компликовано начин да се каже како треба да изнесем сајт ПХП базиран, у нашем случају. Како да организујете своје датотеке, Како да организујете свој логику, на начин који олакшава напиши компликованије сајтова? И заиста, брзо смо цу тамо са п-сет седам. Дакле, у свету МВЦ, идеш да видимо да наш код може генерално се окарактерисати или као Код Модел, или контролер код, или поглед кода. И ја ћу поедностави га као фолловс-- контролер је мозак вашег програма, то је место где све од Интересантно логика се дешава. Дакле, све што смо били писање до сада у класи, је попут контролера цоде-- то контролише ваш програм, ваши петље, твој услови, ваши функције и варијабле и све то. Прегледи, сада, ће бити мало очигледнији у свету Интернету. Поглед је естетика о Вашем сајту. То је оно што корисник сеес-- слике, ХТМЛ табеле, ХТМЛ ознаке, и све од тога, сав флуффи естетике ствари које није тако тешко написати, али је управо оно што сте генерисање, је тзв поглед, естетика. И модела, на крају, иде да се базе података које стуфф-- почећемо роњење у све више у среду. Дакле, контролер је логика, Поглед је естетска ствар, и модел ће бити где чувамо наше стварне податке. Дакле, хајде да погледамо ово конкретно са следећом примером. Ја идем у моју директоријум овде данашњег извора цоде-- све што је доступан на Интернету. И ја ћу да идем у верзији нула. И овде је-- хајде да позив Верзија нула сајту ЦС50 је. Нема много овде уопште. То је веома једноставан веб страница које је вероватно користи оно што је ХТМЛ тагс-- само Ваљда из прошлих примера? Шта је ово? Х1-- вероватно због тога велика Болд назив, односно логотип до врха, ЦС50. А шта је још у игри? Да? ПУБЛИКА: Списак без редних бројева. Давид Малан: неуређене лист-- тако да УЛ ознака и можда пар ЛИ тагова. А ако се не сећате ове, то искрено није битно. Ово су флуффи врста имплементације детаљи ХТМЛ да брзо погледати а ти си се вратио на путу. Ми ћемо се фокусирати више на програмирања идеје које су се сочније комада. Дакле, хајде да се брзо погледате ХТМЛ-- и заиста ако сам отворити поглед извор овде, да, то је управо оно што се дешава овде. Постоји ул ознака. Смештен унутар тога је да ЛИ ознаке. А онда сам позајмио УРЛ од стварног наставног програма овде. А онда у лецтурес.пхп је очигледно још један динамички генеришу страна који ће имати, хајде да видим-- Ах, Прве две недеље предавања. Тако недеље нула и један недеље, хајдемо погледај ово-- ако видите страну извор, Такође супер једноставна. Они доводе до две странице зове веек0.пхп, и веек1.пхп. Дакле, размислите сад шта се дешава. Када кликнем на веек0.пхп, мој лаптоп прави захтев за веек0.пхп. Веб сервер, а.к.а., ЦС50 ИДЕ прима ту виртуелну коверту. То је види поруку као, да веек0.пхп. Затим се тумачи датотеке, врх до дна, с лева на ригхт-- датотеку зове веек0.пхп-- и пљује од резултата. Дакле, унутар ове датотеке, веек0.пхп, мора бити логика контролер који се генерише ово ХТМЛ и ускоро ћемо видети. Али за сада, дозволите ми да кликнете на недељу нула, а сада имамо среде и петка а сада имамо слајдове полако из недеље нуле. И можда се сећате ово из давне када. Тако да је све ово сајт ради. Дакле, хајде да размотримо како се то ради. Ја идем назад у изворни код овде, у ЦС50 ИДЕ, и ја ћу да отворим индек.пхп. На врху ове датотеке је гомила коментара. А онда у сред ове датотеке ит, Испоставило се да је уопште нема ПХП код. Јер ако немате ниједан од отворено брацкет знак питања ПХП ознаке, ви сте слободни да само стави ХТМЛ. Јер оно ПХП преводилац треба да уради, када пише овај филе-- од врха до дна, с лева на ригхт-- то само интерпретира код је види између те угао заграде знак питања. И још нешто да не признати као ПХП, само избацује. А ХТМЛ је међу стварима само ће испљунути. Дакле, овај фајл могао да је индек.хтмл зове, али ја именовање све тачка ПХП као одскочну даску. Лецтурес.пхп-- слично ундервхелминг, то је само неки ХТМЛ. Веек0.пхп, слично само су неке ХТМЛ. Али сада хајде да стави на пословична инжењеринг шешир, и размотрити како можемо да побољшамо ово. То није тешко да уради, али некако од пренета у Копирајте и пренесите. А у ствари, ако направим недеље двоје, Знаш шта ја вероватно ћеш да урадиш? Ја идем у веек1.пхп, ја сам ће све истакне. Ја ћу да га копирате, налепите га у нову датотеку под називом веек2.пхп, твеак неке адресе, и бити на путу. Дакле, на основу онога што сам види у Ц већ ово не осећа добро, надам се. Цопи, Пасте ретко право решење. Дакле, шта можемо почети да урадимо да бисмо побољшали ово? Где су могућности за бољу дизајн? До тренутка када дођем до недеље осам, иде бити заиста досадан ако желите да промените фонт сваког од моја страна, или ако желим да промени структуру распореда. Па где је прилика за бољу дизајн? Па, хајде да размотримо шта је дели између свих ових фајлова. Ево једна недеља, ево недеља нула, ево лецтурес.пхп, ево индек.пхп-- што је исто и Оно што је другачије, грубо говорећи, У сваком од ових фајлова? Да? ПУБЛИКА: [неразумљиво] Давид Малан: Добро, добро. Дакле, постоји образац, сигурно, при чему сваки пут бирам Предавање И, Требало би да генерише врло сличног изгледа страна. И тако можда могу искористити чињеница да је заиста, намерно нисмо бројчано индексирани нашу лецтурес-- ако ја могу ставити још више речи у свом одговору. А шта је једина ствар, стварно, да се мења између недеље једног-- и пусти ме да спустите тако да је отприлике у истом место-- па ево седмице нула, грубо на врху. Овде је један недеље, недеља нула, један недеље, недеља нула. У реду, буквално ако знате ниједан програм уопште, ово је сада управо као образац подударање игра. Дакле, шта је другачије? Да? ПУБЛИКА: [неразумљиво] Давид Малан: Добро, тако да је наслов се мења, никада тако нешто. Зеро иде, наравно, да један. Иста ствар се дешава у Х1 таг. И ми баш не видим тако лако, јер су УРЛ су мало дуго. Али ти УРЛ-ови су нешто мења. Али оно што се не мења, ако смем кажу, већина садржаја паге-- ХТМЛ ознака је иста, глава је исти, наслов је готово исти, тело је исти, и Скоро све остало је исти осим за оне мале Твеакс. Дакле, како можемо ићи о факторинг неке ово? Па дозволите ми да тачно предложити да ће у следећој верзији. Дакле, овде у верзији једном, имам тачан Исти филес, плус неколико других. Ево индек.пхп--, па чак и ако никад нисам видела ПХП раније, оно што ја радим вјеројатно да се реши ово мали проблем на основу онога што видите овде? Да ли је то благо посвећености? Ne? Да, хајде. ПУБЛИКА: [неразумљиво] Давид Малан: Да. ПУБЛИКА: [неразумљиво] Давид Малан: Требам те да Говорим само мало гласније. ПУБЛИКА: [неразумљиво] Давид Малан: Добро, добро. И мислим-- да је тешко ти-- али чујем Мислим шта циљаш је то ознаке које су биле заједничке до врха, и ознаке које су биле заједничке на дно, сада су урачунати се, или испадају шта филес? Хеадер.пхп и фоотер.пхп-- и идемо направити неке твеакс да обратити тиче само подигла о бројевима промене, за пример, ако сам вас добро чуо. Али то изгледа да је суштина. Ако је постојала огромна количина редунданције на врху странице, и огромна количина редунданције на дну, хајде да буквално само врхунац и исећи тај садржај се, ставите га у посебном филе-- баш као и идеја ЦСС, где смо урачунати од веома слични естетика, пут она у одвојеном тачка ПХП датотеци, користите захтевају мецханисм-- који је као Ц схарп инцлуде-- који је у суштини исто као да кажеш го зграбите садржај хеадер.пхп, и копирате их овде. Али шта то значи да сада у индек.пхп, имам те две линије. У лецтурес.пхп, такође имамо те две линије. У веек0.пхп, такође имамо те две линије. Дакле, сада, ако желите да промените наслов свих мојих страница, или Желим да промените основна структура, Ја могу променити сада у само једном месту, или два плацес-- заглавља и подножја, респективно. Сада Кодекса стартни погледати мало загонетан, зар не? Али ако мислите о томе шта је страница је доинг-- ако сам тражи веек0.пхп, баш као на цртежу изнад овдје-- када се тражи веек0.пхп, шта то значи? Дословно, овај фајл је тражи претраживачу. Веб сервер-- а.к.а. ЦС50 ИД-- зграби ово Филе, веек0.пхп и чита је од врха до дна, с лева на десно. На линији један, одмах наилази отворена конзола знак питања ПХП захтевају заглавље тачка ПХП, и тако ста ПХП преводилац доес-- који је уграђен у веб Сервер, јер смо преконфигурисана је за тебе-- се аутоматски пребацује у хеадер.пхп, копије садржаја, пасте их овде. Али тада је преводилац сусрети знак питања затворена заграда, тако да све је готово размишља. Сада се само слепо пљуне од линија два кроз седам, јер то је само сирова ХТМЛ. Гетс да се построје осам, и да ли то Исто магија Поново: отварање фајла, граббинг садржај, и их захтева или их лијепити управо тада и тамо. Али сам алудирао на бубу. Ово је делимично корак уназад, јер ако погледамо у хеадер.пхп, Некако сам прекинуо угао. Шта особина сам одустати како да добију ову спорну бољи дизајн? Да? ПУБЛИКА: [неразумљиво] Давид Малан: Да, ја исекли нетривијална угао. Истакао сте да је оно што се мења био је назив, број у наслову, а број у Х1. Дакле, моје решење је, у реду, хајде да преименовати страницу, и не бави тиме Проблем уопште. Дакле, то је делимични корак уназад сигурно. Али, оно што је поменути овде је оно што сам учинио је иначе факторисан од свега заједничке ствари. И у фоотер.пхп, приметио сам факторисан од свега тога, иако мање, уобичајена ствар. Зато морам да некако сада моћи да још један корак напред, и поправити ту титулу питања. Па хајде да урадимо то. Пусти ме у мојој другој верзији овде, што, опет, има исте фајлове осим једне нове тога. И то је мало више опсирније, али хајде да видимо да ли можемо може да је задиркује, осим што се овде дешава. Дакле, уместо да захтева хеадер.пхп, фоотер.пхп и, Чини ми се да само тражи један филе-- зове, наравно, хелперс.пхп. И дозволите ми сада предвиђају, шта је унутар хелперс.пхп је само гомила функције да сам написао, баш као и пре. Али ја то назвао хелперс.пхп. Сада очигледно, у линија три и 10, ја сам позива два фунцтионс-- рендер заглавље, подножје рендер. Они не долазе са ПХП написао сам их лично. И ја сам их ставио у хелперс.пхп. Сада смо само видели ову синтаксу Једном, и то је супер кратак. Али ово је очигледно аргумент да пружи заглавље, функцију. Зашто је то познато? Па овде је блиски парен, Овде је отворена заграда. И наравно, као иу Ц, нешто између тих заграда је инпут-- или аргумент функцији. Који је тип података овог аргумента, на основу онога што сам истакао? Шта ти квадратних заграде указују, на основу прошле недеље? Да, то је арраи-- посебно асоцијативни низ. И ово синтакса додуше је мало фанки, али то је само у пролазу у једном кључном вредности пара. Кључ је, под знацима навода наслов, а вредност је ЦС50. Ако смо урадили ин Ц, то би могло уместо изгледају овако, само под знацима навода ЦС50-- или заправо било би коврџава протезе, или тако нешто у Ц, где је кључ нула, а вредност је ЦС50. Али опет, у ПХП-у, иако је синтакса је, опет, мало чудно, то вам омогућује да прође у речи уместо бројева да се друже кључеве са вредностима. Дакле, шта све ово значи? Ако одем у хелперс.пхп, хајде да погледамо ову функцију. рендерХеадер.пхп, а рендерХеадер је моја функција, и знам јер видим функција кључна реч овде. Ово је нова да га ц-- очигледно заузима аргумент под називом дата-- али сам могао да се зове ово ништа, али сам га назвао података, само да буде мало цлеан-- и само да претпоставите, посебно ако сте програмиран у неки други виши ниво језика пре нешто изнад Ц, концептуално. Шта једнак отворен брацкет квадратних носач вероватно значи? Или шта би то значило? Не Видели смо то у Ц. Да? Празан низ. Конкретно, ово значи да ако корисник не зови рендерХеадер свађом, ја још увек траје да аргумент који се зове података, али његова стандардна вредност је ће бити празан низ. Дакле, то је само лепо погодност. Ја не морам да вичем на корисника, или да сте користили моја функција није у реду. Ја само могу дати кориснику дефаулт вредност, ако не посебно брига. Ова функција, ја сам да машу руке у. Али овај одломак функција омогућава да прође ове варијабле у подацима у хеадер.пхп на следећи начин. И ово је последњи комад, Мислим, функи синтаксе. Ово је моја нова верзија да га хеадер.пхп-- имао обичај да каже, дословно, отворен носач наслов ЦС50, и то је било то. И иста ствар за Х1. Сада је очигледно пише нешто прилично фанки. И дозволите ми да поједноставимо на тренутак као што следи. То је оно што сам Променио сам наслов да буде. Међутим, то постаје мало ружно да стално отворене заграде са ПХП, а затим користите функцију штампања. Испоставило се да ПХП има стенографију нотатион за то, што је само знак једнакости, што је технички функција названа ецхо уместо принт, али то је иста ствар, ефикасно. То само изгледа боље. То је само синтактичка шећера, ако хоћете, да чини мој број изгледају мало боље. Али се испоставило, и ћемо опет видети пре дуго, морамо да зовемо досадно дуг функција названа ХТМЛ посебне карактере ПХП јер се испоставило постоје одређени улаза да корисник може да нам дају, или да корисници могу нам дати, која се дешава да се пробије наш сајт. Али видећемо да следеће недеље ЈаваСцрипт. Али за сада, само знам да овај фајл, хеадерс.пхп, једноставно узима титулу да Прошао сам у то да Сигурно је сигурно да се убризгава у мрежу страна, и то га избацује као мој наслов и као мој Х1. Дакле, ако одем у ову верзију сада, Приметићете да предавања има своју титулу, недеља нула има своју титулу, и Заиста, ХТМЛ ја генерисање је идентичан шта је моја првој верзији био-- осим мог белина, јер сам почео форматирање мој код мало другачије. Али сам генерише све код ми је стало. Дакле, да направите паузу за само тренутак и види ако има било каквих питања или конфузија сам створио. У реду, хајде да твист мало теже овде да видимо да ли је прилика за унапређење. Хелперс.пхп такође имао ово функција, зове рендерФоотер. А шта је напоменути о рендерХеадер, и рендерФоотер? И опет, за данашње потребе, знам да је екстракт функција је само мој начин полагања аргумената у хеадер.пхп и фоотер.пхп. Молим? ПУБЛИКА: [неразумљиво] Давид Малан: Да, само ја променио линија захтева. Па буквално сам починио грех копирања и лепљења, опет. То није велики број линија, али долазе ајде-- ако сам копирате и налепите све само да промените једну малу реч, и једна мала реч која указује Алан Оут је фоотер овде, насупрот хеадер овде. Иначе, све је идентична изузев, Наравно, имена функцију екипе. Дакле, шта можемо да урадимо боље? Па дозволите ми да отворим ову верзију Овде, при чему се хелперс.пхп, зашто не само добити мало паметнији о томе? Напишите нешто компликованија код, али назвати рендер? Дакле, шта сам фундаментално променио? Потребно је аргумент сада-- два аргумента, подаци и даље. А у чему је онда први Назив највероватније се користи за, на основу онога што сте овде читате? Чак и ако неки од синтаксе је још увек нова. Шта је долар знак шаблон? Молим? ПУБЛИКА: заглавље или подножје. Давид Малан: заглавље или подножје. Тако очигледно, одлучио сам да, ако једина ствар која се мења је оно што ја желим шаблон да принт-- и по шаблону Мислим да је ово план за код који сам желите да прикажете, али желим да прикључите у неким валуес-- па ако је само заглавље или футер, зашто не бих параметеризе да и позвати знак Аргумент долара шаблон? И онда фанки синтакса ме омогућује да створи пут у променљивој овде. Дакле, долар знак пут је променљива. Шта ова синтаксу уради, да ли сте упознати? Да? ПУБЛИКА: [неразумљиво] Давид Малан: Управо тако. Ако предложак је, под знацима навода, заглавље, или ако је шаблон, под знацима навода, футер, та линија постоји да сам истакао, линија осам, једноставно узимајући то име, као и заглавље, и то Надовезивањем са дот ПХП. Дакле, нисмо имали овај оператор у Ц. Овај оператор тачка је невероватна ствар у ПХП-- ако сте упознат са ЈаваСцрипт или Јава, можете користити плус потписати да уради конкатенацију. У Ц, то је бол у нецк-- и жао ми је, у стр-сет шест, ти ћеш морати да урадите ово-- то је бол у врату да спојите жице. Zašto? Па, зато ако имаш стринг који је тако дуго, а други стринг који је тако дуго, не можете их само плуг заједно. Шта треба да урадите уместо у Ц? Да? ПУБЛИКА: [неразумљиво] Давид Малан: Морате да маллоц меморија, или користите низ на стек. А ви заправо треба да проверите да низ довољно велик да се уклопи ово плус ово, плус обрнута коса црта нула. Онда их спојите заједно користећи мешати мачку или ручно са петље за, или било који број техника. И ми вам показати пар у п-сет шест. То је бол у врату. И то је заиста оно што мислим о ово у односу на ово-- као Ц у односу на ПХП. Само ти много више функционалност бесплатно, тако да можете да се фокусирате, идеално, на забаву део кодирања је Пројекат желите да решите, уместо нивоа ситницама ниске. Дакле, ово само ствара поавилса или фоотер.пхп на основу којих се ја зовем. И заиста, ако одем у индек.пхп, обавештење све што је цхангед-- Уместо позива рендер заглавље или подножје рендер, Зовем рендер, затим од стране назив предлошка које желим да урадим. И ви ћете видети, такође, у проблему сет седам, при чему смо вам омогућавају да користите иста функција да букете и гомиле различитих веб страницама. Дакле, пре него задржавати превише много више о тим детаилс-- које ћете опет видети у Проблем скуп севен-- погледајмо на почетку сада раствора у више занимљив проблем. До сада, ништа имамо урађено је сачуване податке. У ствари, једини пут да смо икада спасили нешто што смо урадили у овој класи се када смо имали врло једноставан демо неко време назад, при чему смо користили слику ИО ин Ц, и мислим да сам откуцао у моје име, и Име Ханнах, и Марије име, или можда Енди је име, и онда смо спасили ЦСВ филе-- Цомма сепаратед валуес филе. И користили смо фопен-- мислим смо фпринтф колико се сећам, а ми спасили датотеку. Дакле, то је најједноставнији облик базе података. Ако желите да направите сајт за Фросх ИМ програм, при чему бруцоша могу се пријавити за спорт, те идеално желите да урадите нешто са тим подацима. Прошле недеље смо учинили ништа са дата-- смо рекли, сте регистровани, не баш. Или можда послати е-поштом Процтор, и то је било то. Али било би лепо кад бих могао Дај ми то Процтор ЦСВ датотеку, као Екцел фајл. Или још боље, да би би лепо када бих могао стави имена тих корисника и дорм имена и све то у базу података која само живи заувек, док не одлучите да избришете податке. База података који омогућава да упита информације. И заиста, то је оно што је база података. Уводимо данас, и следеће недеље, такође, технологија назива СКЛ-- структурисаном Упит Језик, што је још један језик. То у суштини је програмирање језик, али за базе података. И база података за сада, само сматрамо супер фенси верзију Мицрософт Екцел или Гоогле Табеле, или Аппле Бројеви. То генерално је програм који омогућава можете да сачувате гомилу података у редовима и колонама, сасвим као да би могао у Екцелу. Али оно што је лепо, нарочито ако нисмо супер упознати са Екцел, шта СКЛ вам омогућава да урадите је ово упит информације писањем линија кода где можете, чак и ако ваш База има милион редова у њој, можете наћи ствари супер брзо. У ствари, Екцел је посебно лоша у великим скуповима података. А у ствари, до неколико пре неколико година, испоставило Екцел би само вам омогућити да сачувате до 65.535 редова дата-- који звучи као много, али у пут када сам био студент, и сећам се да сам саплету ово јер сам генерише ЦСВ датотеке за мог истраживања и ја хтео да их анализирају брзо самим отварањем у Екцел. Наравно, мој компјутер само срушио, јер сам имао више од 65.000 редова. Али одакле је 65.535 долазе? Шта је Мицрософт ради, вероватно? Ако сте добри са својим овлашћењима двоје? Да, они су помоћу 16-бит вриједност представљају број реда. И два до 16 је 65,536-- минус један, јер ако нула индекс значи да је највећи број редова сам могао. И то је била само одлука дизајн. Од уштеде 16 бита, они су ме ограничена 16.000 редова, уместо 4 милијарде долара, које сам могао имати идеално. Али за сада, идемо у увести ово више у веб контексту. А шта је лепо у вези СКЛ је да чак и иако је прилично моћан и прилично софистицирано, стварно проври до четири кључна операција, четири кључне функције, ако вилл-- изаберете, за преузимање података, претраживање за податке; брисање или брисање података; убаците за додавање редова у базу података; и ажурирање. Дакле, ако сте икада користили Гоогле Табеле, Аппле, Мицрософт бројеви Екцел, ви сте извели, највероватније, све ових операција као цовека само помоћу тастатуре и моусе-- унос података, користећи очи да бисте изабрали или потражите података, или ажурирање података, брисање података. или Дакле, шта то значи? Па, пре-инсталиран у ЦС50 ИДЕ је програм који се зове МиСКЛ. То је бесплатно, опен соурце база података која је супер популаран. Фацебоок, на пример, користи да би ово дан, између осталог алата које користе. И много веома популарних сајтова користи је у великој мери јер је брз, и зато што је бесплатан. Иако свакако постоје алтернативе. А неки од вас можда површно са алтернативе за завршне пројекте. Ово је сцреенсхот, у међувремену, од алат веб-басед зове ПхпМиАдмин. То је случајност да овај алат веб-басед је такође написана на језику ПХП, али оно што је требало да уради је да нам базирани веб- интерфејс са базом података. Пошто МиСКЛ типично нешто, историјски вас, би интеракцију са само са командне линије. И то би било супер досадан и волшебни да да куцате текстуалне команде да бисте изабрали података, унос података, брисање података. Тако су неки људи на интернету написао програм заснован на Вебу да само да нам управљају податке у нашој бази. То је као дуплим кликом на Екцел, и ради верзију веб-басед истих. И шта ћеш да користите ово за на крају следеће недеље, а не у стр-сет шест, али је изградити нешто зове ЦС50 финансија, који ће имати базу података корисници, са корисничких имена и лозинки, долар износи да су имају у својим банковним рачунима. То ће бити нешто што користите за складиштење симболи и количине акција које корисник купили користећи виртуелни долара које ћете дати. И то ће да омогући корисницима да се региструју на вашем сајту, тако да чак и своје пријатеље можете подесити у на Вашем сајту и заправо регистер, лог ин, и играти се и покушати да пронађу кривца у вашем коду, и покушати да нађу грешке у Вашем сајту. И они једноставно ће регистровати додајући себе, ефикасно, преко кода сте написали да ваше базе података. На пример, ово је брз с шта је база података може изгледати. Ово је из једне од прошлогодишњи солутионс-- ово је као мини Екцел филе, чувају у нашој бази, складиштити у овом софтверу под називом МиСКЛ. На лијевој страни, ја сам очигледно с обзиром Сваки корисник јединствени број. У другој колони, ја сам дао сви корисник назовете моје међу њима. А на десној страни, Ја сам им дао хасх. Ово је заправо лозинка, али то није обичан текст лозинке. То је кодиран лозинка, ако хоћете, или хасх лозинке. Које ћемо се вратити на пре дуго. Али ако сте икада прочитали чланак о томе како лозинка на некој банци или неки сајт можда угрожена, генерално може да значи једну од две ствари. Дакле, ово је само одломак од шест корисника. Сви ви сада могу да схватим од преко хаковања или пуцање оно лозинке наших шест људи су. Али, ако сте икада стечен увек будни или извињење из предузећа или веб изрека, Жао ми је, хакер провалио у нашој бази, вероватно треба мењати лозинка, шта би то значило? Па, један, може да значи да је Компанија је више идиотски, и да је чување лозинку у колони овако, некодиран. Што значи непријатеља, који је украо базу података, дословно зна твој усернаме и пассворд. То је најгори могући сценарио. И као што ћете видети у П-СЕТ седам, тако лако да се избегне. Не постоји апсолутно никакво оправдање за то облик глупости у данашњем интернету. Два-- и ми ћемо наћи неке чланке да сведочи чињеница да је ово још увек деси, нонетхелесс-- два, можда противник украо ову верзију базе података. Што је још некако лоше, јер сада они знају да ја имам шест купаца, Знам корисничка имена тих шест купаца, и знам да је кодиран верзије, или су хеширану верзије, лозинки тих шест купаца. Али сви ви који би могао завршио [? Хакер 2?] где сте испуцала лозинке, или је погледам ту верзију проблема скуп, зашто га још увек мало забрињава ако је противник зна свој хасх лозинке? ПУБЛИКА: Зато што су могли унесите цео речник у хеш функције. А ако лозинка је речник реч, [? они само могу да матцх--?] Давид Малан: Тачно, противник могу само написати код, као неки од вас урадио за [? Хакер?] 2, где сте прелазили преко све речи у речнику, или све могуће комбинације А до З и један преко нине-- која звучи као много, и то је то. Али за компјутер, то је прилично проклето брзо. У ствари, то је био тачка [? Хакер 2,?] Био да се ствари које дословно изгледа овако, и обрнути инжењеринг шта је то уствари. Тако ћемо погледати како можемо складиштити ово ефикасније. Испоставило се да, на срећу у МиСКЛ, ту ће бити врсте података. И један од забавних делова о дизајн базе података, да будем искрен, заправо одлучује за себе како треба да представљају податке? Ако сте представник број телефона као инт, као велики број, или дуго? Или да ли заиста то као низ карактера? И не може бити врло не-тривијални утицаји ово. У ствари, један од најранији, фун Германе приче када Марк Зуцкерберг је изградња Фацебоок, је првобитно написан у, и још увек је у великој мери написан у ПХП. И један од највећих изазова они рано је скалирање суочава. Када су држали додајући школу после школа после школе, према мојим сазнањима, једно од оригиналним решењима је у суштини да копирате и налепите неке од база података а неки од кода, тако да је Харвард био ради на сопственом серверу, и МИТ је покренут на свом серверу. И то је био разлог, за неке од вас ко би могао да се сетим, нисте могли имати пријатеље у другим мрежама. Вероватно немају пријатеље у МИТ-или Харварду пре 10-так година, али нисте могли спан мрежа за делимично тог разлога. И један од највећих изазова за Марк и за компаније као што су Фацебоок заправо руковање стотине и хиљаде и милионе захтева у секунди. Дакле, ствари почећемо говоримо о ове недеље стварно ће бити Германе да писање доброг софтвера, и популарно успешних алата који може носити много корисника. Тако ћемо причати о стварима као индексирање и претраживање, али то је то за данас. Ми ћемо вас видети више у среду. [МУЗИКА - "Сеинфелд" ТЕМА] Давид Малан: можете да да, и одузети од ње. И не морате да се држите нека предодређен количина меморије. Па, шта то иде да се зове? СПЕАКЕР 1: Па, шта се дешава? Звучник 2: Како то мислиш? Он држи предавање. Давид Малан: Можемо користи Функција маллоц позвао да мемори-- СПЕАКЕР 1: Зашто се не помера руке? Звучник 2: Па то је-- знате, то је нормално. То је као да има само велике кобасице виси тамо. СПЕАКЕР 1: То је нормално? Звучник 2: Да, ми мислимо само он преузме случајно сменио дезодоранс са суперлепак.