>> КЕВИН Шмид: Поздрав свима.
Добродошли на семинару ЦС50 на Ноде.јс.
Моје име је Кевин.
Ја сам ЦС50 ТФ.
И ја сам некако као заиста узбуђен о овом семинару.
Мислим да је веома кул Ноде.јс.
Надам се да се овај семинар може користити као добар, претпостављам, одскочна даска за
неки од ваших коначних пројеката уколико сте заинтересовани за коришћење
нешто као Ноде.јс.
>> Ми ћемо некако почети семинар искључити само говори о мало
врста позадине скалабилности перспективе Ноде.јс, а затим
идемо на неке примере кода.
И ја ћу имати шифру на сајту, а можете погледати на коду.
И после семинара, ја ћу сортирати приче о томе како можете да подесите Ноде.јс
на вашем рачунару.
>> У реду.
Дакле, хајде да почнемо.
Тако да претпостављам да само желим да причам о веб сервери, заиста, прво.
И да започнете ову дискусију, ја у основи имају шему која је од
уџбеник користи за ЦС61, који суштини показује интеракција
између процеса клијента, као ваш веб прегледач или као ваш циљ клијента или
тако нешто, и веб сервер.
Дакле, ова врста личи на слика коју сте видели у предавању о
Среда где у основи имамо неке Процес клијент попут Гоогле Цхроме.
>> А онда је један корак клијент шаље захтев.
Тако да може бити нешто као добро хајде да посетите, ја не знам, ЦС50.нет.
Тако да смо издати тај захтев.
А да ли се ико сећа имена протокол који одређује како да
Захтев треба да буде структурисан?
Да.
>> ПУБЛИКА: [ИНАУДИБЛЕ].
>> КЕВИН Шмид: Управо тако.
Дакле, то је као ХТТП, зар не?
Дакле, у основи спецификација за колико да захтев треба да буде постављен у ствари
оут, јер је на крају дана, да захтев је заиста само воле
стринг који у основи каже да желим ово.
И спецификација за то је ХТТП.
Дакле, то је као протокол.
>> Дакле, онда сервер прими тај захтев.
Дакле, ви имате инсталиран веб сервер у ЦС50 апарата.
То је Апацхе.
И ове недеље, када радите на проблему сет седам, ви ћете заправо радити
са том веб серверу.
Дакле, сервер прими тај захтев, и онда то мора некако огребу њеног
глава и рећи као добро шта да радим са овим?
>> Дакле, на основу онога што одлучи да уради, онда она морати да се обратите неку врсту
извора.
И то ресурс може бити много различитих ствари.
За једну, могло би да буде само као статичног ХТМЛ датотеку.
Дакле, то би могао бити као неки ХТМЛ који је као за
ваш лични сајт.
То може бити статична фајл као на слици или као филм који имате.
То чак може да разговарам у неку врсту базе података
као МиСКЛ базе.
Тако да не мора увек да комуницирају са ресурс, али у
неким случајевима, то може.
>> Па онда шта ће да уради након што је ће то
врати одговор.
А одговор за ово је Такође је наведено у ХТТП.
Дакле, онда клијент може да га прими.
То може да раздвоји и обрадити га.
И онда ви добијате веб страницу као Гоогле или ЦС50.нет или
шта год да је отишао у.
ОК?
>> Дакле, ово је основна интеракција које ћемо се бавити.
И ми прилично ће бити фокусирајући се на овом делу
интеракција, сервер.
У реду.
Цоол.
Има ли неко питања до сада?
У реду.
>> Дакле, као што смо рекли, веб сервер прима овај ХТТП захтев и онда доноси ово
ХТТП одговор.
И као што смо разговарали о раније, ЦС50 апарат веб сервер је Апацхе.
Дакле, када ви радите на П сет седам, ћеш радити са
Апацхе веб сервер.
Никада нећете морати да се заиста ради са Апацхе директно превише.
Можете конфигурисати Апацхе некако мало када одредите виртуелне домаћини или
се в домаћини, а ми ћемо добити да да у мало.
>> Али у основи, Апацхе веб сервер подесити за рад са ПХП врстом
од из кутије.
Дакле, шта се стварно дешава се када одете на једном од ваших сајтова као што су, рецимо,
локални домаћин коса црта индек.пхп или нешто, је ваш прегледач шаље да
Захтев, а затим Апацхе седи тамо и схвати да се ради са њим.
И акција је да се изврши да код у индек.пхп и
онда га испратити назад.
Дакле, то је то.
Тако да смо на неки начин разговарали о томе.
Тако да само може да послужи статички фајл или покренути неки ПХП код и онда питање
одговор.
>> Дакле, тада често питање које може доћи горе је добро, како ми заиста бавимо
са што више корисника у исто време?
Дакле, замислите да сте писали уеб сервера, ако сте имали веб сервер који
сте покушавали да пишу у нечему као Ц или тако нешто,
у основи можете да мислите о томе како тамо могла бити нека врста кода који
би примити захтев, али онда то мора да уради све ово рад на њему.
Он може имати, на пример, обратите база података или тако нешто.
Зар не?
А онда би раде такве обраде и затим
послао назад одговор.
Дакле, то је као високи Ниво преглед.
>> Али то није одмах очигледно како сте могу то да урадим, тако да двоје људи или
чак 1.000 људи могли да раде са својим веб сервер у исто време.
Дакле, решење које користи Апацхе се назива теме или процесе.
Дакле, можда сте чули за ови термини пре.
У реду је ако не имате, али само мислим о нитима или процеса, као начина за
оперативни систем или корисник програма или тако нешто или веб сервер
на неки начин изврши вишеструко ствари одједном.
Дакле, можда сте чули израз као нитима извршења.
Дакле, то је као да си некако мултитаскинг.
>> А ако сте видели на кутији од вашег лаптопа, или нешто слично,
језгара, шта можете да урадите је да можете покренути два различита теме на другачији
делови процесора, тако да они могу заправо десити у исто време.
Дакле, ово је заиста моћан.
И ово је нека врста Апацхе је Решење овог проблема.
>> Дакле, постоје нека врста икаквих проблема са овим приступом иако?
Тако да претпостављам да некако их написао тамо.
Али обојица некако користе много меморије.
То је веома скупо да се створи нит или процес.
>> И део образложења је да само као када сте покренули Ц програм
као свој главни и онда да позиви Друга функција, који има
нека стека.
Дакле, теме такође захтевају потпуно посебан стек који
може бити прилично велика.
И ако можете да замислите да тоне Корисници на вашем сајту, можете да имате
много различитих тема.
То је доста полицама у управљање и одржавање.
Дакле, то је велика потрошња меморије.
>> А онда, такође, рецимо да имате само један процесор, или рецимо да имате
више него имате теме те мултицорес.
Зар не?
Па рецимо да сте имали 10 теме а ви само имали пет процесора.
Некако треба да урадите ову ствар где ви прелазите на струју
онај који трчи, јер сте не може да се покрене свих 10 одједном.
И то се зове контекст прекидач.
И тај термин заправо има неколико различитим контекстима, али хајде да
мислите о томе као пребацивање између два навоја.
То може бити прилично скупо јер у основи оно што треба да урадите јесте ли
морати да се заустави оно што радиш, саве стање тог покренут нит, и
затим се пребаците на неко друго место.
>> Тако се сви некако види мотивација зашто теме и
процеси можда мало гломазан?
Да ли имате неко питање?
У реду.
Цоол.
Има ли каквих питања?
У реду.
>> Дакле, ако узмемо корак назад за тренутак, постоји нешто као
запажање да можемо направити о много веб апликација.
И то је заиста да је много њих заправо то не раде много корисно
раде унутар нит.
Тако је неко почео о П сет седам уопште?
Дакле, хоћеш да можда опише неки од делова?
Да ли сте радили на логин или нешто слично?
>> ПУБЛИКА: Не
>> КЕВИН Шмид: У реду.
Нема везе.
Извините.
Али у основи, у П сету, ти си ће бити прави много врсте
упити на базу података да добијем неке Подаци из те базе података.
А шта је ваш број ће радити, шта да Апацхе процес или
да Апацхе нит ће радити док она мора да контактира
База података је то некако ће бити седи тамо и она ће бити
чека база података да одговори.
>> Сада то не може да звучи као неки велики бавити јер је база података о вашем
ЦС50 апарата, зар не?
Али постоји нека врста мреже кашњење тамо јер сада веб
сервер има да изда свој захтев за база података за комуникацију са
база података и онда се то информације назад.
Дакле, сада је као добро чекај ме, ја сам ићи добити нешто од
база података, а затим ту је Много чека дешава.
Да ли то смисла?
>> А за неке ствари то није тако лоше.
Ако је само треба да, на пример, приступ меморији, да није као
страшно И / О латенција.
А када кажем, И / О кашњење, што сам мислећи на је као било које врсте као што су
улаз излаз.
Али да приступите датотеци на диску, као и ако сам желео да служи статички ХТМЛ
филе који је био на мојој веб страници или тако нешто, ја некако морам да
стоп за мало, прочитајте тај фајл у са диска, а затим у
да процес Чекам.
Ја не радим користан рад.
>> То није истина од свега, али то је уобичајено у апликацијама као што су П сету
седам и доста апликација да ниси
заправо радите много размишљања.
А када кажем размишљање, мислим као рачунарске рада.
Дакле, рачунарска рад могао бити нешто као, рецимо, ви желели да
напиши веб сервер који само обрачунава нтх Фибоначијев низ.
То не звучи као посебно забава веб сервер.
Као ја не очекујем да сајт буде следећи на Фацебоок, али то је нека
врста компјутерског рада.
>> И можете замислити да замене са нека друга врста занимљиво
рачунарска рад.
Рецимо да је написао нешто да израчунали степене
раздвајање између двоје људи или нешто слично.
Тако да не укључују неку врсту обрачуна, зар не?
Па чак и тада, да се то уради и даље имате да урадите много чекања за можда
морате да упита базе података за погледати до ко је пријатељ са ко или
тако нешто.
Дакле, постоји та врста појма рачунарских рад.
Да ли то смисла?
Да ли ико има било каквих питања?
>> Ох, и ја претпостављам да ставим тамо сервере за ћаскање јер сервери цхат су некако
још један добар пример за то.
Ћаскање сервер нема да уради много размишљања.
Она само мора да чека да се људи шаљете поруке и онда када
они, пошаљите их.
ОК?
>> Дакле, само да опет поновимо, Апацхе и као веб сервери попут тог виљушке а
Много теме и процеса који може бити врста расипнички.
Претпостављам питање које може доћи из које се не морамо да имамо
више тема и процесе?
Шта ако смо имали једну?
>> Па хајде да некако наслика слику шта би то изгледати.
Дакле, хајде да користимо само једну нит.
ОК?
Дакле, само замислите ово са једним концем.
>> Хајде да претпоставимо да смо били заиста не раде толико корисне - и кад кажем
користан, мислим израчунавања рад -
у тим вишеструким нитима пре.
Дакле, хајде да мало консолидују све у једну нит.
Па шта ако смо имали једну нит те врсте од само иде около у петљи и
стално проверава да ли нешто ново деси.
Тако на пример, нешто ново догодило би могло да значи да имам нешто вратио из
база података, или неко послао ми нови ХТТП захтев.
Дакле, они су врста догађаја да се деси, зар не?
>> И онда шта ја могу да урадим када су нови ствари се дешавају у овој истој теми
извршења, ова једна једина нит извршење, ја могу да позовем неку шифру која
би се бавио тај конкретни ствар.
Тако на пример, ако имам нешто назад из базе података, ја могу да водим
мали компјутерски део који заправо само припрема ствар
послати назад до корисника.
Дакле, да ли то некако има смисла?
>> Али шта су заиста импликације ово?
Зар не?
Зато што смо написали Много тога код -
а ја ћу само да скочи напред у слајдовима ако је то у реду.
Дакле, ако вам не смета, ја сам само ће направити корак уназад.
Дакле, овакве ствари је назвао догађај петља.
ОК?
И некако је основни Идеја Ноде.јс.
>> Дакле, шта се заиста ради Ноде.јс као веб сервер је ту је један нит
који је у основи иде около у петљи као док је једна врста Ундер
хауба од Ноде.јс који је стално проверу, да ли ми добијамо нове ствари?
И онда ће покренути виљушкари да подесите.
Али добро питање које се поставља је, како можемо да се то деси
са постојећим стварима?
>> Зато сам ставио линију Ц кода овде да у основи изгледа као да је отварање
филе, зар не?
Управо сам изашао са албума.
Тако да сам морао да јој отвори нову датотеку.
Дакле, начин наша Ц код за рад -
и претпостављам да је разлог изабрао сам био фајлове јер је ово врста мери
на И / О послу који смо урадили у Ц у осећај да постоји улаз излаз.
Тако зовемо овај код да ово ради ф отворен.
А онда на следећој линији нашег Програм, сада можемо радити са ф.
>> Дакле, ово би био пример нечега то је као синхрони или
блокирање јер на тој првој линији тамо чекамо док не
добити фајл отворен.
Дакле, у другом реду, ми знамо да смо могу да раде са ф, али то значи да
да друга линија не може заиста покренути док прва линија врши.
Да ли то смисла?
>> Дакле, то би било лоше да се стави у управљач догађаја.
А разлог за то је што ова врста чека, зар не?
Дакле, ово би нас вратили назад на исту ствар.
И сад ми не би ни имали корист од више нити или
процеси, јер имамо једна нит у Ноде.јс.
Да ли то има смисла за све?
>> ПУБЛИКА: Чекајте.
Дакле, шта је замена?
>> КЕВИН Шмид: О, па да.
Зато ћу доћи до замена.
У реду.
Па шта ако смо имали нешто која је изгледала овако?
Па шта ако сад ја едитед Ф отворити мало?
Тако сам, пролазећи у истом два аргумента као пре.
И даље волим нову песму да је изашао са.
Али ја сам пролазећи трећу ствар која се ова променљива зове код.
>> Али шта је заправо шифра у овом контексту?
Да ли је то као редован Ц променљиве?
То је функција, зар не?
И то може бити мало чудно, јер Ја сам заправо као сада пролази
функционишу у другу функцију.
>> Дакле пар ствари које треба напоменути о овоме.
Један, нисам заправо зове функција код.
Дакле, ви не видите код са лева заграда, десно заграда.
Ја само пролази у коду.
А у Ц, шта би то заправо радим се ми дати показивач на тај стварни
код, а онда би ово могао да покрене.
Али само размисли о томе како сте доношења кода приликом
да датотека отвори.
>> Али шта то значи да је сада Остатак мог програма који би могао да уради
друге ствари, могу да наставе да раде други ствари док ми, не баш чекати, али
само у задњем делу главе које када тај фајл је отворен, Рун то
код на врху.
Да ли то смисла?
>> А сад идеја је да Ноде.јс код у радим ствари са ф
део би требало да буде прилично кратка и једноставна и једноставан и не баш бити
веома рачунски интензивна.
То ћете морати да се отвори још једну датотеку, али да би требало да буде прилично брз
јер само треба рећи уради још једну ф отвори и онда назвати други код.
>> Дакле, само да буде потпуно јасно, ф отвори да ли нови Кати Перри песну
Доне мп3, који ће се прилично много вратити одмах.
И онда можемо само да наставе да раде друге ствари, јер све што сада ф
отворен позив не се рећи основи Основна Ф отворен код отворите овај фајл
а када завршите отварања ово филе или када га вратим,
затим покрените тај код.
Али то не заправо води тај код.
А имали сте питање?
>> ПУБЛИКА: Чини се да имплицира неколико пута да додавање рачунски
интензивна код врста паузе [ИНАУДИБЛЕ] дривен систем.
[ИНАУДИБЛЕ]?
>> КЕВИН Шмид: То је велико питање.
Па ја стварно имам пример како можете да рачунски интегрисати
интензивна код у мало.
Дакле, када смо добили на примерима кода, Ја ћу бити сигуран да повуче тај.
Да ли је то у реду?
Хвала.
>> Како се зовете?
>> ПУБЛИКА: Арон.
>> КЕВИН Шмид: Арон доноси веома Добра поента, а то је да ако сам имао
неки рачунски интензивна код у радим ствари са ф делом, остатак
мој програм не може да се покрене и не може слушати за нове захтеве или ништа док сви
та ствар је завршена.
Дакле, ако ја пишем Ноде кода у целини осим ако ми нешто као да идем
Предлажем да се касније, када погледамо примери код, морам да будем сигуран да
мој број не вежем овај догађај петља.
Да ли то смисла?
У реду.
Цоол.
>> Дакле Ноде.јс нуди овај оквир да можете изградити ове догађај вођен
сервери са.
Тако да има овакве асинхрони неблокирајућа И / О библиотеке, а
стандардне Ц библиотеке које смо били рад са, као да сте управо
користити их на исти начин на који смо су их користите са ф отвара и
ствари, они су блокирају јер Ви заправо морати да сачека
који фајл да отвори.
>> Али Ноде.јс вам даје да и она у основи везује у Гоогле В8
ЈаваСцрипт енгине који је разлог Цхроме је то тако брзо у обради
Јавасцрипт јер има тај В8 мотор.
Тако да знам да звуци као једна од оних ВВДЦ конференције девелопер ствар
где они само бацају гомилу Писмо број ствари за процесоре
и кажу ово је тако цоол.
Али, то је кул да јесу ово зато ЈаваСцрипт -
или можда ако нисте упознати са Јавасцрипт још јер нисмо имали
предавања о њој -
али је ЈаваСцрипт интерпретира језик.
>> И ово је сувише важна тачка.
Дакле, то је важно за нашу веб сервери бити брзо, зар не?
И ако смо само трчали ЈаваСцрипт код које је протумачено са само
свака стара преводилац може бити спор.
Дакле Чвор има користи од овог супер брзо В8 преводилац.
А ја не знам да ли су га по имену јер В8 шамар у чело
ствар, али у реду.
>> Тако сам припремио неке примере на овој адреси.
Након семинара, ја некако иде на говоре о томе како можете добити Ноде сет
горе, али за сада, ја некако желим да хода кроз неке примере кода.
Дакле, ако желите да пратите, све изворни код је доступан тамо.
ОК?
>> Тако да ћу напустити овај УРЛ за мало.
И онда сам само да пребаците у терминал.
Јесу ли сви добро са овим УРЛ?
Зато ћу се пребацити мом терминала овде.
>> Дакле, овде је код који Ја имам за данас.
Зашто не почнемо са симплер.јс фајл?
Друга ствар је да је све ово код ће бити написан у
Јавасцрипт који вам може или не могу бити упознати са.
Ваљда пар ствари је то много ЈаваСцрипт кода је врста
синтакса и структура је веома слична Ц, тако да некако могу да га покупим као
идете заједно.
Покушао сам да пишем много почев број за ово на начин који је
сличне на Ц, тако да је мало више читљиви.
Али, као што смо напредак, ја ћу бити демонстрира неке додатне
карактеристике ЈаваСцрипт да су некако кул.
>> Али, хајде да погледамо овај узорка програма.
Ваљда је све то одсечен тамо.
Ја ћу само да поправимо тај стварно брзо ако је то у реду или не.
Ја не знам шта ће ово да уради.
Да ли је то мало боље?
Да ли можете да видите вар и ствари?
У реду.
>> Дакле, прва линија је као ЈаваСцрипт верзија променљиве
декларација.
Дакле, само да се истакне оно што ово би изгледа у Ц. Дакле, ово је исто као
ја кажем индекс једнак три или нешто слично.
Тако да није прецизирао тип.
Јава има врста, али то је веома динамично откуцан у природи, тако
није пружио никакву типа на њу.
Тако да само има вар.
То је као променљиву.
ОК?
>> И ја зовем ову променљиву ХТТП.
И на мојој десној страни, ја имам израз који желим да ставим у ХТТП.
И то каже захтевају ХТТП.
Дакле, ово је врста слична укључити.
То је мало више као моћнији од укључују у смислу да укључују
би само копирај заглавље филе за функције прототипа у или
год са дефиницијама типа.
Али потребно је заправо дешава да нам се код.
>> Дакле, можете да мислите о томе како увоз неку шифру.
Дакле, негде у Ноде.јс модулу систем или шта год, они имају све ово
ХТТП сервер код тако да сам само је привлачан за моје
личну употребу у овом програму.
ОК?
>> Па онда ја имам ову функцију да сам написао.
И приметио нисам имала да прецизира повратни тип или врста
аргументи поново.
Тако некако лабаво откуцан у та врста смисла.
Два аргумента да је потребно у, Захтев и одговор.
Дакле, то је нешто као концептуално упознат са слике које смо имали
на екрану пре него што смо добили овај захтев да се
имају од корисника.
И онда имамо одговор који можемо писати ствари.
>> Дакле, прва линија ово ради рес.вритеХеад 200 и онда ово
Тип садржаја текста обичан.
Па хајде да то комад осим мало.
Дакле, хајде да се фокусирамо на рес.врите за мало.
Дакле, писање је у основи, и пишу главу, су само начини да некако исписујем
ствари на одговору.
ОК?
Тако пишу главу, ако ико сећа из ХТТП предавања, да ли ви момци
запамтите заглавља у врх ХТТП ствар?
Па зашто не ја само демо заглавља брзо.
Да ли би то било корисно?
Или треба ми само некако -
У реду.
Наравно.
>> Дакле, када ваш прегледач иде на гоогле.цом или нешто слично,
заправо мало више нема -
ово је као тајна -
ту је као мало више информација да долази кроз цев од само
мало претрагу и све.
Тако да вам покажем ово, ја идем да користите програм под називом Цурл.
ОК?
Дакле, то је нешто што можете да покренете на Ваш командне линије или у Мац ОСКС
апарата или шта год.
И тако, ако ја Цурл ХТТП гоогле.цом, Идем да видим ХТМЛ.
А то је, у правичности, само ХТМЛ који вас некако говори да
преусмери на ввв ако ваш бровсер не аутоматски регулатор
преусмеравање.
>> Дакле, ово је само ХТМЛ, али ја идем да додате на ову цртицу Цурл ја застава.
ОК?
И то ће се показати ме заглавља.
Дакле, ово је такође информација да долази кроз кад добијем овај одговор.
ОК?
>> Дакле, на врху, видиш ово ХТТП 301 мове трајно.
И то је некако важно, јер ово се односи на статус код.
Дакле, овде је 301 код статуса, који је у основи само цео број
који говори бровсер или ко год да је читајући ово, ако се претвараш да
сте прегледач и ви видите ово, у основи сада ако погледате
да и ви видите 301, знате ја имам да уради нешто посебно на основу
301, или нешто посебно догодило на основу 301.
Тако пише трајно преселио.
>> А онда, у суштини, имамо гомила кључних вредности парова.
Тако смо добили локацију је ввв.гоогле.цом.
А онда некако све ово остало, али у суштини, оно што је локација
изрека је нова локација је на ввв.гоогле.цом.
Дакле, сада, ако одете на гоогле.цом, ви ћете некако види прегледача врсту трептају
за други и онда преусмеравање вас враћам на ввв.гоогле.цом.
Дакле, одговори могу да садрже ови заглавља.
>> И пар ствари да истакнем.
Дакле, рецимо да смо били успешни у ствари у посети веб страницу.
Зато ме пусти да -
шта је добро сајт?
Ја сам лош у размишљању добро сајтова на лицу места.
>> ПУБЛИКА: Википедиа.
>> КЕВИН Шмид: У реду.
Хајде да урадимо Википедију.
Дакле, овде сам се преселио.
Ох ваит.
Је ли?
Да, био сам.
У реду.
Зато морам да урадим ввв.
Зато ћу да урадим ввв.
И као што видите, овде је све ХТМЛ да би претраживач обради
за Википедију.
>> Али ако наставим скроловање овде, шта ћу видети на врху -
вов, има доста ХТМЛ на Википедији -
али оно што ја могу да видим на врху овде ово стање код 200, за разлику од
301 који сам видео раније.
И приметите да има леп пријатељски реду поред њега.
Дакле, ово је као доброг статуса код.
>> Да ли то 200 број изгледа познато?
Да, јер када сам урадио симплер.јс, Написао сам 200 тамо.
Дакле, то је у основи каже реци претраживач или ко покушава да дођете до
то да су они били успешни.
Или да некако као да смо били успешни превише.
>> И ту је ова врста посебног синтаксе у ЈаваСцрипт за проглашење
карта од ових тастера као тип садржаја и ове вредности као што су текст равници.
Дакле, ако се осврнемо на одговор који смо вратио из Википедије раније, -
Ја ћу покушати да скролујете се мало брже -
имате ове тастере као сервер и ове вредности Апацхе.
Дакле, имаш кључеве и вредности.
И можете да одредите ово у Чвор шта да пошаље назад.
>> Дакле, ово је заправо врста, у неким начина, и на неки начин то није
стварно, али то је мало нижи ниво од ПХП кода који можда бити
писање за П сет седам јер ПХП и Апацхе некако побринути за неки
од ових ствари за тебе.
У ПХП-у, можете да замените подразумевану понашање писањем сопствених заглавља.
Али за потребе овог, добијамо да напишем своје заглавља.
>> Да ли то линија смисла сви, глава пишу линија?
У реду.
Страва.
>> Дакле, оно што ја радим онда је ја завршити одговор рекао здраво свет.
У реду.
Али то је само функција зове захтев за претовар.
Дакле, сада сам стварно морати да некако урадити нешто са ове функције, зар не?
>> Дакле, овде је оно што ја радим тамо је ово линија која чини вар екуалс сервера
ХТТП.цреате сервера, а онда сам проћи у захтев руковалац.
Дакле, ово је врста чвора начин стварања сервер.
И приметите да сам пролазећи у захтев руковалац.
Дакле, ово говори цреатеСервер функција да ја желим да ми направи
сервера, а када то сервер прими одговор, морам да зовем ово
затражити функцију претовар.
ОК?
>> Тако да линија прилично одмах завршава.
Дакле вар сервера линија се врши у праву након ви да урадите прилично.
Мислим, то је да подесите неке унутрашње држава да знате да би сте се
позовите ту функцију захтев претовар, али она неће тамо седети и
рецимо има корисник послао ми захтев још?
Да ми је послао корисник још захтев?
Тако да не блокира.
ОК?
>> Дакле, шта ће то урадити то је у основи сада чува показивач на овом коду,
овај захтев руковалац функција, а затим ће покренути тај код кад неко
подноси захтев.
А онда ми радимо сервер.листен.
>> 1337 има прилично произвољан.
Нисам имао посебан разлог за брање тај број.
То је био потпуно случајан.
Али то само спецификује порт.
Дакле, већина веб сервери видећете да су они користе порт 80 јер је то врста
од попут Конвенције.
Дакле, ако ја одем на тако нешто, Не знам, Википедиа.орг,
и ја ставио дебело црево 8 -
Ох вов, не могу да видим.
Жао ми је.
Али, ако ја урадим Википедиа -
Ја ћу писати овде само да јасно је на апарату.
Али ако узмем ово у бровсеру дебело црево 80, који наводи идите на
Википедиа.орг на порт 80..
Дакле, то је као како Сједињене Државе имају више портова као где можете да брод
ствари до врсте.
Дакле, то је као прелазак на овај поставите на овом серверу.
У реду.
>> Зато сам изабрао 1337.
Постоји читав низ бројева које можете да одаберете.
То није било сасвим посебан.
>> Али шта ћу сада да радим е ја ћу да покренете чвор.
Дозволите ми да унесете заправо пар редова ниже, тако да можете да га видите.
Ја ћу да урадим Ноде, и ја сам ће покренути симплер.јс.
А ми ћемо говорити о томе како да се Чвор поставити у мало.
Али сада је то само ради сервер.
>> Дакле, једна ствар коју можете покушати који не може бити узбудљиво да је заправо можемо
покушајте да му приступите у Цурл.
Па ја могу да урадим Цурл, и мој Машина је локални домаћин.
Такође ћете видети ово написано овако понекад.
Локална домаћин и 127.0.0.1 су љубазни од свиђа вашем кућном рачунару.
Дакле, то је као да говори свој рачунар.
У реду.
>> И онда ја могу да кажем 1337.
Дакле, ако ја водим ову линију кода, пише Хелло Ворлд.
И ако сам хтео да видим те ствари да Имао Тип садржаја текста или обичан
год, ја чак могао ставити ово овде.
И приметите да не кажем у реду.
И ја имам тект Само.
А онда је некако све ово друго ствари које ће додати у чвор
ту за мене.
То није важно супер.
>> Мислим, постоје неки технички аспекти у том су љубазни
од кул да причам о томе, али само да се покаже ти, ја такође имају моћ да
промените ово око.
Тако да само могу додати гомилу од таквих ствари.
А онда сад, ако гледам у мој излаз, то ће бити то.
Дакле, та заглавља значе неке ствари за прегледаче и такве ствари.
>> И заглавља могу да кажем у основи претраживача како да одговори на нешто.
Ако сте икада чули за колачића раније, или ако сте икада били озлојеђени
од стране веб страници подешавање колачића, или укључен колачић блоку или
тако нешто.
Ви у ствари можете подесити цоокиес у овим заглавља.
Дакле, они рећи претраживача како да понашање у неким случајевима.
У реду.
>> Дакле, то је било симплер.јс.
Да ли неко има било каква питања на том фајлу изворног кода?
У реду.
Цоол.
>> Па хајде да уклоните из р да и погледајте симпле.јс.
Дакле, ово је прилично исти програм.
Управо сам то написао мало другачије јер сам желео да неки начин истиче
неке карактеристике ЈаваСцрипт.
>> Дакле, приметите да је захтев за претовар функција је потпуно нестао.
О Да ли имате неко питање?
>> Публика: Да, аргументи који су прошли на који
функција, шта су они?
>> КЕВИН Шмид: Дакле, то су ЈаваСцрипт објекти.
У Ноде.јс документацији, она у основи каже шта су методе
доступан на њих.
Само смо се десити да имају приступ овај метод се зове глава писање и крај
и такве ствари.
Али ту је цела гомила више метода.
>> И, на пример, као један од њих посебно на рец, можете да урадите
нешто као рец.метход који ће да вам кажем да ли је то ХТТП добити или
ХТТП ПОСТ захтева и такве ствари.
Дакле, ту је све врсте другачији особине, али су обојица су
Јава објеката, а они само имају Функције везани за њих да вам
може да напише нешто на.
ОК?
>> Дакле, приметите да је захтев руковалац је потпуно нестао.
Али код које сам имао у захтеву руковалац је још увек тамо.
Још увек имам тај рес.вритеХеад а ја и даље имам тај рес.енд.
А шта је ово пример у ЈаваСцрипт је ово идеја
анониман функција.
и анонимно је као достојан имена за њу јер буквално не
има име.
Нема функција захтев руковалац тамо.
>> Нема име, али је и даље је узимање аргумент.
Тако да увек имам рец и рес.
И ја још увек имам код.
То је сасвим у реду ЈаваСцрипт код.
Тако да могу прогласити функцију без експлицитно дајући јој име.
То је мало збуњујуће на први.
Постоје неке корисне ствари, као што које можете да урадите са
ове анонимне функције.
Да ли неко има било каквих питања у вези овога, или је то у реду само да се, за сада,
некако само прихватити да је ће учинити исту ствар?
Да?
>> ПУБЛИКА: прво су функције класа у ЈаваСцрипт?
>> КЕВИН Шмид: Они су прво класа у ЈаваСцрипт.
И само знам да ови концепти пролази у анонимној функцији као
ово важи за ЈаваСцрипт да сте може писати у свом завршном пројекту за
веб претраживач превише.
Тако на пример, у ЈаваСцрипт у Ваш претраживач, такође је нешто догађај
вођен у смислу да оно што ћу имати је када корисник кликне ово
дугме, желим да покренете овај код.
>> Дакле, то је иста врста идеја клијент страни када клик миша или они
миша преко неког слику на веб страница, покрените овај код.
То може применити на серверима.
Дакле, то је нешто као узбудљив Разлог зашто је ЈаваСцрипт заиста
погодне или неки људи мисле да је то погодан језик за ову врсту
Возач догађај серверу јер имате ове анонимне функције.
Имате целу идеју ово асинхрони код.
У реду.
Има ли каквих питања?
>> У реду.
Дакле, то је било симпле.јс.
Дакле, хајде да погледамо још један или пар више.
Дакле, ово је слееп.јс.
Тако је ико упознат са Ц Функција спавања?
Од можда једном од ранијих предавања или нешто слично?
>> Дакле, у основи можете проћи у мислим број секунди или ако користите у
спавају број милисекунди или наносекунди.
А у основи програм ће престати ради за тај износ времена.
Зар не?
И онда ће се пробудити и на крају онда ћу наставити да се приказују
Програм.
>> Дакле, овај сервер некако даје утисак спавање.
Дакле, приметите да имамо исти рес.вритеХеад 200 са главом као
пре, али онда смо зове ово Функција се зове скуп тајмаут.
Сет тимеоут је такође доступан у Ваш веб претраживач Гоогле Цхроме
или Сафари или шта год.
А у суштини шта то ради овде се то узима у функцији.
Обавештење, опет, то је анониман функција.
Дакле, то је кул, јер смо користећи анонимну функцију у оквиру
анониман функција које може бити мало чудно.
>> Али то је узимање ту функцију, која је у основи каже - и начин на који ова
Радови у 5000 милисекунди, ја желим да изврши ту функцију која
Управо завршава одговор и пише хеј.
Дакле, ово даје утисак као спава, али начин на који то заправо
ради је да ћемо покренути кроз ова линија веома брзо.
Ми само пишемо нешто.
И онда ми такође ћемо покренути кроз ова линија веома брзо.
Дакле, ми нисмо заправо дешава да чека пет секунди.
Само ћемо да покренете овај код одмах.
>> А онда ту је, опет, овај мали догађај петља која сада има ову ствар
регистри који у основи је управо стално иде около у круг
и гледа на сат у једном навој и изрека, има пет секунди
прошло још?
А онда, када се види да други рука је преселио као пет секунди или
год, онда она пробуди и каже, Ох, шта ја треба да урадим?
О Морам да покренете овај код.
И онда ће то покренути рес.енд хеј.
>> Дакле, опет, ми никада чекамо овде.
Дакле, није да овај код унутар ова функција ће узети пет
секунди да се управља.
Овај код ће покренути прилично тренутно, бар у односу на
пет секунди да смо причали пре око раније.
>> Дакле, само да покажем у акцији, Ја могу да урадим Ноде.слееп.јс.
И да ли забрљам нешто?
Вероватно.
Извините.
Хајде да видимо шта можемо да урадимо да поправи ово.
У реду.
Дакле, дефинитивно користити Ноде.јс.
Само се шалим.
У реду.
Само један сек.
У реду.
Ја знам шта је то.
>> Дакле, питање је да у мојој другој картици овде, сам трчао Ноде већ на
та иста адреса, 1337.
Тако да је ово грешка бацио, ако погледамо у томе прави блиско, је адреса у
користити, ЕАДДРИНУСЕ.
Тако сам већ овде користи 1337.
Дакле, ако сам затворио ово, а онда ја сада покушајте да покренете ово, надам се, све
ће бити у реду.
У реду.
Тако да само могу имати једну ствар врсту слушања на порту одједном.
Друго решење би било за мене да само уредите тај програм и да
то буде као 1338 или тако нешто тако.
>> Али сада сан се ради.
Па хајде да заправо га испробате у претраживач овај пут, јер је то
мало незабаван да видите то у терминалу.
Тако да само идем на тај 127 адреса поново у 1337.
И ако можете да га видите -
Ја не знам да ли могу - али мој прегледач је узимање веома, веома дуго
време да се учита или као пет секунди.
>> И онда после тога, она коначно завршио одговор.
А ви не можете видети јер ствар се преселио преко мало, али ако направим
ово мало мањи, ви може видети пише хеј.
Тако сам хеј, али после пет секунди.
И то може бити мало чистији да види овде на терминалу, па сам
да уради -
хајде да урадимо овде -
хајде да урадимо Цурл тој адреси поново са 1337.
И ја некако морају да седе овде за пет секунди.
Али приметите да је сервер може да прихвати нове одговоре.
Тако да штампа хеј.
>> И на демо то, у основи оно што Ја могу да урадим у овом другом картици -
па рецимо да сам ово у другој картици, Ја ћу да урадим Керл и исти
ствар поново.
И ја ћу покушати да подстакне ове момци офф истовремено.
Зато ћу да урадим ово, и ја сам ће да се трка овде и ја сам
то поново уради.
>> И хајде да га тако да сте могу видети обоје.
Тај штампани хеј и да је један штампан хеј скроз на -
хајде да урадимо тај експеримент поново.
Заправо, хајде да користимо ово трик, ако је то у реду.
>> Зато ћу да користе схелл ствар која ми омогућава да у основи раде два примерка
овог програма паралелно.
Дакле, то ће покренути први програм и други програм паралелно.
Тако да сада ако притиснете Ентер, то ће да би тај захтев прилично
тренутно у исто време.
Дакле, хајде да пробамо.
>> Дакле, сада приметити пише два процеса.
А ако сте радознали, да 27.000 број је у основи процес ИД.
А онда приметити, они штампају хеи у исто време.
Није било као морали смо да чекамо пет секунде за један и онда после тога,
Пет секунди касније добити други.
Дакле, то је некако, на неки начин, то је не баш доказ, али то је
интуитиван доказ да то није само као чека пет секунди и блокирање
цео нит.
Ок кул.
>> Арон поставио питање раније да био, па шта ако ми не урадимо нешто -
Да?
>> ПУБЛИКА: Чекајте.
Како се то разликује од принтф бафер, иако?
Зар то аутоматски уради?
Зашто морамо да бринемо о томе?
>> КЕВИН Шмид: О, ви могли кажу да још једном?
>> ПУБЛИКА: Не воли принтф бафер учинити исту ствар?
>> КЕВИН Шмид: принтф пуфер?
>> ПУБЛИКА: Да.
У реду.
Зар није у једном од квизова су били говори о томе како сте у праву ако принтф
нешто и онда су га паузирати један други, а онда га имате петљу десет
пута, то ће сачекати десет секунди и онда принтф све заједно?
>> КЕВИН Шмид: О, у реду.
>> ПУБЛИКА: Да ли је то исто ствар онда у овом случају?
>> КЕВИН Шмид: Дакле, питање је било основи у једној од бивших квизове
или нешто, било је питање које у основи, ако кажете принт Ф 10
ствари у исто време и онда спавао као у процес штампања оне оут,
на крају из неког разлога, то би само депонија оне све на екрану.
Дакле, ту је некако два различита концепти овде.
>> Претпостављам да једна ствар је да, у овом случај, имамо посла са два различита
врста људи питају сервер за ствари у исто време.
И разлог да принтф врста чека тако и депоније све напоље
одједном је више везан за како иф врста -
тако начин принтф је заправо имплементиран је она у основи мора да
разговарају са оперативног система да напише да ствари на конзоли.
Дакле, то не желим да радим све то ствари одмах када кажете принтф
неки стринг јер то могао добити скупо ако мора да
урадите то сваки пут.
>> Дакле, ако ви урадите принтф хеј, програм не могу заправо да штампате
одмах на конзоли.
Он може рећи, у реду, ја сам то написао.
А онда некако цекам да дам то мало више пре него што заправо
писање га на конзоли.
>> Дакле, разлог што је то био случај -
и то је некако неповезано до сна -
је да сан је врста само убризгава унутра да покаже
Чињеница да не пишу то синхроно.
Али разлог за то је управо перформансе, тако да не морате да
чине да многе контакте оперативни систем.
>> Али овде, шта ми заправо покушавамо да урадимо са овом ствари спавања је само шоу
да када имамо двоје људи посети овај сајт, то неће да стави
их у складу где ће да кажу Морам да ти помогнем, а онда када сам
потпуно завршен помажући вам после ових пет секунди, онда ћу да
пређите на следећи особе.
Дакле, захтев првог лица не везати тај догађај петље
ако то има смисла.
>> Али овде је заправо пример нечега што ће се везују
до догађаја петље.
Дакле, овде је страшно функција на израчуна н-ти Фибонацци.
То је буквално гори начин можете израчуна н-ти Фибоначијев низ.
И то је заправо само да призна где је овај дошао,
заправо постоји -
Мислим, можете да покушате да га нађем - али ту је као веома дуге блогу
пост да је неко написао.
То је као један од оних Реддит ствари.
Али неко критиковао Ноде.јс, и они користе ово као пример.
Тако сам некако хтео да вам покажем само два различитих перспектива само да би
опште разумевање концепата иза ове две ствари.
>> Али ово је изабран као само страшно, ужасно неефикасан рачунски
интензиван начин да се израчуна нтх Фибоначијев низ.
Дакле, само као страни белешку, зашто је то страшно као у једном правцу?
Да?
>> ПУБЛИКА: Рецимо да почнете са 1.000.
1.000 дели на 999. и 998..
Сваки од ова подели на две ствари.
>> КЕВИН Шмид: Тачно.
>> ПУБЛИКА: Скроз доле.
>> КЕВИН Шмид: Управо тако.
Дакле, само да поновим за камеру, ако ја позовите фиб на 1.000 или нешто слично
тако, то очигледно не мање од или једнак једном па ћу
идите на овом другом случају, а онда идем да позове фиб 999 плус 998 фиб.
А онда прилично све то посао који ради је фиб 999
врста на овом нивоу.
Ако идете доле, то је још више сувишан од тога, али ако само
Мислим цомпутинг лагати 998 добија нас прилично близу 999 фиб.
Тако да смо заиста би требало да буде мало више паметан о томе како смо некако поновно коришћење
њих, али ми не поновним ове ствари уопште.
Дакле, можете да замислите ово гигантски, гигантски дрво које је само страшно.
>> Али у сваком случају, у реду.
Дакле, то је лагати.
То траје само неко време да ради.
Да?
>> ПУБЛИКА: [ИНАУДИБЛЕ].
>> КЕВИН Шмид: О, ви могли поновите питање?
>> ПУБЛИКА: [ИНАУДИБЛЕ].
>> КЕВИН Шмид: О па то је само код који ће бити нека врста на
серверској страни.
Дакле, ово неће бити пронађен у прегледачу или било шта.
То је у основи оно што имамо јесте да када корисник овде прилично много марки
њихов захтев опет, када смо некако направите захтев, ми ћемо звати
ова функција на страни сервера.
А онда ћемо добити резултат назад од зове ту функцију.
И онда ћемо штампати га на корисника.
Тако корисник не стварно бави са овом функцијом превише.
>> Да ли је то питање?
Да ли то смисла?
У реду.
Цоол.
>> Дакле, опет, ми радимо све ово рес.вритеХеад ствар где смо одштампати
заглавље.
А онда сам завршити одговор тако што магични број је лагати 45.
Дакле, хајде да покренем овај сервер.
Зато ћу да урадим чвор фиб.јс.
Дакле, сада је мој лагати сервер покренут.
>> И онда овде, ја идем да урадите једну од ових.
ОК?
Тако да сам само ћу рећи, Цурл.
Дакле, то ће мало потрајати, али надам ускоро ће завршити и
она ће одштампати да 45. Фибоначијев низ.
>> ПУБЛИКА: [ИНАУДИБЛЕ].
>> КЕВИН Шмид: То би требало да се уради веома брзо.
Тако да би требало узети пет до шест секунди.
Ја не знам да је то само В8 сте супер брзо, али, то је у сваком случају
веома кратак пример и намерно неелегантан од не-тривијалан
рачунање.
Дакле, после неког времена, она не добије ово.
>> Али сада, шта ако ја урадим то иста врста експеримент као пре где сам направити
два захтева у исто време?
Дакле, овде ћу на Цурл о да адреса, а ја ћу
да уради још једну Цурл.
И запамтите, када смо то урадили за спавам сервер, када смо га имали у основи
после пет секунди, они прилично много и вратио у праву
отприлике у исто време.
Дакле, то није био нарочито везан.
>> Али, хајде да покушамо сада.
У реду, тако да смо добили наше два процеса.
Запамтите, то су процес ИД-ови.
Ово ће бити мало непријатно док смо одуговлачити.
Дакле, хајде да останемо овде и чекати.
>> Дакле, један од њих би требало да дође назад после као -
У реду, тако да се један вратио.
Али онда зашто не други један вратити још само?
Да?
>> ПУБЛИКА: сервер не може да уради ништа док се то цомпутинг тај велики број.
>> КЕВИН Шмид: Тачно.
Дакле, одговор је био само да сервер стварно не могу ништа док
то је тај цомпутинг Фибоначијев низ.
Дакле, сада сам добио своје две ствари назад.
Али претпостављам само да мислим о коду мало више, како се то ради
и све.
>> Дакле, ова функција је овде код који Рекао сам овај сервер да ради када је у
добија нови долазни захтев.
Тако да само ће да пролазе кроз ово цео број, а онда ће то ићи
Назад на догађај петље, а затим наставите проверу нових догађаја.
Дакле, у основи оно што смо се дешава је сервера
слушање за нове ствари.
Прва особа пита за оно што 45 је.
Ми смо покренули овај код да га израчуна.
Овај код траје отприлике пет на шест секунди до воде.
Онда ћемо да се вратимо на догађај петље и проверите за нове захтеве.
>> Дакле, ово је пример како, ако има ствари које су такозвани Цомпуте
везан, или користите много рачунске, Не снага, већ као су
рачунски интензивна -
Ваљда једна ствар да кажем о томе је да је ова функција ради потпуно,
за највећи део, прилично користан рад у праву.
Цео пут да повратни позив функција је покренут, то је било прилично
много већи део свог времена управо рачунарство да нтх Фибоначијев број.
>> Али ми смо имали само једну нит да се баве.
У Апацхе моделу, када се двоје људи је захтев да се фиб 45, ми смо
би имао две различите теме.
А онда је посао оперативног система би било, или ниво корисник
код који управља теме, да сам био да кришка да се на
Процесор, или чак и ако сте имали више процесора, дистрибуирати их равномерно преко процесорима
тако да су обоје завршити отприлике у исто време.
>> Дакле, само да вам покажем како да сортирате од - а то није укупан савршен
решење, али некако како можемо направи се вратити овде и радим
мало боље.
Па шта ја овде имам је програм под називом Фиб Ц И ово у основи користи
још једна од нода модула зове Процес Дете Модул.
Тако сам укључен да на горњем врсте од свиђа бих урадио фунту укључују
дете процесс.х или нешто.
Сада имам приступ овој ЦП променљиве која има све моје функционалност.
>> Па сад шта ја радим у овом одговору руковалац је ја водим овај програм
дот сласх лагати 45.
Дакле, шта сам урадио - и само ћу на корак од овог програма за
мало -
је сам написао Ц програм који у основи израчунава
нтх Фибоначијев низ.
Дакле, овде је само програм сам написао у Ц који израчунава ово.
Ја могу да га састави, а ја могу покренути она у командној линији.
И то ће да израчуна 45. Фибоначијев низ.
>> Дакле, приметио је потребно само прилично докле.
Ја вероватно могао да користи цртицу на 03 оптимизује га или нешто слично,
али сам урадио као редован подешавања компајлера.
И то га исписује.
>> Али сада, шта ја некако радим?
О извините, погрешан фајл.
Тако сам урадио исту ствар са заглавље као и раније.
Онда ја ово цп.екец.
Дакле, шта ће ово да уради то је то ће покренути овај програм.
Али начин на који то ради је да то неће чекати
тај програм да се заврши.
То само говори у основи извршити овај програм.
Дакле, у основи укуцајте ово у командној линији врсте.
>> А онда, када завршите са то, покрените ову функцију.
Дакле, сада смо некако ово Цела ствар обновљена од
као да не чекамо.
Да ли то некако има смисла?
Да?
>> ПУБЛИКА: [ИНАУДИБЛЕ]?
>> КЕВИН Шмид: Дакле, ово ће стварно отвори нови процес да то уради.
Дакле, ово је заправо, на неки начин, зло, не супер зло, али је
важно је рећи да је ово врста враћајући се, с једне стране, Апацхе
Модел где радимо теме и процесе за сваки захтев или
процеси за сваки захтев.
Дакле, ово је некако аналоган на шта Апацхе ради.
У неким случајевима, то ће само користите нова нит, која је мало више светла
тежину него процес, али Апацхе могао завршити форкинг нови процес
која је врста оно што радимо овде имплицитно тиме дот уписали косу фиб 45.
>> И онда у том случају, ми смо некако направити исте трошкове процеса.
Дакле, ово је само једна ствар коју можете да урадите.
Али само да покажем ову врсту трчања.
И овај разговор је стварно циљ представљање овакве програме као
начин да се покаже различите погледе на како да дизајнирате серверима такве.
Дакле, ово је покренут, а онда сад ако ја радим опет, ја имам два процеса легитимације.
>> Хајде да причамо о ствари да истакнем.
Тако приметити да они постепено су.
То је кул.
Зато што је то било пре 27.122.
Али обавештење сада, они су се вратили на отприлике исто време.
>> И сада, добро питање које се поставља у вези са зашто је то случај, чији посао
је сада на неки начин да ове ствари врста играју фер једни са
друга, ове две инстанце дот сласх лагати да сам трчао 45
или да Чвор ран?
Ко некако чини фер да они обоје се врста уравнотежена прелазно време?
>> ПУБЛИКА: [ИНАУДИБЛЕ].
>> КЕВИН Шмид: Да.
Дакле, у основи, када радим дот уписали косу ФИБ 45 или тако нешто, сад је
некако до оперативног система за руковати издржљивости тих програма.
И сада могу да их заказати на различитим процесорима или томе
може их заказати.
То може нарезати време да један Процесор је добије, или да добију
да ради на једном ЦПУ.
Дакле, то је идеја иза тога.
Да ли то има смисла за све?
Дакле, сада Чвор није стварно играју део у подели ове задатке.
У реду.
>> Дакле, то је скоро то за примере.
Само сам хтео да покажем још једну ствар јер много тога до сада није било
не тотално супер практична у неким случајевима.
Могу да замислим долази кући после овога разговарају и нешто слично и говорећи,
па ја некако извукао из тог разговора који Ја могу направити сервер за Фибонацци
моја коначна пројекат.
Дакле, овде је само један више врста пример који ће, надамо се -
можда не, али можда - мало више врста од значаја за коначних пројеката и
размишљања унапред за такве ствари.
>> Дакле, ово је цхат.јс.
Дакле, ово је нешто као неки узорак серверској страни код који можете да користите за
постави мали ћаскање сервер као можда сте видели на
Фацебоок Цхат или шта год.
Дакле, ја не кажем да је ово као Фацебоок Цхат, али ово је некако
као добар - можда није добро, али можда добро - полазиште за ћаскање
сервер за ваш сајт за коначни пројекат.
Дакле, хајде да погледамо шта ради.
>> Дакле, ми смо све ово посебну ствар на врху, то вар Сио
једнако захтевају Соцкет.ИО.
Дакле, ово је још једна ствар која се не деси заправо долазе у пакету са
Чвор али можете да га инсталирате.
То је чвор модул.
Дакле, то је само као неки продужетак за чвором.
>> СоцкетИО је заправо стварно некако цоол.
То је апстракција која у основи оно што То је то је то вам омогућава да
имају овај ток комуникације између веб
претраживач и веб сервер.
Дакле, за највећи део до сада, имали смо ово врло брзо један секунд или два
Други комуникација између веб претраживач и веб сервер.
Дакле, то је у основи идите на гоогле.цом, Гет ствари, пошаљите га назад, а затим
готови смо.
Никада нећемо поново говори док корисник укуцава нешто друго.
>> Али шта Соцкет.ИО и слично врста ствари - и СоцкетИО је заправо један
од ствари које је изграђена на као ВебСоцкет која је врста доступан
као део ХТМЛ5 -
који вам омогућава да имате ово наставља дијалог.
И ово је веома корисно у чет сервер врста ствар јер је
врста као сталног дијалога у неки од начина јер ако ћаскате
са неким, сада можете само послати порука низ цеви, а затим
сервер може да пошаље поруку доле цев на другу особу која вас
разговарате са.
А онда можете да имате ово размењују тако.
>> Дакле, то је некако оно СоцкетИО је добро за.
Разлог да СоцкетИО користи ВебСоцкетс као и једна ствар је да се у
Поред само обичан старе ВебСоцкетс, она такође чини неке трикове на основи
буде компатибилан претраживач.
Тако претраживачи попут Интернет Екплорер нажалост не подржавају ВебСоцкетс
право из кутије.
Тако да користи неку другу врсту кул уредан ствари са Адобе Фласх да омогућавају
да имате подршку унакрсно претраживача.
Дакле, то је заиста корисно.
>> И заиста, ја знам да сам некако ради на време овде, али ЦС50
Разговарајте, да ли сте икада видели нешто као, ја не знам, празно тако и тако је
одговарање на овај пост или нешто тако, да функција?
То је СоцкетИО.
Дакле, када неко почне куцате у разговарају кутију да одговор или
нешто, ваш браузер шта је позвао у СоцкетИО емитује неку врсту
догађај који каже да је неко одговарање на овај пост.
>> Тада је сервер каже, у реду, шта ја треба да урадим?
Па сад ја морам да кажем оне друге момке који су на ЦС50 Разговарајте гледа
на овај пост да неко одговарање.
Дакле, то је некако оно СоцкетИО је добро за, овај наставак врсте
ток дијалога.
У реду.
>> Па, шта ја имам овде - и ми смо само ће игнорисати везе низ
за мало -
оно што ја радим је да још не слушам.
Дакле, то је само начин на Соцкет.ИО се рекавши хајде да слушају на овом порту.
И онда ја радим ово на вези.
Дакле, то је само у основи Подножје ИО је начин да се каже, када примимо
веза, ја ти желим да покренете овај код.
>> И приметите да уместо рец и рес пролазили тамо имам Соцкет.
И то је у основи идеја Подножје ово ствар коју можете да пишете и читате
из које има корисник је поруке евентуално.
А поруке које сте слали може да иде кроз тај Соцкет.
Да ли то смисла?
Тако да је ово наставак ствар.
>> Дакле, оно што ја радим је ја зовем Соцкет.емит.
И емитују траје прилично много два аргумента.
Први аргумент је стринг само представља тип
ствар ти емитују.
Дакле, за овај случај, имам употребу Овај стринг нова порука.
И то је само у основи каже да врста ове ствари, шта сам
слање, је нова порука.
Дакле, можете да слушате за одређене типове као нову поруку или шта год
коришћењем тачку на.
>> Дакле веза и корисник послао тамо, ако погледате где зовемо тачка на,
оне су остале ниске које представљају врсте корисничких порука.
Дакле, то је у основи можете да имате ову емитовати један од ових типова порука, и
онда уради нешто као одговор на један од ових типова порука
>> Тако сам емитују ову нову поруку.
Идемо у игнорисати цоннецтионс.пусх за секунду.
Али онда сам рекао, Соцкет.он корисник послао.
Дакле, сада је то некако као кад корисник ми шаље поруку, желим
да покренете овај код.
И приметите да је анонимни функција узима у ове променљиве
зове подаци који се у основи иду да имају поруку корисника.
>> Дакле, сада ћемо мало прича о везе низ.
Дакле, ово је дизајниран за ћаскање клијента где у суштини сви су некако у
исти цхат соба.
Дакле, у основи, оно што је потребно да би око је неки низ који у основи
представља све људе четовања у неки од начина, ако то има смисла.
Зар не?
Зато морамо да знамо ко те момке су тако да можемо да их пошаљемо поруке
да други људи шаљу нама.
>> Дакле, шта је то код ради је када корисник шаље поруку - то је врста
догађај -
ћемо покренути овај код.
А шта ми радимо јесте да покренете кроз ово низ који смо звали везе.
И прилично за сваку конекцију осим оног што је наше, то је
шта овај број каже, шаљемо нови порука са том прилогу поруке
информације.
>> Дакле, ако сте приметили овде, шта сам урадио када корисник заправо чини нови
веза је Додао сам са ЈаваСцрипт.пусх метод, ово је
основи само говорим као адд Подножје да као вредност у
наша веза низ.
Тако да сада када је овај број ради, она ће послати ствари на оне посебно
везе.
Дакле, ово може бити добра полазна тачка за израду ћаскање сервер
или нешто слично.
>> И некако кул ствар је да код који видите овде за сличне на и
емитују и ствари као да је исти врста ЈаваСцрипт кода који сте би
пишу у претраживачу на интеракцију са сервером.
Зато СоцкетИО је некако уредан и корисно на тај начин.
>> Ох и само једна ствар врло брзо.
Било је ЦС50 коначни пројекат је прошле године који у основи спроводи ћаскање
сервер у Ноде.јс.
Мислим да је Харвардцхатс.орг али ја нисам -
У реду.
Нисам сигуран шта је УРЛ адреса, али Ја могу послати да се после тога.
Али то је кул што можете да урадите са Ноде.јс.
>> Тако да се надам, генерално, момци имају Добар смисао за оно што је корисно Ноде.јс
и како сте можда могли да примените до крајњег пројекту.
Ја ћу послати неке више ресурсе уз то.
И хвала вам што сте дошли.
Хвала.
>> [Апплаусе]