ДАВИД Малан: У реду. То је ЦС50, а ово је крај седмице девет. Прошло је више од вихор последњих неколико дана. А Проблем сет седам, ако си колено дубоко у њега, схваташ да је сасвим битни ново да је унутра. Али, хајде да видимо да ли можемо комад све заједно овде укратко пре тога скрећући искључен у још други правац и виђење где другде можемо да идемо. Дакле до сада, ми смо разговарали о ХТМЛ-у. Разговарали смо о ЦСС. Разговарали смо о ПХП. Почели сте да доживите СКЛ. Данас, ми ћемо разговарати мало о ЈаваСцрипт. Али како све то диспаратан језици уклапају заједно? Тако да смо разговарали прошле недеље о појам има сервер. Дакле, хајде да скренем овај правоугаоник као веб сервер овде. И веб сервер служи сигурно фајлове. А неки од тих фајлова може бити ХТМЛ фајл. Дакле, једна од ствари које веб сервер може испљунути можда фајл који само ћемо извући овако садржи неке ХТМЛ. Дакле, у смислу лаике, шта не ХТМЛ-пусти ти? ПУБЛИКА: Страница изгледа лепо. ДАВИД Малан: У реду, направи страна изгледа лепо, мада мислим да сам доказао то иначе. Дакле, ХТМЛ не дозволити да нокаутирати странице структурно, а она ти омогућава да некако естетски означили странице, означили статицни садржај, тако да може затим га видите са веб бровсер. Али то је кључ. То је статички садржај. Ти га напишете, ви га сачувате, а онда га брод. И веб сервер онда служи је до своје посетиоце. Али ми стилизовати ствари користећи различите језик у потпуности. Почели смо да користимо стил атрибут на одређеним ознакама. И стил атрибут нам сет ствари као што су величина фонта и боје. И вероватно сте почели да открије, или ви ускоро ће за финале пројекти потенцијално, још други особине које можете користити у ЦСС. И тако у смислу лаике, шта стварно онда се ЦСС уради? То су само примери њихове. Шта то да ти дозволим ХТМЛ не изгледа да од онога Видели смо до сада? ПУБЛИКА: Дефинисање стилова сами. ДАВИД Малан: Дефинисање стилова сами. Дакле, дефинисати ствари као класе као ти Можда сте наишли, или јединствено идентификује чворове у документу тако да можете да их стилизовати. Али конкретно, ја бих рекао да је ЦСС заиста вам омогућава да се ствари ласт миле и омогућава вам да наведете много прецизније естетика, док ХТМЛ највећим делом омогућава Ви структурирају своје странице. И иако постоје неке подразумеване, као што смо видели ознаку за тарифног броја ознака, који грубо говорећи направио ствари велика и смела. То је прилично генерички дефиниција од тага - велики и храбар. Шта величина фонта је то? Које боје је то? Како је то смео? И ЦСС вам омогућава више фино туне такве ствари. Као и изглед, као неки од које сте видели. И искрено, ЦСС је мало од непријатног језика. То је веома моћан у који можете направити буквално сваки сајт који сте да види на интернету данас са њим, али то је врста бола у врату. А неки од вас су лупао главу против зидова већ само да се ураде нешто глупо попут центра менија на Проблем сет седам ако сте стечен на Већ то поента. Али схватите, те ствари се лакше током времена. Можете почети приметити обрасце. И опет, Гоогле ће бити твој пријатељ за различите начине на које можете да реше овакве проблеме. И ја усудио рећи са ЦСС, ХТМЛ и више генерално, можете да решите проблеме у много више начина, од којих сви могу врло добро бити исправан, него сте могли у нешто попут Ц, чак Сада ПХП, или ЈаваСцрипт. Постоји само много различитих начина да се поротници ствари. Али ово почело да се нереду, рекли смо. Само мало измешана свој ХТМЛ и Ваш ЦСС код стилу атрибут био мало аљкаво. И тако смо уместо тога, рекао је, на неки начин апстрактно говорећи, да ли треба да барем почињу да фактор од вашег ЦСС вероватно. Није твој стил атрибуте, али барем користите стил ознаку унутра шта део веб страници? ПУБЛИКА: Глава. ДАВИД Малан: У главу. До сада, само смо имали титулу горе тамо, али такође можете додати стил означите, а можете грубо ставите ЦСС говорећи ка врху странице. Али онда смо узели ствари један корак даље и ми смо фактор да се више у посебном фајлу. И тако ова два фајла су некако сада повезан. И заиста је било ознака да је то урадио. А шта је био један од кровним Мотивација за факторинг нашу ЦСС све више? ПУБЛИКА: поновног. ДАВИД Малан: поновног. Зар не? Можда сте видели у Тел-сет седам већ да много страница, куповина страна, продаја страна, Портфолио страна, вероватно структуиран нешто слично. Постоји ЦС50 финансије логотип на врху осим ако сте одлучили да га промени. Ту је подножје у дну странице. И ЦСС омогућава онда да га факторишу га у посебан фајл, тако да ако желите да промените нешто глобално преко целог сајта, можете заиста само га промените на једном месту. Али постоји цена коју плаћате потенцијално тиме што се урачуна ЦСС из мог ХТМЛ датотеку у посебан филе је референцирање са ознака, који смо видели у понедељак. Шта може бити мана од овога? Размишљање назад пре недељу дана када смо говори о ХТТП и ТЦП / ИП и како Интернет функционише. Нешто овде? ПУБЛИКА: Потребно више времена. ДАВИД Малан: Потребно више времена. Зашто? ПУБЛИКА: [ИНАУДИБЛЕ]. ДАВИД Малан: Да. Тако да вероватно потребно мало више времена. Јер један, ЦСС је очигледно не у истом фајлу. Дакле, сада морате да не би један, али два захтева. И сваки од тих захтева, као што смо видели у Цхроме у тзв инспектора, и ми смо гледали картици мреже, сваки од тих фајлова захтева један ХТТП Захтев, који смо видели траје одређена количина времена. Сада, можда то није много. Можда је само 20 милисекунди. Можда је 200 милисекунди. Али размислите странице као што су Фацебоок, или ЦНН, или Гоогле, који су много већи од примера које смо погледао до сада. Те странице можда имају десетине фајлова, од којих сваки може захтевати преузимање датотеке. Дакле, ствари могу потенцијално почети да успори. А посебно ових дана када смо сви имају мобилне телефоне у нашим џеповима и спорије интернет везе, имајући у сачекајте још неколико милисекунди, неколико више милисекунди за додатне фајлови заправо може бити спор. Кашњење је реч која описује врста чекања да имате да вам доживљавају када чека неки податак. Али ту је наопако. Дакле, то није све врста - то је заправо помало клацкалице овде. Лоша сада, али шта претраживачи могу да ураде ако су паметни, како би се избегло има да тражи исти стилес.цсс филе опет може бити да уради шта? Кеса је. Тако кеширање - Ц-А-Ц-Х-Е - генерално овде значи само да сачувате филе сте тражили први пут, и затим проверите кеш за то. Проверите да сте некако контејнера за складиштење, а ако сте већ копија стилес.цсс, чак и ако неки други страна у п-сет, или било који сајт, тражи га поново, само да би се корисник те исте сачувана копија. Не трудите се да тражи. Лоша тамо, мада, као што неки од вас су се саплео у п-сета. Ако направите промене на серверу и Ви се вратите на претраживача и ви релоад, понекад браузер ти услугу и не смета поново преузима ваш стилес.цсс фајл зато, хајде, шта су шансе да ови стилови који Фацебоок користи ће се променити из сата у сат или из дана у дан? То је прилично низак. Они се могу променити током времена, али не из минута у минут, или по сату. Дакле трик, само за вашу информацију када радите веб развој, често држите схифт тастер на пример, а затим кликните на дугме релоад у вашем претраживачу, и да ће обично кажем прегледача релоад све, чак и ако већ имате то у кешу. Па опет, позитивних и мана, али све од њих на крају дизајн одлуке. Тако сада, нисмо само завршити причу овде. Ако ја сада вратим назад и назад и и назад, почели смо да представимо не само ХТМЛ, али ПХП. Дакле, у смислу лаике, шта нема ПХП-нам уради? ПУБЛИКА: [ИНАУДИБЛЕ]. ДАВИД Малан: Шта је то? ПУБЛИКА: Увести логику у коду. ДАВИД Малан: Да, увести логика у вашем коду. Дакле, то је истина програмски језик са петље, и променљиве, и функције, и услови, и све ствари које смо тразили пут назад кад од нуле. И ПХП, видели смо, може да се користи или у командној линији - то не мора да има никакве везе са Веба, чак иако је то стварно порекло и оно што тежи да буде добар у и доприносе - али можете да користите ПХП само по природи чињенице да има отисак () функција, и принтф () функцију, или ехо () функцију. Има гомиле начина на које може да штампа текст са ПХП. Дакле, можете да користите овај програм језик за излаз тачно шта смо причали пре. Можете динамички могу генерисати Ваш ХТМЛ. Можда није све. Можда сте хард код ствари, као што су заглавље, подножје и, и логотип, и свој стил листова, и све то. Али за тако нешто п-сет седам, где сте манипулисање акцијама и показујући портфолио корисника, који је ће се динамички мењати, можете да сигурно користити ПХП и логику она даје ви као програмски језик за излаз динамички подскупови странице. Дакле, када говоримо о динамичких сајтова, или веб програмирање, то је шта ви заправо говорите. Коришћење језика као што су ПХП, или ствари зове Питхон, Руби или, или Јава, или још други језици, да се упит базу података често, или други сервер, и онда динамички испљунути ХТМЛ. Сада крајњи резултат, као страну, је да ХТМЛ већине сајтова, укључујући и ваш п-сет седам, вероватно ће бити велики неред ако погледате на извору код у претраживачу. То није велика ствар. У овом тренутку, када нам је стало стил, ми бринемо о ствари које пишете. Нећемо брига о стварима да је оно што је ваш код излаза. Дакле, не брините о увлачењу овде ако је ПХП тако је заправо оутпуттинг ствари. Уосталом, прегледач неће брига, и људски неће бити у потрази на извору у сваком случају. Ми особље, на пример, би се гледа на вашем ПХП. Дакле, дозволите ми да сада брзо пример зашто још ово може бити корисно. Па искрено, ја не могу да се сетим последњи пут сам користио Ц за решавање проблема у стварни свет. Вероватно је на постдипломским студијама, када Морао сам да користим језик који био прилично низак ниво и дао ми прилика да се уради нешто веома висок обављање заиста сачували што више ЦПУ циклуса као што сам могао, у великој мери јер сам био користећи огромне скупове података, и сваки процесор циклус рачунати. И искрено, чак и у стварима као што су телефони ових дана и друге уређаје где не баш имати толико меморије и не баш имати као много процесор, користећи брже језика је још увек привлачан. Али у стварном свету, када сте само Желим да баци неки програм заједно у анализирати неке податке, или сте прикупљају цела гомила регистрације за нека група студената и желите да веома брзо аутоматизовати слање е-поште један по један на свакога од оних регистраната, идете да се постигне за језик виши ниво од Ц тако да говори. Нешто као ПХП Питхон или Руби, или, или а пола туцета других које постоје ових дана. Али оне три су вероватно сада највише у тренду. И шта то значи да можете да отворите се текст едитору као гедит или већина нешто друго и онда само старт писање кода без потребе да бринете о састављању, без потребе да се заиста бринете о управљање меморијом, имајући у виду да, иако мало аљкавост ће на крају вратити да те уједе ако скуп података добија већи или проблема добија велики. Али шта то значи за нам је следеће. Пусти ме само напред и покрените спеллер Проблем са шест сет. Дакле, ово је моја имплементација трие-басед да сам користио на велико одбор где сам не обавља тако добро. Вратићемо се у року од недељу дана и поново они који су на крају на врху велика табла на нашем последњем предавању. Али за сада, дозволите ми да само напред и само водим решење у тексту, а ми ћемо урадити Библе, и идемо. Дакле, то су све наводно погрешно написане речи од Кинг Јамес Библе. И моја је имплементација пола секунде укупно. Дакле, није лоше на ово Посебно рачунар. Али мислим о томе колико код Морао сам да пишем. Размислите колико сте код морала да пишем. Размислите колико сати сте провели у Д-сала или ваш студентски дом или где год заправо кодирања до тог решења. Па, ако сам заправо имају виши ниво језик као ПХП, обратите пажњу шта ја могу да урадим овде. Прво, претпоставимо да је уместо тога Ваша дистрибуција код. Ово је фајл који се зове буквар. То је доступан као део данашње дистрибуција код. И ја ћу да махнем руком у већини од детаља, али то је заправо занимљив пример како Ви можда лука језик као Ц преко ПХП. Ја буквално отворила две текстуалне прозора, један са мојим Ц верзијом спеллер.ц, а ја тек почела превођење га у мојој главе до ПХП и куцање га користите најближи еквивалент функције. Дакле, неке од ових ствари су другачије. Видели смо последњи пут да ПХП не користи укључити у сасвим исти начин. Користи захтевају типично, иако укључују не постоји. Дефинисати је мало другачији од # Дефине у Ц, али то је како направити константу. $ Аргц испада постоји у ПХП, па смо видели да је пре. Ово су само варијабле, све који почињу са доларских знакова. Подсетимо то су само гомила од плута поена. Дакле скратим причу, добродошли сте да флип кроз ово ако радознали, ово је скоро линија-за-лине конверзије Ц верзија спеллер.ц у ПХП. И можете да урадите ово опет за пола туцета других језика. Али оно што је занимљиво је то. Или шта је искрено обесхрабрујуће је то. Пусти ме само напред и укуцајте о дицтионари.пхп, и тврде да сам ићи напред и поново спроведе Проблем сет шест овде. Дакле, хајде да прво предложити да се у овом фајл, који ће се реализовати у ПХП, па пусти ме да отворим ознаке такве. Дозволите ми да себи дају глобални променљива, $ величина добија нула. И ја ћу да дам ја хасх табела. Ја ћу користити хеш табелу за ову ствар. Како да прогласи хасх табеле у ПХП? Урађено. У реду. Дакле, отворена заграда близу конзола представља шта у ПХП-у, као што смо видели? Низ, али низ који би могао бити асоцијативни низ. Асоцијативни низ је структура података која повезује кључеве са вредностима. Сада у најједноставнији бројчано индексиран низ, те тастери су шта? Нула, један, два, три, зар не? Стара школа ствари назад у Ц, али се може такође бити жице као ФОО, и бар, или Маквелл, или било што ниска. Тако да могу да искористе да у само тренутак. Пусти ме само напред и прогласи функција као - хајде да урадимо оптерећење (прво). Дакле, функција оптерећење (). А ПХП је мало другачија у то Ви буквално куцате функцију, али ви не откуцајте повратни тип. Идем да иде напред и да кажу оптерећење () функција треба да узме у Аргумент $ речник, само као Ц верзија урадио. Ја то радим из меморије. И ја предлажем да сам да уради ово. Ја једноставно ћу да урадим фореацх. Идем да позовем функцију која се зове филе (), пролази у име које филе, која је променљива $ $ Речник као реч. А онда унутар петље за мој овде, ја сам ићи напред и складишти у мојој $ $ Табела која реч добија тачно. Урађено. Ох, чекај. Урађено. У реду. То је оптерећење () функција кажу у ПХП. Сада, зашто то ради? И ја сам некако вара овде. Дакле, један, фореацх смо видели кратко последњи пут. То само значи да можете поновити више низ без малтретирања са И и н и плус плус, и све то. Речник је наравно име датотеке, нешто као велика или мала, два речници смо користили у последње време. Фајл је функција која отвара текст фајл, то чита у линију по линију, и Руке си се вратио велики низ, сваки од елемената чији је линија из тог фајла. Дакле, то је комбинација фопен, и фреад, и док петља, и фцлосе, и све то. Коначно, као реч само значи да је променљива ћу имати приступ на сваком итерацији у овој петљи. Дакле укратко, ово је један путнички авион овде значи отворити датотеку чије име је у речник, променљива, поновити више то ред по ред, и сваки пут када се линија, продавница у променљивом зове речи, а затим урадите нешто са речју. Шта желим да урадим? Желим да ставим у моју реч хасх табеле. Па, ја могу ставити нешто у мојој хасх табелу као у Ц користећи угласте заграде. То је назив за моју хасх табеле. Идем у индексу у тај хашиш сто на овој локацији. Дакле, не изједначи нулу, не изједначи један. Брацкет цитат завршен цитат нешто, шта год да је реч. И баш као што ви можда имате у вашем хасх радни сто трие, само продавница ефикасно Булова, имплицитно или експлицитно. Урађено. Ја складиштење вредност истина. Сада постоји пар ствари Ја секу кривине овде. Технички, ту ће бити нервира нова линија, / н, на крају свака од ових речи. Тако би требало вероватно звати ПХП функцију зове котлет (), који ће буквално цхоп то. И ја заправо треба да урадите једну другу ствар. Вероватно би требало да повећате величину на сваки итерације, па сам праћење глобално шта је то. И искрено, и то је један од глупљи аспекти ПХП, ако си користећи глобалну променљиву, морате да експлицитно рећи да сте. Зато ћу да заправо куцате у глобалном $ Величина, глобална $ сто, а сада моја функција је комплетан. Дакле, не баш тако једноставно као раније, али Вероватно је мање времена него што је Ц верзија, можда? У реду. Тако да сада урадимо чек () функцију. Да видимо да ли ово бар узео сати на крају да нам је у Ц. Со пусти ме само напред и прогласи проверити као функцију. Узима у аргумента речи, који је ће доћи из спеллер. И ја ћу само да провери да ли Следећи променљива иссет, табела носач стртоловер од речи - хајде да избалансира све моје заграде - онда се вратите тачно. Друго - то је заиста тешко део овог програма. Иначе, ретурн фалсе. Урађено. То је провера (). Сада, зашто то ради? Па, један прошао сам у једном речју, која је ниска. Два, ја проверавам унутар хасх сто, који се зове $ табела. Ја га приморава да се мала слова позивом функција прилично сличан толовер () у Ц, али то не целу реч, не један карактер. А ако је то постављено, другим речима постоји је вредност постављена, другим речима, ако је то истина, онда да, ово је реч. Зато што сам га ставио тамо са оптерећењем (). А ако не, ја ћу да се вратим лажна. Сада су остали лако. Величина Функција (), како да то урадим? Ја у суштини радим вратити $ величину. Али технички треба да радим ове досадне ствари. А заправо се чује, ја сам за сечење један угао превише. Стварно треба да урадите глобалну $ сто. Али то што је рекао, истовари). Унлоад () је невероватна. Функција истовар (). Како желим да спроведе истовари ()? Урађено. У реду. Дакле истовари (), управљање меморијом је потпуно збринути за вас у нешто попут ПХП и много језика вишег нивоа. Дакле, ово је невероватно. Као зашто дођавола смо провели прошлост осам недеља на плус Ц писања очигледно заиста споро, стварно време конзумирају проблеми са десетинама сати од раде под нашим појасевима? Па, за једну ствар, ово може да ради Казна за мале програме. То је свакако убрзало мој Развој време. Али, хајде да видимо шта се дешава у стварном свету. Пусти ме у овом директоријуму у прозору терминала. Има буквар. И приметите како у страну, а ви можда су наишли на проблем то сет шест или седам сет проблема. Не морате да стриктно енд ПХП фајлове са. пхп. Ако сте ставили линију као тај први у самом врху, то је посебна линија синтаксе која у суштини значи наћи Програм се зове ПХП и користити га за интерпретирају ову датотеку. Тако да сада нико не зна да Ја водим ПХП програм. Могу га покренути баш као да су нешто састављен у Ц. Али овде је ствар. Заправо, хајде да опет урадимо ово. Дропбок/псет6 /. Има буквар. Ок, 0,44 секунди. Он је добио брже овај пут. Сада идемо у ПХП верзији. Фино. Али само замислите колико времена Спасао сам у радног времена. У реду. Дакле 3.59 секунди, што заправо не звучи ни тачна. Али то је зато што скратим причу, када сте штампање огроман ствари на екран, да Сама успорава. Оно што је заиста узео процесор у Апарат је био 3.59 секунди, у Насупрот Ц, који је 0,44 секунде недавно. То је заиста ред магнитуда другачије. Па где је то цена долази? Зашто је тако много спорији? Зашто ПХП обавља тако лоше? Данијела? ПУБЛИКА: Нисте баш користите хеш табелу. ДАВИД Малан: Нисам стварно користите хеш табелу. Тако сам некако урадио. Дакле, то је асоцијативни низ. Највероватније, ако су људи у ПХП су стварно паметан, они користе испод хауба стварна хасх табела имплементиран у нешто попут Ц или Ц + +. Али. Да. ПУБЛИКА: [ИНАУДИБЛЕ]. ДАВИД Малан: Да. Дакле, свака од функција сам сада написао - заправо, можете да кажете да још једном мало гласније? ПУБЛИКА: Свака од функција које сте укључили има много више пун капацитет од - ДАВИД Малан: Дакле, то је истина. Има много више изнад главе да смо Не видим стварно фокусирајући се само на дицтионари.пхп, који сам управо написао. Насупрот томе, постоји читав преводилац иде у позадини. Заиста, када сам водио овај програм, он није покренут компајлиране нула и јединица дизајниран за мој Интел процесора. Уместо тога, она је покренут линију по линију ПХП код који изгледа исто као што смо га откуцали. И тако сваки пут када користите тумачи језик, ви заправо платити ову цену. То ће потрајати неко време да прочитате датотека одозго надоле, налево ка десно, а затим изврши сваки линија опет и опет. Сада у стварности, посебно на Интернету, можете заправо убрзати овај процес по кеширање резултата ПХП код се тумачи. И то има смисла на Интернету, јер ако нисте један корисник као ми овде, али 1.000 или 10.000 корисника, а затим можда први пут фајл приступљено је споро, али након тога то је много брже. Али и ово, опет, је компромис. А за тако нешто истраживачког података сет, или чак нешто као велики ово, ваши корисници ће на крају почети да осећају да успоравање. Дакле укратко, тумачи језици су веома у моди, веома популаран, и искрено су вероватно језике које треба да достигне за решавање проблема када након ЦС50. Али схватите колико сте стварно узимајући здраво за готово испод хаубе заиста ти протеклих неколико недеља у хасх табеле, и дрвеће, и покушава, који се користе на крају да се заиста имплементирати ствари као отворену конзолу, средња заграда, који ми сада можемо захвално узети здраво за готово. Дакле, хајде да погледамо сада у том контексту веб. И ја поменуо последњи пут да је гомила суперглобалс у ПХП који нису баш релевантни у командној линији. Они су више релевантна у контексту употребе ПХП у веб контексту. Дакле, ради на ПХП веб сервера у циљу генерисати такве ствари ХТМЛ. И ми баци поглед на $ _ГЕТ и $ _ПОСТ, и то је место где се аутоматски корисници ' улаз завршава једноставно ако поднесе формирају у фајл који се завршава у пхп на Интернету. сервера као апарата. Али, хајде да укратко осврнемо на $ _ЦООКИЕ И $ _СЕССИОН. У смислу лаике, шта је колачић као ви га разумети у контексту користећи интернет? ПУБЛИКА: Филе на рачунару. ДАВИД Малан: Да. То је фајл на рачунару корисника засадио год сајт вам се деси да посетите. Дакле, када одете на Фацебоок-у, када идете да банкофамерица.цом, када идете на гоогле.цом, када идете на скоро сваки вебсите на свету ових дана, укључујући цс50.нет, колачић је засађено на вашем рачунару, који је или вредност ускладиштене у РАМ у вашем рачунар у меморији вашег претраживача, или понекад заиста датотеку ускладиштену на вашем хард диску. И шта се обично чува у том фајлу није ваше корисничко име, не твој лозинка, обично није нешто осетљив осим аутора није тако добро са њихове безбедности, већ то је велики јединствени идентификатор међу друге ствари. То је велики број случајних засађено на свом рачунар али можете мислити као врста виртуелни печат рука као од клуб или неки забавни парк који омогућава особље, власници који сервис, да се сетите ко сте. Дакле, ако велики број случајних је као 12345678, мада то је очигледно Не превише случајан, мислите о томе као рука печат да када посетите фацебоок.цом по први пут, они су печат тај број на руци. А онда зато што говорите ХТТП, ви као прегледач, и зато на Фацебоок очигледно говори исто као веб сервер, ХТТП протокол каже да било када касније посетити фацебоок.цом, без обзира да ли је то други касније, сат касније, чак и сутрадан, све док нисте експлицитно одјављени, који ефективно је као прање руку. ХТТП каже да би требало да представи свој рука печат сваки пут ти вратите на том сајту. Шта онда се они на Фацебоок је погледајте ту руку печатом и они кажу, ох, 123456789. Ја не знам на први поглед да је то Дејвид је Малан у Кембриџу, Масачусетс, али они могу да провере своје база података и кажу, ох, особа на чијој рачунарске засадили смо 123456789 Дејвид је Малан из Кембриџа, Масачусетс. Покажимо да корисник онда његов профил страна или његов Невс Феед. Али ту постоји проблем, ако то је како интернет функционише заиста. Хајде да погледамо брз пример. Хајде да идемо у ствари да кажем фацебоок.цом. Али пре него што смо могли да одемо тамо, нека мене само напред и отвори Цхроме је Инспектор овде доле. Дозволите ми да погледам на картици мреже. А сада идемо напред и укуцајте у хттпс://фацебоок.цом. И ја то радим тако да не видимо све те преусмеравања и отпада време гледајући кроз оне. Пусти ме ударио ентер. У реду. Ми видимо гомилу захтева. Ту долази на Фацебоок. Постоји читава гомила фајлова. И овде, по мом помен латенција последњи пут, то је много ХТТП захтева. Али прва је вероватно најинтересантнији. Па хајде да дођите овде доле, и Ја ћу зумирати у секунди. Ово ће бити нека врста неред, али хајде да видимо. Фацебоок је нам шаље Цела гомила ствари. Али чекај, занимљиво. Они садње не један, него четири ханд марке на руци овде. Сет-Цоокие, Сет-Цоокие, сет-Цоокие, сет-цоокие. И постоји неколико могућности овде. Сви они поменути неке врста истека. И изгледа да се нада на Фацебоок да ме се до 2015. Тако да је вероватно време којим Морам да се одјавите, или они само цу аутоматски претпоставити сам не враћа. Дакле, то је заправо пристојна количина времена. А ту су и неки други ствари овде дешава. Овај колачић изгледа да насилно избрисао рекавши да је истекао 1970 пре колачићи постојала. Дакле, претраживач је управо дешава претпоставити реду, то је као пере руке печат. Али сада када је мој прегледач прави накнадни захтев - пусти ме само напред и урадите поново и поново. Сада дозволите ми дођите назад Захтев врху и иди доле овде, затражите заглавља. Обратите пажњу на ово. Дакле, сада сам под не заглавља одговора, али приметио пише заглавља захтева. И приметите да је мој прегледач као део његов захтев након удара релоад има послао најмање следеће информације. Не сет-колачић, али колачић. Дакле, ово је линија, ХТТП заглавље тако да говорим, где мој прегледач је врста од без мог знања је представљање моја рука за инспекцију Фацебоока. Дакле, ови колачићи могу бити користи онда за шта? Да се ​​сетите ко сте, или се како много пута сте били тамо, или стварно ништа. Дакле, овде је цоунтер.пхп. И дозволите ми да зумирате на фонту. И сваки пут сам поново ову страницу, обавештење то је сећајући колико пута Био сам тамо. Па, то није све што импресивно. Хајде само да затворим ту картицу, а сада да се вратимо на хттп://лоцалхост/цоунтер.пхп. Ох, то је занимљиво. То још увек није заборављен, чак иако сам затворио картицу. И искрено, ако затворите прегледач, ако спроводи на прави начин, ја ипак могао да се сети да је овај корисник је ко је он или она је први пут, и само једном да одем у мени Цхроме, који овде је овде, и идите на Историја, и кликните на Обриши податке прегледања, као што неки од вас могу имати у прошлости, само тада ће ваши колачићи заправо бити избрисана током Интернету развој. Дакле, ако идемо - хајде да изблиза овде гедит. И ако ми сада идемо на ову датотеку. Пусти ме у наше вхостс / лоцалхост / јавно, и пусти ме да радим цоунтер.пхп. Обратите пажњу да је ово прилично једноставан програм. То је прилично једноставан сајт. Дакле, врх датотеке је само коментара. Али овде је нова линија које могу су већ видели у п-сет седам, сессион_старт (). То је линија ПХП кода који у суштини говори веб сервер, чине сигурни да искорени руке и направи Обавезно проверите ручне печате. То је све што ради линија, и то ради све тог процеса за нас. Онда приметио сам имам две гране овде. Ако бројач кључ унутар ове Посебан глобална променљива зове $ _СЕССИОН Је сет - другим речима, има ли тамо неких вредности - хајде да и складишти га у локалним променљива зове $ бројач. Друго, хајде да доделите $ цоунтер Подразумевана вредност 0. Сада овде је један аспект ПХП који је и благослов и проклетство. ПХП је мало аљкав. Дакле, док је у Ц, што би обим цоунтер су или овде или овде? То би била ограничена тим заграда. Погодите шта? У ПХП-у, постоји чак и изван оних цурли протезе, овде, и овде, и овде, и овде, и чак доле. Дакле, ја кажем да је ово благослов у смислу да не морате да мислите као тешко као што смо урадили пре неколико недеља. Али то је такође мало клетве у који без обзира где се користи променљиву у ПХП, барем у програму као што је овај, то је глобално доступан за боље или на горе. Дакле, морате имати на уму да је сада Ваши променљиве не може бити дефинисана. Можда сте их дефинисали другде. Али шта ћу ја да урадим на крају? Идем да сачувате унутар које глобална променљива као вредност бројач унети резултат ради бројач плус 1. Дакле, ово је само аритметика да не Инкрементација тог шалтеру. И чињеница да сам складиштење да вредност врати овде је значи суштини ажурира базу података за запамтите да корисник 123456789 је овде два пута. И када сам то поново следећи пут сам учитајте страницу, то ће проверити моја рука печат и рећи, ох, корисник 123456789 има сада био овде три пута. И шта ПХП и сличним језицима раде за нас је да се откривањем како и где и колико дуго за складиштење вредности у овој посебној суперглобалних. И то суперглобалних следећи пут посетите страница је врста магично унапред попуњени, испуњен са вредностима које да ли је било последњи пут посетили, да ли је то било пре другог, недеља пре, или у 2013, а сада говоримо око 2015. ПХП и веб сервер брине од свега тога за вас. ПУБЛИКА: [ИНАУДИБЛЕ]. ДАВИД Малан: Променљиве у ПХП су у суштини увек глобална осим тебе прогласи их унутар функције, а онда су се локални Функција једини. Али не зато што сам написао било функције, они су сада практично Глобална током целог мог фајл овде. Публика: Да ли постоји начин да их локално? Малан ДАВИД: Да ли постоји начин да их локално? Само паковање их у функцијама. Који у најновијој верзији ПХП, можете да урадите са Анонимоус функција. Али више о томе у контекст ЈаваСцрипт. Али, кратак одговор је не. Дужи одговор је да. Лепо. Добро квиз питање. У реду. Па на крају, сама страница заправо прилично једноставна. Обратите пажњу да сам једном изашли ПХП режим, сећам да све ове ствари доле испод је само ће добити пљување сирово се на претраживачу. Што је у реду, јер ја желим да пошаљете корисник неке ХТМЛ, али ја не желим динамички ажурира тај ХТМЛ. А један од начина да се то уради је да сортирате врло брзо пасти назад у ПХП мод, користите отворена заграда Знак питања знак једнакости, а затим излаз вредност на шалтеру. Или ако то изгледа мало загонетан, ово знак једнакости је заправо само нека синтаксичка шећера за то иф ($ бројач). Али, искрено, то је само мало ружно и мало непријатно да куцате. Дакле, ПХП веома лепо нуди ову функцију где само могу да кажем више језгровито на исти начин. Дакле, шта се дешава испод хауба? Хајде брзо погледати на мрежи Картица за цоунтер.пхп овде. И дозволите ми да само напред и први хајде да обришете колачиће. Хајде да Обриши податке од почетак времена. Сада да се вратимо овамо. Сада ћемо поново учитате страницу. И вратио сам на нули. Зато што је моја рука марка је била опрана, Сада добити нови колачић. Заиста ако ја погледајте мреже картици и погледајте одговор заглавља, приметити да апарат ме шаље колачић чије име је донекле произвољно, али некако разумно, тект. И то ме шаље ово заиста Рандом велики број. То није велики број. То није баш хексадецимални. То је нека врста алфанумерички ниски, али вероватно је то случајно. И то је рука печат тако да говоре да ја говорим. У међувремену, ако кликнем на дугме, а затим поново погледај ову другу линију за мој други захтев, приметити да је мој захтев заглавља садрже тект једнако ово, Не Сет-Цоокие, али само колачић. И то је мој бровсер презентација моје руке печата. Дакле, сада као теасер, а причаћемо више о томе у недељу дана или тако, али на који начин се то ти направити рањива, ваш Фацебоок налог рањиви, што су и други рачуни рањив? ПУБЛИКА: Ако неко има свој колачић. Малан ДАВИД: Да, да ли је неко има свој колачић. Ја заиста мислим, баш као неки од вас Можда су покушали у клубу као или Забавни парк, ако покушате нешто овако да копирате печат, иако назад на руку друге особе, а онда је он или она то представља као своје, ако је заиста изгледа идентични, 123456789, онда интернет Сервер је очигледно само ће Верујем да то што је корисник. И то је заиста фундаментално претња сваки пут када користите колачиће јер ако неко само покуша да искористи тако да Говорим колачићем, фигуре, који је, било је заиста копирањем гледајући у ваш рачунар и биће као, у реду. Давидова Цоокие је ЈЈ3ЈИК и тако даље, а онда су довољно паметни да знају како да некако ручно да пошаљете Колачић од претраживача или из Програм они пишу, они могу потпуно пријавите се на сајту као ти. То није тако тешко да се претварам да неко други осим ако поново П-СЕТ два, који је увео шта? ПУБЛИКА: Криптографија. ДАВИД Малан: Мало Мало криптографије. Једноставно криптографија, барем у Стандард Едитион, али крипто ипак. мање. Тако испада ако шифрујете све ова заглавља користе нешто што Можда сада знају више фамилијарно као ССЛ, Сецуре Соцкет Лаиер, или хттпс:// УРЛ адресе, онда све ове ствари које смо били гледајући заправо шифрована, што значи да је као ти Не могу да прочитам печат руку. Само фацебоок.цом може, или гоогле.цом, или у овом случају, апарат може прочитајте тај печат руке. Трагично је међутим, и опет, ово је сувише одговарајуће са НСА стварима у последње време, чак и ССЛ је ломљива. И то је заправо није тако тешко да чак и црацк ту енкрипцију. Не толико због пуцања енкрипцију, али, преваром претраживач на дешифровање подаци прерано. Али опет, ми ћемо вас задиркују са да је пре дуго. За сада, само плаши. То је трагично врста истина. У реду. Дакле, где се то сад нас остави? Па, хајде да урадимо ово. Идемо напред и да брзо теасер пре него што направимо паузу. И мислим да ћемо развлачити мало дуже данас, али ми ћемо да зароне у нешто потпуно ново и секси, који ће подстаћи ваш апетит за још више. Тако да је задиркивање. Дакле СКЛ, почели смо говорили о икад тако кратко последњи пут. Стварно ћете добити ваше руке прљаве са неким од тога у п-сет седам. И у смислу лаике, шта СКЛ - С-П-Л - учиним за вас? Шта је то? Да. ПУБЛИКА: Да те приступне податке. ДАВИД Малан: Да. То ћемо вам приступ подацима у бази података. Струцтуред Куери Лангуаге. И то је у суштини програмски језик. Постоје особине томе да нећемо ни користити у класи. Али можете ефикасно дефинисати функције. Зову се чувају процедуре у СКЛ. Али, ми ћемо га задржати прилично једноставан и само користити га за неке основне операције као одабира података, унос података, ажурирање података, и брисање података. И ти стварно мислиш да базе података, као СКЛ базе података, као и само је Мицрософт Екцел. Зато СКЛ односи на релационој база података, где однос само значи табеле. Редова и колона. Дакле, све што можете ставити у табелу овако или Гоогле Доцс, можете ставити у СКЛ базу података изјављујући табелу. Сада, како се заправо приступите та информација? Па, са командама или упита као што је овај. СЕЛЕЦТ, ИНСЕРТ, УПДАТЕ, ДЕЛЕТЕ и. А за највећи део, то су Четири само састојци ћете морати да уради нешто сасвим снажно у проблему сет седам. Сада назад у дан, ви заправо би интеракцију са базом података у црно и бело прозор терминала на трепће брз овако. И база података понестаје на Апарат се зове МиСКЛ, који је бесплатан и опен соурце базе података. Ако вам Гоогле и прочитати википедиа чланак, ви ћете знати да је име мало транзиције за неке верзије Линука. Марија база података је заправо трпезе тако да говори о МиСКЛ. Да скратимо причу, Орацле је купио МиСКЛ. Орацле је велика компанија. Људи су забринути да би више не остају прилично као отвореног кода, тако да је ово само копија МиСКЛ то је још слободан, још отвореног кода, и инсталиран у Федора Линук по дефаулту. Али, то је врста бола у врат да се упознају са база података на овај начин. Тако смо укључити у ЦС50 апарата бесплатан алат отвореног кода под називом пхпМиАдмин. Само случајност да то је писан у ПХП. Нема фундаменталног потребно за ПХП овде. Али ово је само средство веб засновани да ми скинути бесплатно, инсталирана у апарат, који нам омогућава да имамо графички кориснички интерфејс са којима да истражи п-сет седам базу података са који се креирају нове базе података, кажу за твоје коначног пројекта ако бих као, и на крају стварају динамичких сајтова попут ЦС50 финансија које вам омогућавају да упит података и ажурирање података динамички. Нећеш да морају да користе само једноставан текст фајл или ЦСВ. Ви у ствари можете да користите паметну базу података Програм тако да можете извршити више софистицирани упити него само читање кроз све линеарно. Тако на пример, то је оно дајемо ви из кутије за п-сет седам. Ово је табела са наизглед најмање три колоне, од којих је једна корисничко име, један од којих је тараба, и од којих је други ИД. Али занимљива ствар, и само на докучите једну мисао овде, корисничко име је вероватно већ јединствена, зар не? Мислим, већина било који сајт, ако имате корисничко име, тамо не може бити два Цаесарс. Ту не може бити два Маланс. Ту не може бити два јхарвардс. Његова јединствена. У супротном, они не знају који јхарвард је заправо. Дакле, шта може бити мотивација за исто има трећу колону са леве стране тамо се зове ИД, који изгледа као број који је јединствен слично? Она се осећа мало редундантне да ми на први поглед. Зашто би то могло да буде убедљив да имају не само јединствена корисничка имена, али и јединствене бројеве? ПУБЛИКА: Они су могли имати иста лозинка. ДАВИД Малан: Људи могу имати иста лозинка, наравно. То би могло да се деси апсолутно. Али, ако они имају овај јединствено корисничко име, ја тврде да то не баш ствар, јер ако они укуцајте у своје корисничко име, само морам да проверим своје лозинка, њихов тараба истих. Зашто још? ПУБЛИКА: Брже претраживање. ДАВИД Малан: Брже претраживање. Зашто? ПУБЛИКА: ИД је само један. ДАВИД Малан: ИД је само један лик, или да будем прецизнији, то је број, тако да је вероватно 32 бита или нешто слично. Док корисничко име, очигледно Џејсон Хирсцххорн је горе постоји нека врста смешно дуго, и то ће узети ми много више времена да се стринг сравни Х-И-Р-С-Ц-Х-Х-О-Р-Н, а можда / 0 или тако нешто, како би да потражите Јасона, за разлику од само рекавши ми дати упутство број два. То је 32 бита. То је један ИНТ који морате да упоредите. И заиста, то је управо разлог зашто базе података имају тенденцију да доделите јединствене личне карте за редови у њима. Сада шта други типови података постоје поред ИНТ и очигледно жице као што је овај? Па, да буде више правилно, СКЛ база података, као што су МиСКЛ, имају цхар поља. И ЗНАК мало варљиво није један ЗНАК. ЗНАК поље у МиСКЛ бази података један или више знакова, али је фиксни број карактера. Тако на пример, ако ја одем у пхпМиАдмин као што сте можда већ имате, или Ускоро ће проблем поставити седам, а ја идем до моје базе података, и само за забаву, хајде да креирате нову табелу под називом тест са само две колоне. Ја ћу онда кликните на дугме Иди. И то ће бити прилично упознати, нарочито при Тинкер около сами. Овде сам да укуцате ИД створити Нова табела типа инт. Али овде сам да укуцате корисничко име поново да сто раније. И приметио сам да има гомилу типова које можете изабрати. А и ово је разлог зашто пхпМиАдмин је лепо. То је нека врста само-у да наставе могу само врста тачке и кликните на дугме, и погледај падајуће меније, и закључити из да је оно што вам даје овлашћења СКЛ. И заиста, ако бирам ЦХАР, тада сам да одредите дужину, или како многе вредности, колико знакова. Дакле, веома честе вредности су ствари као што су 255, али то је мало дужи. Најчешће је осам за корисничко име. Али то је мало мали ових дана. Дакле, ово је одлука о дизајну. Да ли је то 8 карактера максимално, 32, 255, 1000? Заиста је на вама. Али ЗНАК поље је фиксни број. Зато изаберите сувише мало и ти си некако зајебао ако желите дуже име. Изаберите превише и шта је мана? ПУБЛИКА: [ИНАУДИБЛЕ]. Малан ДАВИД: То је расипнички. Баш као у Ц, ако имате већи комад меморије него што је потребно, да си само губљење времена и расипање простора. Дакле, као алтернатива, постоји ВАРЦХАР, који решава овај проблем лечење дужину не као фиксне дужине, али као максималну дужину, и користећи променљиви број слова, који је тада тенденцију да користе само онолико слова као ви заиста треба. То звучи савршено. Зашто не можемо ослободити ЦХАР типа података онда? Шта може да буде мана коришћењем ВАРЦХАРс, који звучи као да је лепа победа? Да? ПУБЛИКА: [ИНАУДИБЛЕ]. ДАВИД Малан: Добро, добро. Дакле, ако све податке је исти дужине, шта је брига? ПУБЛИКА: Зато што губите подаци по говорећи им све. Малан ДАВИД: Па ако све податке је исте дужине, мада, рекао бих који одређује максималну дужину на ВАРЦХАР се не разликује од одређује фиксну дужину на ЦХАР ако Ви знате тај број унапред. Али, заиста постоји, а ја ћу некако извод из тог одговора стварности да још увек постоји максимално, што би могло се нервира, поготово ако наићи име особе која је необично дуго да нисте предвидети. И то је такође нешто мање ефикасан да се заправо тражи на ВАРЦХАРс као насупрот потрази карактера, нарочито за дугим столовима који имају пуно и много података. Тако и овде, тематски је поново нема очигледан избор. Да би вам дати осећај других типови података који могу бити од интереса било за п-сет седам или у будућност, ту је ИНТ. Има бигинт, који као да је дуго дуго. Она тежи да буде 64 бита. Има ДЕЦИМАЛ, што ћете видети у скуп проблема, што је много чистач одговор на проблеме смо сусрео са флоат и плутајуће тачка непрецизности. А онда ту је ДАТЕТИМЕ. Буквално Постоји тип података који има да изгледа као да је година, месец, дан, и сат, минуте и секунде. Међутим, СКЛ базе података имају и ствари које ћемо звати индексе. И индекс је нешто што прецизира када креирате табелу направити претраге и друге операције ефикасније. Конкретно, постоји нешто што се зове Примарни индекс да бисте могли прогласи на следећи начин. Ми смо то урадили за вас са Корисници сто смо ти дати. Али, ако приметите да су ручно поновном Корисници сто овде дајући то име корисника. Већ сам прецизирао ИД. Прецизирао инт. Наведено име сам са максимално 32 карактера. Али, ако се померају у овој прилично широки прозор, приметити постоји гомила других ствари које можете да одредите. Један, ја могу навести атрибуте као, знаш шта, ово ИНТ би требало да буде потписана. Не желим негативне бројеве, па хајде да буде потписана. Нула није релевантан, јер овде Ја желим да сваки корисник имају јединствен број. Не желим да буде нула. Али ово је интересантно. Ја могу навести да је број или Примарни кључ ове базе података, или је то јединствена, или је то индексиране, или цео текст. Дакле, за потребе данашњих, дуга прича кратке, примарна значи да ће ово бити и концептуално и технички поље које користимо за јединствено идентификацију корисника. Дакле, када погледамо уп корисника, ово је врста од обећања да их погледаш углавном да јединствени идентификатор. И база података ће обезбедити да, ако имају велики број корисника 3, не можете физички убаците другог корисника са истим бројем 3. База података ће једноставно одбити да бисте сачували промене. Што је добра ствар, јер можете заштитите се од себе. сам Алтернативно, за корисничко име. Дакле, други ред, подсетимо, је усернаме поље. Дакле, овде је други ред корисничким именом, као што смо радили до сада отишао тамо. Дакле, шта друго може да желим да наведете? Није ми дозвољено, у складу са СКЛ, навести две примарне кључеве. можете одредити заједнички кључ где погледај оба поља, али они не могу појединачно бити примарни кључеви. Дакле, то не долази у обзир. Зато што би ја желим да изаберем? Па, јединствен је у духу на сличан примарни кључ где сте навели ово Поље ће бити јединствена, али је неће бити један Ја користим све време. И нећемо користити овај све време из ког разлога поново? То је потенцијално спорије ако то је дуга корисничко име. То је само губљење времена. ИНДЕКС, у међувремену, наводи да је неће бити јединствена, али ја бих да своју магију испод аспиратор да би се брже за мене тражи на овом пољу. Дакле, ово вероватно није релевантно. За корисничко име, ја бих тврде да Јединствена је добар одговор. Али, претпоставимо да смо направили корисници више Занимљиво него само корисничких имена, хасхирани и ИД бројеве. Шта ако ми је дао људе именом и презименом? Шта ако смо им дали адресе и друге податке о њима? Па, ако наведете да је колона у База је индексиран, то значи да МиСКЛ, или Орацле, или шта год база података користите, треба да ради своју магију и користе неку врсту података фенси структура попут дрвета, или Трие, или хасх табела, или нешто да гарантују да када тражите податке користећи изаберите на том пољу - свиђа ми показати свима да живи на улици Оксфорд. Упит тако. Ако сте навели да се унапред желите индекса на том пољу, претраге ће бити много, много брже. Ако не наведете показатељима најбоље можете да урадите је линеаран ако претрагу није то сам средио. Али ако наведете ИНДЕКС, паметан људи који су направили базу података - људи као ти, који сада знају дрвеће и труди се и хасх табеле - ће аутоматски направити такву података структура у РАМ да се уверите да те претраге су много брже. ФУЛЛТЕКСТ међувремену је слична у духу, али вам омогућава да урадите џокер претраге, свиђа ми покаже свима да је живи на улицама које почињу слово О из било ког разлога. То можете да урадите претраге џокер тако. Или, убедљив ствари као што показују ја свако ко има реч - покажи ми свима чије име почиње са посебним писмом. Можете да претражујете по кључним речима на овај начин. У реду. Дакле, дизајн прилике тамо потенцијално. Постоје и други да ћу махнем у руке. Испоставило се да имате складиштење различитих мотора. А то је више него што нам треба волшебни свакако проблем за сет седам. Подразумевано, ви користите нешто што се зове ИнноДБ. Видећете помиње ово негде у пхпМиАдмин интерфејс највероватније. Али, знам да постоје и други дизајн одлуке које су од потенцијалног камата долазе завршних пројеката, ако урадите нешто Вебу. Али, хајде да то уради. Идемо напред и стави ово на екран као тизер за причу укључује се, цимер, и чаша млека. Хајде да се два минута или тако сломити овде. И ако можете да останем, да дођу уназад, погледајте мало на СКЛ, и онда мало ЈаваСцрипт-у П-сет осам на уму. У реду. Дакле, хајде да се размисљас угао случај да врло лако може доћи до у контексту коришћења базе података, или Искрено, чак и користећи праве светске ствари Банкомати воле да добију новац. Дакле, овде је фрижидер. Претпоставимо да имате један превише у Ваша спаваоница или ваша кућа. А имаш једну цимерку, и обоје заиста свиђа млеко за пример. Дакле, дошао кући из класе једног дана. Он или она још није вратио. Ви отворите фрижидер. Ви заиста желите велику чашу млека. Нема млека. Дакле, шта радите? Можете затворити фрижидер. Ти зграби кључеве. Можете изаћи на трг. А ти се у реду на ЦВС на тим селф цхецкоут ствари, које увек потрајати дуже него што заиста има благајника. У сваком случају. Па онда, у међувремену, дот дот дот, ваш цимер дође кући, а он или она Слично је жудња за неке млека. Дакле, он или она отвори фрижидер, изгледа унутра, и ох, проклето. Без млека. Дакле, он или она из главе, дешава да иде другим ЦВС, што је само блок даље из неког разлога, и он или она добија у реду да купи млеко. У међувремену, можете доћи кући, он или она дође кући, а шта ви на крају имате? Дупло више млека. Али, стварно не волим млеко толико. Дакле, сада имате толико млека да је сада један од њих је само ићи кисело крају. Дакле, ово је стварно лоша проблем. Зар не? Дакле, шта се десило? Дакле суштински, то је врста на пример смешна. Али, испод хаубе, оно што смо имали Овде се деси обоје проверени стање неког дела меморије, фрижидер. Обоје проверио стање неке променљиве. Обоје извукао закључак да сте тада деловао на. Али, нажалост, а ваш цимер био у продавници, држава која променљива променила, он или она вратила и сада жели да промени стање, али То је већ промењено на њега или њу. И наравно, он или она не би отишао у продавницу, ако су знали да сте већ били на путу. Дакле, у стварном свету, како си могао избегли овај проблем, под претпоставком да имате фрижидер, имате цимера, а ви у ствари желите млеко? ПУБЛИКА: Комуницирање. ДАВИД Малан: Комуникација. У реду. Али како да комуницирате? ПУБЛИКА: Оставите поруку. ДАВИД Малан: Оставите поруку, зар не? Увек оставите напомену, за фанови емисије. У реду, тако да увек остави белешку, или ставити заиста као катанац или нешто на фрижидеру да одржава ваш цимер из проверу стања то променљива. Сада, зашто би то било да Германе Проблем сет седам, или на банкоматима. Па, замислите свет у банкомату где можда ћете моћи да иде и до банкомата машина овде, а други АТМ овде. И то се дешава прилично често. А претпостављам да сте имали два АТМ картице, што је могуће добити. И ви пријавите на обе машине ефикасно истовремено, надам се док нико не гледа. А онда куцате у ПИН грубо истовремено. И онда то урадите биланс упит да видим колико новца имате. И рецимо да имате $ 100 оставио на свом налогу. Па у суштини истовремено, ви кажу један, нула, нула, унесите. А ти надам се вратим неки новац. Али колико новца може да се вратиш? Сада рачунари на крају дана, нарочито ако они причају да сервери, не морају чинити ствари у циљу да се очекује. Дакле, претпоставимо шта се дешава, јер без обзира на мрежу брзине питања тамо су, или проблеми ЦПУ постоје, или нешто слично, претпостављам да Први банкомат проверава стање и види, ох, та особа има $ 100. Али онда добија растројен јер можда резервне копије се дешава и тако је успорава. Или можда док провере, мрежу веза има мало спорије јер ово само дешава. Они су физички уређаји. Дакле у међувремену, други банкомат је постављам исто питање. Колико новца се Дејвид има? $ 100 је одговор. Али пошто први банкомат још није послата је порука одузимање $ 100, и Банкомати су увиђај трезор банке, видим ту је $ 100 тамо, а сада обе машине су потенцијално ће испљунути одговор. Сада, ово је супер за вас у неком смислу ако оно банка ради на крају је променити износ на минус 100 од постављање променљива једнака ваше Жиро рачун једнако 0, насупрот да раде минус 100. Сада у најгорем случају за банку - или у најбољем за банке, у међувремену, они вам дати $ 200, и Ваш банковни рачун сада показује негативан $ 100, који заправо не користи те уопште. Али поента је да је ова раса услов за добијање две цимерке млеко, или за два банкомата покушавају да добију готовину и промени стање трезору истовремено постоји било време имате базу података. Сада у проблему сет седам, ово питање настаје у смислу да ако купите Удео Фацебоок лагеру, а затим за пример ти купити други део Фацебоок залиха, потребно је да се одлука као програмер. Да би се одлучило како да ажурирате база података, шансе су да ћете има један ред за тим залихама, и то је један од начина да се то спроведе. И ти ћеш имати један удео ФБ, која је њихова акција тикер симбол за ову корисничко име или овог корисника ИД, јединствени идентификатор. Али иста прича може да се деси овде. Ако то урадите изабрали у СКЛ, као што ћете видети у проблему сет седам када видите, ох, Дејвид има једну акцију на Фацебоок лагеру. Дозволите ми сада променити ово да буде два акције, јер жели да купи Друга акција. Али, претпоставимо Дејвид заправо имао два бровсер прозоре отвори, или претпоставимо да то је заједнички рачун са два супружника, и обојица се труде да врше иста операција, тамо, потенцијал постоји за одлуку да буде врши на основу претходне држава света - рачун има један део - и обе особе, или оба сервера, сада покушајте да повећате рећи да је на две акције. Али у овом случају, можда сте терете ми новац за обе акције, али увећава само тај један пут. Дакле укратко, основни проблем овде, као и са шалом око остављајући уму, или стављање катанца на њему, је ако двоје људи, или две теме - Мислим назад на огреботине - могу прегледати стање неке променљиве а затим покушајте да промените ту променљиву, али те две ствари се не дешавају у исто време, али може се прекинути других ствари које се дешавају, подаци могу се у врло чудном стању. И ви можете имати користи или можете патити у смислу новца примера. Дакле, у проблему поставили седам, ми вам ова линија кода, који дуго причу, решава ово проблем у МиСКЛ. Овај веома дуго упутства да не чак стане на једној линији на Екран обезбеђује да ваш рад је оно што се зове атомски. То се дешава све одједном, или то не деси уопште. Овај веома дуго фраза не може се прекида делимично. И оно што ради је буквално шта пише. Убаците у неку табелу следеће три поља те одређене вредности, али на дупликат кључа, немој инсерт. До ажурирање. Дакле, ово је као ради и ИЗАБЕРИ ИНСЕРТ такорећи истовремено. А оно што је кључ који је вероватно упућивања овде? Испоставило се, а то ћете видети у Проблем је сет седам спец, јер ми смо ту да буде проглашен јединственог кључа на овом столу то што су не можете имати више редова за истог корисника са Исто Пени берза симбол - у овом примеру овде, је ДВН.В Пени берза глупо да ми погледајте у спец. Зато смо изјавили да је јединствен, шта то значи да ако покушајте да убаците дупликат ред, ти си уместо тога ће се ажурирати без било ко други има шансу да промени стање света било. Дакле укратко, то осигурава ствари су атомски. Уопште узев, иако базе података као МиСКЛ - и није потребно за ову функцију П-сет седам, али имајте на уму да је за будућност - подржава оно што се назива трансакција, где можете да кажете СТАРТ ТРАНСАКЦИЈЕ буквално. Затим можете да извршите два СКЛ изјаве. И СКЛ изјава, као што ћете видети у п-сет седам, изгледа мало нешто овако. Ажурирање сто под називом рачун. Поставите колону Стање једнак без обзира Тренутно стање колона је минус 1.000, где је број, на број рачуна, као и кориснички ИД, једнак 2, а затим ажурирате рачун дот дот дот. Дакле, у смислу лаике, Шта ова два упити изгледа да раде у стварни свет осећај банкарства? ПУБЛИКА: Прелазак на штедњу. ДАВИД Малан: Управо тако. Пренос средстава из једне рачуна на други. И ово је још један пример где сте Заиста желим да се ове две ствари десити или не деси. Ви не желите да се нешто у сред њих и потенцијално забрљао математика, или забрљамо колико новца имате, или колико Новац банка има. Дакле, оно што је заиста лепо о трансакцијама МиСКЛ је у то, и базама података уопште, је да они и паметни људи који су реализовани ове карактеристике схватим како да да ли обе ове ствари дешавају или не уопште. А ако сте заиста тежи да сајт који се користи од стране људи на кампус, људи у стварном свету, ради нешто у смислу покретања, Ово су врсте дизајн одлуке које постају све тако важно. У супротном, почињете да губите податке, изгубити корисника, или у најгорем случају, као Овде смо видели, потенцијално изгубити новац. Па опет, више о томе у проблему сет седам, као и можда за неке од сте у завршних пројеката. Па хајде да промени ту слику коју смо имали Малопре само на још један начин. Па да видим да ли заиста могу - Не, то је нестало. Ево га. Дакле, ово је место где смо оставили последњи пут. И испоставило се да ћемо бацити још једна ствар у микс овде - језик се зове Јава. Дакле, Јава заиста одговара у овом комаду - а нисам баш остављају довољно простора, тако да ово није сад да скала. ОК, ово је заиста јадно. У реду, тако да је ЈаваСцрипт. У реду. Ја стварно радим то лоша. У реду. Тако је још један Јава програмирање језик, и наш последњи, ако то помаже увери да не постоји много више на хидрантима овде. Дакле, Јава је такође тумачи језик, што значи да не састави га у нуле и јединице. Само га покренете. Али, оно што је суштински разликује од Јава је обично да немојте га покренете на вашем веб серверу. То се не ради у апарата по себи. Уместо тога, он бива преузето од стране корисника преко ХТТП-у свог прегледача - Цхроме, Сафари, Интернет Екплорер, Фирефок, шта год - а то је бровсер који извршава посебно програмски језик. Дакле, да буде јасно, ПХП је до сада био извршава или у командној линији у наш црно-бели прозор, на серверу попут апарата, рачунара попут апарата, или је то био погубљен од стране веб сервера ради на рачунару. Али, овде је тема да ПХП до сада извршена на страни сервера, тако корисник и прегледач корисника никада не види линију ПХП кода. У ствари, ако сте икада отворите прегледач за Ваш сајт или неки други, а ви заправо види ПХП код на вашем прозору, неко је зезнуо. Зато што није требало да буде послат на претраживачу директно. Требало је да се изврши и окренуо у нешто слично ХТМЛ. Али Јава је у суштини супротно. Намењен је да се обично покреће у на прозору корисника. А шта врсте сајтова користи Јава онда ових дана? Као буквално сваки популарног сајта. Сваки сајт који вероватно ви користите свакодневно користе ЈаваСцрипт за најједноставнији и чак најсексипилнију функције. Дакле, нешто као Фацебоок Ћаскање ако користите то. Како се то заправо ради? Па до сада, све ствари ми смо урадио са ХТМЛ и ПХП претпоставља да се попнете УРЛ адресу, и кликнете Ентер, и видите ХТМЛ садржаја. И кликнете на линк, који мења УРЛ адреса, мења страну, и поново учитава неки нови садржај. Кликните на другу УРЛ адресу или доставити образац, се одвезли на другу страну и видиш неки нови садржај. Али, користите нешто као Фацебоок Цхат, или Гцхат, или Гоогле мапе, ретко се цела страница освежи да таква видећете бели екран тренутно и затим нови садржај. Уместо тога, веб странице данас су динамички узимајући поново ажурира и опет и опет све врста од иза сцене. И испоставило се да када не иду у нешто као Фацебоок, или Гцхат, или Гмаил, а исправке страница аутоматски без претовар цео екран, што се десило је да Ваш претраживач је направио некако тајно додатни ХТТП захтеви - не за целих веб страницама, али само за мали комади података, као што су инстант порука да је ваш пријатељ управо послао ти, или исправку статус који неко вас, или само твит послао да је неко управо послао. То је само прављење мале захтеве за података, а затим користећи ЈаваСцрипт, ово програмски језик, шта бисте променили веб страница изгледа без сервер помаже, без сервера генерисање ХТМЛ ту. Дакле укратко, ЈаваСцрипт може да се користи онда да не само да донесе нове податке из Сервер без претовара целину страна или подношења обрасца. Такође се може користити за промену тзв ДОМ - Доцумент Објецт Модел - који је само фенси начин за рекавши дрво ХТМЛ да смо видели последњи пут. Тако да увери, ЈаваСцрипт синтаксички тако сличан Ц као добро. Нема главна функција. Само наставите са писањем кода и она ће се извршити, или тумачити исправно. Услови ће изгледати овако. Не разликује од Ц или ПХП за ту ствар. Логички изрази или-ур заједно ће изгледати овако. Андед заједно изгледају овако. Прекидачи ће изгледати овако. За петље ће изгледати овако. Док петље ће изгледати овако. Да ли док петље ће изгледати овако. Ово је ново. Дакле ЈаваСкрипт нема а фореацх конструисати пер се, али ово конструкт за променљива и у низу, а ја у то Случај постаје вредност индекса. Дакле, то је мало другачији од оног фореацх, мада нове верзије Се ЈаваСкрипт излази све време, па чак и ове језичке карактеристике еволуирају. И Као страну, ЈаваСцрипт ових дана се такође може користити на серверу баш као ПХП користећи оквир под називом Ноде.јс. Један од ЦС50-а Поздрав, Кевин, довело Семинар о Ноде.јс који је доступан на цс50.нет/семинарс. Дакле, ако сте радознали, знате да вам могу да користе ово на страни сервера као добро, али да је скорашњи тренд, али моћан на то. Ово је мало другачија. Ово је низ у ЈаваСцрипт. А шта вас удари као другачији наспрам Ц или ПХП? Постоји неколико брзих приче можемо рећи овде. Шта недостаје у односу ПХП? ПУБЛИКА: [ИНАУДИБЛЕ]. ДАВИД Малан: Да? Извини, опет кажем? ПУБЛИКА: Не пријави тип променљиве. ДАВИД Малан: Нисмо изјављујући тип променљиве. Тако заправо сасвим као ПХП, нисмо наводећи врсте ове променљиве. Уместо тога, ми смо више генерички рекавши вар за променљиву. Немамо ПХП досадан долар знак, који док се досадан Тип, чини више јасно да нешто је променљива. Док овде, ми смо некако вратили у Ц приступ од само позивање променљива по имену желимо да га дају, као што су бројеви. И такође као ПХП, имамо угласте заграде за Вредности унутар тог низа. Тако променљиве у ЈаваСцрипт и може изгледати овако. Приметимо да је ово ниска зове ова, али исто тако имамо непоменути да је ниска. Ево иако је функција која не постоје на потпуно исти начин у ПХП, али помало слично. Ово је објекат у ЈаваСцрипт. И објекти су врста Свисс Арми Нож од структуре података у том вама Можете их користити за било који број ствари. Овде, на пример, смо изјављујући променљива се зове цитат. Тип ту променљиву је објекат. Можете мислити о томе као о Ц струцт који има кључеве и вредности. Симбол је кључ. ФБ је вредност, наизглед залиха симбол. Зарез. Цена је још један кључни, а његова вредност је очигледно флоатинг поинт, или број уопште у Јава, од $ 49.26. Дакле, ПХП нема - нисмо видели у ПХП објектима сасвим овако, али ми нисмо видели аналогну, који је био шта? ПУБЛИКА: [ИНАУДИБЛЕ]. ДАВИД Малан: Асоцијативне низови. Дакле, док је ПХП има асоцијативне низове чија синтакса је икада нешто тако другачије - смо видели угласте заграде. Видели смо чудне стрелице симболе. Јава има објекте, али ово је углавном семантички разлика и другачија синоним за сада. Међутим, како у страну, ПХП такође има објекте на начин који Јава и други језици имају објекте у објектно-оријентисано програмирање. Али, ми ћемо користити ове само за типове података за сада. Објекти и асоцијативни низови. То би се могло то направити мало јасније. Ево зашто предмет је користан. Када желите да прогласи студента, као Замила, ми заправо можемо обухвати такорећи унутар које објецт користећи витичасте заграде као пред гомилу кључева и вредности у овде. Имамо ИД, кућу и име Замила, праћено зарезом као уобичајено на крају. Овде доле превише, ово је нешто другачија, али и веома моћно ових дана. Ево низ, а ја знам да је зато постоји средња заграда горе Најбољи и средња заграда на дну. А ово је оно што низ података укуцајте очигледно у ЈаваСцрипт? Ово је низ од изгледа као три објекта. И знам да је то само објекат због великих заграда. И приметити постоји отворен коврџава браће, неке ствари, близу коврџава браће, зарез, онда још мало, зарез, а онда још мало. Дакле, то су три аргументи раздвојене зарезима два. Дакле, ово је низ од три предмета. И свака од ових објеката изгледа да студент или запослени члан неке врста, сваки са ИД, кућа, и име. Али ја сам назвао овај нешто зове ЈСОН - ЈаваСцрипт Објецт нотација. И ово је формат података који заправо је тако веома популаран и у вогуе ових дана да, ако пишете апликација која користи Фацебоок АПИ, Твиттер АПИ, стварно готово сваки АПИ тамо ових дана, укључујући и неке од ЦС50 сопствене, подаци се вратиш није у стара школа ЦСВ формату. Јер присећање да ЦСВ је супер једноставна. То је само колоне раздвојене зарезом. ЈСОН података вам даје више метаподатака. Она повезује кључ са вредношћу сваког тако они не морају да само претпоставити да колона нулти је једна вредност, колона један је још један, колона два друга. Све у ЈСОН објекат овде је врста од себе описују, јер сваки један од имена у овом фајлу је буквално име испред ње као цитирао ниска. Па хајде да погледамо а Неколико примера овде. Пусти ме у уређај. И пусти ме да одем у нашу вхост директоријум у јавности. И дозволите ми да одем у ЈаваСцрипт именик. И идемо напред и отвори дом-0.хтмл, где ДОМ само значи Доцумент Објецт Модел. То је дрво ствари на којима Ја из раније. И дозволите ми да предложи следеће. Ево веб страница чији Тело је прилично једноставна. Дакле, овде доле на дну, приметити Имам форму. Видели смо оне раније. Она има два улаза, од којих један има ИД имена, од којих један има неку врсту субмит, и први нечији тип је текст. Дакле, ово заправо звучи прилично једноставно. Идемо одавде. Хајде да се вратимо на овој страници овде. Идемо у лоцалхост, и иде у наш ЈаваСкрипт директоријум, и идите на дом-0, а овде имамо овај формулар. Дакле, то је очигледно све ово ради страница. Она има име поља са Субмит дугме. Али ја нећу да користим ПХП овде. Ја ћу да урадим све што клијент страни да тако кажем у ЈаваСцрипт како следи. Обратите пажњу да сам заиста сам дао име поље овог уноса јединствена идентификатор, који ће заправо саве ме неко време у тренутак. И приметио сам увео још једну ознаку у глави мојој веб страници,  ознака. Тако да је у том смислу да је ЈаваСцрипт програмски језик на страни клијента. У овом случају, као и ЦСС, ја сам ставио то право у моје ХТМЛ. Не приметим да сам проглашен за функцију да изгледа помало као ПХП синтаксички, али то је заправо Јава, опет зато, то је клијент-страни у претраживачу. И да претпоставите шта ће ово да уради, иако су неки од синтаксе овде је нова. ПУБЛИКА: Поздрави ко. ДАВИД Малан: То ће рећи здраво да ко посети ову страницу. Па како? Дакле приметили, испада у ЈаваСцрипт постоји упозорење () функцију. Ово је веома тужно врста функција које заиста само тежи да нервира кориснике. То није један заиста треба да користите обично, али то је брз и прљав начин врста штампе нешто на графички кориснички интерфејс, као бровсер. Приметимо овде да имам стринг у једноструким наводницима. Испоставило се да за разлику од Ц, ЈаваСцрипт може заправо имати користите самац цитира, а искрено то је само врста од стилске конвенције међу Јава програмери користити апострофе. ПХП, они заправо имају мало другачије значење. Али за сада, само знам да То је једини разлог. Конвенција у ЈаваСцрипт је често на Користите једноструке наводнике, али смо могли да користимо двоструки наводници у оба места, као и. Дакле, ово је интересантно. Подсетимо последњи пут да смо имали да слика на екрану које су изазвале дрво где сте имали ХТМЛ чвор, а ГЛАВНИ чвор, а тело чвор, а онда неки текст. Али постоји један посебан чвор на Веома врх који сам назвао документ. Па, испоставило се да у ЈаваСцрипт, било пут када напишете програм у ЈаваСцрипт у претраживач, имате приступ посебан глобална променљива. Слично у духу да ПХП је суперглобалс, ово се зове у све малим словима документ. То је као струцт, али ово струцт Такође има функције унутар ње. Дакле, има Ц струцт само типично податке. Али ЈаваСкрипт објекат као овај технички је такође има функције, иначе познат као методе, у њему. И можете да позовете функцију унутар овај објекат буквално ради свој име, дот, а затим име функцију, или поново метод. То је управо синоним, стварно. И шта то уради функција? Можете да некако погоди из свог имена. Набавите елемент по ИД. Дакле, ово ће да претражујете веб страницу, Претраживач то дрво, у потрази за год чвор, звани елеменат, има јединствени ИД цитатом Ункуоте имена. И онда шта ћу ја да радим? Идем да се вредност унутар који чвор у дрвету, а ја ћу да некако поздрави тим именом. Тако да претпоставите, иако ми не сам види ово још, шта уради, плус симболи значе овде и овде вероватно? ПУБЛИКА: спајање. ДАВИД Малан: спајање. Тачно, а то су управо врста дизајн одлуке људи су пре неколико година. У ПХП-у, ви цонцатенате ствари са тачкицама. У Ц, скок кроз неколико обруча и позовите функције као стрцопи () или стрцат () или друге такве функције. Али у ЈаваСцрипт, користите плусева. Дакле, ово је само спајањем три жице - здраво, име, а затим знак узвика. Дакле, када и зашто је ова функција звао иако? Па, да претпоставите од ХТМЛ-на дну. Зашто је поздрави () зове, или када? Очигледно, најбоље што могу да кажем, на субмит, када се подноси овај образац, Ја ћу да урадим све што је унутар ових цитата. А конкретно, ја ћу да позовем поздравити () и затим се вратите лажна. Па, хајде да видимо шта нето Ефекат је овде први. Дакле, дозволите ми само напред и укуцајте у, рецимо, Лорен, Субмит. Здраво Лорен. Хајде да видимо да ли можда то био само срећан имплементација. Јок. Дакле, то је куцање год име сам заправо ставио тамо. Али приметили шта се не мења. УРЛ адреса је и даље дом-0.хтмл. Нема регистер.пхп. Нема други фајл. Нема акције атрибут. Дакле, шта је ово повратак лажна вероватно ради? Зашто ја зовем поздрављам () и затим враћа фалсе вероватно? Шта се дешава нормално када кликнете Пошаљи на обрасцу који чак имамо види у последњих недељу дана? ПУБЛИКА: [ИНАУДИБЛЕ]. ДАВИД Малан: То негде иде, зар не? То иде на неку одредишну УРЛ адресу. Али ја не желим да се овде деси. Желим да мој веб страна да у потпуности буде динамичан као што су Гмаил, где си ти некада тамо, ти остани ту. УРЛ адреса се не мења на начин који указује цела страна је претовар. Уместо тога, само желим да се нешто промени као штампање нешто овде на екрану. Па пусти ме да очистите ово се мало. Дозволите ми да отворим не ДОМ-0, али дозволите ми да отворим Дом-2. Само да сте видели овде мало синтаксу. Испоставило се да је оно што смо управо да ли се користи сирову ЈаваСцрипт. Дакле, ово је заиста језик ЈаваСцрипт. Неки од вас можда знају библиотека зове јКуери. Дакле јКуери није исто ствар као ЈаваСцрипт. То је само библиотека која заиста паметан момак је написао и популаризовао такав да скоро сви у свету сада користи јКуери када користите ЈаваСцрипт. И на први поглед, искрено, то изгледа мало више тајновито. Али ви ћете, нарочито ако идете ту за коначни пројекат са веб развој, ви ћете наћи да је ово чисти ствари и штеди вам доста неколико линија кода. Па нека је само поглед на како овај образац ради. Обратите пажњу шта сам очигледно уклонити из мог ХТМЛ? Нема на субмит претовар тако да говори. Нема атрибут. Јер знате, шта Нисам стварно волео? Осећао сам се као да су падале у старим навикама тамо. Баш као да је почео да осећа аљкав да мешају како са ЦСС ХТМЛ, јер си некако бацање различитих језика широм место, слично је ово почело да се осећа као лош пут да иде доле, где Стављам ЈаваСцрипт код унутар моје ХТМЛ уместо факторинга га. Дакле, то је лекција овде. У дом-2.хтмл, ја га факторинга напоље. И ја радим ствари незнатно другачије. За сада, ја ћу махати руке на шта то заправо ради испод хаубе. Али само за сада претпостављају да је први линија кода у овој библиотеци зове јКуери само значи када документ је спреман, урадите следеће. Јер веб странице могу узети неко време да се учита. Можда се на спором интернету прикључак, а могло би се окреће и предење, и на крају је напуњен. Та линија кода само каже сачекајте да цела страна је спремна, документ је спремна, пре извршавања овај код. И сада приметити, ово је вероватно најкориснији први одузети од јКуери. Ова линија овде је веома слична у духу на овој линији много дуже овде. Док је у сировом ЈаваСцрипт кода, постоји постоји документ глобални објекат који има функцију под називом гетЕлементБиИд (), људи који су писали јКуери поједностављена да би само рећи долар знак, а затим унутар заграде ставити два цитате, а затим стави тараба симбол праћен јединствени ИД желите да ухватите. Дакле, ово је еквивалентно са доцумент.врите. У међувремену,. Поднети само значи на подношење год облик ти си позивајући се на лево, иди напред и изврши ово. Али ово је сада превише радозналост. Шта је чудно шта Ја сам овде истакао? Не само да је некако синтаксички нови, ту је нешто недостаје. ПУБЛИКА: То је само зове функција? Не зове опрезан? ДАВИД Малан: Да. Па, тако упозорење () је доле овде, да будемо фер. Али нема помена о име, као што знате, трла или нешто овде. И заиста, ово је једна од карактеристика ЈаваСцрипт који је сасвим моћан, али и сасвим ново. И ПХП заправо има ово као добро. Пусти ме само напред и урадите нешто стварно брзо. Пусти ме само напред и ставио ово овде. Пусти ме да урадим ово. Функција. Назовимо овај хендлер (). Функција руковалац тако да говори. Нешто што управља неком операцијом. Дозволите ми да почисти своју увлачење. И ставио ово овде. И стави то овде. Да. ОК. Тако да сада имам функцију која се зове претовар () да ја стварно не знам шта то још ради. Она још увек има само те ствари. Упс. Узео превише. Хајде да урадимо ово. У реду. Извините. У реду. Пусти ме да урадим ово. ОК. То изгледа лепо и равно напред сада. Пусти ме да урадим ово. Урадите ово. И у реду. Па сад, хајде да ставимо ово овде. Нема више програмирање у лету. ОК. Па сад, хајде да се вратимо на где је почела прича. Раније сам рекао да овде та линија значи када документ буде спреман, идите Хајде, уради то. Шта желите да урадите? Па конкретно, ја желим да идем напред и урадите следеће. Извршите ову линију кода, а затим оно што желим да урадите је да позовете ово функционишу када се образац подноси. Сада је то оно што је занимљиво. Ово није сама функција. Обавештење ја не стављам заграде овде на нормалан начин. Ја сам буквално пролази позива функција претовар () за неку другу функцију зове поднесе () као аргумент као иако је као променљиву. И ово је једна од одлика Јава, је функција сами стварно су само предмети. У ствари, они су заиста само варијабле неке врсте. И ако је име функције је управљач (), нема разлога да не могу прође га као аргумент овде. А то значи да, када образац са ИД је демо поднео, уколико урадите. Али сада, ако ја поништити све ово, зашто онда сам можда урадим пре ово тренутак? Па, ово је анонимна функција. Јер искрено, схватио сам зашто сам смета да губе време проглашења Функција се зове управљач () само да позовете је у једном и само на једном месту? Ако не треба име, а ја не морају да зову више од једног места, хајде да спроведе функцију тамо где је то потребно. И тако Јава и ПХП подршка што се зову анонимне функције које дозволите ми да управо то овде. Али, тек смо загребали површину. Хајде да зафркавати са само неколико крајњи примери овде. Ако одем у куоте.пхп. Обратите пажњу да је ово у ствари ПХП функција, ПХП програм, који сам написао да очекује ХТТП параметар зове симбол, а ја могу проћи у вредност као ФБ. А ако се добро погледа извору код, то је упита бесплатан сајт зове Иахоо Финанце, као П-СЕТ седам, а то је повратак у мени нешто у наизглед Познато је ЈСОН формату - ЈаваСцрипт Објецт Нотатион. То је само објекат. Обавештење витичасте заграде, на цитате, дебелог црева, и зарезе. Сада у међувремену, ово је супер. Зато што вероватно може да користи програм језик за генерисање адресе то изгледа овако динамично, зар не? Ја могу променити ово на Гоогле и врати Гоогле-а Цена акција од $ 1,017.55. Па да видимо, ако не можемо да искористимо ово сада. Пусти ме да Ајак-0 овде, који има следећи изглед. То је само сајт који има форма са дугмета. Дозволите ми да овде само напред и укуца ИХОО за симбол акције Иахоо-а, кликните на дугме Гет Цитат, и сад приметио сам добио опрезан са 32.86. Дозволите ми заправо иде у одгајивач верзију ове странице, верзија два, и укуцајте рецимо Мицрософт, МСФТ. Набавите Цитат. Запазите сада, без упозорења. Обратите пажњу где пише цена треба да се утврди? Ту је најједноставнија од примера који наговештава шта Гцхат и Фацебоок Цхат, и Гмаил, и друге сличне сајтови раде самим мења веб странице. Обратите пажњу на то. Дозволите ми да поново учитате страницу. Дозволите ми да отворим Цхроме инспекторе. Пусти ме на елементе Картица овде. Сада сам приметио да увећај овде и Отвори ово, приметите да је ово мој ХТМЛ ДОМ - Доцумент Објецт Модел мој. Ово је мој ХТМЛ. Али сада приметити, иако ће да буде мало тешко да га виде у оба места одједном, ако укуцамо на ФБ овде, пази на дно на екрану само. То је заправо мења Мој ХТМЛ у лету. И ово ради сасвим једноставно радећи нешто овако. Ако ја отворим Ајак-2, приметити спровођење нешто секси као да, иако је то веома ружно, али као софистициране да функционално, има неке ХТМЛ на дну. Али приметио сам да означите. Не смо користио ово раније, али ово је као, али не форсира све на нову линију. То само чини правоугаону област на истој линији у суштини. Обратите пажњу да сам му дао ИД цене. Испоставља се помоћу истог ЈаваСцрипт библиотека, имам функцију зове цитат () која се зове кад год образац се подноси. И шта ја радим ово. Ја декларисање променљиве у ЈаваСцрипт зове урл, чување вредности куоте.пхп симбол =.? Другим речима, ја сам Поцињем да припреми ХТТП захтев, а затим Ја надовезивањем на то са плус год елемент са ИД симбола је, што је обавештење да текст поље десно доле. Дакле, као што смо имали у прошлости форме. И онда испада у јКуери, ако позива. Вал (), која позива од вал функција, вредност функције, која добија год корисник унесе И онда све мрежног саобраћаја што се дешава је то. $. ГетЈСОН. И као по страни, долар је знак само стенографски запис. То је стварно јКуери.гетЈСОН. Одведи ме из овог ЈСОН на УРЛ, и када захтев враћа, позовите овај функција и прође као аргумент шта год се вратио са сервера. Дакле, другим речима, ако се вратим на прегледач, и ја се вратим у куоте.пхп, шта је мој прегледач ради је добијање овај комад података. И кад одем на овој веб страници овде, приметити ако уместо тога отићи на мрежу Картица и јасно га, а затим укуцајте нешто попут ГООГ за Гоогле и добити Цитат, приметићете страна није мењала. Али ХТТП захтев је направљен, а шта вратио овамо, ако погледамо одговор је цела гомила ЈСОН да смо коначно приступити са ова једноставна линија овде. Дата је оно што је стечен са сервера. Цена је име кључ ми је стало. Дакле дата.прице ми даје то. Сада међувремену, и ово је последњи пример. Још више можете да урадите са стране. Један заправо, добро два. Можемо вратити означите, ако се сећате ово. То је ЈаваСцрипт. Можемо да урадимо то. Врло узбудљиво. Оставићемо то као Цлиффхангер. Али више узбудљиво, можете радим овакве ствари. Ако одем у геолоцирање-1, испада да Цхроме зна да смо на Латитуде Лонгитуде 42.37 -71.10.. Дакле, ту је још тамо на располагању. Али више о том следеће недеље. Видимо се у понедељак.