[00:00:02] [Музике може чути] ХАНА: Здраво, свима. Хвала вам момци толико за излазак у одвратном времену за квиз један прегледати сједницу. Као ви знате, квиз једна је ове среде. Тако ћемо ићи кроз гомилу тема. Давин: Хеј, могу да кажем нешто на брзину? ХАНА: Да, Давин иде да кажем нешто врло брзо. Давин: Извини. Само на брзину, ако имате питања о квизу, можете ићи на мрежи. Иди на 2014. квиз један, о квизу. Има логистику о где да идем, када ићи. Ако истовремено се уписао, ми смо ће имати поправни квиз у 5:30. Или ако ми је послао проблем, имате неки други проблем. Али 5:30 је шминка Време у среду. Али ако имате питања, општа питања, Онлине има све логистику. Дакле проверите прво тамо. [00:00:47] ХАНА: Страва. Дакле овде је велики списак тема да ћемо ићи до данас. Идем да покрије сав Ц ствари, а то је да прво колона. Дакле, Ц ствари које смо покривен после квиза нула. Почевши од повезане листе, која укључује тројке. [00:01:05] Добро, па смо видели ово у последњој седници преглед, па ћу ићи кроз ово је мало брже. Само дигни руку ако желиш да успори или обрати нешто даље. Али ми користите повезане листе јер смо почели у Ц са низовима. И низови су супер, али Проблем је што имају фиксну величину. Линкед листе дозвољавају нам да створимо динамички величине структуре података. [00:01:28] А ми имамо наше основне операције, инсерт, делете, и тражи. А ми можемо учинити уметак у најгори случај константа време ако само стави на самом почетку. Обриши и претраживање, најгоре Случај велики ох о н времена. Дакле опет, само да флип кроз ове слике, Знам да смо видели ове прошли пут, али смо желите да пратите наше повезане листе држећи евиденцију о Шеф наше повезане листе. Јер знамо да сваки од наших чворова је само да укаже на следећи чвор у нашем повезане листе. [00:01:58] Па тако смо пратити. Иако то нису континуиране комада меморије, можемо их наћи по само Следећи различите стрелице. Овде је наша структура за повезане листе чвор. Видели смо прошли пут. Ми имамо струцт чвор. И има два својства. Број један, стварна вредност желимо да сачувате. У овом случају, то је цео број. То може бити низ, да може бити цхар, шта год желите. А онда, морамо да пратимо следећи чвор у нашем повезане листе. Тако да ће бити поинтер на следећи чвор. Ако сте управо радили претраживање, као што сам раније рекао, морао би да пратите своје стреле доле. Уметање, ти би да пратите где је остатак вашег списка је. И желите да преусмери главу да укаже на нашем новом елемент, који у овом случају је један, а онда један ће указати на остатак повезане листе. Дакле опет, знам да је ово мало битни од понављања из квиза нула. Дакле, морамо да будемо веома опрезни о редоследу којим смо урадите ове фуга тако да не радимо изгубити траг о задњем делу листе. ОК, нека питања са Само појединачно повезана листе? Страва, у реду, кул. [00:03:06] Дакле, сада, идемо да иде на нешто Само мало компликованије, двоструко повезана листа. Дакле, поред складу стаза од следећег чвора, ми такође желимо да пратите претходног чвора. И ово нам омогућава да, ако смо у неком тренутку у нашем повезане листе, не само иди напред, али Такође поновити уназад. Јер као што смо видели у појединачно линкед лист, ако смо били у неком чвору, и одједном, одлучили смо, заправо, желим да идем у Право чвор пре мене, морао би да уложи све пут назад у главу и поновити кроз све док не фоунд чвор сте тражили. [00:03:35] Дакле, ово чини ствари мало лакше јер смо покушавајући тако прелазите преко повезане листе. Али нас захтева да пратите једног више показивач, па још један чвор звездице. Добро, па ево и забаван део. Идемо да вежбају имплементацији уклоните за двоструко повезане листе. Дакле, ово је нешто што је потпуно фер игра за квизу. Она се појавила на протеклих квизова. Дакле дефинитивно се припремити да кодира за мало на Ц. Не заборавите да са свима ово забавно ПХП и ЈаваСцрипт, и даље имамо на уму да урадите Ц. Зато освези да ако се осећате зарђао. [00:04:12] У реду, хајде да видимо да ли можемо да урадимо ово. У реду, кул. Тако ћемо покушати уредити права овде, и надамо се ово иде по плану. У реду, да ли неко жели да ми дају предлог како би требало да почне? Само претпоставка сам Израда је да сам већ су структура дефинисана, један показао сам на последњој страници, на последњем слајду. И ја складиштење главу мој линкед Листа на неки показивачем зове листу. Да ли неко жели да да почињем? [00:04:42] ПУБЛИКА: Можете ли креирати нови чвор за позивање кроз листу? [00:04:45] ХАНА: Авесоме, тако идемо да створимо нови чвор да пузи кроз листу. Свиђа ми се. Само ћу га назвати показивач ако је то у реду. И где би требало да се почне првобитно? [00:04:57] ПУБЛИКА: Вероватно у носилац листе. ХАНА: Лепа. Желимо да се крећу од главе, која Рекао сам ће чувати у листи. Страва. До сада, тако добро. А сада, наш циљ је да поновити кроз листу док не нађемо чвор са вредност н да желимо да избришете. У реду? [00:05:13] Тако сада је део где желимо да поновити путем. Може ли ико предложити начин да се поновити кроз? [00:05:19] ПУБЛИКА: петља. [00:05:20] ХАНА: петља. Ја га волим. Конкретно, можемо покушати вхиле петљу. У реду, а ми знамо да смо достигли крај нашем списку када је шта? ПУБЛИКА: Када показивач је нулл. ХАНА: Када показивач је нулл. Лепа, ја га волим. У реду, кул. Тако ми је жао због гранични браће је некако пада са екрана. Донели смо га вратили. У реду, кул. Шта је следеће? [00:05:48] Тако знамо да желите да избришете чвор који има вредност н. Па хајде да нађемо случају када ми заправо наћи нашу чвор. Па како бих проверити да? Само бих рекао да показивачем, а онда ако ја Желим да се вредност из показивача, Ја само арров н, једнако н, параметар да смо дали на ту функцију, чвор који желимо да заиста обрисати. Сва питања До овде? У реду. У реду, тако да сада хајде да нацртају брзо слику на плочи, како за визуелизацију ово. [00:06:24] Па рецимо да је наша дивна чвор. И то има вредност, само ћу рећи четири. И то указује на следећи чвор у нашем повезане листе. И нема ништа пре тога. Дакле, имамо наш претходни указујући на ништа. У овом случају, ми уназад указују. Ок, само постављање мој Листа повезана овде. И ми имамо листу која указује да ове структуре за почетак. Ја ћу извући још један за ради потпуности. У реду. Ја ћу указати ову напред. А ја ћу указати онај иза. Упс, извини. Да, ја ово наопако. Уради то поново. У реду, ево га. У реду, схватио сам. Ок, ево наша слика. [00:07:21] У реду, тако да би требало да размислите два случаја. Први случај је ако чвор желимо обрисати је на самом почетку наше листе. А онда, други случај да желимо размотрити је да ли је то било где другде. Разумем да је ово тотално неуредан цртање са свим мојим брисање, али надамо се да ћемо покушати да да појасним са неким кодом. [00:07:40] У реду, па хајде да покрије случај где смо нашли чвор, и то је на врло старт нашег повезане листе. Свако ми сугестија овде о томе шта Ја треба да уради да стварно уклонити нашу чвор? Мало је незгодно. У реду? [00:07:56] ПУБЛИКА: Морате узети чвор који би био пред њим и чине га указују онај који би после тога, и узети чвор који би након тога и направити она указују на чвору пред њом. ХАНА: Тачно. Ок, тако да је ово случај где-- имамо два случаја. Имамо случај где је чвор који тражимо је предњи део листе. У реду, а затим случај да вас описао је иначе, зар не? То је негде другде на листи. Тако да је рекао, морамо да погледати на чвору претходном, и чине претходни чвор указују на следећи чвор. Рецимо да смо покушавајући да изведем пет у мом врло неуредан цртеж овамо. Желимо да се уверите да четири сада показује на шест. Четири је следећи указује на шест. А шест је претходна указује на четири. То је наш циљ овде, зар не? То је оно што сам вам мислим Само је рекао тамо. [00:08:56] У реду, па хајде да се тај први комад. Хајде да урадимо имају претходна показивач претходни. Тако је четири поред треба да укаже на шта? Тачно, у овом случају, шест. Зато треба да кажу показивач, поред. У реду? У реду. Па хајде да уклоните овај ружне слике и покушајте да се направи нешто лепше један. Имамо овде нашу листу главу. И то указује на први чвор у наша линкед лист, који смо рекли је четири. Ово је наш други чвор, пет. И наш трећи чвор, шест. Само покушавам да скренем потпуно исти слика, само мало висе чисто. Ок, па је следеће четири првобитно указује на пет. Фиве је следећи указује на шест. Шест је претходна указује на пет. И пет је претходна указује на четири. Знатно лепше! У реду, кул. [00:10:04] Па сад, шта смо урадили управо Овде, ова линија кода, која каже показивач претходна следећи, па шта то значи? То значи да ако гледамо пет, идите на претходни чвор, и то поред је требало сад тачка до пет је следећи. Па у суштини, шта је то ради се да је брисање ове стрелицу и што га прескочите право над пет. Да ли је то јасно? Знам да могу бити мало недоречена. Видим неке главе клима главом. То је добро. У реду, кул. Сада, шта је следећи корак? [00:10:39] Ја сам ресет следећи. Сада, која друга стрелица требам промијенити? Ова овде. Шест је претходна. Ми не желимо шест је претходна више да укаже на пет. Желимо да укажемо на четири. Да ли то слика смисла? Тако сада можемо да узме пет од. Па хајде да тај комад. Шта треба да урадим пре него што ресет шест је претходна на четири? Нека идеја тамо? [00:11:14] ПУБЛИКА: Ослободите чвор између их постављањем је на нулте? ХАНА: Кул. Дефинитивно, наш крајњи циљ је Биће да ослободи чвор. Тако можемо да урадимо да овде. Фрее показивач. Апсолутно. Али чак и пре тога, хајде да само- свој циљ право Овде је поставити показивач поред претходна једнака поинтер претходни. Знам да је узимајући прикривено. ОК, хајде да таке-- кул. Могу сви виде овај доњи ред? Или је то супер мали? [00:11:50] Дакле, пре него што изврши ова линија овде, желимо да се уверите да показивач следећи није нулл. Јер ако показивач следећа је нулл, каква грешка ћу добити када покушам да референце нулл показивач? ПУБЛИКА: Сег кривица. ХАНА: сец кривица, лепа. Ок, па ако то није нулл, онда можемо ресетовати. И ми имамо шест тачку поново на четири. Питања До ове тачке? Да? [00:12:17] ПУБЛИКА: У први ако изјави, зар не Мислим да има стрелицу поред, или [неразумљиво]? ХАНА: Мислио сам показивач стрелицу н. У основи, оно што ја покушавам да урадим је рећи, тренутни чвор да сам ја итератинг над, струја чвор који Гледам, ја складиштење у показивачем. И желим да знам показивач је вредност, која у овом случају је н. И желим да видим, је чвор Гледам за чвор циљам обрисати? Зато имамо овде поинтер н. [00:12:47] ПУБЛИКА: Дакле стрелица иде да н, подесите вредност и чувајте их на чвору зове н? [00:12:55] ХАНА: Па то је као да сам ја пролази кроз ову повезане листе и указујући на пет. Ако желим да се ту вредност, ако Ја желим да се тај број, 5, Морам да радим показивача стрелице н. Цоол? Да. [00:13:07] ПУБЛИКА: је Н назив променљиве? ХАНА: Да. Дакле, ако се вратимо флип један слиде, н је име од вредности унутар од чвор у нашем повезане листе. И знам да могу добити мало збуњујуће јер ми такође позивају ствар да желимо да избришете н. Значи ту да једна линија долази. Да? [00:13:27] ПУБЛИКА: Шта имаш [Неразумљиво] како они раде? Показивач [неразумљиво]? [00:13:35] ХАНА: Наравно. Да ли причаш-- која линија? ПУБЛИКА: Последња линија [неразумљиво]. [00:13:44] ХАНА: Наравно, у реду. Па хајде да погледамо слику у Да би покушати да објасним ово. Жао ми је, за камера, питање је било можемо објаснити показивач стрелицу поред показивач претходна. У реду, па рецимо да смо у пет а наш циљ је да обришете пет. Дакле поинтер следећи, који од њих три чворови нам то даје? То нас доводи до шестог чвора, зар не? [00:14:10] У реду, тако да сада тражимо за шест је претходна. У реду? И ми ресетовања ово да буде једнака са четири, што је био пет је претходна. Знам, то је супер тешко пратити. Стварно препоручујем да нацртају слике ако добијете питање овако. Да? [00:14:30] ПУБЛИКА: Да ли је разлог то немамо [неразумљиво]? [00:14:37] ХАНА: Тачно. Дакле, питање је било, зашто не треба да провери овде? Зашто не треба да проверите да ли показивач претходни није једнак нулл? И то је зато што имамо Већ одвоји случај ако се показивач је на самом почетку. Врло добро питање. Још нешто о томе? У реду, кул. Па хајде да га завршим. Скоро смо стигли. [00:14:59] Па шта ако је то у глави? Шта ако уместо Покушавате да избришете пет, ми заправо желели да избришете четири? Шта бих ја морао да урадим? Па, ја желим да ресетујем главу на шта? Схоут ит оут? ПУБЛИКА: један после њега. ХАНА: Лепа. У реду, тако да ми желимо да се показује листу да шта год наша показивач следећи чвор је. Добро. И само ради потпуности-их саке, ми би желите да проверите да док год наше листе није нулл, док наша листа није празан, онда желимо да подесите наш претходни једнака нулл. Питање до сада? Један корак од--? [00:15:53] ПУБЛИКА: Да ли би било ако Списак није једнак нулл? [00:15:55] ХАНА: Да, ти си потпуно у праву. Тако ми је жао. Да ли је списак није једнак нулл. Страва. Покушавајући да донесе све ово на екрану. То је нека врста отпада. Извини, момци. И на крају, али не мање важно, сви морамо да урадимо је повратак. У реду. То је било много нагурали у заиста брзо. Узмите мало да бацим поглед. Реци ми ако имате било каквих питања. Да? [00:16:20] ПУБЛИКА: Ако листа је на глава, онда-- чекај, нема везе. [00:16:26] ХАНА: У реду, добро. Дакле, ово је, ако је листа на челу, ми га уклонили да све што уметнута. Да? [00:16:31] ПУБЛИКА: Можете ли да објасните Први ако изјава поново? Ако се показивач њеједнако н? ХАНА: Наравно. Тако је наш циљ целе ове функције је да обришете чвор који има вредност н. Па уколико нађемо, јер ми смо итератинг кроз наше листе, чвор са вредност н, то је Онај који нам је за брисање. Дакле, све у брисања деси унутар те велики ако изјави. Да ли то има смисла? Цоол. Да? [00:16:59] ПУБЛИКА: Можда једноставно не могу да виде она, али не морате и линију за крећете по листи? ХАНА: Страва. Хајде да износим ово мало, и ћемо бацити то право у дну. Можда бих га одбор био мало боља идеја. Па како би се померим поинтер напред? [00:17:17] ПУБЛИКА: Поинтер једнако показивач плус један. [00:17:20] ХАНА: Лепа. Тако да нам омогућава да наставити итератинг кроз. У реду. ПУБЛИКА: Не би ли бити други? ХАНА: Још једном? ПУБЛИКА: Не би постојати друго после велики стари ако Изјава [неразумљиво]? ХАНА: Који део? Жао ми је. [00:17:38] ПУБЛИКА: траверсал, да их не буде један други? ХАНА: Апсолутно могао имати друго. Јер имам право повратка тамо, не треба друго. Али да, добро питање. У реду, зар не? ПУБЛИКА: Можемо мислити на показивача да се креће кроз листу као узимање од вредности сваког чвора у листи? Или треба да мислимо о томе као некако екстерни на листу? [00:18:00] ХАНА: Или једно је добро, мислим. Како ја то замислим је Ја кажем, у реду, ја сам показивач. И ово сам ја. Ово је моја рука. Идем да укаже на другачији ствари које желим да поновити путем. Прво, ја ћу да истакнем на челу листе. И то ми је досадно говори ће указати на четири. И тако ја, као екстерни на листу, Могу указати на сваки од ових елемената. Тако да мислим о себи као показивача. ПУБЛИКА: Дакле, када избришете један од тих елемената, себе обрисати, да тако кажем. ХАНА: Тачно. Тако да избришете ствар упериш да. Тако у примеру који смо видели где смо Покушавате да избришете пет, кад ти показујем да пет, Желим да избришете ствар ти показујем да. Тачно у праву. Да? ПУБЛИКА: Да ли смо збринути Случај где н није на листи? ХАНА: Ако н није на листи? Све што ће се догодити је да си ће поновити кроз и Итерате кроз, а онда, идеш доћи до поинтер бића нулл, а онда ћеш да се уради. [00:18:48] ПУБЛИКА: И ми имамо нешто да се врате? ХАНА: Могли бисмо. Начин да ако је ово дефинисала Функција, ја само кажем да се врати воид обзира. Али можете имати нешто Као повратку цео број, и то су се вратили негативан 1 ако не. Тако нешто. Питања са-- да? ПУБЛИКА: [неразумљиво]? ХАНА: Извини? ПУБЛИКА: [неразумљиво]? ХАНА: Наравно. Дакле, то је ацтуал-- једном имамо учињено све ово дело креће сви ови стрелице око, наша цела Циљ је био да се отараси чвора да тражимо. Дакле, у овом случају, ослобађајући показивач, ако ти показујем да пет, то је као брисање ове средњи чвор. То је слободан показивач део. То има смисла? [00:19:29] ПУБЛИКА: Па чак и помислио ниси [неразумљиво]? [00:19:31] ХАНА: Па смо претпоставили на почетку имали смо неке списак који је алреади-- су ставили ово заједно. Тако у циљу изградње ово Листа, они Мора [неразумљиво]. Цоол. Још нешто са овим? Да? [00:19:46] ПУБЛИКА: Шта ако листа не једнак нулл линију? [Неразумљиво]? ХАНА: Овде? ПУБЛИКА: Да. ХАНА: Ок, све што радим Само је пазећи да пре него што сам покушати да дереференце листи, пре него што покушам да приступим претходни, Желим да се уверите да то није нулл тако да не добијем сег грешку. Цоол. [00:20:08] Ок, знам да је ово био прилично много да се пробије. Дакле, ово ће бити слајд стављају на располагање. Тако да можете проћи кроз њега у више детаља. Да? [00:20:17] ПУБЛИКА: Зашто листа [неразумљиво]? ХАНА: Наравно. Дакле листа заиста указује на овај елемент овде, Први елемент у листи. Тако да не може имати претходни. Да? [00:20:31] ПУБЛИКА: Да ли показивач тачку на истој адреси у меморији? Да ли то указује на исто адреса у меморији као чвора да то показује да? [00:20:40] ХАНА: Да, то указује да овај чвор у меморији. [00:20:43] ПУБЛИКА: Добро, тако кад [неразумљиво]? [00:20:47] ХАНА: У неку руку, да. У реду. У реду, идемо даље са овим. А ако имате још питања, остати на крају, и ми можемо проћи кроз то поново. У реду, кул. Сада, добијамо да идемо даље да размотре табела, покушаја, и дрвеће, које сте добили супер упознати са у п-сет пет, спеллер. [00:21:04] Дакле хасх табела је само низ са појединачно повезаних листи или двоструко повезана листа долазе од тога. Дакле, имамо неку врсту од асоцијативно низа. А како знамо која од њих низови кашике да оду до, користимо хасх функцију. Дакле, у овом случају, може ико погоди шта хасх функцију би се само на основу неких на улазу и излазу? [00:21:31] ПУБЛИКА: Писмо број абецеде. ХАНА: Тачно. То их ставља само по абецедном реду. Све што почиње са Се ставља у први кофу. Све са Б је пуштен у Други кашика, итд, и тако даље. Страва, ОК. И хасх функција је било Функција која узима у једном речју и да ће вам рећи шта кашика припада у. Дакле који унос у нашој арраи припада у. [00:21:55] Тако да сваки пут дајем хасх функција реч, треба ми говоре исто постави сваки пут. Дакле, ако користимо хасх функцију из претходног слајда где смо се сортира по Прво слово абецеде, сваки пут кад дам мој хасх функција "јабука", увек треба да ми врати 0. Дакле ако имам јабука да ставим у хасх табели, ако дам "Аппле" на моју хеш функције, треба да стоји, иди стави га у кофу 0. Ако тражим јабука у мом хасх табели и ја кажем, где би могао јабука уживо, питаш своју хасх функцију. И каже, идите на кашика 0. У реду? Питања са хеш функције? Страва. [00:22:34] Ево мало више детаљно објашњење шта хасх функција могла да изгледа. У реду. Сада, проблем са хасх Функције је у идеалном свету, ми само да има један ствар у сваки сегмент. Али у стварности, постоји не само једна реч да почиње са А. Нема само једна реч која почиње са Б. Со у овом случају, ако смо ми изненада "берри," и желимо да га стави у нашем хасх табели, и видимо, ох, не, банана је већ тамо, шта да радимо? [00:23:03] Па, имамо две опције. Прва опција је линеарни прескок, која само значи да надјемо следећи празан кашика. Иди наћи на следећу празну низа унос. И само стави "Берри" тамо. Тако да знам како треба да иди са бананом у кофу једном. Али само га ставите у канту три, јер кофи три је празна. Друга опција је вероватно шта имплементирати у вашем п-сет, где вас имао посебан цхаининг. Тако сваки од ваших кашике, сваки од ваших елемената низа, не само држи једну ријечи, али у ствари има показивач на листи речи. Тако да, ако сте имали банане у вашем хасх табели а ти одједном хтели додати Берри, нема проблема. Само адд берри на крају, или почетак, на вашој листи повезане. Ок, супер. Питања са хасх столови пре него што наставимо? [00:23:58] У реду. Дрвеће и покушава. ОК, ово је још један опција за имплементацију речник. Могао си да пробам. Тако да је посебна врста дрвета која понаша као мулти-левел хасх табели а. Тако ћете видети слику где имате низ који указује на гомили низова које указују на гомили низова које указују на гомили низова. Па ћемо видети шта то би изгледала на будућем слајду. И уопште, дрво је само било структура података у којима подаци организована у неком хијерархији. Па где смо видели да имамо нека врста разумевања о врхунском нивоу, поред ниво, Следећи ниво, поред ниво. Дакле, ово је вероватно већина јасно са неким конкретним примерима. Дакле овде је наш дрво. Можете видети да њега има посебне нивое да почнемо са тим роот чвор, један. И можемо да идемо кроз нашу дрво. [00:24:50] Бинарни дрво Посебну врсту дрвета. А једини спецификација за бинарном стаблу је да сваки чвор има највише два лишће. Тако да не идеш да видим било од ове чворови имају три или четири или неки други број листова. А онда још конкретнији је бинарна претрага дрво где сваки чвор са леве стране чвор ће имати вредност мања. И сваки вредност за Право ће бити већи. Дакле, ако видиш 44 је на нашем корену, лево, 11, 22, и 33 су сви мање од нашег корена. А на десној су сви бројеви биггер-- 66, 55, и 77. И ове некретнине важи на сваком нивоу стабла. [00:25:37] Па кад идемо у 22, 11 и 33, још 11 је мањи од 22 и 33 је већи од 22. А ово олакшава претрагу јер ако гледамо из више, ми тачно знамо који грана да пратите доле. Дакле, ово би требало да вас подсетим а Мало бинарног потрази. Да? [00:25:56] ПУБЛИКА: Па кад си описујући бинарни, сте рекли да има највише два листа? ХАННАХ: Аха. ПУБЛИКА: Може ли имају мање? ХАНА: Да. Рецимо, на пример, ви није имао паран број ствари а нисте могли напунити све своје лишће, у реду је ако неко има једну. У реду? Страва. Има ли још питања на дрвећу? У реду. [00:26:16] Назад на нашим покушаја као што сам причала о мало раније, како имамо ове низове више нивоа. Дакле, у овом случају, почињемо на врху. А ми можемо пратити сваку дату реч доле. Рецимо смо хтели тражити Туринг. Почињемо у Т, пратите га доле за низ који садржи У, и пратите га док не достигне овај мали делта која нам говори, да, нашао си реч. Јасно покушаја? Било шта да идем тамо? Да? ПУБЛИКА: Да ли симбол делта морају да заузму простор унутар три? ХАНА: Да, тако се то не догоди нужно чак ни да буде делта. Али ми треба мало пут ка реци наш цомпутер-- жао, тако да знамо да ТУР није реч. Јер рецимо нисмо имали Овај концепт делта, овај концепт од честитки, нашао си реч, било би проћи и поновити Т-У-Р, и онда кажу, феноменално, нашао сам! Мора да је реч. Али то стварно није. Желимо цео Тјуринг да буде реч. Зато морамо имати нешто у крај да каже, честитке, сте нашли легитиман реч. ПУБЛИКА: Па ако сте имали свиђа 26 слова у абецеди, да ли би заправо имају 27 кључева у вашем пробате? [00:27:24] ХАНА: Страва, да. Тако у ствари, мислим да ће бити на следећем слајду. Та-да! Где ако имате чвор у вашем покушају, ти си ће имати 27 деце уместо 26. Сва питања с тим? Да? ПУБЛИКА: Зашто покушава заузети тако много простора [неразумљиво] ас иоу го? Зашто се то сматра [неразумљиво]? ХАНА: Наравно. Вратимо. Питање је, зашто су покушава толико много већи него нешто попут хеш табели. Дакле, за сваки од ових нивоа, чак и ако они не овде дравн, морате да имате свих 26 знакова. А разлог да не можете кажу, ох, али као за Туринг, ја не морају да имају неке од оних исте ствари на нивоу У. Па, ако изненада сте хтели да додате нешто што је као Т-Х, ти би потребно да имате могућност доградње ту реч. Дакле, сваки појединачно слово, ти ћеш имати да имају гомилу низови долазе од тога. Тако да можете видети како то да се стварно велики, стварно брзо. Има ли још питања? У реду. Да? [00:28:29] ПУБЛИКА: Када су покушава бржи од хасх табела? [00:28:33] ХАНА: Када су покушава бржи од хасх табела? Дакле, ако сте имали стварно лоше хасх функција. Па рецимо да сам био као, ево ти хасх функција. Без обзира на све речи ти ми даш, увек сам ће то ставити у арраи улазак 0. И тако на крају добијамо само стављањем све у једном великом дуго повезане листе. И тако ИП адресу времена ће узети у најгорем н ако је на самом крају нашег листа. Са покушаја, само морамо да поновити кроз слова у речи. Дакле, чак и ако смо додао гомилу више речи у нашем покушају, не би нас било више да пронађу одређену реч. [00:29:09] Све што треба да урадимо је, за пример, у овом случају, рецимо тражимо зоом, ми само морати да поновити над З-О-О-М, четири слова. Дакле, то је само дужина речи зума. Није битно колико више речи ставимо у овом покушају. Ми увек можемо добити у та четири корака. Страва. Да? [00:29:32] ПУБЛИКА: Дакле [неразумљиво] је низ, зар не? [00:29:34] ХАННАХ: Аха. ПУБЛИКА: Ако сте лоокинг фор [неразумљиво], да ли бисте морали да прођу кроз Ваш низ пронаћи [неразумљиво]? ХАНА: Наравно. ПУБЛИКА: Зар то не узме више времена? ХАНА: Ако ћу кажу да је мој низ је увек Биће, Б, Ц, Д, Е, Ф, Г, бла бла бла, па ако сам увек знам да је у истом онако како је, ако Увек знам да је по абецедном реду, Само могу да кажем је О број тако и тако у писму. Само скочи на том месту. Јер запамтите, са низови, можемо приступити било елемената тог низа у константа Време ако знамо где тражимо. Да? [00:30:09] ПУБЛИКА: На претходни слиде [неразумљиво] 27, али 26 на првом. [00:30:14] ХАНА: Извини? [00:30:15] ПУБЛИКА: Није први један 0, па не би било 26? [00:30:18] ХАНА: Наравно, па када кажемо 27, то је ће дати нам индекси 0 до 26. Али ако заиста рачунати они се, то ће бити 27. Добро питање. Још нешто? Да? [00:30:31] ПУБЛИКА: Па су покушава спорији од хасх табела? [00:30:34] ХАНА: Покушава ће бити, у теорија, брже него хасх табеле али заузимају више меморије. Да? ПУБЛИКА: [неразумљиво]? [00:30:45] ХАНА: Жао ми је, нисам вас чујем. ПУБЛИКА: [неразумљиво]. 0 до 25 даје 26. [00:30:54] ХАНА: 0 до 25 би да ти дам 26, десно. [00:30:56] ПУБЛИКА: А онда [неразумљиво]. ХАНА: Тако је. Тако је број специфицирамо је број ствари у нашем низу. Дакле, ако имамо 27, то је ће нам дати 0 до 26, који ће дати нас простор за, у овом случају, Нећу укључујући призивање. Тако добијамо 0 до 25. су прва 26 слова азбуке, или свих 26 слова азбуке. А онда тај последњи ствар, на улазу 26, је Биће чек ознака, односно делта. Још нешто? Страва. Изгубио сам простор. У реду, кул. [00:31:31] Тако смо већ дотакли ово. Али велика компромис између покушаја и хасх табела је да покушава обезбедити, у теорија, константна гледај горе пута али користе пуно меморије. У реду, сада смо мало имамо мање компликоване структуре, и ми ћемо бити са Ц, а ми ћемо све одрадим. [00:31:49] Дакле книгохранилисе, видели смо ово у предавању где сте Имам нешто слично стек тацне где последња ствар коју пут на стек иде да буде прва ствар коју скинути. Дакле, то је оно што заиста дефинише стацк је да последња ствар коју на пут ће бити први ствар коју скинути. И терминологија коју користимо ако ћемо ставити нешто, ако ћемо додати нешто наш стек, ми то зовемо гурања. А ако узмемо нешто офф, ми то зовемо кокичара. А ако ћемо да спровести стацк, ми треба да буду сигурни да пратите како величина и капацитета. Тако је укупан број елемената можемо држите и тренутни број елемената да смо држи. [00:32:27] И врло слично, имамо редове. И једина разлика је уместо са гомиле, смо рекли последња ствар која нам стави на је прва ствар коју скинемо. Дакле са редовима, Прво што ћемо ставити у ће бити Прво што ћемо узети. Дакле, ово је као да си заправо гурају продавници а ти се помогао, онда прва особа у реду треба да буде прва особа која се помогне. Тако да би било ред. [00:32:52] Зато морамо да пратите величина, капацитет, а глава јер смо одржаће све са предње стране листе уместо леђа. Питања о томе? Било Ц питања која су те мучи? Структуре података, било те забавних ствари? У реду, кул. Па ћу га предати Алисон да скок у неку више програмирање. [00:33:14] Алисон: О, видећемо. Видећемо колико добро сам овде радим. Ок, ја ћу покушати и лети кроз ове ствари, момци. Хана је отишао веома у дубина на свим њеним стварима. Ја ћу покушати да дам ти брз преглед експлозија тако да можемо доћи до Давин са свима да забавни ЈаваСцрипт и безбедносне ствари да можда заправо Желим да чујем више о. [00:33:33] Ок, како је рекао Хана, ако имате питања, Идем пребрзо, молим, јавите ми. Ја ћу одговорити на питања као неопходна. Дакле за почетак, идемо да почне са Вероватно једна од првих ствари Ви научили са веб програмирање, дозволе. Дакле цхмод, ви треба да сте били мајстори у ово са свим вебу програмирање да немаш радили у последње време. То је у основи само команда да мења дозволе или дозволе о приступу од наших објеката система датотека. Наравно, да заправо види ово, да ли си има проблема са овим током ваших проблема сетовима, можда сте користили лс -л, што је дуго, да бисте добили поглед врсту овако, где сте ви видели све дозволе за датотеку. [00:34:16] И заиста, ми ћемо само да одем кроз врло брзо само лепа много шта сваки од њих значи. Тако смо д овде, који само стоји за директоријум. Очигледно овде, ми видимо рвк, која је читљив, могућ упис, и извршна. Они се такође могу представљени као бита, који ћемо ући у на следећој страници. Тако сваки тројство које смо видели овде, тако да је три Триадс. Ми смо рвк, Р ништа к и р ништа к за овај први фајл. То је ово општа структура. [00:34:49] Дакле, имамо неку директоријум. Имамо неке групе корисника са овим дозволама. Неки група која има те дозволе, и свет који има дозволу. Можете мислити од њих као тријаде. Можете мислити од ових као три бита. Тако да могу држати вредности нигде од 0 уп до 7, због чега понекад имали смо ти цхмод 600 уместо цхмод РВ шта год. Ми ћемо ући у један пример тамо. Али у суштини, можете мислити од њих као ни само рвк, или можете мислити о њима као неки Број где ова прва овде представља број од 0 и 7, ова друга представља број од 0 и 7, а трећи представља број између 0 и 7, у реду? [00:35:38] Р има вредност од 4. в има вредност од 2, и Кс има вредност 1, због чега ова дозвола овде би се цхмод 700. Јер у овом случају овде, то ми каже су први битни тамо је преврнуо на. Дакле, имамо 4 за читање. Други битни се преврнуо на за в, која је 2, па сада имамо 6. И трећи бит се преврнуо на за Кс, који је 1, тако да смо добили седам. И наравно, наша група и наш свет су сваки 0. Дакле, ово је такође еквивалент цхмод 700. И ја бих дефинитивно покушати да разумеју мапирање између оних. Нисам сигуран да ли има дошао на квизу пре, али би било Питање које сам могао питати. [00:36:18] Само мало иде чак даље у цхмод овде, овде је врло уопштен структура цхмод позива. Дакле наравно, ми смо овде цхмод. Референце, на што се односи је који ми дајемо ове дозволе за или ко су ми Судећи по томе Дозволе даље од. Дакле, имамо овде у дозволама, да смо дали сте цхмод а плус к, као што ћемо ускоро видети. само значи дати ово специфична Дозволе свима. Дајте им свима. Тако да би можда и У Плус Кс хаве или Г плус к или о Плус Кс или вишеструке истих. Тако да први део је увек Биће референце. Ко ми дајемо ове дозволе да, или који су их одузима од? [00:37:03] Други је оператер. Дакле ви сте се углавном бавили плус. Ово даје дозволе за ко год да си их дају, док минусу, логично, отклања их. Дакле ништа превише страшно тамо. А онда је Режими о чему смо причали са читање, писање, или извршавање. Дакле Плус Кс значи дати извршну Дозволе свима. И онда, наравно, на коме специфична или директоријум. У реду? Свако добро са цхмод? Није лоше? [00:37:37] Ок, тако ХТМЛ, неки од вас су довољно стар да-- МиСпаце године? Послао сам ово мојој секцији, и буквално половина људи Погледао ме је као да сам луд. И ја сам био као, момци, нисмо толико стара. Хајде. Дакле ХиперТект Маркуп Лангуаге, то је само искрено начин за вас за приказ неке ствари на Интернету. Дакле, то је језик за означавање. Није скриптинг језика. Нема логике у томе. То је једноставно да се промени начин нешто се приказује. У реду, тако да је важно разлика да. Сматра језик за маркирање, Не скриптинг језика. [00:38:12] Дакле, овде имамо наше ХТМЛ ознаке. На овом слајду су вероватно већина оне које треба да буду упознати са и бити заиста пријатно. Дакле, очигледно, имамо наш ХТМЛ тег, који означава да је све у између ове две ће бити ХТМЛ. Имамо неке везе, која Очигледно ће вам дати веза са спољним веб страници. Неки наслов, унутар наше главе овде. И ми имамо наше тело са х1, што је хеадер, тако да ћу то учинити лепо и храбар и већи. А онда, имамо неке п, што је пасус. Вероватно знате и да буду упознати са стварима Свиђа ми се како си убацили слику, су постоје неке друге класе хеадер? Ја бих дефинитивно бити угодно див. Дакле, ово има већину тагова да треба да буду упознати са. Али наравно, као и са свим у ЦС 50, списак није коначан. Зато пазите да освези то. [00:39:08] ЦСС, тако ЦСС, ако неко од вас гледа мој семинар из пре две недеље, заиста само начин како обликовати вашу веб страницу? У реду, тако да имамо неки програмски језик. ХТМЛ, која брине о само текста и где то може бити на страни. Али ЦСС заиста оно што га чини прилично. Могао си ово у ХТМЛ фајлова, али како ћемо разговарати о касније, Прилично сам сигуран да би могао бити следећи слајд, она је уобичајена пракса, и заправо пракса да смо заиста подстичу, за вас да их држати одвојене када смо говорити о МВЦ и целом том парадигме. То је стварно оно ово уклапа у. [00:39:42] Дакле ЦСС је само начин да се да ствари изгледају прилично. Ствари овде, као што су Тело и #титле и .инфо, то се зове селекторе и шта они раде је да изаберете одређене ствари у оквиру вашег ХТМЛ датотеку и примењују без обзира стил, шта год врсту ствари које желите, на дату елементу вашег веб страна. Дакле, овде имамо боја позадине и боје и породица фонта који је био примењена на оно што је у телу. Дакле, ако смо гледали овде, то не би односило на наслов. То би важило само за оно што је у овим телесним селектора, у реду? [00:40:22] Са насловом овде, ово је ће бити иста ствар, боја текста бити плаво иде само да утиче оно што је у насловна селектори. Као и информација о овде, текст ће бити розе, шта год је о, која је овде. Тако је једина ствар која би розе на овој страници је датум, понедељак, 17. новембар, 2014. Ок, па ЦСС је само начин да се имају већу контролу овер-- да? [00:40:48] ПУБЛИКА: Зашто мораш да користе хасх са насловом? [00:40:51] ХАНА: Следеће слајд, обећавам! Ми цемо тамо. Па зато морамо да користимо хасх. Тако селектори преузме три главна форме које смо причали са вама око. Ја фиоу желите да сазнате више, има доста тамо. Има велики ЦСС документација. Постоји име ознака, који се односи Уз помоћ само нормалним ознака у ХТМЛ. Дакле Х1, п, див, Х2, Такве ствари. А ми само можемо именовати оне као је. Дакле, као што видимо овде са Тело, то је нормално ознака. Тако можемо само да стави тело када говоримо у нашој ЦСС фајла. [00:41:26] Са насловом, целе разлога хаве тхис хасх је имамо оно што је сматра ИД. Дакле ИД треба увек да буде јединствен у својој ХТМЛ страницу тако да када сте мислећи на њега, ви Знам да сте само говорите на једну одређену ствар. Дакле у овом случају овде, са нашим Х1 овде, ЦС 50 преглед седница, имамо ид од наслова. Тако да би се управо обратио да комад наше ХТМЛ, радимо хасх титулу. Само по конвенцији, ИД-ови су означени са хасх испред њих. На исти начин, видимо Информације овде је класа. И тако класа са ЦСС је означен као дот класа или дот шта год да је класа. Дакле у овом случају овде, то је инфо. [00:42:10] Тако Повлачим. И једно и друго би било пинк за нашу ЦСС овде јер обоје имају класу инфо. И у нашој ЦСС фајла, ми смо означени да било шта у оквиру класе инфо ће бити ружичаста. Да ли то има смисла? Да? [00:42:27] ПУБЛИКА: Ако сте били да се све у телу белом, а онда покушати да нешто у њему плава, би да изазове проблеме? [00:42:34] ХАНА: Па је ЦСС Цасцадинг Стиле Схеетс. Дакле, шта год је према дно ће имати предност. Ако урадите нешто са телом, а ти све бити бела, а онда касније промените наслов или промените текст унутар тела, то преписује да. Тако нешто ка дно ће имати предност. Да? [00:42:56] Публика: и ИДС су јединствени, али часови могу бити? ХАНА: Тако је. Дакле овима треба да буде јединствен, а настава може погледајте што више ствари као што желите. Има ли још питања? Да. [00:43:09] ПУБЛИКА: [неразумљиво]. Питам се да ли то прави разлику. ХАНА: Жао ми је, шта је било питање? ПУБЛИКА: Има мала "Ф" и капитал "Ф." ХАНА: Па разлика између малог "ф" и капитала "П" не би требало да праве разлику. Тако "Ф" ће бити 15 Било како. Цоол, још нешто? Свако добро, ЦСС? Да? [00:43:30] ПУБЛИКА: Извини. Можете ли имате класу и идентификацију? [00:43:35] ХАНА: Да, можете. Ствари могу имати и класу и личну карту. И Топло препоручујем тестирање ове сами. ЦСС научићете најбоље само прављењем нешто, врло једноставна веб страница, израду неке ЦСС, и само види како су у интеракцији. А ти ћеш добити врло добар, интуитиван осећај за то како то функционише. [00:43:56] Ок, сви добро са ЦСС? Сви ћете направити беаутифул сајтови са ЦСС сада. ОК, најбоље праксе, само ствари које морамо имати на уму, ствари то-- зато што пристанемо ти за дизајнера и ситница. Дакле затворите све ХТМЛ ознаке. Дакле, ако имате отворен тело, требало би да постоји близу тело. Ако имате отворену став, требало би да постоји близак став. Проверите да ли је ваша страница потврђује. Ви би требало да буде веома познато са овим из п-сет седам са ЦС 50 финансија са В3 валидатор. И као што сам раније рекао, један од наших великих парадигми се одвајањем свој изглед са ЦСС из вашег добит, што је ХТМЛ. И онда, наравно, имамо овај велики КСКЦД овде доле. Ура, Цомиц Релиеф! [00:44:38] Ок, ТЦП / ИП. Између ових и ХТТП, у основи су оба протокола. Па си могао мислити од њих као скуп правила да управљају како ствари крећу преко интернета. Тако контрола пренос протокол, или Интернет протокол, је само начин да се уверите да подаци добија куда иде и да знамо да ли се икада недостајућих података. Дакле, ако ви мислите назад на предавање Пре пар недеља са Давидом где смо имали четири коверте, они су сви нумерисана као један од четири, два од четири, три од четири, четири четири, ово је само скуп правила. Рекли смо, у реду, кад год смо слањем више од једног пакета, идемо на број она са којим бројем је и колико укупно да корисник треба да. [00:45:19] А ово је само говори ко год прима податке да ли су су постале све или ако нешто изгубио успут. И они треба да на то поново. Ово је стварно само скуп правила. Тако можете мислити о томе, у реду? Такође, она наводи порт који ви можеш-- Знам током предавања, имали су целу листу портова. Али ми их немате сада овде. [00:45:41] Дакле Хипертект Трансфер Протоцол је, опет, то је други протокол. Дакле, то је још један сет правила да владају, у овом случају, како хипертекст се преноси. Тако да само дозвољава бровсера да разговара са веб сервера. И као што смо овде рекао, то је као људско руковање. То је само начин да се управља како веб сервер је ће интеракцију са вашем претраживачу. А ми имамо само пар примера. Ми имамо неке захтеве овде где ГЕТ метод. Имамо ХТТП 1.1, која је Верзија протокол за нас. А онда, домаћин, који је ста ми заправо покушавате да приступите. А онда, као што видите овде, ми мало одговор са овим 200 Ок као наш код ХТТП одговор. Имамо велику листу Идем покупити у једној секунди да ви треба да буду упознати са. И ми имамо тај тип садржај тект / хтмл, која само каже која врста података ми прима са сервера, у реду? Овај домаћин и ова врста садржаја су део ХТТП заглавља. Можете их имају врло мало или онолико мало колико неопходне за контексту онога што имате посла са. Понекад ћете имати пуно информације које долазе из вашег сервера. Можда они траже много информација од корисника. Варира у зависности од контекста. Ако погледате ЦС 50 Студи, има много више о томе. Али ми имамо много тога да се кроз, па идем да само напред ако то је ОК са вама? Цоол. Држи се. Ја дефинитивно имам да Цео списак од-- ха! Не знам зашто је то скроз овамо. Мислио сам да сам буквално преселила то док сам био ситтинг-- [00:47:15] Давин: Да ли желите да га научи? Или хоћеш да га научим? [00:47:17] ПУБЛИКА: Мислио сам да смо могли Само им показати да почне са. Мислим, можете отићи у их даље, али ја Мислио сам да има више смисла од када сам је само о ХТТП статусима. Дакле, ево цела листа. Претпостављам шта ће се десити је Давин ће ићи у њих касније. Али постоји читав списак, скице укуса да дође. У реду, идемо у блов-- ово иде да буде ПХП убрзани курс као ниједно друго. [00:47:41] Дакле ПХП, хипертекст Претпроцесор, то је рекурзиван акроним, што значи да је под другачијим именом. А онда их је, као, ово нема смисла стварно. Тако да су само по имену то-- и то је акроним, па они само то ПХП маде хипертекст Претпроцесор, која Само нема смисла. Забава прича. То је програмски језик. Дакле колико год сам нагласити да ХТМЛ није програмски језик, то је језик за маркирање, ПХП је програмски језик. Како знате да је ово јер постоји логика. Постоје Кондиционали. Имамо променљиве, а ми немају ништа од тих ствари у ХТМЛ. [00:48:12] У реду, онда имамо ово мало битни овде то је као укусом ПХП. Дакле основе, називи променљива почети са знаком долара. Много људи попут њега. Подсећа на нама новца. Све је супер. Сви ми желимо ПХП. Дакле, ми не прецизира Тип више променљиве. Утврђено је време извршавања. Тумач ће бити као, Ох, само ћемо пробости, а према контексту, Видећемо шта врста типова ове променљиве треба да имају. Нема главна функција. Ствари ће само покренути. Ви са Вашим увоза у вашем Последњи П-сет, приметићете ово. Није било баш главна функција. Само написао ста си хтео да се догоди. И то некако догодило. Дакле, то је за тебе ПХП. [00:48:56] Низови су веома слични. Ми увек имамо ову конзолу. Ево, имамо неку променљиву позвао обр, а то је једнако да-- имамо наш нормално носач нотација. И ми имамо неку кључну вредност. И велика разлика између Ц и ПХП низова је да можемо да имамо ову ассоциате-- можемо дружити вредности на тастерима. Дакле, уместо да само има низ који је индексиран по броју или положај те елемент у реду, можемо да га повезују са кључем. Где можемо рећи, у реду, шта год хоћу вредност повезана са воћа. А можда имамо воће отишли ​​у банану. Па би се вратили банану нам. [00:49:41] Али у основи, највише моћна ствар о томе је да ако ви сећате Демо од предавања где смо у основи Ревроте спеллер у ПХП, и то било-- ИП адресу било заиста баш као, да ли то кључ постоји? То је љубазно од њега моћи. Не треба да поновити кроз низ. Не треба да знате шта је то простор у. То може бити на крају или почетку. Докле год знате кључ који је повезан са вредношћу, ПХП само да пљују ту вредност враћам се на тебе, у реду? [00:50:09] И онда, ми такође само Имам само зато што смо може имати кључне вредност пар не значи да треба да. Такође можете само створити нормална низ као овде, на дну, где је само један, два, три, четири. То су наше вредности. И у ствари, њихови тастери су индекси. Тако кључ за једну би бити нула. Кључ за двоје би био један. Тако даље и тако даље, осим ако Ви експлицитно доделите кључ, можете претпоставити да вредност није само њихов индекс. Да ли то има смисла за све? Нема питања? Страва. [00:50:38] Ок, Еогеасп је начин да се поновити кроз ваше низова. Тако да имамо нешто овде, Само општа структура. Дакле фореацх, име наш низ, као год желите да позовете једни елемент у вашем низу, и можемо да урадимо нешто са тај елемент или са том вредношћу. Дакле, имамо овде пример. Имамо асоцијативним низ са ове две ставке са баром се повезује са фоо и кук се повезује са БАЗ. Дакле тастери су Фоо и баз. Вредности су бар и кук. Дакле фореацх, имамо низ Овде, као кључни вредности пара. Ово нам омогућава да приступ како кључ и вредност. Можда само желите вредност, у ком случају бисте могли да урадите као арр ас $ вредност, а затим вам су само приступају вредност као што поновити кроз. Али можда, за неке Разлог, хоћеш кључ, и зато сам одабрао овај пример уместо. Тако да заиста може манипулисати кључ и вредност у овом случају. У реду? Питање? [00:51:41] ПУБЛИКА: Ако си хтео да Само манипулисати кључ, би морате да урадите фореацх-- [00:51:45] Алисон: Тако је. Дакле, ако сте желели да манипулисати само кључ, ти би и даље треба ово синтакса јер ако вас само имају арр као нешто, као прво, то је ће претпоставити да желите вредност, не кључ. Дакле, ако сте икада само као обр као, можда је ово као $ елемент, то ће претпоставити да питате за само у вредности сваке тачке. Ако желите да експлицитно учини нешто са кључем, чак и ако не идеш на ништа са вредношћу, Потребан вам је ову структуру да ми овде имамо где сте експлицитно питате и за кључ и вредности. Велики питање. Још нешто? Цоол. [00:52:27] У реду, ПХП и ХТМЛ. О, вратили смо се п-сет седам опет. Дакле, ово би требало да изгледа мало познато. Дакле, ово је нека једноставна ХТМЛ форма да има улазну име поздрав. И ми видимо имамо метод ГЕТ. А ако се сетимо од наших п-сет, када се подноси овај облик, она шаље низ називом $ _ ГЕТ да има сви ови улаза или варијабле из облик који би требало да буде манипулисати у нашем ПХП. Дакле у овом случају, корисник би ставио у њихово име. Они то субмит. И видимо да смо се мало низ овде. Ми имамо ГЕТ низ. И ми приступају име. [00:53:11] Тако да каже, у реду, дај ми вредност која је повезана са именом, име буде кључ овде. И то мапс директно на оно што ми је рекао наш улаз име је. Дакле, ово је ти дајем кључ шта ће бити у вашем низу овде. Да ли то има смисла за све? Да? [00:53:32] ПУБЛИКА: Да ли име у ГЕТ односе на пурпурне линије у [неразумљиво]? [00:53:36] Алисон: Односи се ово овде. Дакле ово поље овде, то се односи на ово име овде. Дакле, ово би могао бити назван као телефонски број, или шта год. Ово име заправо каже, шта зовеш ову област? Како ћеш односе на ову област? И ово име је заправо воле, ми смо рекавши ово поље се зове име. Тако ћемо да јој приступе. [00:53:59] ПУБЛИКА: Тако је то изгледало, улаз име једнако Боб, и-- [00:54:02] Алисон: Добро, онда ти би добили Боба доле. Тачно. Свако кул? У реду, тако ГЕТ против ПОСТ, то су два главна начина да пролазимо податке у ХТТП захтев. Ви треба да су видели обе ове надамо. Дакле са ГЕТ, информације је прошао кроз УРЛ. Дакле, ако сте икада урадите Гоогле претраживања, ИоуТубе, ви ћете Вероватно приметити неку знак питања. А онда, све речи да сте само стави унутра. И ПОСЛЕ пролази податке у ХТТП тело поруке. Па за разлику од ГЕТ, ви некако размотрити да се подаци скривен од корисника. Али оно што је стварно важно разумети да је ово још увек баш као несигурна као ГЕТ. Аналогија волим да користим је ако имате број банковног рачуна и ти то писати на спољашњој страни коверта, то је прилично несигурно. Ако сте били да се пише по комаду папир и ставите га у коверту, то је још увек јако несигурно јер све што треба да урадите је да се отвори и погледате тренутни садржај поруке да видим. Дакле, ово је "скривена", а људи воле да Мислим да је сигуран, али то заиста није. И сигуран сам да ће Давин улазимо у то више, можда. Али то је важно разлика да и нешто заиста добро да разуме. [00:55:15] Ок, СКЛ, Струцтуред Куери Лангуаге. Све ствари које видели смо толико недавно! Дакле, то је у основи само дизајниран, Очигледно, за управљање подацима. Момци су имали доста искуства са ово у вашим столова са ПХП МиАдмин. А ту су и четири заједничке упити да желимо да знате. Тако да обнова, уметак, изаберите, и избрисати. Зато пазите да знате оне стварно добро. Идемо у го кроз њих јако брзо. [00:55:40] Дакле упдате, заиста, као што можда мислим да јесте, то само ажурира податке у бази података. Дакле, имамо овде мало примјер. Ово је општи Структура пропитивање. Тако смо ажурирали табелу да говоримо о. И ми желимо да подесите одређени вредности, одређене колоне једнака понуђене вредности. Дакле, ово само ажурира табелу, мења вредности у свим редовима у овом случају. Дакле, у овом једном овде, стварна Пример, имамо инсерт-- жао. То слајд адванцед без мене то не схватају. [00:56:17] Дакле, ово сто исправке сет кол1 једнака да ВАЛ1 где кућа једнако "Цурриер." Шта ово један ради је то само мења, она само ажурира ових вредности у одређеним местима. Дакле, у овом првом, мења ово вредности за све у оквиру својих табели, У реду? То се неце променити ово колона за сваки појединачни улазак, за сваку ред. Али то где, можеш мислите о томе као квалификант. Тако да ће само да се промени она у веома специфичним местима. Дакле, у п-сет седам, када вас мозда упдатед количину готовине да је ваш кориснички имао, вероватно имали неки где ИД једнако ИД сесије, зар не? [00:56:53] Јер ниси хтео да промените износ готовине за сваку особу која је користио свој сајт. Хтео си да га промените за један нека особа, та особа је ко год је био да га користите у то време. Зар не? Ок, па убаците, уметак одређене вредности у табелама. Ово је као кад си стварање потпуно новог корисника. Општа структура овде се убаците у било сто говоримо о. Вредности, битак вредности које ми заправо желимо да убаците. Ок, како видимо овде, ми су убацили у табели. Ово је специфична колоне са њихови кореспондира вредности. Дакле, ово каже, убаци Нови ред садржи Вредности вал1 и вал2 под ови посебни колоне. [00:57:33] Па можда желите само да попуните од половине ствари у овом реду. То је оно што овај део овде вам омогућава да урадите. То вам омогућава заправо одредити који део. Да? [00:57:44] ПУБЛИКА: Можете ли само [неразумљиво] ћелија у низу [неразумљиво]? [00:57:52] Алисон: Ако само попуните поједини делови вашег ред, остатак тих ћелија су само празне. Све док их дозволити да бити празан, то није проблем. Ако покушате да им приступите, то је ће вратити неке празне елемент. Али важно је да се зна да у неким табелама, они морају бити дозвољено да буде нула. Можда сте налетео на Проблем током п-сет јер ми нису дали од ваше вредности бити нулл. Али можете да одредите опционо вредност у вашем столу. [00:58:26] Ок, изаберите, па ово је само начин да се специфични подаци из табеле на неки идентификатор који желите. Дакле изаберите звезда од стола где цол једнако нешто само значи, дај ми све податке везане где је овај специфичан колона је истина. Дакле звезда у овом случају ће врати читав ред да вас, у реду? [00:58:49] А онда, у овом случају, изаберите звезда из сто само вам даје целу табелу. А онда, избрисати очигледно, само брише ред са стола. Дакле делете од стола, шта год сто смо упућује, где су неки специфични идентификатор или неки услов је истина. Да? [00:59:07] ПУБЛИКА: Питање. Зашто користите двоструко цитати, и да ли вас урадите наводнике или сингл цитати, да ли то нешто променити? [00:59:13] Алисон: Двоструки наводници или појединачни цитати не прави разлику у СКЛ. Мислим да сам видео још једно питање. Да? [00:59:20] ПУБЛИКА: Зар не утиче шта бива побегао из упита? [00:59:25] Алисон: Роб? [00:59:27] РОБ: Шта мислите под побегао из упита? [00:59:31] ПУБЛИКА: Ако неко има сингл питање у облику од-- [00:59:36] РОБ: Ако би неко стави само један цитат у, онда док сте санитизинг Ваш унос, онда није битно. Али ако користите један цитат и ви сте погрешно побегне ваше уносе, онда да, они треба ставити само један цитат како би се прекинуо Ваш код. ако користите двоструки наводници, они треба да ставе дупло цитирам разбити свој код. Али докле год ти да побегнеш ствари правилно, то није битно. Само ће превести на исправни симбол ионако. [00:59:59] ПУБЛИКА: Шта значи бекство? Алисон: Па, као санирање и бекство. Испит да имамо, велики КСКЦД стрип да подигне где имате, Ох-- РОБ: То је последњи слајд. Алисон: То је последњи слајд, стварно? Ох ми год. Ево нас, савршено. Ок, па у основи, можете ињецт нешто у том СКЛ упита где се ломи твој код, или као Дејвид је показао у класи, ако имамо неке сингл цитирај 1 једнак 1 и ако у нашем коду, управо смо директно цопи то у, и имамо крајњу ниједан цитат, оно што се дешава је добијамо неки израз који оцењује да тачно да ће нека неко ући у нашу базу података и добити податке које смо не желим да се. Дакле санитизинг инпута само значи пазећи да смо беже ово ликови и да их одреди као карактера и нису ствари које треба дозволити треба схватити дословно као наш СКЛ наредби. [01:01:04] Тако велика ствар што смо рекли да ви треба да буде користећи били ХТМЛ специјални карактера, која је нешто да би желите да погледате. Ок, делете. Типови података, то ће све бити на мрежи. Пошто смо 15 минута, ја сам Само ће ићи кроз ово. ПХП и СКЛ, у основи то је Управо смо имали функцију да упита помогла у заштити од ови злонамерни напади. Дакле, кад год користите упит, ми смо водећи рачуна да су се ствари санитизед и шта све не. [01:01:36] ДСЦ је само парадигма дизајн, тако модели, поглед, контролер. То је само начин да се ствари лепо и разишли на исти начин да смо склони да фактор од кода у функцијама. Ово је само веб дизајн оквир који вам омогућава да уради исту ствар. Идем да прескочите ово. [01:01:54] Ово је нешто што сам било би супер навикао. То је велика мало сто тамо. То вам даје функцију Пример модела. Само ћу кроз ово зато што Стварно желим да Давин моћи да разговарамо. Ако имате било каквих питања, слободно. Ја ћу бити овде после. Само то да разговара са мном. Уз то, имамо ХТТП статусе. И Давин иде експлодирати кроз ово за 15 минута. Ово ће бити супер. [01:02:17] Давин: У реду. Ух, твој микрофон? Да. Извините. Алисон: Пут да се припреми. Давин: Не, ја сам спреман. Спреман сам. Хајде да урадимо ово. То је спреман. У реду. Извините. Ја просуо кафу на себе. Ја не знам да ли сам више узнемирило да изгледам глупо, или да ја више немам кафу. У сваком случају, само брзо најава о стања момци имају. Дакле, ово што ви имате, лист није званичник шта је на квизу. Ово је званична шта је на квизу. Такође, на сајту, ми реците ви, у реду, то ће бити на квизу. Дакле, у малој Цхеат Схеет имате, не званичник. А ту су и грешке на њему. Тако себе да не само слепо га користе. Тако да, то је то. Па хајде да у овом веома брзо. [01:03:05] Дакле ХТТП статуси. Шта се дешава када сајт, све је у реду. Све је у реду. Све се враћа сте како сте желели да. Добијате 200 ОК. 301, где смо видели да 301 раније? Чекај, шта има? Извините. Видели смо и лимени предавање током безбедности. Дакле током безбедности, па ако Дејвид откуца хттп а затим покушао да оде у цс50.нет, Ви ћете видети 301 преселили. Зашто? Зато што ће преусмерити ви аутоматски нашем ХТТПС. [01:03:35] Дакле 301 преселио, само то је основи преусмеравање. А можете мислити о томе овако. Било која од статуса који почињу са 2-их, они су као, у реду, све је ОК. Било која од статуса који почињу са 3, то су преусмеравање. Статуси који почињу са 4, то значи постоји нека врста грешке клијента. Статуси који почињу са 5, То је нека врста сервера грешке. Тако да некако раскинули су статуси тако. Дакле 304 не не модификовани, тако у вашем сервер.ц п-вртове, па хајде да те кажем лоадед цат.хтмл. Све се враћа, добијате 200с, ОК, супер. [01:04:03] Рецимо да је освежио. Па, унутра да цат.хтмл, имате ЈПЕГ. Па, то није ЈПЕГ ће се поново учита. Не идеш да поставите други ГЕТ захтев на сервер, и онда се све те информације назад. То ће само бити-- да слика није ће бити сачуване на вашем рачунару. И тако да слика ће бити 304. Тако да то није измењена. Ако се постепено гасити, јасно колачићи, а затим освежите и покушати да учита ту страницу Опет, ви ћете видети 200С. Не идеш да видим тај 304. [01:04:28] 400, лоше захтев, реални брзо, као да вас ишли за слање ЈСОН објекат на сервер и ваша ЈСОН објекат је био нетачан, видећете нешто слично. 403, забрањено. Када би сте видели забрањено? Вероватно Вероватно? ПУБЛИКА: Промена дозвола. Давин: Промена дозвола, да. Значи нисте поставили Дозволе исправно. 404, није пронађен. То једноставно није било. Дакле, ако откуцате у погрешном УРЛ. 500, Интернал Сервер Еррор, сервера Вероватно није исправно подешен. Нешто није у вашем крају, али нешто на страни сервера. И 503? Много људи видели 503с у последњем сету. П- Када би се то десило? Чуо сам шапат. [01:05:05] ПУБЛИКА: Кад Гоогле одлучи да си робот. Давин: Да, када је Гоогле одлучи ти си робот, добијате 503с. Дакле, то је преоптерећења. Ако сте тражили са сервера превише, то је обично привремено. И већина вас то приметио. Дакле, видели сте 503. Можда сте мало узети Пауза, онда 503с отишао, и све је било у реду. [01:05:20] ГАБЕ: Реал брзо, када се ви добити 500 у вероватно ово последњи проблем сет? Да? [01:05:27] ПУБЛИКА: Обично ако сервер има датотеку загубљен или [неразумљиво] њиховог Машина [неразумљиво]. [01:05:34] ГАБЕ: Па можда је конфигурација питање у вашем ПХП на вашем серверу. Али можда је баш нешто као и зарезом да је ваш заборавило. Ако куцате ПХП, нека нетачна синтакса Можда ти тако нешто. У реду? [01:05:46] Давин: Кул. Да ли желиш да урадим само до АЈАКС? [01:05:51] ГАБЕ: [неразумљиво]. Давин: У реду. Па шта је ДОМ? Шта ДОМ станд фор? [01:05:55] ПУБЛИКА: Доцумент Објецт Модел. Давин: Лепо. И зашто ми се свиђа? Страва. Право, па њега само нам омогућава да приступ ХТМЛ, приступ нашој страници веома брзо. Зашто? Јер смо лечење наше страна, лечење наше ХТМЛ ознаке, све лечење као да су објекте. Ако смо их третирају као да су објекти, онда шта да радимо? Па, можемо назвати функције њих. И ово је важно зашто? Па, зато што идемо користити Скрипта да би сте ажурирати наш ХТМЛ, ажурирати ове објекте. Дакле, ако смо их третирамо као објекти, онда можемо назвати функције њих. Идем да уђу у ово мало више када одем у ЈаваСцрипт, али сви смо видели као доцумент.гетЕлементБиИд. Дакле документ је твој елеменат, гет елемент по ИД, тако да ћемо да погледамо за неке ИД у ХТМЛ таг. А онда, можете да урадите нешто друго на то. На пример, као доцумент.боди, онда можете додати дете. Значи да ћеш наћи тај документ. Имате документ. Идеш да пронађу тело. Нашао си тело. А онда, ти ћеш позовите неку функцију на њему. Дакле аппенд дете, а можете додати неки ХТМЛ на крају унутар вашег тела. Дакле, у основи, само си третирате као објекат. Ти лечење ХТМЛ ознаке попут неког објекта. И то га чини врло лако и брзо проћи кроз њих. Али ти омогућава позвати функције њих тако да можете манипулисати и мењају елементе. [01:07:04] ГАБЕ: Имајући у виду ову, зашто је ЈаваСцрипт таква лепо језик за интеракцију са ХТМЛ? Шансе су, када су људи одабиру језик за бровсер, за клијента, ЈаваСцрипт је стварно лепо, стварно је добар у руковање предметима. А објекти су некако волим предмети који се појављују у ХТМЛ, тако да је врло лако за ЈаваСцрипт да раде такве руковања. Давин: Лепо. Дакле овде је само један пример. Тако да мислим на прошлогодишњем квизу, или можда пре две године, ми питао вас да креира стабло. Дакле, ово је управо оно што би урадио. Тако да почне са документом. А онда сте у основи само погледајте тагова. Дакле, ако се осврнемо, ми почети са ХТМЛ таг. А онда, добијате трагове о томе како да ово на основу увлачења. Тако шеф некако се грана. Унутра глави, имамо друга ознака за титулу. Тако онда, имамо титле таг. А унутра да, имамо неку жицу. И тако ми представљамо стринг у круг. И сви су ознаке у трговима. [01:07:54] А ако погледате, ако смо ми мисли о овоме као дрво, и рецимо да је ХТМЛ родитељ, онда главе и тела ће бити браћа и сестре. Они се и бити деца у том родитеља. Значи зато што су оба браћа и сестре, они су Биће некако поред једни другима у нашем моделу стабла. А онда, у основи уради исту ствар. Дакле није тешко, али ми смо питали Питања као ово на квизу. ГАБЕ: Да ли ико Имам питања до сада? Да ли је добро? Давин: Кул. ЈаваСцрипт, ОК, добра ствар. Дакле ЈаваСцрипт, шта је ЈаваСцрипт? Па, то је ЈаваСцрипт је-- компликовано, али они су неке од најважнијих догађаја да треба да имате на уму. Прво, то је лабаво откуца. Шта то значи? Дакле ПХП био-- да, шта има? [01:08:35] ПУБЛИКА: Не морате да изричито стање који тип променљиве је. Давин: Савршено. Дакле, он је рекао да не морате да изричито тип променљиве. То је потпуно тачно. Дакле, у Ц, ако сам имао ИНТ И једнако 50, онда у ПХП, то је само овако, $ и, једнако 50. Затим у ЈаваСцрипт, шта би било позив? Вар, зар не? То би било као вар једнако 50. Али не морате да се као, у реду, то је инт. Ок, ово је стринг. Нема потребе за тим. То је тумачити језика. Дакле, шта то значи? [01:09:04] ПУБЛИКА: Не саставио. [01:09:06] Давин: Шта не саставио значи? Да? [01:09:11] ПУБЛИКА: Немате репрограмира код да се она спремна за компјутер да га покренете. То је само узети у време извршење и рачунар [неразумљиво]. Давин: Да, тако да ће пролазе преко преводиоца. Али ти си потпуно у праву. Тако да никада идеш да сам саставити, зар не? Када сте радили ваш ПХП и ЈаваСцрипт код, никад ниси звао саставити. Никад ниси звао нешто слично Бренд или било шта слично. То је зато што тумачи. Тако сваки пут пролази кроз бровсер, пролази преко преводиоца. А то ће га тумаче Само у реалном времену одмах за вас. Па шта су неки позитивне и негативне стране морате имати протумачити језик и има преведени језик? Дакле цомпилинг-- да, шта има? [01:09:50] ПУБЛИКА: Интерпретед је спорији. Давин: У ком смислу? [01:09:57] ПУБЛИКА: После тебе састави, немате да уради додатне кораке да изврши она, док овај [неразумљиво]. [01:10:04] Давин: Тако је, савршено. Па шта си рекао је у основи то састављање, када преводите, имате Много који утичу трошкова, зар не? Идеш у сам саставити. Али након што сам саставити, компајлер ће га оптимизовали. То ће бити брзо. То ће у основи бити тако брзо као што може бити. Са тумачење, никад има ту директна улагања. Уместо тога, то ће бити нешто спорији сваки пут када га тумаче. А ти ћеш морати да тумаче га сваки пут. Тако уместо да ово једном трошак, сад си морати да га тумаче сваки пут страница чини. [01:10:29] Дакле преводиоци су добри јер не морате да га саставе, али они су лоше у томе сваки Тиме Тхе страница учита, то је морати да тумачити овај ЈаваСцрипт. И то ће покренути нешто спорије него ако сте били да га саставити. Омогућава вам да комуницирао-- ох, чекај. Користе за манипулацију Садржај и изглед. Управо смо разговарали о томе. Она користи ДОМ. АЈАКС, ми ћемо ући у АЈАКС у мало. И онда, то је клијент страни. Дакле ПХП је сервер страни. ЈаваСцрипт је клијент страни. Који су позитивни на то? То је, каже. То је брже, зар не? Зато што не мораш-- је брже. Не морате да комуницирају са неким другим уређајем. Ако сте само на вашем клијент, ти никада ниси морати да одем и види шта је на серверу а онда јави или нешто слично. Тако клијент страни има тенденцију да бити мало брже. [01:11:15] ГАБЕ: Да, али ово не значи ПХП је брже него ЈаваСцрипт или нешто слично. Они воде некако у исто Брзина јер су обојица су тумаче језици. Оно што је спор Овде је захтев. Дакле, ви у ствари идете скроз у Бразил да се неке информације да живи тамо. Али ПХП и ЈаваСцрипт, они некако покренути у истом брзином. Није да је неко брже од друге. Ово, такође, трик питање овде. Дакле ЈаваСцрипт никада постаје Машина код, тачно или нетачно? [01:11:47] ПУБЛИКА: Нетачно. ГАБЕ: Нетачно. Она мора постати мацхине Код јер машина код је Једино што машина разуме. Иако није саставио, ипак постаје машина шифра јер преводилац је само програм који иде ред по ред и трансформише тај ред у нешто рачунар разуме. У реду? Цоол. [01:12:08] Давин: Ево само једна основна Хелло Ворлд ЈаваСцрипт програма. Тако да не знам да ли- сте видели ово. Али само би требало овде ХТМЛ. И уместо да ствари стављање ЈаваСцрипт у сценарију тагова, па нормално да га стави у главу. Имате скрипт ознаке. Ти га баци тамо. Све смо урадили овде је да смо повезани у-- тако смо повезани у ЈаваСцрипт датотеци овако. А ви сте сви урадили ово, зар не? Дакле, када сте користили јКуери и ундерсцоре.јс у последњој п-сет, немате тона код горе у твој сценарио ознаке, у твојој глави. Могли сте то урадити, али уместо тога ти само његово повезивање у. А ти га повезују у баш као и ти са ЦСС. Дакле, само олакшава тако читати Ваш број није као дуго 1,000 линије са тона функција које можда нећете користити. [01:12:52] Уместо тога, само га повезати у. То је цомпартментализес. То је као писање неке хеадер датотеку, и онда укључујући ту хеадер датотеку у Ц. Мислите о томе баш овако. Па шта то радим? Па, ово ће покренути. То ће упозорити. Значи да ћеш добити мало поп уп који се зове Хелло ворлд. Брзо питање, само разум чек, тако да овде види у телу, кажу тело, ХТМЛ овде. Шта долази прво? Да ли видим тело, ХТМЛ овде, или да прво видим упозорење? [01:13:19] ПУБЛИКА: Узбуна. [01:13:20] Давин: Тако је. Он каже узбуна. Зашто? [01:13:22] ПУБЛИКА: Зато вас иди од врха до дна. [01:13:24] Давин: Да. Савршено. Тако он каже, ти иди из врха до дно, која је апсолутно тачно. Идеш да иде од врха до дна. И у ЈаваСцрипт, јКуери, имате функција која је као онЛоад, или спреман, и да каже, у реду, сачекајте све ове ХТМЛ учита. А онда, позовите ЈаваСцрипт. Јер ми не да имају овде, Прва ствар која ће се десити је да ће ићи од врха до дна. То ће погодити да јс позовите, то ће упозорити. Након тога кликнете на дугме ОК, да узбуна нестаје. Онда ће то показати Ви тело ХТМЛ овде. Лепо. [01:13:54] Ок, па само јако брзо, писање у ЈаваСцрипт је супер брз. Да би се прогласи променљива, вар име. Дакле, у Ц, имате инт и, имате да прогласи каква типа је. ПХП, $. ЈаваСцрипт, вар. Разговарали смо о томе. У реду, идемо. [01:14:11] Лоопс, иста ствар. Иста ствар. Декларације Фунцтион, тако баш као што сте видели у Ц. Једино што разликује је тако када дођете до друге програмске језике, као кад узмете 51 следећег семестра а ви радите са оцамл, можете бавити анонимних функцијама. Дакле, то је управо оно што овде имамо. Дакле, желите да ставите у збиру, нека врста сум вредности. Али ти само можда то раде једном. Дакле, не желите да га зову функција Збир, му дати изјаву функцију. Уместо тога, само га користити као анонимни функцију. И ти си се ово много. Видећете пример ово за пар слајдовима. Да, видећемо. ГАБЕ: Добро питање. Када би желите да користите анонимни функција овде? У основи, када желите нешто, као догађај, да се догоди. Дакле, када је миш цлицкед, на пример, желите нешто функција да се зове. Тако да прође на догађај претовар, прођете на догађај, врста, функција која желите да се зове. А шта ти пролази је као, на крају дана, само показивач на да је инструкција, функцији. Дакле није као ти пролази цео број, као што показивач на функцију. А онда, када неко кликне миш, онда то бива функција зове. [01:15:17] Давин: низови, тебе тако имају арраи декларацију. Затим, низ ставити ствари у. Стварно брзо, шта ће ово одштампати? Шта ће бити трећи елемент? [01:15:31] ПУБЛИКА: "ЈС". [01:15:32] Давин: Добро, било би "ЈС." Чекај, вратимо. Шта је дужина? [01:15:37] ПУБЛИКА: Три. Давин: Три, зар не? Управо оно што ти мислиш. Ок, сад иди. Низови, можете додати ствари на њих. Тако да можете ићи даље њихови почетни границе. Само нешто треба имати на уму. ПХП, ЈаваСцрипт, они су мало мало више прашта у смислу ствари тако. Објекти, веома налик Структуре у Ц, много као асоцијативних низова у ПХП. Сви сте имали искуства са овим. Дакле ЈСОН, кад пролази ЈСОН напред-назад у п-сет осам, То је ваш циљ. [01:16:03] Тако да, пример, врло брзо пример. Ево објекат. Начин на који помињете ово објекат, па само јако брзо, рецимо да сам хтео да пронађу , ОК, шта је курс? И тако име објекат овде је ЦС50. И онда кад бих имао асоцијативним арраи, како бих ја то урадио? Ја ћу бити користећи кључ, зар не? Тако да имам име низа. Имам брацкет, цитате, кључ, енд цитати, крај носач, а да ће референца која Елемент у мојој асоцијативно низа. Како да референцирана Наравно у мом објекту? Да ли неко зна? [01:16:39] ПУБЛИКА: [неразумљиво]. [01:16:40] Давин: Шта има? ПУБЛИКА: ЦС50.цоурсе. Давин: Тако је, да. Тако ЦС50.цоурсе. Дакле начин ви спомињете ствари унутар објекта је ЈСОН са тачком. [01:16:48] ПУБЛИКА: Можете да користите и низа синтаксу. [01:16:53] Давин: У реду, у реду. [01:16:54] ГАБЕ: Можете да користите и ЦС50 брацкет, стринг, као под наводницима. ПУБЛИКА: Мислим да је идентичан ПХП. ГАБЕ: То је иста ствар. Давин: Добро! Али видећете ове друга места. Да, тако настави. То је оно што сам управо рекао. Тако се у ЈаваСцрипт јКуери пример. Дакле, ово је мој ДОМ, зар не? Стварно брзо, тако да имам глава, здраво свет, тело. Имам дугме. Пише "пусх ме," па желим да га гурати. И ја желим да урадим нешто када је кликнуо. Право, поред. [01:17:31] Право, тако да је ово мој ЈаваСцрипт. Дакле јКуери је само лакше начин да се напише ЈаваСцрипт. Дакле ово, а шта ћу показати ти си следећи, ће бити јКуери, су идентични. Дакле, они ће радити исте ствари. Само јКуери има тенденцију да буде мало лакше. Људи су склони да воле га више. Има доста функционалности. Дакле, људи имају тенденцију да користе јКуери. Сви сте користили јКуери у последњем п-сет. Па шта ће то учинити? Шта ће ово ЈаваСцрипт-- тако ово је само обичан ЈаваСцрипт. Шта ће то учинити? Шта ће урадити? [01:18:03] Дакле, прво, видиш прозор онЛоад. Зар не? Дакле, ми нисмо то прије видјети. Дакле, ово ће чекати све док се цео прозорске оптерећења. Тако да ће чекати до ХТМЛ, све слике оптерећење пре него што ништа не ради. Рецимо наш ДОМ учита. Све је ту. Онда шта ће се десити? Да? [01:18:19] ПУБЛИКА: појављује Батон. [01:18:22] Давин: Дугме је већ тамо. Да, тако је већ тамо дугме. Али ово ће да каже, Ок, ако кликнем на дугме, тако је већ дугме Ето, тако ХТМЛ таг. Чекај, вратимо брзо. Овај таг право овде је Биће већ дугме. Већ постоји дугме. Али онда, ЈаваСцрипт ознака, овде, пише, у реду, ја желим да се елемент по ИД, па дугме претраживање само каже, у реду, ја желим да мапира ову променљиву на то дугме. Дакле, то је само променљива лакши начин да приступите то дугме. И ја кажем, у реду, ако кликнем да дугме, па ако кликнем тај елемент, а овај елемент се односи на дугме, ако га цлицк, онда желим да позовем функцију. Овде је један од оних анониман Функције смо говорили. [01:19:03] Само позовите неку функцију. Унутар те функције, у основи нешто што смо видели много, упозорење. Ви кликните на дугме за претрагу. То ће у основи имати дугме. Ти кликните на њу. Ти тај узбуну. Кс напоље. Тако је. Да? [01:19:16] ПУБЛИКА: Па ако ставите скрипта [Неразумљиво], скрипта ознака у ХТМЛ? [01:19:21] Давин: Можете да ставите скрипту ознака право у главу јер имате ту онЛоад. Такође је да имате клик. Тако да ће чекати до кликнете за нешто. Али онЛоад је за сваки случај, да се да све оптерећења у ХТМЛ унапред. Да? Хоћеш да кажеш нешто? [01:19:40] ГАБЕ: [неразумљиво]. Давин: Да. [01:19:42] ПУБЛИКА: Па онЛоад Избегава дефинисање променљиве дугме за претрагу од само кажем доцумент.гетЕлементБиИд Претрага дугме дот [неразумљиво]. [01:19:49] Давин: Дефинитивно, али онда Ваш стринг само постаје огроман. Тачно, тако да је ово само да олакшавају за вас, да. Да? [01:19:56] ПУБЛИКА: Где смо урадили створити виндов.онлоад? Или доцумент.реади? [01:19:58] Давин: Да, ту је. Да, ту је, проверио сам. [01:20:02] ГАБЕ: Не за њих да брине о. [01:20:03] Давин: Ок, па идем Ионако да ти кажем. Дакле, у основи, само уопштено, тако виндов.онлоад чека ваше ДОМ, све Ваш ХТМЛ, оптерећења. Она чека да своје слике оптерећења. Она чека док се све оптерећења. доцумент.реади, само чека ваше ДОМ оптерећења. Када ХТМЛ је све ту, некада Ваш ДОМ тамо, почиње да тече. То је једина разлика. [01:20:23] ГАБЕ: Брзо разум провери овде. Дакле, ово се може видети некако као линију кода, зар не? Зато што је виндов.онлоад једнако гомилу ствари. Када ЈаваСцрипт чита ово, истина или лажна, функција бива погубљен. Нетачно. У реду? Шта се дешава овде, ти само у пролазу ова функција као анонимни функције да виндов.онлоад. И онда када се иде да стварно се погубљен? Када се прозор оптерећења. То је догађај. Дакле, то је иус Т ствар да смо говоримо о раније, зар не? Дакле, када се догађај деси, Функција се дешава. Иста ствар са онцлицк. [01:20:59] Давин: У реду, тако неко узео далеко доцумент.реади. Али то ће бити тачан саме-- ПУБЛИКА: Знак долар, то је доцумент.реади. То је пречица. [01:21:07] Давин: Ох, то је? ОК, па је ово средство доцумент.реади, пречица. Али ово је исто као виндов.онлоад осим тог малог разлике Рекао сам ти за. А ово је јКуери. Дакле, ово је потпуно исти ствар-- ово је Јава-скрипта. Ово је само- неки људи мисле о томе као још мале тежине, елегантан верзија да има пуно функционалности да вероватно ћете користити. Дакле, ово ради исту ствар. [01:21:34] Тако ствари да некако указати. Дакле, у другом примеру, имао доцумент.гетЕлементБиИд, тако да смо имали оволико дуго стринг који ће добити елеменат било којим ИД има. То је замењен овим позивом овде. Па видиш знак долара, онда видите цитат, хасхтаг. Хасхтаг је увек селектор. Каже, ОК, ово има везе са личном картом. Шта је селектор за класу? [01:21:56] ПУБЛИКА: Дот. [01:21:57] Давин: Дот, зар не. Ако сте само тако да изаберите ознаку, шта је то? То је само ознака, тачно. А ти би могао користити да овде, као добро. [01:22:05] ГАБЕ: И по тагу, мислимо као див, на пример, или главе. [01:22:08] Давин: Или тело или п или нешто слично, да. Дакле овде, у реду, уместо да кажете доцумент.гетЕлементБиИд, ово је само иста ствар. Само у јКуери, то је краћи. Тако да је једноставније. Тако онда, нема више онцлицк, само кликните. Функција јКуери, позовите ову функцију. Алерт је потпуно исти. Тако да је мало мањи, или мало краћи, а литтле бит-- људи мисле мало је лакше писати напоље, мало лакше разумети. Али ово је јКуери. Много људи се мало збуњена и забринута и они мисле, у реду, јКуери се разликује од ЈаваСцрипт. Морам да се сетим тих две различите ствари. Није. Мислим, то је другачије синтаксе. Али јКуери је ЈаваСцрипт. То је само наизглед боље верзија која Можда би било лакше да Разумем да људи користе. ГАБЕ: Да, да буде искрен, то знак долара да видиш у јКуери, то је само назив за функцију коју јКуери дефинише. То не мора ништа посебно. Да ли је то је само назив функције, Само вас могао дефинисати доллар сигн. [01:23:03] Давин: Да, тако је говорио о томе. Неке корисне ствари. Гледао сам вратио на старе квизова. У протеклих неколико квизова, они су морали да користе овакве ствари. Тако доцумент.реади, тако уверите да је све лоадед пред вама да радимо ствари. Изаберите личну карту, или одаберите класа, то би само бити цитат дот мало класе, Крај цитата. Субмит, па ако сте подношењем и позив ова функција након форми подноси. Вредност, па рецимо да сам имао форму подношење, као корисничког имена, е-маил, год. Имао сам оквир за текст. Тако куцам у тај оквир за текст. Па, ако желите да добијете вредност из те оквир за текст, можете користити дот вал. А онда, овде, дот ХТМЛ је иста је као документ дот гетЕлементБиИд дот иннерХТМЛ. Тако да ће да се врати Ви ХТМЛ из тог ИД. Ево, ви само користите неки ИД или шта год дот ХТМЛ. То ћу ХТМЛ том елементу. Ако сте хтели да онда промијенити ХТМЛ, можете га проћи нешто. Тако да би било као дот ХТМЛ, а затим унутра, цитати, нова ХТМЛ или нешто. [01:24:05] ГАБЕ: У реду, тако АЈАКС. Стварно волим да разумем АЈАКС стварно добро. Тако сам вам желим људи до разумем АЈАКС стварно добро. Јер ако, ти прилично иде да разуме све што има везе са ХТТП, ПХП, Јавасцрипт јер свега тога долази заједно у АЈАКС. АЈАКС није језик. АЈАКС је техника. И то користи пуно различитих алата. АЈАКС означава асинхрони ЈаваСцрипт КСМЛ. Дакле метод, језика, подаци. [01:24:36] Тако главног језика који користимо у АЈАКС да покрене све и за руковање све касније је Јава-скрипта. Зато се она односи Веома близу ЈаваСцрипт. А онда је асинхрони јер ми то не радимо одједном кад смо учитавања странице. Ово је ствар што можемо радим ствари некако паралелно. Основна идеја АЈАКС је да желите она добити одређене информације. На пример, када куцате ново корисничко име када региструјете корисничко име, моје корисничко име је абц123. А онда, на крају облик, морате да кликните на Пошаљи. И то је морао да оде на сервер, а затим проверите да ли у бази података, абц123 је већ тамо. И ако је већ ту, каже, корисничко име већ у бази података. И они, морате попунити од целог форми поново. И било је заиста, заиста лоше. [01:25:23] А онда кажу људи, Ок, зашто не можемо једноставно уради мали ХТТП захтев да само провери да видим да ли ово упутство је у бази података пре корисник је морао да субмит цео образац? Тако на пример, када корисник заврши куцање абц123, идемо на сервер мало битни и само се прави или лажни са сервера се видјело да то је важећа корисничко име или не. У реду, тако да је један од главних усес оф АЈАКС-данас још увек. [01:25:49] Давин: Па јако брзо, у Ајакс позив у јКуери, Ви може да значи и да вас Желим да то буде синхрона. Не би требало да урадите. Али ти то може. И ако јеси да, шта би се десило? Па, на пример, када сте геттинг вести или било шта, Ваш претраживач је само чекати док се то не заврши цела позив уместо да радите друго ствари одмах после вас кликните на њу. [01:26:14] ГАБЕ: Није више пролази. Ох ми год. Извини! Да. "У прошлости, клијент треба да захтјев Целокупан садржај веб сајта. " То је оно што сам рекао. То нам омогућава да пошаљете додатни ГЕТ или ПОСТ захтеви без потребе то релоад нашу бровсер. Тако на крају дана, ми смо заправо чинећи ХТТП захтеве овде користи ЈаваСцрипт. Јер пре, само смо користили ЈаваСцрипт да промените ХТМЛ који већ дошао. А сада, можемо га користити за интерфејс са веб серверима као. Начин на који се дешава је имамо клијента. Давин је клијент. И он има сву ЈаваСцрипт приказују јер ХТМЛ је глуп. ЈаваСцрипт је паметан. Дакле Давин Давин има његова паметна део и његов глупи део. Он ће користити свој смарт део сада. Он ће користити ЈаваСцрипт захтеву, на пример, било абц123 је у база података или не. [01:27:04] Дакле Давин, молим, само пошаљите ми ХТТП захтев. Хвала. Тако је само послао ХТТП захтев. Видиш то? А то је само на исти начин да је сваки ХТТП захтев послат. Претраживач Гоогле Цхроме или нешто, је идемо да видимо да Давин је покушавајући да пошаље ХТТП захтев, ће помоћи хм мало. А то ће ићи све до серверу. Сада, сервер ће имати ПХП овде, или било који други језик. Баш као у нормалном ХТТП захтев. То је прилично нормална ХТТП захтев. [01:27:31] А онда, сервера ће рећи, у реду, Давин жели да провери да ли ово абц123 је у бази података. Иди разговарај са моделом. Модел каже да није. абц123 је добра корисничко име. А онда, веб сервер ће користите ПХП да пружи неку врсту датотеке. То може бити буквално само фајл да садржи "да" у њему, или "не, или нешто слично. То може да буде било који фајл. [01:27:54] То може бити као да ћу да послати Давин слику патка ако је у бази података и послати слику хрчка ако то није у бази података. То би било некако глупо, али ће радити. Ок, па сам послати патку на Давин. Давин добио патку. А сад, ко ће за руковање патку? Паметан део Давин поново, тако ЈаваСцрипт, зар не? ЈаваСцрипт је послао Захтев, и ЈаваСцрипт ће да прими захтев и тумаче га у неком облику. [01:28:22] И у том смислу, то ће кажу, у реду, ако патка онда сам добар. Ако хрчка, онда идем да кажем, већ не, корисничко име постоји у бази података. Али обично, ниси ће послати патку. Идеш да пошаљете нешто мало паметнији. А шта ми користимо је КСМЛ. И још недавно, користимо ЈСОН. ЈСОН је само скрипта Објецт нотација, која је у основи добијате Цела ЈаваСцрипт објекат. А ти си то ставила у фајл, баш као да ЦС50 објекат који сте видели. Ти га стави у датотеци, и ти га послати преко до Давин. [01:28:53] Дакле, у овом случају, ја бих направи ЈаваСцрипт објекат и само да кажем, корисник постоји, да. Или корисник постоји, не. И га послати назад у њега. А зашто ЈСОН? Јер особа ко прима је ово ће користити ЈаваСцрипт за руковање одговор. И ЈаваСцрипт функционише тако добро, јер то се зове ЈаваСкрипт објекта нотација. Зар не? Дакле, он само може назвати функцију и добити ово лепо објекат од одговора. А онда, он ће знати да ли да је корисник у бази података или не. [01:29:22] Па видиш, све то долази заједно у веб сервера, а ту је један ХТТП захтев да и један ХТТП одговор и све. Зато пазите да момци разумеју овај АЈАКС позив јер вам помаже да сви разумемо од појмова говоримо о. [01:29:37] Дакле ево примера Ајакса са јКуери. И овде, радимо са гет ЈСОН. Дакле, ми не покушавамо да слика мачке овде, или патка. Покушавамо да добијем ЈСОН датотеку. А онда смо чекати до се то ради, тачка урађено. То значи Чекам одговор. Можда ће мало потрајати. Онда, видиш мало лоадинг. Ако желите да урадите да у вашем сајту. Дакле дот урађено, а шта онда дешава када се то ради? Прођете у анонимно Функција, баш као што смо раније видели. Јер урађено је догађај, само Као што ћете кликнути миша или шта већ, за јКуери. Тако да прође у овом функцији са Подаци, текст, стање, и јкКСХР. И у основи, то је само неке променљиве да можете користити касније да имају статус ХТТП захтева, подаци који иде треба вратити назад са тобом. Дакле онда касније може тумачити и учинити нешто што има смисла с њим. И ако не, када би то могло успети? Па, кад ХТТП захтев даје ви 500 или нешто слично. Онда, то ће вам рећи Статус, каква неуспеха који је био, и свашта. Морате да се уверите за руковање оба случаја, иначе програма полуди. [01:30:42] Давин: Да, ово је тачно Па шта сте видели на последњем п-сет. Стварни АЈАКС позива у гет ЈСОН. То је позив. А онда, тачка урађено је као проверава да ли је успешан. Ако је успешна, хоћеш да уради нешто са подацима. Ти се врати из које ЈСОН тражити податке. То је оно што се вратиш. Дакле, ако се сећате из вашег п-сет, многи од вас су као држач података и или шта год, тачка линк или наслов. Шта год се враћа из тог ЈСОН, шта год поља су у том објекту ЈСОН, то је оно што се вратим. Дата је оно што се вратим. Статус Текст, само нешто што вам каже шта се десило. А онда, јкКСХР, то је само јКуери КСМЛ ХТТП захтев. То је само као објекат. А онда фаил, баш као Габе рекао. ГАБЕ: У нашем малом примеру абц123 Само да проверим да ли је то у бази података или не, да ће подаци бити нешто вам би урадио, ако тачка подаци корисничко име постоји, који је оно твој ПХП генерисана за Ви, ако подаци тачка корисничко име постоји, онда Идем да упозори, корисник Име већ постоји. Друго, ја ћу пустити корисник настави попуњавањем формулара. Ок, безбедност, кул. [01:31:50] Давин: ја Вант то? [01:31:52] ГАБЕ: Волим ову. Тако нешто што изгледа познато. Скоро смо готови. Дакле, ово је само пример ви видели у класи. Си користио аргв1 овде. То је као аргумент командне линије. И ми мем копирање да у бафер величине 12. Шта је овде проблем? Буффер оверфлов! Јер имамо бафер величине 12. аргв1 можда има величину од две милијарде. Ми не радимо никакву граничну проверу. Тако смо могли копирај много меморије. И ми ћемо бити посебно лоше о томе. Шта смо могли да урадимо то је Веома, веома значи у овом случају? Да? ПУБЛИКА: Део две милијарде ствари садржи извршни код који враћа [Неразумљиво]. ГАБЕ: Тачно. Дакле, то је врста Оно што људи користе да јаилбреак иПхоне, на пример. Дакле такве ствари. Јер само може да направи уређај изврши било који код који вам се свиђа. Фикс, па је лако поправити. Само проверите за граница. Ви проверите нулл јер увек проверите нулл када имамо посла са жицама. А онда, узмете Дужина стринг пре. А ако тетиву Дужина је важећа стринг дужина, која је у оквиру 0 и 12, онда смо добри. [01:33:03] Давин: Ако не проверите нулл, врло брзо, шта ће се десити? То ће СЕГ грешку. Зашто ће СЕГ крив? Зато што ви зовете стрлен на нулл. ГАБЕ: Да. Тачно или нетачно, користећи један лозинка је добра идеја. [01:33:19] ПУБЛИКА: Нетачно. [01:33:20] ГАБЕ: Нетачно. Користите многе лозинке и велике, дуге оне. Катанац иконе осигура безбедност. [01:33:26] ПУБЛИКА: Нетачно. [01:33:27] ГАБЕ: Нетачно. То не значи ништа. То је само икона. ССЛ штити од човек у средњем нападу. ПУБЛИКА: Нетачно. ГАБЕ: Нетачно. Ок, тако да сви они су лажни. Лепо. [Неразумљиво] Желим да причам о овоме? На тебе је ред. Давин: Врсте напада, човек у средини. Шта је човек у средњем нападу? ПУБЛИКА: [неразумљиво]. Давин: Ако шаљете ХТТП Захтев, они то могу, зар не? Али ако шаљете ХТТПС, они вероватно неће бити у стању да уради ово. Има доста поена дуж везе. Имате рутере. Имате ДНС сервере. Ако је неко у стању да физички види шта шаљете, тако је неко у стању да заправо добити између вас, клијент, и сервера, па је могу да виде шта шаљете, ово је човек у средини напада. Па да видимо шта покушаваш да од сервера, или је у стању да видео-- горе, можда ћете моћи да видите колачиће или нешто слично. [01:34:16] Тако на пример, ако не користите ССЛ, он можда моћи да виде Ваша сесија ИД цоокиес. И ово се зове седница отмица јер види свој ИД колачиће, а онда је он у стању да иду у тај сајт и претварати да вас буде. Јер баш као у ПХП, запамти када смо пријављени, шта да радимо? Поставили смо ИД сесије једнаку ИД. Тако да вас идентификује. Зато можете да видите свој портфолио а не сви остали ПОРТФЕЉ. [01:34:38] Па, ако сам у могућности да добијете тај колач, онда могу пријавити на тој страници. И онда, ја само могу да видим своје ствари и почети куповину и продају ствари. Дакле, то је седница отмица. Али ви не би требало да буде у стању да-- тако вас може користити човека у средњем нападу чак и ако они користе ССЛ. Али ви не би требало да буде у стању да. Ако они користе ССЛ, не можеш седница отмица. Зашто? Зато што је све кодиран, зар не? ако је кодиран, и још увек сам човек у средњи, и даље се ваше податке. То је у реду. Али је кодиран. Тако да не могу да га користе. Дакле, то су два. [01:35:09] Стварно брзо, крст сајт захтев фалсификат. То је само ако постоји веза и та веза учини нешто да не мислим да би требало да уради. Тако на пример, ако је веза ће купити акције или продају акције, а ви нисте знали да. Сте кликнули на линк, послала захтев, купио или продато нешто што да ниси хтео да уради. То је то. [01:35:25] Цросс сите сцриптинг, па ево, ви пролазите у преко променљиве к, уместо доношења у некој врсти од вредности, можда к је као име. Дакле, уместо да пролази к екуалс Давин или нешто слично, ако не користите ХТМЛ посебни слова, теби ако не побегне ово бити сигурни да је У реду, онда бих могао уместо проћи у, Рецимо овде говорим штампање или нешто слично, онда сам могао проћи овде скрипт позив. [01:35:51] Дакле онда, уместо да Само добијање променљиву, Ја бих тада извршења ове скрипте позив. Дакле у тој скрипти позовите, шта то радим? Документ дот локација, које ће промените локацију документа. Зато ћу да преусмери да негде другде. То се зове негативац у овај пример, веома добро. Није могао да смисли речи. А онда, шта је још горе је да идем да онда сет цоокие, што је неке променљива Имам у овом сајту. Идем поставити је изједначити на документ дот колачића. Стога, ја идем да ти украде колачић. И ја ћу да преусмери неке информације на сајту да не треба да се приступа. И то све дешава зато што си не беже шта сте видели. Да? [01:36:29] ПУБЛИКА: Дакле, само да буде јасно, то је вулнерабле.цом да је рањива на ово. Тако да веза може појавити на било ком страници. Неко кликне на њега, иде на вулнерабле.цом. Имате колачић на вулнерабле.цом. Рецимо Фацебоок је рањива, тако фацебоок.цом. Имате свој Фацебоок колачић. Шта то ради, ти си ће фацебоок.цом, то је одмах преусмерава да бадгуи.цом, али укључујући ваше информације о колачићима. Тако да је брзо преусмеравање, али ваш Фацебоок колачић је укључен у том додатном испитивању, и тако су [неразумљиво]. ГАБЕ: Да, ту је неке веома зле ствари да људи могу да урадим ако постоји ово. На пример, ако Фацебоок дозвољено сви да промените своје корисничко име, а они то нису радили било Санити чекови, тебе тако могао убаците ЈаваСцрипт ствар која мења своју слику на хрчка. И то убацује исто ЈаваСцрипт у свима који гледа своју страницу. Па свако ко виевс своју страницу има исту ствар у корисничком имену. И зато што је вирус, она експоненцијално шири. Давин: Ми ћемо прескочити последњи један, а онда смо готови. Дакле, ово је само још један пример. Дакле, ово је нису побегну њихов СКЛ сто. Тако да можете да прекинемо. Дакле, желите да побегнете ствари. То је био претходни пример са унакрсном сите сцриптинг. Извините што касним водио мало. Сутра, извини! Сутра, имамо радно вријеме. Тако радно време у Цаббот 8:00 до 11:00 часова. У радно време је строго за квиз питања.