>> KEVIN SCHMID: Sveiki visiem.
Laipni lūdzam CS50 seminārā gada Node.js.
Mans vārds ir Kevin.
Es esmu CS50 TF.
Un es esmu veida, piemēram, patiesi satraukti par šo semināru.
Es domāju, ka Node.js ir ļoti foršs.
Es ceru, ka šis seminārs var izmantot kā labu, es domāju, atspēriena
daži no jūsu gala projektu, ja jūs interesē, izmantojot
kaut kas līdzīgs Node.js.
>> Mēs kārtot sāk semināru off tikai runā par mazliet
veida fona mērogojamību perspektīvas Node.js, un pēc tam
mēs pārietu uz dažām koda piemērus.
Un es ņemšu kodu uz mājas lapā, un jūs varat apskatīt kodu.
Un pēc semināra, es kārtotu runāt par to, kā jūs varat izveidot Node.js
datorā.
>> OK.
Tātad, pieņemsim sāktu.
Tāpēc es domāju, es tikai gribu runāt par web serveri, tiešām, vispirms.
Un uzsākt šo diskusiju, es pamatā ir shēma, kas ir no
mācību grāmata, ko izmanto CS61, kuru būtībā parāda mijiedarbība
starp klienta procesā, piemēram, jūsu mājas pārlūku vai, piemēram, jūsu mērķis klientu vai
kaut kas tamlīdzīgs, un web serveri.
Tātad šāda veida izskatās līdzīgs attēlu, ka jūs redzēju lekciju par
Trešdiena, kur būtībā mums ir dažas klients process, piemēram, Google Chrome.
>> Un tad viens solis klients sūta pieprasījumu.
Tā, ka var būt kaut kas līdzīgs Nu pieņemsim apmeklēt, es nezinu, CS50.net.
Tāpēc mēs izdot šo lūgumu.
Un vai kāds atcerēties nosaukumu protokols, kas nosaka, kā tas
lūgums būtu strukturēts?
Yep.
>> Mērķauditorija: [nedzirdama].
>> KEVIN SCHMID: Tieši tā.
Tātad, tas ir, piemēram, HTTP, vai ne?
Vārdu sakot, specifikācija, kā šis lūgums faktiski būtu jānosaka
out, jo beigās, dienā, šis lūgums ir patiešām tāpat kā
virkne, kas būtībā saka, ka es gribu to.
Un specifikācija jo tas ir HTTP.
Tātad tas ir tāpat kā protokolu.
>> Tātad serveris saņem šis lūgums.
Tātad jums puiši ir web serveris, kas instalēts ar CS50 ierīces.
Tas ir Apache.
Un šonedēļ, kad jūs strādājat par problēmu noteikti septiņi, jūs faktiski strādā
ar šo web serveri.
Tāpēc serveris saņem šo pieprasījumu, un tad tas ir sava veida ieskrāpēt savu
galvu un teikt, piemēram, labi, ko man darīt ar šo?
>> Tātad, pamatojoties uz to, ko tā nolems to darīt, tad tas var būt, lai sazinātos ar kādu
Resursa.
Un tas resurss varētu būt dažādas lietas daudz.
Attiecībā uz vienu, tas varētu būt tikai piemēram, statiskā HTML failu.
Tātad tas varētu vienkārši būt, piemēram, daži HTML, kas ir kā
jūsu personīgo mājas lapā.
Tas varētu būt statisks fails, piemēram, attēlu vai kā filma, kas jums ir.
Tas pat varētu būt, lai runātu uz kādu datubāzi
piemēram, MySQL datu bāze.
Tātad, tas ne vienmēr ir, lai sazinātos ar resurss, bet
Dažos gadījumos, tas varētu notikt.
>> Tātad, ko tā gatavojas darīt pēc tam, kad tas notiek, lai
nosūta atpakaļ atbildi.
Un atbilde ir tas, arī norādījis HTTP.
Tātad, klients var saņemt.
Tā var saplēst to nošķir un apstrādāt.
Un tad jūs saņemsiet mājas lapu piemēram, Google vai CS50.net vai
ko jūs devās uz.
OK?
>> Tāpēc tas ir pamata mijiedarbība, kas mēs gribam būt darīšana ar.
Un mēs esam diezgan daudz būs koncentrējoties uz šo daļu
mijiedarbība, serveris.
OK.
Atdzist.
Kāds ir kādi jautājumi līdz šim?
OK.
>> Tā kā mēs teicām, web serveris saņem Tas HTTP pieprasījumu un pēc tam izdod šo
HTTP atbilde.
Un, kā mēs runājām iepriekš, CS50 ierīce tīmekļa serveris ir Apache.
Tātad, ja jūs guys strādāt P noteikti septiņi, jūs esat būs strādāt ar
Apache web serveri.
Jums nekad nav īsti strādāt ar Apache tieši pārāk daudz.
Jūs veida konfigurēt Apache nedaudz ja jūs norādāt virtuālās saimniekiem vai
V saimniekiem, un mēs iegūtu to, ka mazliet.
>> Bet būtībā, Apache web serveri izveidota, lai strādātu ar PHP veida
un no kastes.
Tātad, kas īsti notiek, ir, kad jūs iet uz vienu no jūsu mājas lapas, piemēram, teiksim,
vietējā uzņēmēja slash index.php vai kaut ko, ir jūsu pārlūkprogramma sūta, ka
pieprasījums, un tad Apache sēž tur un skaitļi, ko darīt ar to.
Un darbība ir izpildīt ka kods index.php un
pēc tam nosūtīt to off atpakaļ.
Tāpēc tur ir, ka.
Tātad, mēs veida runāja par to.
Tātad tas varētu vienkārši būt statisku failu vai palaist kādu PHP kodu un tad jautājums
atbilde.
>> Tātad kopīgs jautājums, kas var nākt up ir labi, kā mēs patiesi risināt
ar ar vairākiem lietotājiem vienlaicīgi?
Tātad, iedomājieties, ja jūs rakstāt internetā serveri, ja jums bija web serveri, kas
jūs mēģināt rakstīt kaut ko piemēram, C vai kaut kas tamlīdzīgs,
būtībā jūs varat domāt par to, kā tur varētu būt sava veida kodu,
saņemtu lūgumu, bet tad tas ir jādara visu šo darbu par to.
Tas var būt, piemēram, kontaktēties datubāzi vai kaut kas tamlīdzīgs.
Tiesības?
Un tad tas būtu jādara šāda veida Apstrādes un tad
nosūtīja atpakaļ atbildi.
Tātad tas ir, piemēram, augstas līmeņa pārskats.
>> Bet tas nav uzreiz skaidrs, kā jūs var darīt tā, ka divi cilvēki vai
pat 1000 cilvēku varētu strādāt ar savu tīmekļa serveris, tajā pašā laikā.
Tāpēc risinājums, ka Apache izmanto sauc tēmas vai procesi.
Tātad, jums var būt dzirdējuši par šie noteikumi pirms.
Tas ir OK, ja jums nav, bet tikai domā par vītnēm vai procesiem veidos
operētājsistēma vai lietotājs programmu vai kaut kā tā vai tīmekļa serveris
lai veida izpildīt vairākus lietas uzreiz.
Tātad, jums var būt dzirdējuši terminu līdzīgi pavedieni izpildi.
Tātad, tas ir veids, kā jūs veida multitasking.
>> Un, ja esat redzējuši uz kastīti jūsu klēpjdatoru, vai kaut kas tamlīdzīgs,
daudzkodolu, ko jūs varat darīt, ir iespējams palaist divas dažādas tēmas par dažādiem
daļas CPU, lai tās varētu faktiski notikt vienlaikus.
Tāpēc tas ir ļoti spēcīgs.
Un tas ir sava veida Apache risinājums šai problēmai.
>> Tā ir tur veids, piemēram, visiem jautājumiem ar šo pieeju, lai gan?
Tāpēc es domāju, es veida uzrakstīju viņiem tur.
Bet gan no tiem veida izmantot daudz atmiņas.
Tas ir ļoti dārgi, lai izveidotu pavediens vai process.
>> Un daļa no pamatojuma, ka tikai piemēram, kad jūs izmantojat C programmu
kā jūsu galvenais un tad zvani citu funkciju, kas ir
sava veida kaudze.
Tāpēc tēmas arī pieprasīt pilnībā atsevišķa kaudze, kas
var būt diezgan liels.
Un, ja jūs varat iedomāties, kam t lietotājiem uz jūsu mājas lapā, jums būs
daudz dažādas tēmas.
Tas ir daudz skursteņi pārvaldīt un uzturēt.
Tātad, tas ir liels atmiņas patēriņu.
>> Un tad arī, pieņemsim, ka jums ir tikai viens CPU, vai pieņemsim, ka jums ir
vairāk diegiem, nekā jums ir šie multicores.
Tiesības?
Tātad pieņemsim, ka jums bija 10 tēmas un tev bija tikai pieci CPU.
Jūs veida ir darīt šo lietu, kurā jums pārslēgties starp pašreizējo
viens, kas darbojas, jo jūs nevar palaist visus 10 uzreiz.
Un ka sauc konteksts slēdzis.
Un šis jēdziens faktiski ir pāris dažādos kontekstos, bet pieņemsim tikai
domā par to kā pārslēgšanās starp diviem diegiem.
Tas var būt diezgan dārga, jo Pamatā to, kas jums jādara, ir jums
ir pārtraukt to, ko jūs darāt, saglabājiet situācija, ka darbojas pavedienu, un
tad pāriet uz kaut ko citu.
>> Lai vai visi veida redzēt motivācija, kāpēc pavedieni un
process var būt nedaudz lielgabarīta?
Un vai jums ir jautājums?
OK.
Atdzist.
Kāds ir kādi jautājumi?
OK.
>> Tātad, ja mēs soli atpakaļ uz otru, tur ir veids, piemēram,
novērojums, ka mēs varam padarīt par daudz tīmekļa lietojumprogrammas.
Un tas ir patiesi, ka daudzi no viņiem tiešām nav darīt, ka daudz noderīgu
strādāt iekšpusē pavedienu.
Tātad ir kāds sākās P noteikti septiņi vispār?
Tātad jūs vēlaties, lai varbūt aprakstītu daži no daļām?
Vai Jūs strādājāt pie login vai kaut kas tamlīdzīgs?
>> Mērķauditorija: Nē.
>> KEVIN SCHMID: OK.
Nekas.
Piedodiet.
Bet būtībā, jo P komplektu, jūs būs padarīt daudz veida
vaicājumus uz datu bāzi, lai iegūtu dažus informāciju no šīs datubāzes.
Un kādas ir jūsu kods būs darīt, ko tas Apache process vai
ka Apache pavediens ir gatavojas darīt kamēr tā ir jāsazinās
Datu bāze ir tas sava veida būs sēž tur, un tas būs
gaida datu bāzi, lai atbildētu.
>> Tagad, iespējams, neizklausās, ka liels risināt, jo datubāze ir jūsu
CS50 ierīces, vai ne?
Bet tur ir kaut kāda veida tīkla latentuma ir tāpēc, ka tagad web
serveris ir izdot savu pieprasījumu datu bāzi, lai sazinātos ar
datu bāzē un pēc tam iegūt, ka informācijas atpakaļ.
Tāpēc tagad tas ir tāpat arī gaidīt uz mani, es esmu gatavojas iet saņemt kaut ko no
datubāzē un tad tur ir gaidīšanas notiek daudz.
Vai tas ir jēga?
>> Un par dažām lietām, tas nav tik slikti.
Ja tas tikai ir, piemēram, piekļuves atmiņa, kas ir nepatīk
briesmīgs I / O latentuma.
Un, kad es saku, I / O latentuma, ko es esmu atsaucoties uz ir tāpat kā jebkura veida, piemēram,
ievades izvades.
, Bet, lai piekļūtu failu uz diska, piemēram ja es gribēju, lai kalpotu statisku HTML
failu, kas bija par manu mājas lapā vai kaut kas tamlīdzīgs, es veida ir
apstāties, lai mazliet, lasīt šo failu no diska, un pēc tam
ka process es gaidu.
Es to nedaru noderīgu darbu.
>> Tas nav taisnība par visu, bet tas ir izplatīts lietojumprogrammas, piemēram, P komplektā
septiņi un daudz pieteikumu ka jūs neesat
faktiski dara daudz domāšanu.
Un, kad es saku domāt, es domāju piemēram, skaitļošanas darbu.
Tāpēc skaitļošanas darbu varētu būt kaut kas tāpat kā, teiksim, jūs vēlaties, lai
uzrakstīt web serveri, kas tikko ir aprēķināta n Fibonacci numuru.
Tas neizklausās īpaši fun tīmekļa servera.
Piemēram, es nevarētu gaidīt, ka vietā, lai nākamais Facebook, bet tas ir daži
veida skaitļošanas darbu.
>> Un jūs varat iedomāties, aizstāt, ka ar kāda cita veida interesantu
skaitļošanas darbu.
Pieņemsim, ka jums bija rakstīt kaut ko kas aprēķināta pakāpi
dalījums starp diviem cilvēkiem vai kaut kas tamlīdzīgs.
Tāpēc, ka tas ir kaut kāda veida Aprēķina, vai ne?
Un pat tad, darīt, ka jums vēl joprojām ir darīt daudz gaida varbūt
Jums ir, lai vaicājumu datu bāzi, lai meklētu up, kas ir draugos ar kurš vai
kaut kā tā.
Tāpēc tur ir, ka sava veida jēdziena skaitļošanas darbu.
Vai tas ir jēga?
Vai kāds ir kādi jautājumi?
>> Ak, un es domāju, man tērzēšanas serverus tur jo tērzēšanas serveri ir sava veida
vēl viens labs piemērs.
Tērzēšanas serverim nav darīt daudz domāšanu.
Tas vienkārši ir jāgaida, lai cilvēki varētu sūtīt ziņojumus un pēc tam, kad
tie, sūtīt tos.
OK?
>> Tik vienkārši, lai Atgādinājums atkal, Apache un līdzīgi web serveri, piemēram, ka dakšas a
pavedieni un procesu daudz kas var būt sava veida izšķērdīgs.
Tāpēc es domāju, ka jautājums, kas var nākt No kas mums ir nepieciešams, lai būtu
vairākas tēmas un procesus?
Ko darīt, ja mēs tikko bija viens?
>> Tāpēc pieņemsim veida uzzīmēt zīmējumu par to, ko tas izskatās.
Tā ļauj izmantot tikai vienu pavedienu.
OK?
Tik vienkārši iedomāties to ar vienu pavedienu.
>> Pieņemsim, ka mēs īsti darām ka daudz noderīga - un kad es saku
noderīgs, es domāju skaitļošanas darbs -
Šādos vairākiem diegiem pirms tam.
Tāpēc pieņemsim veida konsolidēt viss vienā pavedienu.
Tātad, ko tad, ja mums bija viens pavediens, kas veida vienkārši iet apkārt cilpu un
pastāvīgi pārbaudes izdarīja kaut ko Jaunais notikt.
Tā, piemēram, kaut kas jauns noticis varētu nozīmēt Man kaut ko atpakaļ no
datu bāzē, vai kāds nosūta man jaunu HTTP pieprasījumu.
Tātad tie ir sava veida notikumu tā notiek, vai ne?
>> Un tad ko es varu darīt, ja tie ir jauni lietas notiek, ir šajā pašā pavedienu
izpildes, šī vienotā pavediens izpildi, es varu zvanīt kādu kodu, kas
varētu rīkoties šo konkrēto lietu.
Tā, piemēram, ja es saņēmu kaut ko atpakaļ no datubāzes, es varētu palaist manu
neliela skaitļošanas daļa no tā, kas faktiski tikai sagatavo lieta
nosūta atpakaļ uz lietotāja.
Tātad tas, ka sava veida jēga?
>> Bet to, kas ir patiešām sekas ir?
Tiesības?
Jo mēs esam rakstiski daudz kodu, kas -
un es esmu tikai gatavojas lēkt uz priekšu Slaidi, ja tas ir OK.
Tātad, ja jums nav prātā, es esmu tikai gatavojas spert soli atpakaļ.
Tātad šāda veida lieta ir sauc notikums cilpu.
OK?
Un tas ir sava veida pamata Ideja Node.js.
>> Tātad, kas Node.js īsti dara, kā web serveris ir tur viens pavediens
, kas būtībā notiek apkārt pa apli piemēram, bet viena veida nepietiekami
kapuci Node.js kas ir pastāvīgi pārbaudot, vai mēs saņemt jaunas lietas?
Un tad tas darbosies manipulatori kas jums izveidot.
Bet labs jautājums uzdot ir, kā mēs varam padarīt šo notikt
ar esošām lietām?
>> Tāpēc man līnijas C kodu šeit, ka būtībā izskatās, ka tas ir atverot
failu, vai ne?
Es Viņa tikko iznāca ar albumu.
Tāpēc man nācās atvērt viņai jaunu failu.
Tā kā mūsu C kodu, kas darbojas -
un es domāju, iemesls, kāpēc es izvēlējos failus biju jo tas ir veids, ciktāl
no I / O darbu, ko mēs esam darījuši C sajūta, ka tur ir ieejas izejas.
Tāpēc mēs saucam šo kodu, kas dara f atvērts.
Un tad nākamajā līnijas mūsu programmu, mēs tagad varam strādāt ar f.
>> Tātad tas varētu būt piemērs kaut tas ir tāpat kā sinhronas vai
bloķēt jo šajā pirmajā rindā tur mēs gaidām, kamēr mēs
get failu atvērt.
Tātad otrajā rindā, mēs zinām, ka mēs var strādāt ar F, bet tas nozīmē, ka
ka otrajā rindā nevar īsti darboties līdz pirmā līnija tiek darīts.
Vai tas ir jēga?
>> Tāpēc tas būtu slikti, lai kādā notikumu apdarinātājs.
Un iemesls tam ir tas, ka šāda veida gaida, vai ne?
Tāpēc tas atgriezīsies mūs uz vienu un to pašu.
Un tagad mēs pat nebūtu Ieguvums no vairākiem diegiem, vai
procesi, jo mēs saņēmām viens pavediens Node.js.
Vai tas ir jēga, lai visiem?
>> Mērķauditorija: Pagaidiet.
Tātad, kas ir nomaiņa?
>> KEVIN SCHMID: Ak, tā jā.
Tāpēc es esmu gatavojas nokļūt nomaiņa.
OK.
Tātad, ko tad, ja mums bija kaut kas ka izskatījās?
Tātad, ko tad tagad es edited f atvērt maz?
Tāpēc es veidā, kas pats divi argumenti, kā agrāk.
Es joprojām mīlu jaunu dziesmu ka viņa nāca klajā ar.
Bet es esmu iet trešā lieta, kas ir šis mainīgais sauc kodu.
>> Bet to, kas ir kods, kas faktiski šajā kontekstā?
Tas ir tāpat kā regulāru C mainīgo?
Tā ir funkcija, vai ne?
, Un kas var būt nedaudz dīvaini, jo Es tiešām, piemēram, tagad iet
darbotos uz citu funkciju.
>> Tāpēc pāris lietas, kas piezīmi par to.
Viens, es neesmu faktiski aicinot koda funkciju.
Tātad jūs neredzat kodu, pa kreisi paren, tiesības paren.
Es esmu tikai garāmejot kodu.
Un C, ko tas patiesībā darīt ir man rādītāju, ka faktiskais
kodu, un tad tas varētu vadīt to.
Bet tikai domā par to, kā jūs esat iet kodu, lai palaistu, kad
ka fails ir atvērts.
>> Bet ko tas nozīmē, ka tagad pārējo manu programmu, kas varētu darīt
citas lietas, var turpināt darīt citas sīkumi, kamēr mēs, nav īsti gaidīt, bet
vienkārši ir aizmugurē mūsu galvām, ka ja šis fails ir atvērts, palaist, ka
kods augšpusē.
Vai tas ir jēga?
>> Un tagad ideja Node.js ir tāda, ka kods, kas darīt lietas ar f
daļai vajadzētu būt diezgan īss un vienkāršs un vienkārša, un nav īsti
Ļoti skaitļošanas intensīva.
Tā var būt, lai atvērtu citu failu, bet tas arī būtu diezgan ātri
tāpēc, ka tas ir tikai teikt, darīt citas f atvērt un tad to sauc citu kodu.
>> Tik vienkārši, lai būtu pilnīgi skaidrs, f atvērtu, ka tas jaunais Katy Perry dziesmu
darīts mp3, kas notiek uz diezgan daudz atpakaļ nekavējoties.
Un tad mēs varam tikai turpināt darīt citas lietas, jo viss, kas tagad ir f
Atklāts konkurss tas ir pateikt pamatā Pamatā f atvērta koda atvērt šo failu
un, kad esat pabeidzis atvērt šo failu vai tad, kad jums to atpakaļ,
tad palaist šo kodu.
Bet tas nav reāli palaist šo kodu.
Un jums bija jautājums?
>> Mērķauditorija: Jums šķita nozīmē dažas reizes, ka pievienojot skaitļošanas
intensīva kods veida pauze [Dzirdams] orientētu sistēmu.
[Dzirdams]?
>> KEVIN SCHMID: Tas ir liels jautājums.
Tāpēc man tiešām ir piemērs tam, kā jūs varētu integrēt skaitļošanas
intensīva kodu mazliet.
Tātad, kad mēs nokļūt koda piemērus, Es būšu pārliecināts pull, ka viens.
Vai tas ir OK?
Paldies.
>> Kāds bija tavs vārds?
>> Mērķauditorija: Aaron.
>> KEVIN SCHMID: Aaron parādīs ļoti labs punkts, kas ir tas, ka, ja man bija
daži skaitļošanas intensīva kods do sīkumi ar F daļa, pārējā
mana programma nevar darboties un nevar klausīties jaunām prasībām vai neko, līdz viss
ka sīkumi ir pabeigta.
Tātad, ja es esmu rakstot Node kodu vispār ja mēs kaut ko darīt, piemēram, es esmu gatavojas
ieteikt vēlāk, kad mēs skatāmies koda piemērus, man ir jābūt pārliecinātiem, ka
mans kods nav sasiet šis notikums cilpa.
Vai tas ir jēga?
OK.
Atdzist.
>> Tāpēc Node.js piedāvā šo sistēmu, kas Jūs varat veidot šo notikumu orientētu
serveri ar.
Tāpēc tas ir šos asinhronā veida ne-bloķēšanu I / O bibliotēkas, bet
standarta C bibliotēkas, ka mēs esam bijuši strādā ar, piemēram, ja jūs vienkārši
izmantot tos tādā pašā veidā, ka esam bijis, izmantojot tos ar f atveras un
sīkumi, tie bloķē, jo Jums tiešām ir jāgaida
ka failu atvērt.
>> Bet Node.js dod jums šo un to Pamatā saites uz Google V8
JavaScript dzinējs, kas ir iemesls, ka Chrome ir tik ātri pie apstrādei
JavaScript jo ir šo V8 dzinēju.
Tāpēc es zinu, ka izklausās kā viens no tiem, WWDC izstrādātāju konferences lieta
ja viņi vienkārši mest ķekars Vēstulē numurs lietas, pārstrādātājiem
un teikt, tas ir tik forši.
Bet tas ir forši, ka viņi darīja Tas tāpēc, ka JavaScript -
vai varbūt, ja jūs neesat pazīstams ar JavaScript vēl jo mums nav bijis
lekcijas par to -
bet JavaScript ir interpretējams valoda.
>> Un tas ir svarīgs jautājums arī.
Tātad, tas ir svarīgi, lai mūsu mājas serveriem, lai būtu ātri, vai ne?
Un, ja mēs vienkārši darbojas JavaScript kods, kas tika interpretēts tikai ar
jebkurš vecs tulks tas varētu būt lēna.
Tāpēc Mezgls priekšrocības no šīs super ātri V8 tulks.
Un es nezinu, vai viņi nosauca to jo V8 pļauka pieres
lieta, bet OK.
>> Tāpēc es esmu sagatavojis dažus piemērus Šajā URL.
Pēc semināra, es esmu veida gatavojas runāt par to, kā jūs varat iegūt Node komplektu
augšu, bet tagad, es tikai veida vēlaties iet caur kādu koda piemērus.
Tātad, ja jūs vēlaties sekot līdzi, visi pirmkods ir pieejams tur.
OK?
>> Tāpēc es ņemšu atvaļinājumu šo URL up maz.
Un tad es esmu tikai gatavojas pāriet uz terminālu.
Ir visiem labi ar šo URL?
Tāpēc es esmu gatavojas, lai pārslēgtos manu termināla šeit.
>> Tātad, šeit ir kods, kas Man ir šodien.
Kāpēc ne mēs sākam ar simpler.js failu?
Otra lieta ir tā, ka tas viss kods tiks rakstīts
JavaScript kas jūs var vai var nebūt pazīstami ar.
Es domāju, pāris lietas, ir tas, ka daudz JavaScript kods ir sava veida
sintakse un struktūra ir ļoti līdzīga C, lai jūs varētu veida paņemt to, kā
jums iet līdzi.
Es esmu mēģinājis uzrakstīt daudz sākot kodu šo tādā veidā, ka ir
līdzīga C tā, ka tas ir nedaudz vairāk lasāms.
Bet kā mēs progress, es būšu parādot dažas papildu
iezīmes JavaScript ka ir veida atdzist.
>> Bet aplūkosim šīs programmas paraugā.
Es domāju, viss ir nogriezts tur.
Es esmu tikai gatavojas noteikt, ka reālā ātri, ja tas ir OK, vai ne.
Es nezinu, kas tas ir gatavojas darīt.
Ir tāds, ka mazliet labāk?
Vai jūs varat redzēt Var un stuff?
OK.
>> Tātad pirmā līnija ir kā JavaScript variants ir mainīgs
deklarācija.
Tik vienkārši, lai izceltu to, ko tas izskatās C. Tātad tas ir tāpat kā
man sakot indekss ir trīs vai kaut kas tamlīdzīgs.
Tāpēc es neprecizēja veidu.
JavaScript tiešām ir veidi, bet tas ir ļoti dinamiski drukāti raksturs, tāpēc
nesniedza nekādu rakstīt par to.
Tātad, tas vienkārši ir var.
Tas ir tāpat kā mainīgais.
OK?
>> Un es esmu aicinot šo mainīgo HTTP.
Un manā labajā pusē, man ir izteiksme, ka es gribu, lai HTTP.
Un tas saka nepieciešama HTTP.
Tātad tas ir sava veida līdzīgs iekļaut.
Tas ir nedaudz vairāk kā spēcīgu, nekā iekļaut tādā nozīmē, kas ietver
vienkārši kopēt un ielīmēt galveni failu funkciju prototipus vai
kāds ar tipa definīcijām.
Bet tas prasa patiesībā notiek lai iegūtu mums kodu.
>> Tātad, jūs varat domāt par to kā importē daži kodu.
Tātad kaut kur Node.js modulī sistēma vai kāds viņiem ir tas viss
HTTP serveri kodu, tāpēc es esmu tikai Ienesot to mana
personīgai lietošanai šajā programmā.
OK?
>> Tātad man ir šo funkciju ka es esmu uzrakstījis.
Un paziņojums, man nav jānorāda atgriešanās veidu vai par veidu
argumenti vēlreiz.
Tā veida vaļīgi ierakstījāt šāda veida ziņā.
Divi argumenti, ka tā veic, pieprasījums un atbilde.
Tātad tas ir konceptuāli veida, piemēram, pazīstams no attēla, ka mums bija
uz ekrāna pirms, jo mēs šo lūgumu, lai mēs
ir no lietotāja.
Un tad mums ir atbildes, kas mēs varam rakstīt lietas.
>> Tāpēc pirmajā rindā tas tomēr res.writeHead 200 un tad tas
satura tipa tekstu plain.
Tāpēc pieņemsim gabals šis izņemot maz.
Tāpēc pieņemsim tikai koncentrēties uz res.write par maz.
Tāpēc rakstīt pamatā, un rakstīt galvu, ir tikai veidi, kā sava veida rakstīt out
lietas, kas atbildes.
OK?
Tātad rakstīt galvu, ja kāds atceras no HTTP lekciju, jūs guys
atcerieties galvenes at top HTTP lieta?
Tātad, kāpēc ne es tikai demo galvenes reālā ātri.
Tas var būt noderīgs?
Vai mums vajadzētu vienkārši veida -
OK.
Pārliecināts.
>> Tātad, ja jūsu pārlūkprogrammā iet uz google.com vai kaut kas tamlīdzīgs,
tur tiešām nedaudz vairāk -
tas ir kā noslēpums -
tur ir kā nedaudz vairāk informācijas kas nāk caur cauruli, nevis tikai
maz meklēšanas un viss.
Tātad, lai parādītu jums, es esmu gatavojas izmantot programmu, ko sauc Curl.
OK?
Tāpēc tas ir kaut kas, ka jūs varat palaist Mac OSX komandrindas vai
ierīce vai kāds.
Un tāpēc, ja man Curl HTTP google.com, Es esmu gatavojas, lai redzētu HTML.
Un tas ir, taisnīgumu, tikai HTML ka veida stāsta jums
novirzīt uz www, ja jūsu pārlūkprogrammā nav automātiski apstrādāt
redirection.
>> Tāpēc tas ir tikai HTML, bet es esmu gatavojas pievienot Curl šo defisi I karogu.
OK?
Un tas notiek, lai parādītu me galvenes.
Tātad tas ir arī informācija, kas nāk cauri, ja es varu saņemt šo atbildi.
OK?
>> Tā augšpusē, redzat šo HTTP 301 pārvietot pastāvīgi.
Un tas ir sava veida svarīga, jo Tas attiecas uz statusa kodu.
Tātad 301 šeit ir statusa kods, , kas ir būtībā tikai vesels skaitlis
, kas stāsta pārlūku vai kurš ir piemērots lasot šo, ja jūs izlikties, ka
tu esi pārlūku un jūs redzēt to, būtībā tagad, ja paskatās
ka, un jūs redzat 301, jūs zināt, man ir darīt kaut ko īpašu, pamatojoties uz
301, vai arī kaut kas īpašs noticis pamatojoties uz 301.
Tāpēc tā saka pārvietots pastāvīgi.
>> Un tad, būtībā, mēs esam ķekars galveno vērtību pārus.
Lai mēs iegūtu vietu ir www.google.com.
Un tad veida visu šo citas lietas, bet būtībā, kāda vieta ir
teiciens ir jauna vieta ir www.google.com.
Tāpēc tagad, ja jūs doties uz google.com, jūs veida redzēt pārlūka veida mirgot
par otro un pēc tam novirzīt jūs tiesības atpakaļ uz www.google.com.
Tāpēc atbildes var saturēt šīs galvenes.
>> Un pāris lietas norādīt.
Tātad pieņemsim, ka mēs faktiski veiksmīgi apmeklējot mājas lapā.
Tātad, ļaujiet man iet -
kas ir labs mājas lapā?
Es esmu slikti domāt labas mājas lapas uz vietas.
>> Mērķauditorija: Wikipedia.
>> KEVIN SCHMID: OK.
Darīsim Wikipedia.
Tātad, šeit es tika pārvietota.
Oh wait.
Es biju?
Jā, es biju.
OK.
Tāpēc es got darīt www.
Tāpēc es esmu gatavojas darīt www.
Un, kā jūs varat redzēt, šeit viss ir HTML ka pārlūks varētu apstrādāt
Wikipedia.
>> Bet, ja Es turpinu ritināšanu šeit, tas, ko es redzu augšā -
wow, tur ir daudz HTML Wikipedia -
bet tas, ko es redzu augšā šeit ir šis 200 statusa kods atšķirībā no
301, ko es redzēju agrāk.
Un paziņo, ka tā ir jauka draudzīgu OK blakus tai.
Tātad tas ir kā labs statusa kodu.
>> Tas, ka 200 numuru izskatās pazīstami?
Jā, jo, kad man bija simpler.js, Es uzrakstīju 200 tur.
Tātad, kas ir būtībā sakot pateikt pārlūku vai kurš mēģina nokļūt
Tas, ka viņi bija veiksmīgas.
Vai šāda veida kā mēs bijuši veiksmīgi too.
>> Un tur ir šī veida īpašu sintaksi Javascript, lai deklarētu
karte no šiem taustiņiem, piemēram, satura tipam un šīs vērtības, piemēram, teksta līdzenumā.
Tātad, ja paskatās reakciju, kas mums atgriezos no Wikipedia, pirms -
Es esmu gatavojas izmēģināt, lai ritinātu up nedaudz ātrāk -
jums ir šīs atslēgas, piemēram, servera un šīs vērtības Apache.
Tātad jūs esat ieguvuši atslēgas un vērtības.
Un jūs varat norādīt to Mezglu, ko sūtīt atpakaļ.
>> Tātad tas ir faktiski veida, dažās veidus, un dažos veidos, tas nav
tiešām, bet tas ir nedaudz zemāks līmenis kā PHP kodu, kas jums varētu būt
rakstot P noteikti septiņi jo PHP un Apache veida rūpēties par dažu
šīs lietas jums.
PHP, jūs varat ignorēt noklusējuma uzvedību, rakstot savas galvenes.
Bet ar to vajadzībām, mēs rakstīt no mūsu pašu galvenes.
>> Tātad tas, ka līnija ir jēga visi, rakstīt galvas līnija?
OK.
Awesome.
>> Tātad, ko es daru, ir man beigt atbildes pasakot hello world.
OK.
Bet tas ir tikai funkcija sauc pieprasījuma apstrādātājiem.
Tāpēc tagad es tiešām ir sava veida darīt kaut kas ar šo funkciju, vai ne?
>> Tātad, šeit to, ko es daru, ir, ka tas tiek līnija, kas nav Var servera vienāds
HTTP.create serveris, un tad es pāriet pieprasījuma apdarinātājs.
Tātad tas ir sava veida mezglā veidā radot serveri.
Un paziņo, ka es esmu iet pieprasījumā apdarinātājs.
Tātad šī stāsta createServer funkcija, ko es gribu, lai jūs, lai mani
serveris, un, kad tas serveris saņem atbildes, man vajag, lai tu nosaukt šo
pieprasīt apdarinātājs funkciju.
OK?
>> Tāpēc, ka līnija ir diezgan daudz apdari uzreiz.
Tātad VAR serveris līnija ir darīts labi pēc tam, kad jūs darīt, ka diezgan daudz.
Es domāju, tas ir jāizveido dažas iekšējās valsts, zināt, ka jums būtu
zvans, ka pieprasījums apdarinātājs funkciju, bet tas nav gatavojas sēdēt tur un
teiksim ir lietotājam nosūtīts me pieprasījums vēl?
Vai lietotājs man atsūtīja pieprasījumu vēl?
Tāpēc tas nebloķē.
OK?
>> Tātad, ko tas būs jādara, ir tas būtībā Tagad veikalos rādītājs šo kodu,
Šis pieprasījums kopējs funkciju, un pēc tam darbosies šo kodu, ja kāds
iesniedz pieprasījumu.
Un tad mēs server.listen.
>> 1337 ir diezgan patvaļīgi.
Man nebija īpaša iemesla picking šo numuru.
Tas bija pilnīgi nejauši.
Bet tas tikai norāda portu.
Tāpēc lielākā daļa web serveri jūs redzēsiet, ka viņi izmantot ostas 80, jo tas ir veids,
, piemēram konvencijas.
Tātad, ja es eju uz kaut ko līdzīgu, Es nezinu, Wikipedia.org,
un man kolu 8 -
oh wow, jūs nevarat redzēt.
Piedod.
Bet ja es daru Wikipedia -
Es uzrakstīšu to šeit tikai tāpēc, ka tas ir skaidrs, uz kameru.
Bet, ja es to ņemtu pārlūkprogrammā ar resnās 80, kas norāda dodieties uz
Wikipedia.org ostā 80.
Tātad, tas ir tāpat, kā Amerikas Savienotās Valstis ir vairākas ostas, piemēram, kur jūs varat nosūtīt
lietas, kas veida.
Tātad, tas ir tāpat kā iet uz šo konkrēto vietu šajā serverī.
OK.
>> Tāpēc es vienkārši izvēlējās 1337.
Tur ir vesela virkne skaitļu ka jūs varat izvēlēties.
Tas nebija pilnīgi īpašs.
>> Bet to, ko es esmu gatavojas darīt tagad ir es esmu gatavojas palaist mezglā.
Ļaujiet man faktiski stājas ka pāris līnijas uz leju, lai jūs varētu redzēt to.
Es esmu gatavojas darīt mezglā, un es esmu gatavojas palaist simpler.js.
Un mēs runājam par to, kā iegūt Mezglu izveidota mazliet.
Bet tagad tas ir tikai darbojas serverī.
>> Tātad viena lieta, mēs varam mēģināt, kas nedrīkst būt, ka aizraujoši ir mēs varam faktiski
mēģināt piekļūt to Curl.
Tāpēc es varu darīt Curl, un mana Mašīna ir vietējā uzņēmēja.
Jūs arī redzēt šo rakstīts kā šis reizēm.
Vietējā uzņēmēja un 127.0.0.1 ir laipni no kā jūsu mājas datora.
Tātad, tas ir tāpat kā runāt ar savu datoru.
OK.
>> Un tad es varu teikt 1337.
Tātad, ja man palaist šo līniju kodu, tā saka hello world.
Un, ja es gribēju redzēt, ka sīkumi, kas bija satura tipu tekstu plain vai
kāds, es pat varētu likt šo šeit.
Un paziņo, ka tā saka OK.
Un man ir teksta līdzenumu.
Un tad tur ir sava veida viss cits sīkumi, kas Mezgls būs pievienot
tur par mani.
Tas nav super svarīgi.
>> Es domāju, ka ir kaut kāda veida tehnisko aspekti Tajā ir sava veida
atdzist runāt, bet tikai, lai parādītu tu, man ir arī tiesības
tos mainītu apkārt.
Tāpēc es varu tikai piebilst ķekars stuff, piemēram, ka.
Un tad tagad, ja es paskatos manā izeja, tā, ka.
Tātad šie galvenes nozīmē dažas lietas pārlūkiem un lietām, piemēram, ka.
>> Un galvenes var būtībā pateikt pārlūkprogrammu kā reaģēt uz kaut ko.
Ja jūs esat kādreiz dzirdējuši par cookies pirms vai, ja jūs esat kādreiz bijis kaitina
ar web lapu, kurā cookies, vai ieslēgts sīkdatņu bloku vai
kaut kā tā.
Jūs faktiski var iestatīt sīkfailus Šajās galvenes.
Lai viņi pateiks pārlūkā, kā uzvedība dažos gadījumos.
OK.
>> Tā, ka bija simpler.js.
Vai kāds ir kādi jautājumi šajā pirmkoda fails?
OK.
Atdzist.
>> Tāpēc pieņemsim noņemt r no tā un apskatīt simple.js.
Tātad tas ir diezgan daudz pati programma.
Es tikai uzrakstīju to nedaudz savādāk jo es gribēju, lai sakārtotu un izcelt
dažas iezīmes JavaScript.
>> Tā ievēroju, ka pieprasījuma apstrādātājiem funkcija ir pilnībā izzudis.
Ak Yep, jūs ir jautājums?
>> Mērķauditorija: Jā, argumenti , kas tiek nodota, ka
funkcija, kas viņi ir?
>> KEVIN SCHMID: Tātad tie ir JavaScript objekti.
Jo Node.js dokumentāciju, tā būtībā saka to, ko metodes
pieejami uz tiem.
Mums vienkārši gadīties, ka piekļuve Šo metodi sauc rakstīt galvu un beigas
un sīkumi, piemēram, ka.
Bet tur ir vesels bars vairāk metodes.
>> Un, piemēram, kā viens no tiem jo īpaši attiecībā uz REC, jūs varat darīt,
kaut kas līdzīgs rec.method kas būs pateikt, vai tas ir HTTP saņemt vai
HTTP POST pieprasījumus un lietas, piemēram, ka.
Tātad tur ir visi dažādu veidu īpašības, bet viņi abi
JavaScript objekti, un viņi vienkārši ir , kas uz tām funkcijām, kas jums
var rakstīt lietas.
OK?
>> Tāpēc ievērosiet, ka pieprasījuma apstrādātājiem ir pilnīgi pagājis.
Bet kodu, kas man bija pieprasījumā apdarinātājs ir joprojām.
Man joprojām ir šī res.writeHead un man joprojām ir šī res.end.
Un ko tas ir piemērs, kas JavaScript ir šī ideja
anonīms funkcija.
un anonīms ir kā montāžas nosaukumu par to, jo tas burtiski nav
ir nosaukums.
Nav funkcija pieprasījums apdarinātājs tur.
>> Nav nosaukuma, bet tas joprojām ir veikt arguments.
Tāpēc es joprojām got rec un res.
Un man vēl ir kods.
Tas ir pilnīgi naudas sodu JavaScript kodu.
Lai es varētu pasludināt funkciju bez nepārprotami dodot tai nosaukumu.
Tas ir nedaudz mulsinoši sākumā.
Ir daži, piemēram, noderīgas lietas ka jūs varat darīt ar
šie anonīmi funkcijas.
Vai kāds ir kādi jautājumi par to, vai tas ir OK, lai tikai tagad,
kārtot tikai pieņemt, ka tas darīs to pašu?
Yep?
>> Mērķauditorija: Vai funkcijas vispirms klases JavaScript?
>> KEVIN SCHMID: Tie ir pirmais klases JavaScript.
Un tikai zinām, ka šie jēdzieni iet uz anonīmu funkciju, piemēram,
tas attiecas uz JavaScript, kas jums var rakstīt savu galīgo projektā
interneta pārlūku too.
Tā, piemēram, javascript pārlūkprogramma, tas ir arī nedaudz notikums
brauc tādā nozīmē, ka tas, ko jūs ir, ir tad, kad lietotājs noklikšķina uz šo
pogu, es gribu, lai jūs palaist šo kodu.
>> Tātad, tas ir paša veida idejas klienta pusē, kad peles klikšķi, vai viņi
peli pār kādu attēlu uz jūsu mājas lapa, palaist šo kodu.
Kas var pieteikties uz serveriem.
Tātad tas ir veids, piemēram, aizraujošu Iemesls, kāpēc JavaScript ir patiešām
piemēroti vai daži cilvēki domā, tas ir piemērots valodu šāda veida
Pasākums vadītājs servera, jo jums ir šie anonīmi funkcijas.
Jums ir visa ideja par Tas asinhrono kodu.
OK.
Kāds ir kādi jautājumi?
>> OK.
Tā, ka bija simple.js.
Tāpēc aplūkosim vēl vienu vai pāris vairāk.
Tāpēc tas ir sleep.js.
Tātad, ir kāds pazīstams ar C funkcija gulēt?
No varbūt vienu no iepriekšējām nodarbībām vai kaut kas tamlīdzīgs?
>> Vārdu sakot, jūs varat iet uz es domāju, sekunžu skaitu vai, ja jūs izmantojat U
miega vairākas milisekundes vai nanoseconds.
Un būtībā programma būs tikai apstāties darbojas šajā laika sprīdī.
Tiesības?
Un tad tas būs mosties vēlāk, un tad tas būs tikai turpināt darboties
programmu.
>> Tāpēc šis serveris veida dod iespaidu guļ.
Tāpēc paziņojums, ka mums ir tāds pats res.writeHead 200 ar galveni, kā
agrāk, bet tad mēs aicinām šo funkcija sauc iestatīt izslēgšanas.
Noteikt timeout ir pieejams arī Jūsu interneta pārlūks Google Chrome
vai Safari vai neatkarīgi.
Un būtībā, ko tas dara šeit tas ir ņemot ar funkciju.
Paziņojumu, atkal, tas ir anonīms funkcija.
Tātad tas ir veida atdzist, jo mēs esam izmantojot anonīmu funkciju ietvaros
anonīmu funkciju, kas var būt mazliet dīvaini.
>> Bet tas ir ņemot šo funkciju, kas ir būtībā sakot - un kā tas
darbi ir 5000 milisekundes, es gribu jums, lai izpildītu šo funkciju, kas
vienkārši beidzas reaģēšanas un raksta hey.
Tāpēc tas rada iespaidu, ka, piemēram, guļ, bet kā tas patiesībā
darbojas, mēs palaist cauri Šī līnija ir ļoti ātri.
Mēs esam tikai rakstiski kaut ko.
Un tad mēs arī palaist cauri Šī līnija ir ļoti ātri.
Tāpēc mēs faktiski gatavojas jāgaida piecas sekundes.
Mēs esam tikai gatavojas palaist šo kodu uzreiz.
>> Un tad tur ir, atkal, tas maz notikums cilpa, kas tagad ir šī lieta
reģistriem, kas būtībā ir tikai pastāvīgi iet pa apli
un skatoties uz pulksteni vienotu diegi un sakot, ir piecas sekundes
pagājis vēl?
Un tad, kad redz, ka otrais roka ir pārvietots, piemēram piecām sekundēm vai
neatkarīgi, tad pamostas un saka: oh, kas man ir jādara?
Oh man palaist šo kodu.
Un tad tas notiek, lai palaist res.end hey.
>> Tātad vēlreiz, mēs nekad gaida šeit.
Tātad, tas nav, ka šis kods iekšpusē šī funkcija ir gatavojas veikt piecus
sekundes, lai palaistu.
Šis kods darbosies diezgan daudz uzreiz, vismaz attiecībā pret
piecas sekundes, ka mēs runājām par agrāk pirms tam.
>> Tik vienkārši, lai parādītu to darbībā, Es varu darīt Node.sleep.js.
Un tomēr es izjaukt kaut ko?
Iespējams.
Piedodiet.
Let 's redzēt, ko mēs varam darīt, lai atrisinātu šo.
OK.
Tāpēc noteikti izmantot Node.js.
Es esmu tikai kidding.
OK.
Tikai viens sek.
OK.
Es zinu, kas tas ir.
>> Tātad jautājums ir, ka citi mani tab šeit, es biju darbojas Node jau
ka pati adrese, 1337.
Tā kļūda, ka šo izmeta, ja mēs skatāmies pie tā reālā cieši, ir adrese
izmantot, EADDRINUSE.
Tāpēc man jau bija, izmantojot 1337 šeit.
Tātad, ja es izslēdziet to off, un tad es tagad mēģināt palaist to, cerams, viss
būs labi.
OK.
Tātad, jums var būt tikai viena lieta veida klausīšanās par ostas vienlaicīgi.
Vēl viens risinājums būtu bijis par mani vienkārši rediģēt šo programmu un veikt
tas ir, piemēram, 1338 vai kaut ko piemēram, ka.
>> Bet tagad miegs darbojas.
Tātad, pieņemsim, faktiski mēģina to ārā pārlūks šo laiku, jo tas ir
nedaudz unexciting redzēt tā terminālī.
Tāpēc es esmu tikai gatavojas iet, ka 127 adrese atkal 1337.
Un, ja jūs varat redzēt to -
Es nezinu, ja jūs varat - bet mana pārlūkprogramma ir ņemot ļoti, ļoti ilgi
laiks, lai slodze, vai, piemēram, piecām sekundēm.
>> Un tad pēc tam tas beidzot beidzās atbildi.
Un jūs nevarat redzēt, jo lieta pārvieto pa maz, bet, ja es drīkstu
Tas nedaudz mazāks, jums var redzēt, tā saka hey.
Tāpēc es saņēmu hey, bet pēc piecām sekundēm.
Un tas varētu būt nedaudz tīrāku, lai redzētu tas šeit terminālā, tāpēc es esmu
gatavojas darīt -
pieņemsim to darīt šeit -
Darīsim Curl šo adresi atkal ar 1337.
Un es tikko veida ir sēdēt Šeit piecas sekundes.
Bet paziņo, ka serveris var pieņemt jaunus risinājumus.
Tāpēc tas drukā hey.
>> Un demo tas, būtībā to, ko Es varu darīt šajā citā tab -
tāpēc pieņemsim, ka man tas citā tab, Es esmu gatavojas darīt Curl un tas pats
lieta vēlreiz.
Un es esmu gatavojas izmēģināt, lai kick šos džeku tajā pašā laikā.
Tāpēc es esmu gatavojas darīt, un es esmu gatavojas rase nekā šeit, un es esmu
gatavojas darīt to vēlreiz.
>> Un pieņemsim darīt tā, lai jūs var redzēt gan no tiem.
Ka viens drukāts hey, un ka viens drukāts hey visu ceļu pie -
pieņemsim to darīt šo eksperimentu vēlreiz.
Patiesībā, pieņemsim izmantot šo triks, ja tas ir OK.
>> Tāpēc es esmu gatavojas izmantot shell lieta, ka ļauj man būtībā palaist divas kopijas
Šīs programmas paralēli.
Tā tas būs palaist pirmo programmu un Otrā programma paralēli.
Tāpēc tagad, ja es nospiediet Enter, tas notiek lai šis lūgums diezgan daudz
uzreiz, tajā pašā laikā.
Tāpēc dosim šo shot.
>> Tāpēc tagad paziņojums saka divus procesus.
Un, ja jūs esat ieinteresēti, ka 27,000 skaits ir būtībā process ID.
Un tad ievērosiet, viņi drukāts hey tajā pašā laikā.
Tas nebija kā mums bija jāgaida piecus sekundes vienu, un tad pēc tam,
piecas sekundes vēlāk saņemtu otro.
Tāpēc, ka ir sava veida, dažos veidos, tas ir nav īsti pierādījumi, bet tas ir
intuitīvs pierādījumi, ka tā ir ne tikai kā gaida piecas sekundes, bloķējot
visu pavediens.
Labi atdzesē.
>> Tāpēc Aaron uzdeva jautājumu agrāk, ka bija arī kas notiks, ja mēs kaut ko darīt -
Yep?
>> Mērķauditorija: Pagaidiet.
Kā tas atšķiras no printf buferis, lai gan?
Vai nav tā automātiski darīt?
Kāpēc mums būtu jāuztraucas par to?
>> KEVIN SCHMID: Ak, vai jūs varētu saka, ka vēl vienu reizi?
>> Mērķauditorija: Vai nepatīk printf buferi darīt tieši to pašu?
>> KEVIN SCHMID: printf buferis?
>> Mērķauditorija: Jā.
OK.
Nebija vienā no viktorīnas tie bija runā par to, kā, ja jums taisnība printf
kaut ko, un tad ir tā pauze vienu otrkārt, un tad jums ir tā cilpa desmit
reizes, tas būs jāgaida desmit sekundes un tad printf viss kopā?
>> KEVIN SCHMID: Ak, OK.
>> Mērķauditorija: Vai tas dara pats lieta tam šajā gadījumā?
>> KEVIN SCHMID: Tātad jautājums bija būtībā vienā no iepriekšējo viktorīnas
vai kaut ko, tur bija jautājums, kas būtībā, ja jūs sakāt Drukas F 10
lietas laikā un pēc tam gulēja tāpat kā process drukāšanas tiem out,
beigās, kādu iemeslu dēļ, tas būtu vienkārši dump tiem visiem, kas uz ekrāna.
Tātad tur ir sava veida divu atšķirīgu koncepcijas šeit.
>> Tāpēc es domāju, viena lieta ir tas, ka šajā gadījumā mums ir darīšana ar divām dažādām
veida cilvēki jautā serveri lietām, tajā pašā laikā.
Un iemesls tam, ka printf veida gaida, piemēram, ka, un izgāž to visu ārā
uzreiz ir vairāk saistīta ar kā printf veida -
tā kā printf ir faktiski īstenot, ir tas būtībā ir
runāt ar operētājsistēmu rakstīt kas stuff ar konsoli.
Tāpēc tā nevēlas darīt visu, kas sīkumi uzreiz, kad jūs sakāt printf
daži virkne, jo tas varētu saņemt dārgi, ja tas ir
darīt, ka katru reizi.
>> Tātad, ja jūs printf hey, savu programmu tiešām var nedrukāt, ka
uzreiz ar konsoli.
Tā varētu teikt, OK, es uzrakstīju to.
Un tad veida gaidīt, lai jūs varētu sniegt tā nedaudz vairāk pirms faktiski
rakstiski to, ar konsoli.
>> Tā iemesla dēļ, ka tas bija gadījumā -
un tas ir sava veida nesaistītiem ar miegu -
ir tas, ka miegs bija sava veida tikko ievadīts, lai apliecinātu
Fakts, ka tā nav rakstīt tā sinhroni.
Bet iemesls tam ir tikai sniegumu tā, ka jums nav
darīt, ka daudz kontaktu ar operētājsistēma.
>> Bet šeit, ko mēs patiešām cenšas darīt ar šo miega lieta ir tikai šovs
ka tad, kad mums ir divi cilvēki apmeklē šajā mājas lapā, tas nav gatavojas likt
tos līnijas, kur tas notiek, lai pateikt Man ir, lai palīdzētu jums, un tad, kad es esmu
pilnībā pabeigts palīdzot jums pēc šīm piecas sekundes, tad es esmu gatavojas
pāriet uz nākamo personu.
Tātad pirmais personas lūgums nav sasiet šo notikumu cilpa
ja tas ir jēga.
>> Bet šeit ir faktiski piemērs kaut ko, kas būs tie
līdz pasākuma cilpu.
Tātad, šeit ir briesmīgs funkcija aprēķināt n-Fibonacci.
Tas ir burtiski sliktāk, kā jūs varat aprēķināt n-Fibonači numuru.
Un tas ir faktiski tikai atzīt ja tas nāca no,
tur tiešām -
Es domāju, jūs varat mēģināt iet atrast - bet tur ir kā ļoti ilgstoša blog
post, ka kāds rakstīja.
Tā kā viens no tiem Reddit lietām.
Bet kāds kritizēja Node.js, un viņi izmanto to kā piemēru.
Tāpēc es veida gribēju tikai parādīt divas dažādām perspektīvām tikai, lai iegūtu
vispārīga izpratne par jēdzienu Aiz šīm divām lietām.
>> Bet tas ir izvēlēts kā tikai briesmīgs, briesmīgi neefektīva skaitļošanas
intensīvā veidā, lai aprēķinātu n Fibonacci numuru.
Tik vienkārši kā sānu piezīmi, kāpēc ir tas briesmīgi patīk kādā veidā?
Yep?
>> Mērķauditorija: Say jūs sākat , kas ar 1000.
1000 sadalās 999 un 998.
Katrs no šī sadalās divām lietām.
>> KEVIN SCHMID: Right.
>> Mērķauditorija: Visu ceļu uz leju.
>> KEVIN SCHMID: Tieši tā.
Tik vienkārši atkārtot kamerai, ja es aicināt melot par, piemēram, 1000 vai kaut ko
piemēram, ka, tas, protams, ne mazāk kā vai vienāds ar vienu, tāpēc es esmu gatavojas
iet uz šo citam lietas, un tad es eju zvanīt melot 999 plus melot 998.
Un tad diezgan daudz viss, kas darbs, kas melot 999 tas ir
veida šajā līmenī.
Ja jūs iet uz leju, tas ir vēl lieku par to, bet, ja jūs vienkārši
domāju skaitļošanas melot 998 izpaužas mums diezgan tuvu melot 999.
Tāpēc mums patiešām vajadzētu būt nedaudz vairāk gudrs par to, kā mēs veida atkārtoti
tiem, bet mēs neesam atkārtoti šīs lietas vispār.
Tātad jūs varat iedomāties šo gigantisku, gigantisku koku, kas ir vienkārši briesmīgs.
>> Bet anyway, OK.
Tā, ka bija melot.
Tas tikai ņem, bet, lai palaistu.
Yep?
>> Mērķauditorija: [nedzirdama].
>> KEVIN SCHMID: Ak, vai jūs varētu atkārtot jautājumu?
>> Mērķauditorija: [nedzirdama].
>> KEVIN SCHMID: Ak tā tas ir tikai kods , kas būs sava veida uz
servera pusē.
Tāpēc tas nebūs atrasts pārlūkprogrammā vai neko.
Tas ir būtībā kas mums ir tas, ka tad, kad lietotājs šeit diezgan daudz markas
to pieprasījums atkal, kad mēs veida iesniegt pieprasījumu, mēs ejam, lai izsauktu
šo funkciju uz servera pusē.
Un tad mēs iegūtu rezultātu atpakaļ no zvana šo funkciju.
Un tad mēs vienkārši izdrukāt tā, lai lietotājam.
Tāpēc lietotājam nav īsti galā Šī funkcija ir pārāk daudz.
>> Bija tas, ka jautājums?
Vai tas ir jēga?
OK.
Atdzist.
>> Tātad vēlreiz, mēs šo visu res.writeHead lieta, kur mēs izdrukāt
galvenes.
Un tad es galu atbildes, ko darīt burvju numurs ir melot 45.
Tāpēc pieņemsim tikai palaist šo serveri.
Tāpēc es esmu gatavojas darīt mezglu fib.js.
Tāpēc tagad mans melot serveris darbojas.
>> Un tad šeit, es esmu gatavojas darīt vienu no šiem.
OK?
Tāpēc es esmu tikai gatavojas teikt, Curl.
Tātad, tas ir gatavojas veikt nedaudz, bet tomēr cerams, ka drīz tas beigsies un
tas būs drukāt, ka 45. Fibonači numuru.
>> Mērķauditorija: [nedzirdama].
>> KEVIN SCHMID: Tas būtu paveikt diezgan drīz.
Lai tā būtu piecas līdz sešas sekundes.
Es nezinu, kas ir tikai V8 ir super ātri, bet jebkurā gadījumā tas ir
ļoti īss piemērs, un ar nolūku neelegants of non-trivial
aprēķins.
Tātad, pēc kāda laika, tas nav saņemt šo.
>> Bet tagad, kas notiks, ja es to, ka tāda paša veida Eksperiments kā agrāk, kad es veicu
divi lūgumi, tajā pašā laikā?
Tātad, šeit es esmu gatavojas Curl par šī adrese, un es esmu gatavojas
darīt citas Curl.
Un atcerēties, kad mēs to darījām, lai gulēt serveri, kad mēs būtībā bija tā
pēc piecām sekundēm, tie diezgan daudz gan atgriezās tiesības
aptuveni tajā pašā laikā.
Tāpēc tas nav īpaši piesaistīti.
>> Bet pieņemsim, izmēģiniet to tagad.
Labi, tāpēc mēs saņēmām mūsu divus procesus.
Atcerieties, tie ir procesa ID.
Tas būs nedaudz neērts, kamēr mēs apstāsies.
Tāpēc pieņemsim tikai palikt šeit un gaidīt.
>> Tāpēc viens no viņiem ir jānāk atpakaļ pēc tam, piemēram, -
Labi, tāpēc viens atnāca atpakaļ.
Bet tad kāpēc ne otrs viens nāk atpakaļ tikai vēl?
Yep?
>> Mērķauditorija: Serveris nevar darīt neko kamēr tas skaitļošanas šo liels skaits.
>> KEVIN SCHMID: Right.
Tātad atbilde bija tikai, ka serveris tiešām neko nevar darīt, kamēr
tas ir skaitļošanas šo Fibonači numuru.
Tāpēc tagad es tikko saņēmu manas divas lietas atpakaļ.
Bet es domāju, tikai domāt par kodu nedaudz vairāk, kā tas strādā
un viss.
>> Tātad, šī funkcija šeit ir kods, kas Es esmu teicis šo serveri, lai darbotos, ja tā
saņem jaunu ienākošo pieprasījumu.
Tāpēc tas ir tikai gatavojas palaist caur šo visu kodu, un tad tas ir gatavojas iet
atpakaļ uz pasākuma cilpu, un pēc tam turpināt pārbaudot jauniem notikumiem.
Vārdu sakot, tas, ko mēs esam notiek ir serveris
klausoties jaunas lietas.
Pirmā persona lūdz par to, kas 45 ir.
Mēs palaist šo kodu, lai aprēķinātu to.
Šis kods aizņem apmēram piecas līdz sešām sekundēm, lai palaistu.
Tad mēs ejam atpakaļ uz notikumu cilpa un pārbaudīt jaunos pieprasījumus.
>> Tātad šis ir piemērs tam, kā, ja jums ir lietas, kas ir tā saucamā aprēķināt
saistošs, vai izmantot daudz skaitļošanas, nav varas, bet, piemēram, ir
skaitļošanas intensīva -
Es domāju, viena lieta ko teikt par šo ir ka šī funkcija dara pilnīgi,
par lielāko daļu, diezgan lietderīgs darbs labi.
Visu laiku, ka šī atzvanu funkcija darbojas, tas bija diezgan
daudz izdevumu lielāko daļu sava laika vienkārši skaitļošanas, ka n-tais Fibonači numuru.
>> Bet mums bija tikai vienu pavedienu lai risinātu ar.
Jo Apache modeli, kad divi cilvēki iesniegusi pieprasījumu, lai saņemtu melot 45, mēs
būtu divas dažādas tēmas.
Un tad operētājsistēma darbs būtu bijis, vai lietotāja līmenī
kods, kas pārvalda tēmas, būtu esam bijis šķēle, kas līdzi
CPU, vai pat, ja Jums bija vairāki CPU, izplatīt tās vienmērīgi visā CPU
tā, ka viņi abi apdare aptuveni tajā pašā laikā.
>> Tik vienkārši, lai parādītu jums, kā mēs varam atrisināt of - un tas nav kopējais perfect
risinājums, bet gan sava veida, kā mēs varam padara atgriezties šeit un darīt
mazliet labāk.
Tātad, ko man šeit ir programma, ko sauc Melot C. Un tas galvenokārt izmanto
vēl viens no mezgla moduļu sauc Bērnu Process modulis.
Tāpēc es esmu iekļauts, ka augšējā veida no kā es varētu darīt mārciņu ietver
bērns process.h vai kaut ko.
Tagad man ir pieeja šai KP mainīgajam kas ir visas manas funkcijas.
>> Tātad tagad, ko es daru ar šo atbildi apdarinātājs ir Es skrienu šo programmu
dot slash melot 45.
Tātad, ko es esmu darījusi - un es esmu tikai gatavojas iziet no šīs programmas
mazliet -
ir es esmu uzrakstījis C programmu, kas būtībā aprēķina
n Fibonacci numuru.
Tātad, šeit ir tikai programma, es esmu uzrakstījis C, kas aprēķina šo.
Es varu sastādīt to, un es varu palaist tas pie komandrindas.
Un tas notiek, lai aprēķinātu 45 Fibonacci numuru.
>> Tāpēc pamanāt, ka tas vienkārši notiek diezgan daudz, cik ilgi.
Es, iespējams, varētu izmantot domuzīme 03 līdz optimizēt to, vai kaut kas tamlīdzīgs,
bet es tikai darīju tāpat regulāri kompilators iestatījumi.
Un tas izdrukā to ārā.
>> Bet tagad, ko es veida, kā to izdarīt?
Ak piedodiet, nepareizi failu.
Tāpēc es darīt to pašu stuff ar header kā iepriekš.
Tad man darīt cp.exec.
Tātad, ko tas gatavojas darīt, ir tas gatavojas palaist šo programmu.
Bet kā tas darbojas, ka tas nav gatavojas gaidīt
šī programma, lai pabeigtu.
Tā vienkārši būtībā saka izpildīt šo programmu.
Vārdu sakot, ievadiet to komandrindas veida.
>> Un tad, kad esat pabeidzis ar tas, palaist šo funkciju.
Tāpēc tagad mēs veida saņemt šo viss atjaunots lieta
tāpat kā mēs neesam gaidīt.
Vai šāda veida jēga?
Yep?
>> Mērķauditorija: [dzirdams]?
>> KEVIN SCHMID: Tātad tas faktiski atvērt jaunu procesu, lai to izdarītu.
Tāpēc tas ir reāli, dažos veidos, ļaunums, nevis super ļauno, bet tā ir
svarīgi pateikt, ka tas ir sava veida atgriežoties, no vienas puses, Apache
modeli, kur mēs pavedieni un procesus katram pieprasījuma vai
procesus katru pieprasījumu.
Tātad tas ir sava veida analogs , ko Apache dara.
Dažos gadījumos, tas būs tikai izmantot jaunu vītne, kas ir nedaudz vairāk gaismas
svars nekā procesu, bet Apache varētu galu galā forking jaunu procesu
kas ir sava veida, ko mēs darām šeit netieši darot dot slash melot 45.
>> Un tad tādā gadījumā mēs veida rasties paši izdevumi procesu.
Tāpēc šī ir tikai viena lieta, ko jūs varat darīt.
Bet tikai lai pierādītu šāda veida darbību.
Un šī diskusija ir tikai tiešām ir vērsta uz Iesniedzot šo programmu veida, kā
veids, kā parādīt dažādas perspektīvas , kā veidot serveriem, piemēram, ka.
Tāpēc tas darbojas, tad tagad, ja man tas atkal, es saņēmu divus procesa ID.
>> Pieņemsim tikai runāt par lietas norādīt.
Tāpēc paziņojums, ka viņi pakāpeniski.
Tas ir forši.
Jo tas bija 27.122 agrāk.
Bet paziņojumu tagad, viņi atgriezās pie aptuveni tajā pašā laikā.
>> Un tagad, labs jautājums jautāt par kāpēc bija, ka lieta ir, kuru darbs
tas bija tagad veida padarītu šīs lietas veida spēlē godīgi ar katru
citi, šie divi gadījumi dot slash melot 45, kas man uzbrauca
vai Mezgls skrēja?
Kas veida padara taisnīgi, ka viņi abi get veida balstīts palaist laiku?
>> Mērķauditorija: [nedzirdama].
>> KEVIN SCHMID: Jā.
Tātad būtībā, kad man dot slash melot 45 vai kaut kas tamlīdzīgs, tagad tas ir
veida līdz operētājsistēmas apstrādāt runtime šo programmu.
Un tagad tā var ieplānot tos uz dažādiem CPU vai to
var ieplānot tos.
Tas var šķēle up laiku, ka viens CPU izpaužas tā, vai tie saņem
palaist uz vienu CPU.
Tā ka ir ideja, ka.
Vai tas ir jēga, lai visiem?
Tāpēc tagad Node nav īsti spēlē daļa sadalot šos uzdevumus.
OK.
>> Tātad tas ir gandrīz tas piemērus.
Es tikai gribēju parādīt vēl viena lieta tāpēc, ka daļa no tā līdz šim ir bijusi
nav pilnīgi super praktisks dažos gadījumos.
Es varu iedomāties, nāk mājās pēc šīs runāt un kaut ko un saka, piemēram,
labi es veida saņēmu no šīs runāt, ka Es varu dot Fibonači serveri
mans galīgais projekts.
Tātad, šeit ir tikai sava veida vēl viens piemērs , kas, cerams, būs -
varbūt ne, bet varbūt - nedaudz vairāk veida, kas attiecas uz gala projektiem un
domāšana uz priekšu par lietām, piemēram, ka.
>> Tāpēc tas ir chat.js.
Tātad šis ir veids kā kādu paraugu servera pusē kods, kas jūs varētu izmantot, lai
izveidot nelielu tērzēšanas serveri, piemēram, Jums var būt redzējis
Facebook Chat vai neatkarīgi.
Tāpēc es nesaku, tas ir, piemēram, Facebook Tērzēt, bet tas ir sava veida
piemēram, labi - varbūt nav labi, bet varbūt labi - sākumpunkts tērzēšanas
serveri jūsu mājas lapā par galīgo projektu.
Tātad, pieņemsim apskatīt to, ko tas dara.
>> Tāpēc mēs esam iegūt šo īpašo lietu augšpusē, tas RPV SiO
vienāds nepieciešama Socket.IO.
Tāpēc šī ir vēl viena lieta, ka tas nav faktiski nāk komplektā ar
Mezglā, bet jūs varat instalēt to.
Tā ir mezgls moduli.
Tātad, tas ir tāpat kā daži pagarinājumu mezglā.
>> SocketIO patiesībā patiešām veida atdzist.
Tas ir abstrakcija, kas būtībā to, ko tas ir, ir tas ļauj
ir šī plūsma komunikācijas starp web
pārlūkprogrammu un tīmekļa serveri.
Tātad, lielākā daļa līdz šim, mēs esam bija tie ļoti ātri vienu sekundi vai divas
Otrā saziņa starp web pārlūkprogrammu un tīmekļa serveri.
Tāpēc tas ir būtībā iet uz google.com, get sīkumi, nosūtīt to atpakaļ, un pēc tam
mēs esam darījuši.
Mēs nekad runāt atkal, līdz lietotājs veidiem kaut ko citu.
>> Bet ko Socket.IO un līdzīga veida lietas - un SocketIO faktiski ir viens
par lietām, kas ir būvēts uz kā WebSocket kas ir sava veida pieejams
kā daļa no HTML5 -
, kas ļauj jums ir šo turpināt dialogu.
Un tas ir ļoti noderīgi tērzēšanas serveri veida lieta, jo tas ir
veids kā turpināt dialogu daži veidi, jo, ja jūs čatā
ar kādu, jūs tagad var vienkārši sūtīt ziņu lejup caurulē, un pēc tam
serveris var nosūtīt īsziņu uz leju caurules ar citu personu, jūs
čatā ar.
Un tad jūs varat saņemt šo apmainīties, piemēram, ka.
>> Tātad tas ir veids, kas SocketIO ir labs.
Iemesls, ka SocketIO izmanto WebSockets jo viena lieta ir tā, ka
Papildus vienkārši veco WebSockets, tas arī dažas viltības, lai būtībā
padara pārlūkprogrammu saderīgu.
Tātad pārlūkiem, piemēram, Internet Explorer diemžēl neatbalsta WebSockets
pa labi no lodziņa.
Tāpēc tā izmanto kāda cita veida atdzist veikls lietas ar Adobe Flash, lai ļautu
Jums ir pārrobežu pārlūku atbalsts.
Tātad, tas ir patiešām noderīga.
>> Un patiesībā, es zinu, es esmu veida darbojas uz laiku šeit, bet CS50
Apspriest, vai esat kādreiz redzējuši kaut ko piemēram, es nezinu, tukša tik un tā ir
Atbildot uz šo ziņu, vai kaut kas tāpat, ka funkcija?
Tas ir SocketIO.
Tātad, ja kāds sāk rakstīt apspriest lodziņu, lai veiktu atbildi vai
kaut ko, jūsu pārlūks, kas ir sauc SocketIO izstaro sava veida
notikums, kas saka, ka kāds ir Atbildot uz šo amatu.
>> Tad serveris saka OK, kas man ir jādara?
Nu tagad man ir pateikt šos citi puiši kuri ir CS50 Apspriest meklē
Šajā post, ka kāds ir atbildēt.
Tātad tas ir veids, kas SocketIO ir labi, šo pastāvīgo veida
plūsma dialogu.
OK.
>> Tātad, ko es esmu šeit - un mēs esam tikai gatavojas ignorēt savienojumi masīvs
lai mazliet -
ko es daru, ir man cits klausīties.
Tātad tas ir tikai veids, Socket.IO ir sakot, pieņemsim klausīties šo ostu.
Un tad es to izdarītu par savienojumu.
Tātad tas ir tikai pamatā Socket IO s veids, kā pateikt, kad mēs saņemam
savienojums, es gribu jums palaist šo kodu.
>> Un paziņo, ka tā vietā, rec un res pagāja tur man Socket.
Un tas Socket ideja ir būtībā tas lieta, ka jūs varat rakstīt un lasīt
no tā ir lietotāja ziņas iespējams.
Un ziņas, ka jūs varētu nosūtīt var iet caur šo Socket.
Vai tas ir jēga?
Tātad, tas ir tas turpinās lieta.
>> Tātad, ko es daru, ir man zvanīt Socket.emit.
Un izdala notiek diezgan daudz divi argumenti.
Pirmais arguments ir virkne vienkārši pārstāv tādu tipu
lieta, jūs, kas izstaro.
Tātad šajā gadījumā, es esmu izmantošanu Šī virkne jaunu ziņu.
Un tas ir tikai būtībā sakot, ka šī veida lieta, ko es esmu
sūtīšanu, ir jauna ziņa.
Lai jūs varētu klausīties īpaša veida piemēram, jaunu ziņu vai kāds
izmantojot dot tālāk.
>> Tā savienojumu un lietotāju nosūtīti tur, ja paskatās, kur mēs aicinām dot tālāk,
tie ir citi virknes, kas pārstāv veidi lietotāju ziņas.
Tātad, tas ir būtībā, jūs varat būt šo EMIT viena no šīm ziņojumu veidiem, un
tad kaut ko darīt, reaģējot uz viena no šīm ziņojumu veidiem
>> Tāpēc es esmu, kas izstaro šo jauno ziņojumu.
Mēs ejam, lai ignorēt connections.push uz otru.
Bet tad es saku, Socket.on lietotājs nosūtīja.
Tāpēc tagad tas ir veids, piemēram, ja lietotājs sūta man ziņu, es gribu
palaist šo kodu.
Un paziņo, ka tas anonīms funkcija lieto šo mainīgo
sauc par datu, kas būtībā notiek ir lietotāja vēstījumu.
>> Tāpēc tagad pieņemsim veida runāt par savienojumi masīvs.
Tāpēc tas ir paredzēts tērzēšanas klients kur būtībā visi ir sava veida in
pats tērzēšanas telpā.
Tātad būtībā, kas mums nepieciešams, lai saglabātu apkārt ir daži masīvs, kas būtībā
pārstāv visus cilvēkus čatā daži veidi, ja tas ir jēga.
Tiesības?
Tāpēc, ka mums ir nepieciešams zināt, kas ir tie puiši ir, lai mēs varētu nosūtīt viņiem ziņas
ka citi cilvēki nosūtīt mums.
>> Tātad, ko šis kods tas ir tad, kad lietotājs nosūta ziņojumu - tas ir veids
notikums -
Mēs ejam, lai palaistu šo kodu.
Un tas, ko mēs darām, ir, mēs palaist caur šo masīvs, ka mēs esam pieprasījuši savienojumu.
Un diezgan daudz par katru savienojumu izņemot vienu, kas ir mūsu, tas ir
ko tas kods saka, mēs nosūtīsim jaunu ziņojums ar šo pievienoto ziņu
informāciju.
>> Tātad, ja jūs pamanāt šeit, ko es darīju, kad lietotājs faktiski padara jaunu
savienojums esmu pievienojis ar JavaScript.push metode, tas ir
būtībā vienkārši sakot, piemēram, pievienot ka Socket kā vērtība stāšanās
mūsu savienojumi masīvs.
Tāpēc tagad, kad tas kods darbojas, tā būs nosūtīt lietas, kas īpaši
savienojumus.
Tāpēc tas var būt labs sākuma punkts lai padarītu tērzēšanas serveri
vai kaut kas līdzīgs.
>> Un veids atdzist lieta ir tā, ka kods, kas jūs redzēt šeit, piemēram, par un
izstarot un lietas, piemēram, ir tāds pats veida JavaScript kodu, ka jūs būtu
rakstīt pārlūkā mijiedarboties ar serveri.
Tātad, tāpēc SocketIO ir sava veida veikls un noderīgi šādā veidā.
>> Ak, un tikai vēl viena lieta, ļoti ātri.
Tur bija CS50 galīgais projekts pagājušajā gadā kas būtībā īsteno tērzēšanu
serveris Node.js.
Es domāju, ka tas Harvardchats.org bet es neesmu -
OK.
Es neesmu pārliecināts, ko URL ir, bet Es varu nosūtīt, ka no tam.
Bet tas ir sava veida atdzist, ko jūs varat darīt ar Node.js.
>> Tāpēc es ceru, ka, kopumā, jūs guys ir labu sajūtu par to, kas Node.js ir noderīga
un kā jūs varētu varbūt pieteikties uz savu galīgo projektu.
Man būs izsūtot daži vairāk resursiem kopā ar to.
Un paldies par ierašanos.
Paldies.
>> [Aplausi]