[Powered by Google Translate] [Недеља 8] [Дејвид Ј Малан] [Универзитет Харвард] [Ово је ЦС50.] [ЦС50.ТВ] Добродошли назад. Ово је ЦС50, и то је почетак седмице 8. Неколико могућности ове недеље, међу њима је овај разговор овде, на којем су неки храна ће бити задовољена. За више детаља погледајте слајдове који су на мрежи. И још једна манифестација ове недеље наше Томас Царриеро. Он је један од бивших стипендиста ЦС50 главу наставе, који је сада на Дропбок, и он је момак који нас је повезао са знате шта, па ако желите више од тога главе њихове приче ово поподне за Дропбок и више. ЦС50 ручак је у петак. Да нам се придруже, ако сте у могућности, 1:15, као и обично, на ватре и леда. И сада смо зароните у нешто што се зове Семинари. Наши ЦС50 Семинари, позивање, су ови факултативна настава предвођени наставних момци и курс помоћници и пријатељи наравно, људи из групе на кампусу зове АБЦД, која је група тецхнопхилес на кампусу, као и група под називом ХЦС, Најскупљи Рачунар друштво, студенти који су на сличан начин заинтересовани у рачунарству. Овогодишњи списак семинара обухвата семинаре на Андроид и иОС и ЈаваСцрипт и ПХП, Уникс, Вим и више, тако да схвате да су ови семинари долази. Ако желите да се пријаве за неки од њих кренути на тај УРЛ тамо. Ми ћемо онда писати на сајту наравно с времена и места када су завршени. Али знам вреди тамо 5 година је ранијих семинара доступна онлине, од којих су многи још увек веома актуелна у смислу технологија које можда желе да се играју са вашим крајњим пројекте, па кренути тамо неких доступних видео снимака истих. ЦСС, они од вас који су упознати са ЦСС већ, шта је то у кратким цртама? Шта је ЦСС? То је Цасцадинг Стиле Схеетс, и шта то значи? Шта то учини за нас, ЦСС? У реду, хајде да загрејемо са лакшим једном, ХТМЛ ХиперТект Маркуп Лангуаге. Шта то уради за нас? Свако уопште? Постаје заиста отежано постављам та питања. ХТМЛ ХиперТект Маркуп језик. Да? Не? [Нечујан ученик одговор] Ок, добро, то нам омогућава да бисте означили текст за приказ у веб прегледачу. То није програмски језик. Заиста је Маркуп језик, што значи да подучава бровсер како би се приказале информације, тако најједноставније инкарнација ово као што смо видели је нешто супер једноставно као болдфацинг, отворена заграда б затворена заграда каже чине овај текст подебљано, а то је заправо само један од многих начина у којој можемо да урадимо, и заиста, ових дана бољи приступ да стилизинг своју веб страницу, чинећи ствари храбар и подвукла и центриран и оправдано и слично, не врши преко ХТМЛ таговима сама већ са техником која се зове ЦСС, Цасцадинг Стиле Схеетс. То је језик за себе. То је такође није програмски језик, али, сви, ово је Дан, који држи придружио нам се и данас. Неке техничке потешкоће. Није проблем. ЦСС омогућава нам да стилизовати странице постављањем оно што се зове својства, па хајде да погледамо ово путем неких основних примера. Пусти ме да идем у апарата данас. Имам изворни 8 Понедељак директоријум овде, и ја идем у именик зове ЦСС где имамо гомилу досијеа који чекају нас овде, и у овом фолдеру имамо, на пример, сеарцх0.хтмл од прошлог пута. Сада, сети сеарцх0 смо оставили на овој поруци тако некако имплементације Гоогле или стварно само предњи крај за њега пре недељу дана или тако, и приметио да смо имали ту неке нове ознаке. Имали смо Х1 за велику, смелим насловом, форма, која нам је омогућило да имамо заправо ХТМЛ образац за унос података. Акција, која је била смисао акционог атрибута на ХТМЛ форми ознаку? Шта је смисао овог, акције? Ја ћу само ово данас. Акција је дестинација где је образац ће бити послат. Чињеница да се каже акција = "гоогле.цом / сеарцх" значи да када корисник кликне на дугме достави или еквивалент год облик поља су попуњена ће бити не шаљу на наш сервер или наш апарат већ на дату УРЛ на Гоогле. А метод ће користити зове се добије, и да, за сада, само техника за доношење информација заједно са сервером путем УРЛ адресе, па хајде да на брзину погледамо уназад на то како ово ради. Обратите пажњу да постоји улаз чије име је к чији тип је текст, а затим други улаз типа достави чија вредност је ЦС50 претрага, и заиста, ако смо отворили овде овај фајл, сеарцх0.хтмл, то је супер једноставан облик, и ако тражим нешто попут компјутерске науке и онда притисните ентер или кликните на ЦС50 Претрага приметити да је оно што се дешава је изван добијање Гоогле Конкретно сам завршио на овој адреси на врху, гоогле.цом / сеарцх к = компјутер? + наука, и информатике је очигледно оно што сам унесе Тхе + само значи да је место где је био размак, и то је урадила бровсер само да се уверите да нема конфузија и бели простор у стварном УРЛ. А онда к, наравно, је параметар име. Нисмо видели како је програмер, заправо може приступити к још. Можемо претпоставити да Гоогле зна шта да ради са овим овде, али ћемо стићи у догледно време данас. Али дозволите ми да погледам уместо на сеарцх1.хтмл, која изгледа мало другачије јер сам одлучио да овај облик овде био само мало безвезе. Мислим, то је у горњем левом углу. Постоји заиста нема естетике до њега, па желим да ово стилизовати мало више личи на Гоогле-у, чији је хомепаге, подсјетимо, иако можда не тако често га посетите, изгледа овако данас на Ноћ вештица. Ако се уместо тога отворили верзију 1 овог фајла, тражи 1.хтмл, ја сам га центриран. Ипак прилично ружно, али барем сада сам почео да контролише естетику овој страници, не само означавање истих. Хајде да погледамо претраге 1, и заиста постоји овде само једна разлика, што би могло искочити на тебе, или можда не, али оно што је једна линија или одломак разлике? Ту је овај стил атрибут, па испада да се у ХТМЛ већина елемената, већина ознаке могу имати атрибут стил на њих, и унутар тог стила атрибута је цитирао стринг, и да је цитирао стринг ЦСС. Можете ставити каскадни стилски тамо наводећи га као име особине праћено двотачком следи вредност. То је нека врста несрећног дизајна одлуке пре неколико година да ЦСС језик за себе, али синтаксички је веома разликује од ХТМЛ-а. У овом случају, видимо да је унутрашњост моје веб странице, који је написан у ХТМЛ, Имам ЦСС унутар ових навода, као и Конвенција за ЦСС је да имате оно што се зове имовину затим, поново, дебелог црева, следи вредности те имовине, тако да нема знак једнакости. Нема додатних цитира. То је само ово дебело одвојена кључна вредност пар, и текст линија ради управо оно што пише. Она поравнава текст у телу странице, што је заиста храбрости на страну, у центру. Ок, онда крајњи резултат, да буде јасно, ово. Није све то секси, али барем је центриран и мало више као прави Гоогле. Али шта ако сам уместо тога отворити верзију 2 овог и укаже овде потпуно нову ознаку? Сада у глави мојој страници, која је раније имао само што таг у свим претходним примерима? То је само имао ово титулу. Малопре је шеф таг изгледао овако. Сада, уместо да има стила ознаке унутар њих, и ово, ја се извињавам, синтаксички изгледа веома разликује од ХТМЛ, али се навикнете на њега, при чему унутар стила таг Ја сада могу факторишу шта је пре тренутак атрибут, стил атрибут, а ја могу да га ставе на самом врху моје стране. Зашто? Па, ово је корак ка чишћење ствари, слично као у писаној форми Ц кода понекад би написати функције да фактор од заједничког функционалност. То је само мало чистије да почне факторинга од ствари попут естетике на једну централну локацију него да имају све разасути широм ХТМЛ. То, такође, ради оно што каже, иако има мало нову синтаксу. Ово овде је селектор, а тело само значи изаберите елемент тела и примењују следећа својства на њега. Па, имовина је потпуно исти. За добру меру Додао сам зарез на крају, која тежи да буде конвенција, а ја сам завршио целу ову некретнину у заграда јер сам стварно могао да овде имају различите ствари. Ја стварно могао рећи нешто попут боје: плава; Сада то исто неће бити корак ка чему све то лепше, али ако се вратимо на верзију 2 сам бар сада је тело моје странице текста све плаво. Дугме остаје иста, јер је то улаз. То није чиста текст. Али све остало што је текст, као и ЦС50 Претрага до врха, је у ствари плавом. Опет, све што смо сада урадили је извадите из тела таг, обавештења, стил атрибут, а да смо фактор га овде. Ово није велики напредак, али ако узмемо тај један корак даље приметити шта можемо да урадимо у овом трећој верзији овде. У сеарцх3.хтмл веб страница је скоро идентична осим онога што сада нову ознаку? Линк, тако да ово неко није баш згодно назван јер не повезује у смислу кликне хипервезу. Уместо тога, ти си некако раде еквивалент # инцлуде у Ц при чему је веза таг са атрибутом хреф и рел атрибут каже напред и копирај налепите садржај фајла назван сеарцх3.цсс управо овде, у суштини. То не баш то, али то је дух тога. Он каже да иде отворени тај фајл, сеарцх3.цсс, и третирати га као да је корисник откуцао га овде у глави странице баш као што сам урадио у претходном примеру. Сеарцх3.цсс, у међувремену, је прилично једноставно. То је само стварно садржи тачно оно што је пре тренутак у стилу таг, али сам га овде урачунати у своју датотеку. Иако нисмо провели много времена уопште у ХТМЛ-у или веб програмирање само интуитивно шта је мотивација, можда, за факторинг ван овај мали фрагмент чак ЦСС у сопственом фајлу а затим га, укључујући овом линку тагом овде? [Нечујан ученик одговор] Ок, то је лакше да прочитате у смислу да имате свој ЦСС у ЦСС фајлу. Ви имате ХТМЛ у ХТМЛ фајлу, тако да је више читљив у том смислу. Шта друго може да буде убедљив? Да. [Нечујан ученик одговор] Да, тако да можете да га садрже много пута, тако да сада радимо ове Основни примери са појединачним фајловима, али претпостављам да сте заправо чинећи прави сајт као ти воља за псет 7 или вашег коначног пројекта можда, и желите да имате више веб страница, што је свакако уобичајена на стварна Ворлд Виде Веб, и то би било некако јадно морати да копирате и налепите исту плаву боју а исти текст поравнат центар у свакој од тих страна. Уместо тога има више смисла да факторишу, слично као што смо урадили у Ц са х фајл., стави га у једном централном месту, у овом случају сеарцх3.цсс, а затим допустите било који фајл у свом сајту да заправо садржи тај фајл путем овог тага овде у линији 16. Као што је обично случај, ми смо почели са верзијом 0, која врста радова али није нужно најбоље, и са сваким кораком, претрага 1, 2 тражи, а сада тражи 3 смо предузели кораке ове бебе према пројектима који су мало чистији и више су припремне више сложених страница које бисмо могли урадити низ пут. Дозволите ми да отворимо један, последњи пример овде само да покажем још стилизована страница, али прво погледајмо на ХТМЛ. Ово је сеарцх4.хтмл, и приметићете да структурално је скоро иста осим за увођење новог тага, див. Див је ознака која уводи поделу странице. Можете мислити о овоме као невидљиви правоугаоника. То је некако ствара откос од области у веб странице да можете стилизовати одједном. Оно што сам овде урадио је следећи. Унутар мог тела ознака, који је тамо био све време, Кажем направити поделу странице овде преко линија 45 до 47, а то значи да у суштини ми невидљиви правоугаоник дуж врху странице. Онда ми дај други правоугаоник, иако невидљиво, испод тога, и идентификује га именом садржаја, а онда на крају, дај ми трећу поделу странице на дну зове ИД. Ми ћемо видети зашто сам урадио то у само једном тренутку, али концептуално имам заглавља поделу. Имам садржаја поделу, а имам подножја поделу странице иако су само у ознакама. Корисник неће видети 3 правоугаоника, али некако структурно тамо иза кулиса они су заправо присутни. Сада, кога је брига? Зашто заправо урадили? Све остало на страници је исти као што смо видели раније. Ево мој облик. Ево мој улаз, мој улаз, прелом и тако даље. Ево слика, мада, па ћемо видети где то дошао у само једном тренутку. Ево подножје, што је ново, само зато што сам хтео да представим неки више садржаја овде. Ако смо се помицати приметити да ИД овог дива је заглавље. Лична овог дива је садржај, а ИД овој је подножје. И као што име сугерише, када имате личну атрибут у ХТМЛ, по дефиницији јединствено мора да идентификује један од елемената, један од ознака у вашој страници. Терет је потпуно вама да се сетите да сте већ заглавља ИД. Имате подножје. Ви сте већ садржаја ИД. Рачунар неће да схватим шта располагању ИД је за вас, па сте случајно може дати 2 Тагс легитимацију за заглавља, и да ће само бити у реду. Морате имати на уму оно што сте направили, али када сте урадили ово обавештење шта можемо овдје радимо. Сада можете да наведете у свом стилу ознаци на врху или еквивалентно у мом ЦСС фајлу, ако сам још увек користи ту верзију, Ја могу да кажем # заглавље, и шта то значи да шта год ознака У овом сајту има ИД заглављу и #, само људском конвенцијом, представља личну карту. Оштар знак или фунте знак представља личну карту. Главом је име које сам дао. То значи да примењују овај ЦСС имовину на било ознака на овој страници носи идентификациони број заглавља. Иста ствар овде. Примени ову имовину, која се дешава да буде исти, да било који елемент чији ИД је садржај, а затим доле приметио сам мало одгајивач са подножјем. Сваки елеменат чији ИД је подножје, које не може бити само један по дефиницији, само напред и да њена величина фонта мањи, његова тежина слова болд, његова маржа 20 пиксела. Шта то значи? То је само маргина на врху, дну, и са леве и са десне стране. То значи да ми је 20-пиксела невидљиву границу око ње само да гура све остало од ње мало, као што сте могли урадити у Ворду, Мицрософт Ворд или страница, или слично. А онда текст алигн центар. Хајде да видимо крајњи резултат, а онда се враћамо до једног преосталог исечак ЦСС тамо. Ово је верзија 4, наша последња за претрагу примера, а то је много, много више секси. Сада, у додуше, само сам Гооглед "гоогле фонта Лого Генератор". И то ми је дозволио да се створи ГИФ, слика формата, која изгледа као да је тамо. У ствари, можете да урадите ово. Имамо "Гоогле фонтс Лого Генератор". Хајде да видимо да ли можемо да урадимо ово. Ок, мислим да је ово сајт сам користио. Можемо рећи Ец 10, на пример, и да их самостално. Можете играти са овим цео дан, а затим кликните десним тастером миша на њега а онда преузмите стварни ГИФ, што је све што сам урадио. И заиста, то је разлог зашто се у мојој ХТМЛ, подсјетимо, овамо Имао сам слику ознаку, што смо видели прошле недеље накратко чији извор је лого.гиф. И шта опет је био мотив за то што овај алт атрибут, ова алтернатива атрибут? Да. [Нечујан ученик одговор] Добро, па 2 разлози заиста, ако прегледач не може попети слику јер имате спору конекцију или је слика оштећена или нешто слично барем човек може видети "ЦС50 претрагу" а потом и за приступачност разлога. Ако имате корисника који је слеп и користи читач екрана па очигледно не могу да виде слике да могу бар чујем текст ако њихов рачунар га говори за њих. У принципу, ово је најбоље практиковати када је у питању доступност страница тако да чак и корисници у тој ситуацији могу да чују или виде, да тако кажем, шта је то што је на вашој страни. Има једна ствар коју сам овде што је мало интересантан, па ћемо видети више о овоме у проблему сет 7 преко једног од шортс челу једног од наставних сарадника. Али # садржај се односи на ознаку чији ИД је садржај, али онда постоји размак, а онда је реч улаз. Па, шта је занимљиво у вези ЦСС је да можете се односе на ознаке на странице врсти хијерархијски, а шта је то одломак ЦСС средстава је пронаћи ознаку чији ИД је садржај, а затим примените следећа својства на све улазне ознака које су потомци садржаја, а то је да су увучени у њега. Увлачење, опет, само је важно да рачунар, а не на човека, али конвенцији смо алинеја ствари као што смо дубље у страну, па то значи применити маргину од 5 пиксела на било улазни елемент То је негде унутар или угнежђена унутар  елеменат чији је ИД садржај. Ко се то односи? Па, у ствари постоји само овде ови момци 2. Обавештење да је унутрашњост форми има 2 улаза, јер је било за све од ових примера. Али приметите да та 2 улаза се деси да се унутар угњеждене, мада мало дубље, а неколико слојева увлачења, унутар тага чији је ИД садржај. Шта ово значи? Ако одемо на претраживачу Овде можете видети икада тако нешто- дозволите ми да увећате-то је мало паддинг између тастера и између поље. Дозволите ми да привремено укључите да скинете. Пусти ме да одем до моје ЦСС, и пусти ме да идем напред и само промените ову маргину од 5 пиксела на 0 пиксела. Пусти ме напред затим и сачувате датотеку, идите назад у претраживачу и поново, и посматрајте средину странице. Све заједно је добио компресован, и када сам први пут шлаг овај примјер горе Мислио сам да је изгледао глупо са текстуалном пољу, а затим на дугме одмах испод њега. Хтео сам да га пад мало, па сам увео маргине. Оно што неће радити у предавању је проћи кроз неколико десетина ЦСС својства које постоје, јер, опет, постоје ствари као што су величина фонта, фонт тежина, маргина, текст поравнали, а неколико десетина других, и ми ћемо вас упутити у проблему поставили 7 различитих туторијале мрежи и референце које вам омогућавају да покупи те ствари. Али оно што је заиста важно на крају дана је да се схвати како се примењују ове ствари. Опет, ако имамо стил ознака унутар којег може ићи селектора, врсту идентификатора који наведете коме желите да примените ове особине, а онда сте ставили својства као кључна вредност пара раздвојене двотачком, а затим завршио са зарезом, или можете да пребаците све то напоље и ставио га у засебну ЦСС датотеку к себи. Добро, било каква питања о концептима или велика слика ЦСС? Опет ћете видети више од њега у псет 7, али ћемо задржати је прилично уопштено једноставно. Не? У реду. То је време за стварне програмском језику, а ми ћемо се вратити на мало ЦСС-у облику пример. ПХП је заправо предивно приступачан језик у томе што синтаксички је скоро једнака Ц. Другим речима, ако знате Ц, знате за највећи део ПХП, барем синтаксички, иако постоје неке нове функције и неке нове појмове ћемо морати да погледамо. Али углавном, сада када смо прелаз из Ц на ПХП већина нових ствари је заиста у великој слици, Како да користите језик програма на Интернету насупрот у командној линији или у трепери брза као што смо радили до сада. За референцу, посебно са псет 7 и коначног пројекта па надаље, не искористе ову УРЛ адресу овде ако желите да прочитате горе на формалности ПХП. То заправо је ефикасно као бесплатне уџбеник, а такође ћете наћи да оно што је заиста лепо о ПХП је да постоје стотине функција које долазе са њом, док је у Ц нисте нужно имати приступ више функција него су били у математике библиотеци, ЦС50 библиотека. У ПХП и много модерних језика, Питхон и Руби међу њима, добијате приступ тако много више функција, што значи да се за писање много мање код зато што могу да стоје на раменима других људи који су већ написао неке ствари за тебе. Узмимо брз обилазак синтаксом ПХП и онда напише неколико примера. Шта је лепо о ПХП, пре свега је нема главна функција. Ако желите да напишете програм у ПХП почнете писање кода, а ви не морате да бринете о томе главни. Нема инт. Нема повратка. Нема аргв, аргц што је потребно када пишете програм. Уместо само да почнете писање кода, а то је у делу јер ПХП је оно што се зове тумачи језик. Ц је саставио, и да је сачињен у смислу да почнете са изворним кодом, то пролазе кроз кланг, што је преводилац, и на крају, након неког броја корака добијате објектног кода, 0с и 1с. ПХП и Питхон и Руби и Перл и остали су различити типови језика у томе их не састављају. Не иди од изворног кода да 0с и 1с. Ви само покренете изворни код, а ви покренете изворног кода пишући у уобичајеном текстуалној датотеци, која се завршава у ПХП-у. у овом случају уместо ц, и. шта програм ради на рачунару је дословно интерпретира своју шифру линију по линију по линију. Другим речима, уместо да напишете програм и покрените програм директно да уместо тога написати програм са датотеком завршава пхп.. Затим покренете стварну емисију пхп.еке, ако си на Виндовс, или само ПХП, ако сте на Мац ОС или Линук, а ти дају као улаз за ПХП програму сопствени извор кода, и њена сврха у животу је да чита ваше горњи код да доња, лева на десно, и да све што сте рекли то да уради. Хајде да видимо шта ће то значити синтаксички. У ПХП имамо услове. Овај слајд је идентична ономе што сте се видели у недељу 1. јер синтаксички услови, ИФС и другде ИФС и другде у ПХП изгледају баш овако. Када је у питању боолеан изразима они ће тачно изгледати овако. Када је у питању Андинг ствари заједно, као боолеанс ће то тачно изгледати овако. Прекидачи изгледају исто, и добићете додатну корист у ПХП да прекидачи у Ц може само пребацити на цхар или инт. Ниси могао пребацити на ниске вредности. У ПХП заправо може имати израз то је променљива чија садржина стринг, а ви у ствари можете да урадите поређење стрингова у реалном интуитиван начин, Не показивач поређење, како би се одлучило да ли да урадим ако сам или ј или нешто друго. Видећемо да потенцијално пре дуго. Петље превише дивно су исти. За петље имају иницијализацију, услов, а неки број исправки. Док петљи постоје у ПХП. До вхиле петље такође постоје у ПХП, и низови постоје у ПХП-у, али ево где је синтакса почиње да се мало другачије, али концепти су исти, и концепти су заиста исти као што су били у недељу 0 са нуле. Прво и најважније је $ знак. То је била одлука о дизајну у ПХП чиме било променљива у ПХП по дизајн почиње са $ знаком. Нема више Кс, И, З. Сада је $ Кс $ И З $ само зато. То је нешто што треба имати на уму, а сада је на десној страни ово личи на низу, али ми овде користите угласте заграде. У ПХП и ЈаваСцрипт, као што смо на крају ћемо видети, прогласи низ радите отворену угласту заграду и затворен угласте заграде, и онда имате раздвојене зарезом листу вредности, без обзира да ли ИНТС или ниске или слова, шта год хоћеш, унутар тог израза тамо. Сада, како смо урадили нешто овако у Ц? Шта је синтакса за декларисање статички низ познатих бројева? То је био витичасте заграде, па мала разлика овде, али иу ПХП и на крају ЈаваСцрипт само користи угласте заграде, тако да стварно једини интересантан детаљ овде је $ знак за име променљиве а такође и угластим заградама, а ту је и једна чудна ствар која је била изостављена, као и на левој страни = знака. Шта недостаје да смо захтевајући недељама сада? Да. [Нечујан ученик одговор] Величина, тако да нема помена од величине низа. Искрено, нема помена о угластим заградама на левој страни у = знака, а шта недостаје у вези? Да >> [нечујан ученик одговор]. Врста, па шта је занимљиво посебно о ПХП је да није снажно откуцан језик као Ц, и да се снажно откуцан у смислу да морате да кажете знак, морате рећи инт, морате рећи плива. Кад год хоћеш променљиву мораш рећи шта његова јека је тип. ПХП је мало лењи. Она је лабаво откуцан у смислу да можете имати Флоатс и карактера и стрингове и ИНТС и тако даље, али сам језик заиста не занима шта сте ставили унутра о променљивој. Не морате да га обавести унапред шта тип података иде у променљивој. То је у потпуности зависи од вас, па ово је лепо у томе не морате да бринете о томе колико података куцање и забрињавајуће шта ваши аргументи и тако даље. Ово такође значи да на крају функције у ПХП ће бити у стању да се врате било инт већину времена, а можда једном у неко време они ће вратити Боол, боолеан фалсе, на пример, значи да нешто није у реду. То нам даје неке упсидес, али ће нас некако по дизајну мало лењи када је у питању куцање података. Шта још има да се задржи на уму? Променљиве изгледају веома свиђа, па $ а = "хелло, ворлд". То је можда инферабле из претходног примера, и имамо другу врсту петље. Ово ми заправо ћемо једном видети у време пошто је веома згодна, фореацх конструкт. У овом случају, фореацх петља се унутар њених заградама 3 речи које се обично, $ Нешто Први, који је оно низ желиш да вршите итерацију над припадницима, онда буквално као кључна реч, и онда на крају, друго име променљиве које можете да одаберете. То може бити фоо, бар, или елемент, и шта то ради конструкт је ако је $ низ садржи 10 елемената на сваком итерацији ове низ-Жао ми је, на свакој итерацији ове петље променљива зове елемент ће бити ажуриран да је први елемент у низу, а онда други елемент у низу, онда трећи елемент низа, чиме обвиатинг потребу да уради нешто досадне квадрат нотацију носећег и $ И да би се у индексу низа. ПХП ради све то посла за вас и на свакој итерацији само вам предаје наредни елемент из низа без потребе да знате о томе или брига о свом нумеричком индекса локацији. И онда на крају, за сада, има једна друга карактеристика ПХП то ће бити изузетно корисно, посебно када почнемо програм на интернету, и да је познат као асоцијативног низа. Низови за које знамо до сада од пре 20 секунди и за последњих 8 недеља су бројчано индексиране низова, врста традиционалних низова где су индекси су ИНТС, 0, 1, 2, скроз горе. Асоцијативни низови су много моћнији. Они вам омогућавају да имају произвољне кључеве, произвољне индекси и произвољне вредности. Док је у традиционалном низу је 0, 1, 2, у асоцијативном низу можете имати индекс или кључ фоо чија је вредност бар. Тада можете да имате још један кључ чије име је баз и чија је вредност кук. Опет, глупи рачунарских наука генеричких имена променљивих овде, али поента је да овај низ нема носача 0 или 1 носач. Уместо тога ће имати носача фоо и носећег Баз. Ово је много више свестран у томе да ћемо бити у стању да се удружују речи са другим речима, кључеви са вредностима потпуно произвољно, и ми ћемо бити у стању да врати те вредности у константном времену јер испод хаубе шта асоцијативног низа стварно је хеш табела. Подсетимо се да хеш табела вам омогућава да ставите у неки улаз као ставити у речи Давида ако желите да убаците Давида у неком речнику, и онда се врати обично неку вредност. У случају Спеллер, праве или лажне. Давид или шта год реч је или није у речнику. Асоцијативни низ је заиста само хеш табела, али је много више усер фриендли инкарнација њега. Као што ћемо видети, то ће нам омогућити да урадимо неке ствари веома, веома лако. Хајде да погледамо неке основне ПХП примери и видети шта можемо да урадимо са овим језиком. Дозволите ми да иде напред и отворити у нашој изворној директоријуму данас фајл који се зове хелло1.пхп. Ова датотека је више коментар него што је стварни број, па нека ми заправо уклоните све коментаре из датотеке и садашњи вама можда најједноставнији ПХП програма овде. 5 линија, а неке од њих су бели простор, па приметити овде неке кључне разлике. Датотека се зове хелло1.пхп. Прва линија, међутим, <пхп. Слично духом у ХТМЛ, који низ знакова говори рачунар "Хеј, рачунар, ево програм да смо у у ПХП." Чини ли се то не збуни да је неки други језик. Линија 2 је занимљив бели простор. Линија 3 је принтф наш стари пријатељ, овај пут у контексту ПХП. ПХП има своју верзију принтф која се понаша потпуно исто, па ово је само ће да штампа "Здраво, свете." А онда супротно ознака овде,>, значи? То је то за мој ПХП кода. Хајде да видимо како да водим ово. Ја ћу да се вратим на мој прозор терминала овде. Ја ћу да одем у ПХП директоријум. Приметите да имамо гомилу фајлова, прва од којих је хелло.пхп. Дозволите ми да иде напред и покренули ову, хелло1.пхп, унесете. Дозвола је одбијена. Ок. Како смо фиксне овакве ствари у прошлости? Шта је то >> [нечујан ученик одговор?] Ми треба читати и писати, али дозволите ми да урадим лс-л. Запамти ово донекле шифровану излаз при хелло1 Чини се да је читљив и писати од мене али читљив од стране свих осталих. Испоставило се да то заправо није корак у правом смеру. Разлика, опет, са интерпретиран језик се не директно покренули програм. Уместо тога покрените тумач и предајте га Кодекса да сте написали тако да се може тумачити га линију по линију. У овом случају, преводилац или програм ја заправо желим да покренете буквално зове ПХП. Негде на том хард диск уређаја постоји програм неко је написао зове ПХП, или на Виндовс пхп.еке. Оно што ћу да урадим овде јесте да ћу стварно покретање ПХП али дајте га као аргумент командне линије кода који сам написао, и онда ћу умањили и притисните ентер. Он ради свој програм за мене, од врха ка дну, с лева на десно. Дозволите ми да иде напред и отворити малу варијансу ово. У хелло2.пхп најаве да је ово сувише је углавном коментари, па хајде ми да се ослободим оних као дистракција, а оно што је очигледно другачије о овом фајлу? Има ова нова линија, донекле криптичан на врху. У линији 1 то # је! / Бин / пхп. Бин је конвенција о Линук и Мац ОС за бинарне, тако / бин значи да је фасцикла садржи гомилу бинарне који је програмиран, од којих је ПХП. Тхе #! је прозван схебанг, што је брз начин да се каже, и шта то значи је да када покренете овај програм сада постоји наговештај на врху датотеке који говори рачунар оно преводиоцу да користите. Постаје мало досадно, ако сте имали да кажете своје кориснике и своје купце "Хеј, ми смо написали ову емисију хелло1.пхп." Све што треба да урадите је да заувек покрене ПХП и онда име овог програма. Искрено, само би било лепше да покренете хелло1.пхп, и заиста, можемо да урадимо следеће. Пусти ме само напред и урадите лс-л, а обавештење у хелло2 то је још увек само читати писати а онда читати читање, тако да још не може да уради ово, хелло2.пхп. Али смо увели ово икада тако кратко последњи пут је цхмод команда. Ако урадим цхмод а + к, што значи да сви плус извршности, и онда хелло2.пхп и онда не лс-л опет приметили шта се променило. Један, Линук ми показује име датотеке у зеленој да пренесе идеју да је извршна, али је још важније, на левој страни приметити да је мало представља к за извршног сада је постављен. Шта ово сад значи да је могу покренути ./хелло2.пхп као и обично, ударио ентер, и због схебанг на самом врху датотеке То је наговештај, опет, на Линук да каже користите овај преводилац да покренете ову датотеку. Не брини приморава корисника да заправо куцате. И оно што је лепо сад је некако је ирелевантно мојих клијената или моји пријатељи којим језиком сам писао овај програм, тако да могу да настави са мв и преименовати ову ствар хелло2, на пример. А сада, ако ја ./хелло2 и умањили мој програм наставља да ради. Ове датотеке екстензије су људски конвенције које је неопходно за тако нешто и учини кланг који их траже. Али за ПХП, могао назвати ништа екстензију желим. Могао преварити свет у мислећи да сам стварно добар у Руби, и ја сам могао да напишем хелло2.рб а затим покренути ово, и воила, сада имам Руби верзију, која је потпуна лаж. Али фајл екстензије су бесмислени ако датотека је извршно и има ту посебну наговештај на врху датотеке. Сада, као и на страну, дозволите ми да вам покажем брзо верзију 3, што је нека врста корисног трик да се зна. У хелло3 сам урадио нешто лоше мало да ћу ажурирати изворни код онлајн. У верзији 3 испада да на већини Линук рачунарима постоји програм који се зове енв за животну средину, и шта можете учинити овде је ако немате идеју где ПХП је инсталиран на локалном хард диску, јер заиста то може варирати у зависности од рачунара да неко користи, енв само каже покренути енв, који је на већини система, и схватим где ПХП је. Само заједнички трик, тако да не морате да бринете о проналажењу где програм. Али ако је стало да сазна где програм и нисте стало до сада можете користити који команду. Дозволите ми да умањите и тип који пхп, и приметите да ми говори да је заправо у уср / бин / пхп. То је нека врста лажи. Такође је у канту. То је само ми показује прву хит. Ако сте се икада запитали где је кланг, који кланг, који је у уср / бин / кланг, који чине, уср / бин / направи, и шта то значи све ово време могли су да куцате уср / бин / зазвечати уђе да покренете кланг, али некако је досадан да се то уради, тако да неки фолдери као уср / бин и бин претпоставља се да су подразумеване тако да рачунар зна да траже у њима за вас. Сва питања у вези писања супер, супер једноставан Хелло Ворлд програм у ПХП и онда ради? Зато сада ћемо почети да уведе више убедљиве синтаксу. У реду, идемо. Ови програми смо заправо видели све њих раније. Ако сам отвори, на пример, хајде да урадимо беер1.пхп, нећемо ићи кроз неколико верзија, али оно што сам урадио Био сам сео и сипа га или конвертују мој Ц кода ПХП кода овде. Већина на врху фајла је цомментс овде. Испоставило се да је то једна нова функција морамо зове реадлине. ГетСтринг, опозив, из недеље 0 па надаље био ЦС50 ствар. ПХП долази са сопственим усер-фриендли функције зове реадлине који траје 1 аргумент који одређује одзив да желите да покажете кориснику, и шта ради реадлине се враћа год корисник упише ин У овом случају, ја изјављујући променљиву зове $ н. Ја складиштење у њој повратну вредност реадлине након што је навело корисника са овом низу. Само да резервне копије, да заправо покренете ову ствар, пусти ме само напред и покретање пхп беер1.пхп. Колико флаша ће тамо бити? Хајде само до 2. овог пута. Ентер. То је све. Програм је функционално идентичан Ц верзији из недеље пре. Али синтаксички хајде да видимо шта је то другачије. Након што сам добити инт од корисника најаве да радим неке грешке провере, а ако је н мање од 1 Престао сам и ја одштампати Жао порука корисника и излазак са 1. Ово је, такође, мало другачија.  У Ц шта смо урадили? У Ц смо се вратили 1. У ПХП изађете са 1, што искрено мислим да је мало више интуитивно јер буквално излази из програма. У реду, а затим доле овде досадне песма је идентична синтаксички осим променљиву, тако да овде доле у ​​линији 24 па надаље приметити ми фор петљи је скоро исти, али имам $ испред и и н, и оно што је такође недостаје у складу 26 које смо имали у прошлости када декларисање променљиве ја? Нема тип. То је нетачно у ПХП рећи инт. Ви једноставно не треба то да радиш. Рачунар, преводилац ПХП је довољно паметан да схвати да ако стави број у $ сам да ће га третирати као број за вас. А онда овде доле смо прикључите $ и $ и, $ и - 1. Све то је иста, а онда овде радимо "Вау, то је досадно" принтф а затим изађите (0). Опет, ПОНЕТИ овде је да, иако ћемо провести релативно мало времена на ПХП, сигурно у односу оно што смо урадили у Ц, то је скоро исто, па шта ћемо урадити данас и следеће недеље и даље је фокусирати заиста на неким новим идејама. Само да видимо да једна ствар не преведе преко из Ц, ово је супер једноставан програм смо урадили у Недељи 1 или 2 који куб вредност. Али оно што је занимљиво у то време око овог програма је да се увео појам прилагођеном писменог функције коју смо сами написао. Синтакса у ПХП је скоро исти. Ево мој програм се врху. Обавештење опет нема никакве појам главни. Почнем писања кода, и то је оно што се дешава да се изврши од стране преводиоца. Ја штампати к је сада 2, вероватно. Онда ја тврдим цубинг ... Онда сам позвати функцију коцке и проћи у $ к и доделити повратну вредност на $ к. Онда ја тврдим да је то на куб, а онда кажем ово, који надам се ће рећи к је сада 8. Синтакса за функције у ПХП је икада тако нешто другачија. Поново недостаје је повратни тип. Опет недостаје је повратни тип и недостаје оно што други тип? [Нечујан ученик одговор] Па, добро, то је добро. Вратимо се на то у секунди. Ми немамо, на пример, инт овде. Ми не, на пример, овде инт, јер, понављам, у ПХП Ви једноставно не треба да и не треба да радите, већ постоји ова нова кључна реч зове функција. У ПХП је скоро мало јасније јер када желите функцију буквално кажеш функцију, дају име, а затим зарезом одвојена листа ако неко од његових аргумената. Нема потребе да кажем празнину или нешто слично томе, а онда повратак исто, $ * $ * $. Оно што је такође недостаје? Самми истакао ово овде. На врху фајла потпуно одсутног у ПХП такође прототип. Ово је, такође по дизајну. Језици и преводиоци попут ПХП су паметнији од Ц икада био у компајлерима као јека. Подсетимо да је јека, ако нисте то рекли да постоји коцку, Ако нисте рекли да је иф постоји као са прототип или са # инцлуде, па је кренуо да виче на тебе и ни компајлирати код. ПХП и више савремени језици су много паметнији када је у питању ово. Они ће да преузме на себе да прочитам све ваше кода и онда виче на вас само ако се нађе нигде коцке. Није битно да ли Коцка је на дну или на врху или чак у неком посебном фајлу. ПХП и сличне језици су сада довољно паметни да погледамо напред у свему пред вас оценивши као да је направио грешку. Где нас то отићи? Хајде да урадимо још један, последњи пример овде у условима, и ако сам отворити превише цондитионс2.пхп обавештење синтакса овде је скоро исти. Ја користим реадлине уместо ГетСтринг, али та линија је иста као и пре, "Ја бих цео молим те." Ја сам тада имати уколико услов, иф, а онда други, али функционално овај програм је такође идентичан ономе што смо урадили недеља пре, па ако сам покренути ову ствар, ПХП од цондитионс2, и ја му дати број као 23 - Изабрао сам позитиван број. Ако сам дајте -1 Изабрао сам негативан број. Ако сам дајте 0 И заиста изабрао 0. Па кога брига за све ово? Па, један од забаве врсте вежби овде бар за мене је била да се вратим и видим колико брзо могу да спроводе псет 5, Грешке псет. Подсетимо да је тај фајл под спеллер.ц, и тамо је фајл под дицтионари.ц. Оно што сам сам био некако провео неколико минута и ја претвара Ц кода да ПХП код, и нећемо провести много времена на Спеллер јер баш као у псет 5 ниси стварно треба да проводе много времена на Спеллер самом, јер ваша пажња била на речнику. Довољно је рећи да, ако прочитате Спеллер, Овде овај фајл, то је прилично еквивалент Ц кода ми смо ти дали за псет 5. Управо сам додао неких $ местима. Променио сам неке функције имена ако нису постојала у ПХП-у. Има једна додатна ствар овде, прег_матцх, што је мало одгајивача начин нешто ради, али ћемо се вратити на то на крају. Али укратко, буквар је готово идентичан, а ако погледате на самом дну оно што је на крају избацује је ово овде, речи погрешно, речи у речнику, речи у тексту. Добро, па шта је занимљиво, сада је следеће. На врху мом досијеу сам захтева дицтионари.пхп. Баш као што је Ц # инцлуде ПХП има специјалну функцију која се зове захтевају да прилично ради исту ствар, захтевају фајл под називом дицтионари.пхп. Како да идем на имплементацији псет 5? Дозволите ми да иде напред и отворити ту датотеку. Дозволите ми да се овде мало референцу. И дозволите ми да направите нови фајл и почните да зовете овај дицтионари.пхп. Дозволите ми да га ставите у неки други фолдер, тако да ми то можемо живети. А сада ћу увећали за Идем да започнем свој ПХП фајл са отвореним носачем пхп затворена конзолу. А онда овде је било неколико функција сам потребне за спровођење за псет 5, па ћу почети са применом неких од њих, па функција провера, која је морала да узме реч у као аргумент. Ми ћемо учинити да се и вратити на њега у овом тренутку. Било је функција оптерећења, која је у оно као аргумент? Речник, па је фајл који сам заправо хтео да се учита. Било је функција величине, што није предузео никакве аргументе и било је функција-шта је друго? Истовар, која се није ни аргументе. Ово су 4 функције које бих сада треба да спроведе у ПХП, и шта ћу да урадим је напред и урадите то. Многи од вас користи хеш табелу у псет 5, па ћу ићи напред и створи хеш табелу у ПХП. Готово. То ми даје хеш табелу. Па, зашто? Један, променљива се зове $ сто, само да дочара идеју хеш табеле. Угласте заграде, међутим, подсетити, представљају шта? Низ, али у ПХП низова не морају да буду индексиране бројчано. Они такође могу бити асоцијативни низови, што значи да можете имати произвољне кључеве и вредности. Слично као у псет 5, они од вас који је хасх табеле имплементације Вероватно сте уметнута реч, а затим убаци га у ланцу повезаних листи, или сте сместили вредност праве негде или нешто у том смислу. Ви некако сетио чињеницу да је реч била тамо. За сада, то ће бити мој Дисперзија сто, и сада да се о спровођењу потврду функцију Морам да погледам унутра тог хеш табеле и види да ли је тамо реч. Оно што ћу да урадим је да ћу рећи ако- рецимо иссет, што је ПХП функција која буквално значи само је кључ скуп, па иссет ($ табле [$ реч], и ако је тако врате истина. То је то. То је псет 5 у ПХП-у. Па, у правичности, у реду. Ретурн фалсе, тако да није тамо. Шта се заиста дешава овде? Па, ако стони или хеш табели овде више уопште- је асоцијативна низа, то значи да може да индексира у њега са речи попут "реч" и морате да се врати неку вредност. Некако смо све један корак испред нас. Било би лепо ако некако ми заправо учитан први фајл, па оптерећење није баш тако једноставна, али дозволите ми да иде напред и шчепати  Стварно брзо спровођење оптерећења. Пусти ме напред и рећи речи добија датотеке речник. Фајл функција у ПХП отвара датотеку и враћа вас низа од свих речи у том фајлу, само их уручује вама. То је био велики бол превише, зар не? Сада фореацх, ово је наш нови конструкт, фореацх ($ $ речи као реч). Ова петља ће почети итератинг преко низа речи и доделите променљивој $ реч сваку реч у датотеци од првог до другог на трећи на четвртом све начин тако да не морате да урадите досадне [и] нотацију и слично. И шта ја једноставно ћу да се за сваки од ових речи се она складишти у мојој табели индексирања у табели и онда ради тачно, јер се сетите да реч у мом речнику све заиста морам да урадим је врста преокренути мало и рећи реч у мом хасх табели је тамо, тачно. А ако је нема, ја не морам да експлицитно стави лажне, иначе ћу морати да ставим лажно свих могућих речи у универзуму. Довољно је за мене само да подесите вредност индекса да важи, ако је заправо реч у мом хеш табели. Сада сам сечења неколико углова овде да ћу махати моје руке на за сада, али сада оптерећење функцију врши. Ја учита све речи из датотеке у низу. Ја прелазили преко тог низа, и за сваку реч у низу Ја га прикључите на мој хеш табели са 1 линијом кода. Ово је забавно. Знате како можемо имплементирати величину сада? Па, величина је увек прилично лако, у праведности. Овде можемо само да се врати бројање табеле. То је прилично лако превише, избројати ствари у табели. То је заправо врста није најефикаснији. Вероватно би требало да имају променљиву зове величине, тако да можемо то урадити у сталном времену, али то је прилично лако. Ох, и онда истовари, ако заиста желимо да се анални овде можемо рећи да је то начин да истоваримо нешто. Ви само подесите променљиву једнак празног низа, и добија ослободити од свега што је било тамо. Нема потребе да позовете бесплатно. Опет, ја сам исећи неке углове, и ја се извињавам због додјеле проблема сет 5 можда у Ц, али ако ми сада идемо напред и покрените ово, Идем да заиста води верзију коју сам написао у унапред само да нисам уопште правити синтаксичких грешке. Пусти ме само напред и покрените Спеллер. Употреба је иста. Овде је речник фајл који садржи само реч фоо. Овде је текст фајл који садржи само фоо бар. Хајде да провери правопис ово, па Спеллер, користећи ову датотеку речника на овој текстуалној датотеци. Постоји једна реч погрешно, бар, и воила. Готово са псет 5. Узмимо овде 5-минута паузе, па ћемо се вратити и на ПХП. У реду, ми смо се вратили. Хајде ме не мрзи-за неко време. Хајде сада стварно видим да ово није позитиван који спроводи ову ствар у ПХП. Признајем, било је потребно 45 секунди да спроведе. Али идемо напред сада и покренути ствари. Дозволите ми да иде напред и покрените Ц верзију од Спеллер, и ми ћемо то радити на једном од највећих фајлова, који је краљ Џејмс Библија. И да је овде у идемо у нашу Ц фолдер, буквар за краља Јакова 5.. Много погрешно написане речи. Ок, тако да је то излаз, вероватно имаш чак и ако су времена мало другачије, ако имаш све ради исправно, и тако време укупно на провери правопис Краљ Џејмс Библија била .38 секунди, тако да веома добро користи да би имплементација. Сада ме пустите у ПХП верзији, коју смо управо написао. Дозволите ми да покренете Спеллер на краља Џејмса. Упс, да игноришу ту грешку. Ја сам у погрешном директоријуму. Спеллер на краља Џејмса 5.. Скоро урађено. Ок, проницљив посматрач ће схватити да је више од 3 секунде тамо. То је тачно време рада. Испоставило се да је потребно време да се пљује много текста из због баферовање питања, али скратим причу, који је био 3,15 секунди машинског времена, ЦПУ време, у односу на оно што је била пре тренутак? Као .3. Мислим, то је ред величине спорије, па где је то смешно успоравања долази? Па, као што је био случај са већином било дизајн одлуку смо донели године у класи у протеклих 9 недеља има скоро увек овако компромис. Понекад само између простора, понекад између простора и времена, простор, време и напор, и заиста овде, чак иако смо сачували велику количину времена, можда потенцијално 10-20-30 сати развојног доба имплементира правописа опшивањем га за само 45 секунди са овом језику цена коју плаћате је да је ред величине спорији, као резултат, и то је обично случај са већином било протумачено језику, ПХП, Питхон, Руби, Перл или други при цему ако ћеш да га покренете преко тумача и да га прочита вашу шифру ред по ред, одозго надоле, с лева на десно, Посредник који ће потрајати своје, и шта сте овде осећа у 3 секунде у односу на .3 секунди је чињеница да је ова посредник који има буквално тумаче наш код ред по ред, а дај боже да ли унутра има петље са огромном датотеке која садржи стотине хиљада речи. Тај надземни ће сабрати и додати горе и саберите и додати горе. За алат као што је овај, вероватно није најбољи језик који користити за имплементацију правописа ако непосредности је од интереса за своје кориснике и за вас. Али луксуз имамо у тренутку када сте употребе језика као ПХП или много тумаче језика У контексту Веба, што се тога тиче, имате корист да је интернет много спорије него већини рачунара. Имате ГХз процесор у вашем рачунару, 2 ГХз, а можда чак и више ових дана. Али, реалност је на интернету постоји висок износ кашњења при чему за прегледач за разговор на сервер, иако смо видели прошле недеље да је то прилично брзо, пола милисекунда или тако, и то додаје се, и ако преузимање ствари као на слици или Фацебоок фотографија или добијање инстант поруке преко Фацебоок брбљање, Гцхат или слично, све ове повратну карту пута између претраживача и сервера Старт да додате горе, што чини ваш посебан избор језика у многим случајевима Није све то битно, тако да сте у реду користите нешто спорији језик као ПХП или Питхон или Руби али за које постоје огромне упсидес вама и вашим колегама и твоји пријатељи, јер можете реализовати ствари много, много брже. А осим тога, имате много мањи ризик од одређених безбедносних пропуста. Нема путоказа у ПХП. Нема сег грешке које лако могу да подстакну на исти начин на који би у Ц. Са Ц си супер близу хардверу. Са ПХП и сличне језике си некако вишем нивоу, да тако кажем, са пуно одбрана између вас и онога што се заиста дешава унутар машине, и то је само компромис. Стекли смо до тачке да имају ове модерније, висок ниво језика као ПХП због лекција научених у језицима као што су ПХП у Ц. Али, ако ви не разумете шта се дешава испод хаубе све ово време Ви сигурно не може да праве одлуке дизајна, и свакако, када је у питању рад на оваквом месту Фацебоок или Гоогле или било који од ових места која се све више играју са великим скуповима података чак и ако се вратимо и да премед и раде са неким МД на неким великим подацима поставили укључујући пацијенте и лекаре и слично користећи одговарајуће алатке је изузетно убедљив јер у супротном ваш анализу неке сета података може да потраје секунди, или буквално може да потраје сатима. Ово је само један пример, а не да вас фрустрира са колико више напора је у Ц, али ће вам помоћи да ценимо да када се спроведе нешто у Ц заиста разумеју, или у теорији, заиста разумеју како је све или треба да се ради, а ви имате скоро потпуну контролу над оним што се дешава испод хаубе, и са тим вишим нивоима језика морате да се одрекне више контроле за људе који су их измислили и подлежу више својим дизајнерским одлукама него твој. Али, ако узмемо здраво за готово да су перформансе није баш толико важно на Интернету, јер од ових других питања, само мрежне брзине су нешто спорије него ЦПУ брзинама у сваком случају, тако да можемо некако да приуште да користе нешто спорији језик ако су упсидес можемо развити ствари 10 пута брже или чак и више. Хајде да видимо како можемо да почнете да користите ово. Пусти ме да идем у фасциклу међу примерима данашњим зове фросх.имс, и то је у ствари лично мотивисана чињеницом да је прва ствар Писао сам за Веб пре неколико година након што ЦС50 и ЦС51 је сајт за Фросх Ћаскање програма, бруцош интрамуралне спорт, који је у то време то је било довољно година да је у то време нема сајт за овај програм, иако је било Веб, и уместо тога дошло је прокуратор у Вигглесвортх којој, ако сте желели да се региструју за одбојку или фудбал или било шта што би попуните парче папира. Онда би ходати по дворишту. Онда би покуцати на њихова врата и клизање у њиховом врата или руку на реферат комад папира са својим именом на њему, без обзира да ли или не желите да будете капитен екипе, који спорт сте желели да урадите, а шта дом си унутра То је била нека врста старог школског начин обављања посла, и то је био главни прилика да се аутоматизује доста овог процеса. Ви само идите на сајт. Упишете нешто унутра Добијате потврду е-поште, и бум, готови сте. Ово је била прва ствар коју сам урадио, али у језику зове Перл, али је релативно лако урадити у ПХП-у, и то је нека врста представника проблема можете почети решавање када можете сами изразе програмски и не морају да се ослањају на ствари као што су Гоогле сајтовима или Екцел или алата који се предају на вас. Ви сада имате могућност да раде овакве ствари. Ово је супер ружна верзија форми, али хајде само да га користите за почетак разговора којим је ово отприлике оно форма изгледала пре неколико година за нас да омогући људима на Интернету да се пријавите за Фросх ИМС. Тражили смо за име, а поље за потврду тога да ли или не желе да буду капитен, мушко или женско, и шта онда спаваоница су били, а онда тврдимо овај образац. Хајде да прво погледамо испод хаубе на ХТМЛ-а који представља ову страницу. Пусти ме да идем у фросхимс0, и као по страни, за псет 7 узимам здраво за готово директоријуми и мапе које ја постављам ствари унутра Ми ћемо вас провести кроз тачно где ствари треба да иде у апарату, који мод команде морате да покренете, тако да не брините све од глупи детаљи синхронизацију у од гет-ићи овде. У реду, овде је фросхимс0.пхп. Пусти ме доле померање, а оно што је занимљиво овде, ово је ПХП фајл, али оно што је унутар ње, јасно? То је много ХТМЛ, и заиста, ПХП је порекло стварно су за што веб-центриц језик. Малопре смо га да спроведе пример пива, услови на пример, здраво пример, и то је у реду. Можете да користите ПХП као програмски језик где је сценарио заиста само номенклатура дати брз и прљав програма или нешто што сте написали у сцриптед или уопште неког интерпретиран језик. ПХП је супер корисна јер сте видели како брзо Релативно можемо шчепати програме у ПХП. Али то је стварно дизајниран да се користи за Веб, и дизајниран за Веб, у смислу да приметити овде на врху датотеке Ја почети са <ПХП?. Онда ја имам гомилу непотребних коментара, одобрених, али онда затворим ПХП режим. Али онда сам упадне у ХТМЛ режим. Оно што је интересантно у вези ПХП је, иако фајл завршава пхп. је генерално то је значило да се заједно помешани са ХТМЛ, неки ПХП код, неке ХТМЛ. И ми ћемо на крају видети да можемо почети да задиркују оне поред и држати наше ХТМЛ одвојено од нашег ПХП сасвим, али порекло ПХП заиста требало да вам дам ову флексибилност, да ако желите неки ХТМЛ само писати, а то ће бити испљунути идентично претраживачу. Али ако ти треба за програмирање технике, неки програмски код, можете га ставити у исту тачним фајлу, као што ћемо видети ускоро. Ево моје ХТМЛ. Имам звање ово за Фросх ИМС. Имам тело ознаку који је добио неку ЦСС о томе да центар свега у средини, и онда овде имам форму која очигледно иде да се достави на нови фајл под називом регистер0.пхп, па ћемо видети да у овом тренутку. То је коришћењем метода се зове пост, који ћемо вратити као добро. Онда ја имам неки облик улаза, један такозвани именом, чији је тип текста, један чије име је капетан, чији је тип кућицу, и то, нисмо га видели раније, али то ради управо оно што пише. Добићете цхецкбок уместо текст. Овде доле имате радио дугме, што је један од тих кружних тастера које можете да одаберете ову једну или онај. Обратите пажњу да је намерно сам дао и радио дугмад име рода. Ово је начин да се узајамно искључивање при чему морате кликнути или ово или оно једно, а кликом друга то унцхецкс друге, тако да морате да им дате исто име ако желите да они буду међусобно искључиви тако. А онда за студентском дому, ја не мислим да смо видели још, али то је изаберите мени, падајући мени. Ознака за то је избор. Затим даје падајући мени име, и онда имате гомилу тих опција. Први, само за естетику, је празна ниска. Само сам желео да падајући да буде празна по дефаулту, а онда је Аплеи, Цанадаи, Граис, и тако даље. И приметио овде дихотомију. Опција у падајућег има вредност, али онда има људски препознатљиво име, што у овом примеру је идентична, али ако смо заиста желели да буду анални смо могли вредност овог падајућег бити само кратка верзија, Грејс, али ми заиста може рећи да Граис Халл људско заправо види, али то није све то интересантно, па сам само наставио је једноставна и учинио их идентични. Затим на дну имамо СУБМИТ дугме што смо видели раније, али приметио сам му дао другу реч. Уместо потраге ЦС50 сам дао ознаку "Регистер". Крајњи резултат је тај веб страница овде, и опет, где се ово се подносе? Добија поднео је да неки фајл, вредност акције атрибута, који је регистер0.пхп. Хајде да видимо шта се заиста дешава овде. Дозволите ми да иде напред и попуните овај формулар, каже Давид, мушкарац, Метјус, а онда ћу рећи региструјете. Дозволите ми да умањите и кликните региструјете. Ок, тако некако бескористан, али хајде да видимо шта се заправо дешава. Приметимо да је УРЛ променио се регистер0.пхп. Оно што је занимљиво одсутна из УРЛ адресе, међутим, иако смо управо поднели образац? [Нечујан ученик одговор] Ок, то је само Цхроме као корисник пријатан ових дана. То је заправо тамо. Они су само крије да уштеде простора. Али добра мисао, добра мисао. Пред другом крају УРЛ, мада, шта фали? Да. [Студентски] упита ниска. Упит ниска, тако да се сетим од наших једноставних Гоогле претраге примера. Чим сам кликните на дугме Пошаљи УРЛ одвела на Гоогле, али онда је к = компјутер? наука или шта год да сам унесе То је зато што смо користили метод гет со претрагу пример. Овај пут смо уместо користи оно метод? Пост, као и један од непосредних разлика између добити и поставите је да пост не стави унос корисниково у УРЛ. Она га крије. Још увек га шаље. У ствари, оно што ми видимо у прегледачу овде, као што ћемо показати у тренутку гледајући регистер0, је само видим садржај низа који су достављени од претраживача ка серверу. Али УРЛ нема?, Нема кључне речи или вредности у њој, и зашто је то тако? Па, пошта вам омогућава даље да достави податке из обрасца на серверу, али га не стави у УРЛ-у, па каква информација је порука Посебно је погодан за можда када питате да корисник укуцате улаз на форми? Нешто као лозинку, нешто слично ономе што друго? Бројеве кредитних картица. Све то благо сте осетљиви вероватно не желите завршити у УРЛ ако само зато што то значи да ваш цимер или члан породице може само вилењак кроз Ваш интернет историје и онда буквално виде ваше лозинке, буквално види ваше кредитне картице бројеве, јер већина прегледача запамтите у историји год СЕО сте били у, па ако само зато што би то било лоша идеја. Коришћење поштанских крије да је детаљ од корисника. Такође, како да отпремите фотографију на Фацебоок? Па, само 2 механизми заиста можете користити, иако постоји неколико других још тајанствени моји, је добити и пост. Како сте евентуално отпремите фотографију преко УРЛ-а? Ви заправо можете да урадите. Можете узети ЈПЕГ или битмапу или ГИФ и можете га заступа у хексадецимални или нешто што се зове база 64. Уместо основи 16 користите базу 64, што је у суштини изгледа АСЦИИ карактера, а ви заправо може отпремити слику преко УРЛ-а после знаком питања, али генерално постоје ограничења величине. Већина претраживача СЕО натера да нема више од 1.000 карактера, Можда 2.000 карактера или слично, тако да не можете да отпремите 10 мб Фацебоок фотографија. За то користите пост као добро, за сада се ставља параметара у УРЛ, што је лепо и корисно понекад, али за све осетљиве или велика пост је пут којим треба ићи. Шта се заправо регистер0 ради овде? Па, ако отворим регистер0 обавештење да је ово супер једноставан страница, али је демонстрирао чињеницу да могу да сарађују измешају, за боље или на горе, ХТМЛ са ПХП. Ова цела датотека, осим за коментаре на врху, су ХТМЛ осим овог момка овде. Обавештење у сред мог ПХП кода, у сред мог ХТМЛ, имам неку врсту привремено ушао ПХП режим. Зовем специјалну функцију која се зове штампање р. То значи да одштампате рекурзивно, а оно што ради је то рекурзивно исписује год променљива га предате, тачка и зарез, излаз ПХП режим. И пред таг вам даје унапред форматирани текст, моно простор текста, тако да сваки простор заправо видети. Она не нестаје. Шта је порука? Па, шта је интересантно и убедљив о ПХП је да сваки пут када пошаљете образац користећи добити или поставите све што је достављен вас бровсер ПХП сама схвати шта те кључне вредности пара су, фигуре оут ако има једнаке знаци, фигуре да ли постоји знак питања. То се сав труд за вас, а онда вам уручује асоцијативну низ садржи све што је корисник унео у образац. Па, шта је овај облик поља имати? Имао је 4 поља. Један је текстуално поље зове име. Један је био чекбокс зове капетан. Један је радио дугме зове пол, и један је падајући мени зове дом, па приметио када сам рекурзивно штампање садржај овог посебног променљиве. Ово је посебна Глобална променљива зове дословно $ _ПОСТ, у свим капама. Ово је посебна Глобална променљива да ПХП само ствара за вас и руке на вас, тако да можете приступити све који је поднет преко форми од стране корисника. И позивом Принт Р на њему, не би урадио ово у нормалну примену. Радимо ово да види унутрашњост ове променљиве, и шта је унутра ње, добро, 4 тастера, 4 хттп параметри, да тако кажем, име, капетан, пол, дом, а затим вредности које је корисник откуцан са једним изузетком. Ја сам тип Д-В-И-Д. Проверио сам кутију, мада, за мушкарца, који је очигледно поднео вредност да само сам се језгровит. Када сам изабрао Метјуз је то вредност коју је добио изабрани, а ово је мало глупо, али то је конвенција. Када сам проверио кутију, вредност ОН ", на" добио поднети за чекбокс. Ако ја нисам проверио, нема вредност би се уопште послата. Ово је само нам даје увид у оно што је унутар овог посебног глобалне променљиве, и то је тако посебно да се зове супер глобална променљива. Свуда постоји за вас у вашем коду, тако да заиста може да приступи. То није тако убедљив, па хајде да заправо користе супер Глобал и заправо покушати да региструје некога. У фросхимс1 ћу направити једну промену. Мењам акцију да регистер1.пхп, и ја радим једну другу ствар. Био сам непријатно по квалитету свог веб странице тамо. То је прилично одвратно, искрено, тако испада који можете да користите врло лако на Интернету туђа ЈаваСцрипт код, ЦСС туђе да су они написали и отворен потиче и доступни као библиотека, да тако кажем, и за пример, овде сам помоћу слободно располагање библиотеку, гомила кода који је неко други написао. Твиттер се догодило да напишем овај код, и то се зове боотстрап библиотека, и то је само гомила ЦСС стила листова, гомила ЦСС датотеке. да је неко други написао и схватио како да се све лепо и лепа тако да људи попут нас могу да бринем мало мање о естетици и фокусирају много више на логици и стварног програмирања. Од повезујући га са том ознаком, која је иста ознака Сећам се користи за стилес3.цсс раније, Сада имам приступ фајлу зове боотстрап.мин.цсс. Минимална само значи да сте га минифиед и они отарасили свих белом простору и тако даље само да би били сигурни да не ми шаље више бајтова него што сам заправо треба. Али постоји читава гомила ЦСС, па ако сад отворим верзију 1 од Фросх ИМС приметити да је мој фајл је дефинитивно лепша. Сада је још само црно и бело, али примећујемо да користећи само свој лист стила и коришћење одређене функције томе на мом обрасцу није невероватно, али то је дефинитивно чистији него што је била раније, а пројектор не ради правду. Постоји мали сиви линије око дугмади и око поља за текст овде, али то је дефинитивно чистији него што је било. Сада, у праведности, ја морам да промени моје маржа мало. Ово је верзија 1 и приметио да сам користио неколико нових ознака, и искрено, нисам имао никакву идеју како да се то уради док сам читао документацију за Твиттер је боотстрап библиотеке, и они су ми рекли, ако желите да користите нашу библиотеку користите елемент Фиелдсет унутар форми, стави реч коју желите да прикажете поред поља унутрасњости етикета ознака, онда дајте улаз име, баш као и пре, а затим за квадратићима, не само да га умотају у ознаке елемента, користите нешто што се зове класа, тако да нисмо видели раније, али ћете видети у једној од псет 7 је шортс. Класе у ЦСС вам омогућава да урадите нешто веома слично ИД, али пре него када смо имали личну карту са симболом # то је било за један и само један елемент. Шта је лепо о класи је да више елементи имају исту класу или исти ЦСС ствари примењује на њега. Али опет, више од оних у кратком, а остатак је ово само копирајте и налепите из њихове документације где сам додао ознаку овде и тамо. И на крају, јер сам укључен на линк ознаку на врху, све изгледа лепше аутоматски једноставно што обележила моју страницу на начин који Твиттер очекује, и постоји толико много различитих начина то уради, а то је заиста веома прикладно. У овом тренутку у семестру, као што ћете видети у спец псет 7 а, Гооглинг около, читање се на библиотекама, коришћењем ЦСС туђе и ЈаваСцрипт да реши проблеме помоћне на проблем сету сам се свакако охрабрује и то је начин на који Веб се гради ових дана, стајао на раменима других људи тако да заиста могу да се фокусирају на нове и занимљиве проблеме. Али хајде да се сада фокусирати на, опет, логику. То је брзо скретање на естетику само да вам покажем правац у коме можете да идете. Ја ћу да се вратите назад на ружнији један за сада, само зато да нема сметњи са Твитеру ствари, и дозволите ми да иде напред и отворити фросхимс2, која, опет, разликује само у акцији, регистер2.пхп, и хајде да погледамо шта је ефекат овде. Дозволите ми да иде напред и унесите у Давиду. Нећу бити капитен овог пута. Ја ћу рећи мушкарац, Маттхевс, регистарски. Дођавола. Ок, то је шраф на мом делу. Станд би. Регистер2, линија 22, ако празна или-жао. Идемо поново учитате. Ок, након подношења овог обрасца шта се управо десило? Сам откуцао у Давиду, проверена мушкарац, кликнуо Маттхевс, регистарски. Пријављени сте. (Па, не баш.) Ово је очигледно корак даље од штампања садржаја неких променљиве, али шта је овај фајл заправо ради? У регистер2.пхп приметити да имам неку нову шифру. Унутар мог тела тагом имам суштини, ако још гради, већ зато што сам се стапају ово са неким ХТМЛ Морам да улазе и излазе из моде ПХП и назад, па да видимо шта радим. У првом реду овде кажем, ако је то случај да је пост супер глобални је празна за кључ имена, Другим речима, ако корисник није ми вредност за име у форми, онда празан ће вратити тачно, јер је вредност празна. Или-приметити вертикалне шипке-ако род је празна Унутрашњост овог посебног супер Глобал, која је, опет, представља садржај форми, или дом је празан, а онда ћу да иде напред и виче на корисника. Како? Па, приметио сам да кажем, морате обезбедити своје име, пол и спаваоници. Хајде да ствари подстакне ту грешку. Дозволите ми да се вратим у моју форму. Дозволите ми релоад то јасно. А ја ћу само да им дамо Давида, а они не морају да знају где живим. Регистрација. Очигледно треба да им кажем где живим. Морате навести своје име, пол и спаваоници. Иди назад. И могао бих да се вратим кликните на тој форми, али зашто је то тако? Па, у том случају име није празна, али род био, и дом је, па цео овај израз оцењује да истинито, и иако је синтакса је мало нова, опет улазимо ПХП режим, познати ако изјави, али нови део овде је управо то дебело, а ја сам зезнуо се изостављањем а заграде случајно, али обратите пажњу на дебело црево, а то значи иако смо изласку ПХП мод све који следи треба испљунути дословно у прегледачу док не видите друго блок, као што ми овде радимо, у том случају, уместо да пљујеш ово из док не видите ендиф, тако да неки мало нова синтакса који ми омогућава да прелазите ХТМЛ и ПХП. Можемо евентуално очистити ово, али за сада, то је нека врста убедљиве начин грешке провере форму. Сада, ја кажем ти стварно не региструје, јер је очигледно да смо урадили ништа осим података, па хајде да заиста покушамо да урадимо нешто кул. У фросхимс3 једина разлика је што ћу да поднесе регистер3, па ХТМЛ је исти. У регистер3 приметити. Ово је некако секси. На врху сам помоћу захтевају изјаву, па ово је као # инцлуде. Овај пут то није стдио.х или нешто слично. То је ПХП библиотека, и то се зове ПХПМаилер. Како сам знао да обухвати управо ово наводника? Прочитао сам га у документацији, тако да када су ми рекли стави ово на врху датотеке ако желите да користите посебан библиотеку под називом ПХПМаилер који ради оно што каже. Она вам омогућава да шаљете е-маил преко ПХП. Сада идемо помицати доле даље. Обавештење почети сам у ПХП моду цео овај пут, па сад приметио овде након увоза тој библиотеци,  да тако кажем, радим неке разум чекове. Ако је тачно да име није празна и пол није празна-приметити узвичника- и дом није празна, онда је корисник логично попуњени образац, барем довољно. Није ме брига ако су капетан или не. Треба ми само своје име, пол и спаваоници. Ако су испуњени оне оут, тако да ниједна од тих поља су празна ово је нешто ново синтакса. ПХП, као на страну, је објекат оријентисан програмски језик које неки од вас може сетити из оклопних транспортера и слично. За сада, ако је непознато, само знају да користе ову библиотеку морате да напишете линију кода овако користећи нову кључну реч, буквално нова кључна реч зове нова. Али иза тога, имамо неке познате синтаксу. То је стрелица оператер, који је сличан ономе што се користи за Структуре у контексту показивача. За данас ПХП нема показиваче, али знам да је за сада унутар поште променљиве је у суштини нека врста показивача посебном библиотеци да је неко други написао, а ако желите да приступите одређену функционалност унутар те библиотеке радим, као у Ц, користите оператор стрелице, иако то заправо нису показивачи. То је нека врста сопственог верзије ПХП истих. То значи да иду у библиотеку и позове ИсСМТП функцију. СМТП, опозив, од наших ратника на Нету односи на емаил, а то само значи коришћење е-маил сервер за овај Фросх Ћаскање регистрације. Оно домаћин не желим да користим? Па, Харвард, ако Гоогле около, има е-маил сервер зове смтп.фас.харвард.еду. Ако играте заједно код куће или живите на Цомцаст мрежи то би могло бити нешто као смтп.цомцаст.нет. То је потпуно зависи од тога где живите и ко је ваш ИСП. После тога ћу да поставим своје адресе из самовољно да буде јхарвард@цс50.нет. Онда ћу да подесите да се обрати да јхарвард@цс50.нет. Једини начин на који сам знао да су се звали ове функције СетФром и АддАддресс је, опет, прочитао сам документацију. Ово није врста магично позната свим програмерима. Онда сам поставио тему на "упис". И сада ова линија је мало ружна, јер шта значи тачка оператер у ПХП? Свако зна? ЦОНЦАТЕНАТЕ. У Ц је бол у врату да заједно повезати у облику ланца 2 жице. Морате да се баве маллоц или реаллоц или све те ствари само да продужи дужину стринга. У ПХП, у ЈаваСцрипт-у и другим језицима обично можете да урадите са једним карактером. У овом случају, тачка значи узети ово овде жицу и додајте јој ово гудачког. Ох, и узгред, додајте му овај низ, што се дешава да се променљива унутар тог супер глобално. Затим додајте јој нову линију, тако да све ове тачке значи само задржи што већи и већи и већи стринг, и не морамо да бринемо о томе уопште маллоц или слично, у језику као што је овај, а ту је и други начини да се то уради, али ово је једна од најбрже начина да га изнесе. Шта је ово радиш? То је стварање е тело које ће да каже име: Капетан Пол: Дорм: све на одвојеним линијама, а онда на крају, једна линија кода, а ја ћу да игноришете ово за сада. Ако == фалсе само значи да ако нешто крене наопако, али магија се дешава овде. Маил пошаљи значи послати ову поруку. Хајде да видимо шта крајњи резултат је. На дну фајла, приметићете да ће рећи да се заиста регистровани ако добијем тако далеко. Ако, међутим, корисник шрафови се, приметили да смо почели ово ако стање овде, ако није празан и није празна и не испразните шаљемо поруку. Иначе ћемо послати ову линију кода, која ће имати ефекат, као што ћете видети у псет 7, преусмеравања корисника тамо где су дошли, фросхимс3.пхп. Палчеве, у супротном то ће бити највећи разочаравајуће демо данас. Идемо. Дозволите ми да отворим свој инбок-поште за јхарвард у Гмаил. Не е сада. У реду. Сада дозволите ми отвори фросхимс3, која је трећи и последњи пример ћемо погледати овде. Ок, идемо. Нејт, он ће бити капитен, мушко, од, рецимо, Аплеи. Регистрација. Ок, ти си стварно регистрован. Сада, ако сам преко помицати на мој емаил, ох, мој Боже. Управо сам послао е-маил динамички на Вебу. Оставимо на тој белешци. Видео је предстојећа за предавање смо пропустили. Видимо се следеће недеље. [ЦС50.ТВ]