>> KEVIN SCHMID: hamı Hello.
CS50 seminar xoş gəlmisiniz Node.js. haqqında
My name Kevin edir.
Mən CS50 TF oldum.
Mən sort həqiqətən heyecan kimi deyiləm bu seminar haqqında.
Mən Node.js çox sərin hesab edirəm.
Bu seminar istifadə edilə bilər ki, ümid edirik üçün yaxşı, mən tapmaq, tramplin kimi
son layihələr əgər bəzi Siz istifadə ilgilendiğiniz
Node.js. kimi bir şey
>> Biz sort tərəfindən seminar başlamaq lazımdır yalnız bir az söhbət
background genişlənmə cür sonra Node.js perspektivləri, və
biz bəzi kodu nümunələri hərəkət edəcəyik.
Və mən bir web kodu lazımdır, və siz kodu baxmaq olar.
Və seminar sonra, mən müzakirəsi düzmək lazımdır Siz Node.js bilərsiniz necə haqqında
bilgisayarınızda.
>> OK.
Belə ki, in başlamaq bildirin.
Mən yalnız haqqında danışmaq istəyirəm tapmaq web server, həqiqətən, ilk.
Bu müzakirə başlamaq, mən əsasən gələn bir diaqram var
CS61 üçün istifadə dərslik olan əsasən qarşılıqlı göstərir
web kimi bir müştəri prosesi arasında browser və ya məqsədi müştəri və ya kimi
ki, kimi bir şey, və bir web server.
Belə ki, bu cür benzer Siz mühazirə gördüm ki, şəkil
Çərşənbə Ü əsasən biz bəzi var Google Chrome kimi müştəri proses.
>> Və sonra addım biridir müştəri sorğu göndərir.
Belə ki, bir şey kimi də edək ola bilər ziyarət, mən CS50.net bilmirəm.
Belə ki, sorğu vermək.
Və heç adını yadda etmir necə ki, ifadə edən protokol
sorğu strukturlaşdırılmış olmalıdır?
Yep.
>> Auditoriya: [işitilemez].
>> KEVIN SCHMID: Exactly.
Belə ki, hüququ, HTTP kimi var?
Necə Belə ki, əsasən dəqiqləşdirilməsi ki, sorğu həqiqətən çəkilməlidir
həyata, çünki günün sonunda, ki, sorğu həqiqətən yalnız kimi bir
string ki, əsasən Mən bu istəyirəm deyir.
Və dəqiqləşdirilməsi ki HTTP edir.
Belə ki, bir protokol kimi.
>> Belə ki, sonra server qəbul ki, sorğu.
Belə ki, uşaqlar bir web server yüklü CS50 cihaz.
Bu Apache var.
Bu həftə problemi üzrə iş zaman yeddi müəyyən siz həqiqətən iş olacaq
ki, web server ilə.
Belə ki, server ki, sorğu alır, və sonra bu cür danışıq var onun
baş və nə yaxşı kimi demək Mən bu etməliyəm?
>> Belə ki, sonra, nə qərar nə əsaslanır Bu bir növ əlaqə ola bilər
resurs.
Və resurs ola bilər fərqli şeylər çox.
Bir üçün, ola bilər yalnız bir statik HTML fayl kimi.
Belə ki, yalnız bir kimi ola bilər Kimi ki, HTML
Sizin şəxsi səhifəsinə bax.
Bu bir resim kimi bir statik fayl ola bilər və ya var ki, bir film kimi.
Bu da danışmaq ola bilər verilənlər bazası bir növ
MySQL verilənlər bazası kimi.
Belə ki, həmişə ünsiyyət yoxdur resurs, lakin ilə
bəzi hallarda, bu ola bilər.
>> Belə ki, o nə neler bundan sonra olacaq edir
cavab geri göndərin.
Və bunun üçün cavab həmçinin HTTP müəyyən.
Belə ki, sonra müştəri qəbul edə bilərsiniz.
Bu ayrı qoparmaq və onu emal edə bilərsiniz.
Və sonra bir web page almaq kimi Google və ya CS50.net və ya
Siz getdi nə.
OK?
>> Belə ki, bu əsas qarşılıqlı olduğunu biz ilə məşğul olacaq.
Və biz olduqca çox olacaq Bu bu hissəsi diqqət
qarşılıqlı server.
OK.
Cool.
Kimsə Yox Mu, bu günə qədər hər hansı bir sualınız var?
OK.
>> Dedik belə kimi, web server qəbul sonra bu HTTP sorğu və bu məsələləri
HTTP cavab.
Və kimi biz, əvvəl haqqında danışılan CS50 cihaz web server Apache edir.
Uşaqlar işləmək Belə ki P, yeddi müəyyən Siz iş olacaq
Apache web server.
Siz, həqiqətən, iş üçün heç vaxt lazımdır birbaşa çox Apache ilə.
Siz sort APACHE bir az konfiqurasiya Siz virtual Host və ya müəyyən zaman
Bu v Host, və biz almaq lazımdır bir az ki.
>> Lakin əsasən, Apache web server PHP cür iş qurmaq
qutusuna həyata.
Siz getmək zaman nə həqiqətən olur demək, kimi web biri,
yerli host slash index.php və ya bir şey, brauzerinizin göndərir ki,
sorğu, və sonra Apache oturan var və bu ilə tutulur.
Və hərəkət icra edir ki index.php kod və
sonra geri off göndərin.
Belə ki, var.
Beləliklə, biz sort bu barədə danışdıq.
Belə ki, yalnız bir statik fayl ola bilər və ya məsələ sonra bəzi PHP kodu run və
cavab.
>> Gəlmək olar ki, sonra ortaq bir sual up yaxşı, necə biz, həqiqətən məşğul yoxdur
çox istifadəçi olan eyni zamanda?
Bir web yazılı Belə ki təsəvvür server, bir web server idi ki, əgər
Əgər bir şey yazmaq üçün çalışırıq C və ya kimi bir şey,
əsasən haqqında düşünmək olar necə var kodu bir növ ola bilər ki,
sonra sorğu almaq, lakin bu barədə bütün bu işləri nə var.
Bu, misal üçün, əlaqə ola bilər verilənlər bazası və ya kimi bir şey.
Sağ?
Və sonra bu cür olardı emal və sonra
cavab geri göndərdi.
Belə ki, yüksək kimi səviyyəsi ümumi.
>> Amma dərhal aydın deyil necə edə bilərsiniz ki, iki nəfər və ya
hətta 1000 nəfər ilə iş bilər Sizin eyni zamanda web server.
Belə ki, Apache istifadə edir ki, həll mövzuları və ya proseslər adlanır.
Beləliklə, siz eşitmişəm bilər əvvəl bu şərtləri.
Bu varsa OK, lakin yalnız düşünmək yolları kimi mövzuları və ya proseslər haqqında
bir əməliyyat sistemi və ya istifadəçi proqram və ya kimi bir şey və ya bir web server
sort birden çox icra etmək dəfə şeylər.
Beləliklə, siz müddəti eşitmişəm bilər icra mövzuları kimi.
Siz etdiyiniz kimi belə bu cür var çoklu sort.
>> Və siz qutusuna gördüm əgər laptop, və ya kimi bir şey,
Siz nə edə bilərsiniz ölçüde, siz edir fərqli iki müxtəlif mövzuları run
CPU hissələri onlar ki həqiqətən eyni zamanda baş verir.
Belə ki, bu, həqiqətən, güclü edir.
Bu Apache-nin növüdür Bu problemin həlli.
>> Belə ki cür hər hansı məsələlər kimi var baxmayaraq ki, bu yanaşma ilə?
Belə ki, I növ orada yazdı danışarlar.
Amma onların həm sort yaddaş bir çox istifadə edin.
Bu yaratmaq üçün çox bahalı bir mövzu və ya bir prosesdir.
>> Və əsaslandırıcı hissəsi olduğunu yalnız kimi bir C proqram çalışan etdiyiniz zaman
Sizin əsas kimi və sonra zənglər başqa funksiyası ki, var
yığını bir növ.
Belə ki, mövzuları da tamamilə bir tələb ayrı-ayrı yığını olan
olduqca böyük ola bilər.
Və siz təsəvvür edə bilərsiniz, əgər ton olan Sizin veb istifadəçi, siz var ki
müxtəlif mövzuları bir çox.
Ki, borular bir çox var idarə və saxlamaq.
Belə ki, böyük yaddaş istehlakı var.
>> Və sonra, həmçinin, yalnız var deyək bir CPU, və ya siz var deyək
Siz daha çox mövzuları o multicores.
Sağ?
Belə ki, 10 mövzuları idi deyək və yalnız beş CPU'lar idi.
Siz növ bu şey var Siz cari arasında keçid
çünki çalışan ki, bir bütün bir dəfə 10 run bilməz.
Ki, bir kontekstində keçid deyirlər.
Və müddətli həqiqətən bir neçə üzvü var müxtəlif kontekstlərdə, lakin yalnız edək
kommutasiya kimi hesab iki mövzuları arasında.
Bu olduqca bahalı ola bilər, çünki əsasən nə var siz
Siz işle dayandırmaq üçün, qazanc ki, çalışan mövzu dövlət, və
sonra başqa bir yerdə keçid.
>> Belə ki, hamı cür görür niyə mövzuları və motivasiya
proseslər bir az böyük ola bilər?
Və bir sual var idi?
OK.
Cool.
Kimsə Yox Mu hansı bir sualınız var?
OK.
>> Beləliklə, biz ikinci bir addım geri almaq əgər, bir növ kimi var
biz edə bilər ki, müşahidə web applications bir çox.
Və həqiqətən var ki, onların bir çox həqiqətən yoxdur ki, çox faydalı
bir mövzu daxilində işləmək.
Belə ki, heç başlayıb P bütün yeddi qurmaq?
Beləliklə, siz bəlkə təsvir etmək istəyirəm bəzi hissələrinin?
Siz giriş üzərində işləmiş və ya kimi bir şey?
>> Auditoriya: Xeyr
>> KEVIN SCHMID: OK.
Mind heç vaxt.
Üzr istəyirik.
Lakin əsasən, P dəsti, siz növ bir çox edilməsi olacaq
bəzi almaq üçün bir verilənlər bazası queries verilənlər bazası məlumat.
Və nə kodu edir olacaq, nə Apache proses və ya
Apache mövzu bunu edir ki, Bu əlaqə var isə
verilənlər bazası bu cür olacaq edir orada oturan və olacaq
verilənlər bazası cavab gözləyir.
>> İndi ki, böyük bir kimi görünə bilər Bu verilənlər bazası sizin deyil, çünki məşğul
CS50 cihaz, sağ?
Amma şəbəkəsinin bir növ var orada gizlilik artıq web çünki
server öz tələbi vermək var ilə ünsiyyət bazası
bazası və sonra almaq məlumat geri.
Belə ki, indi mən deyiləm, mənim üçün gözləmək kimi getmək üçün gedən bir şey almaq
bazası və sonra var davam gözləyir çox.
Ki, hissi edirmi?
>> Və bəzi şeylər üçün bu pis deyil.
Yalnız var Əgər, misal üçün, access memory ki, kimi deyil
dəhşətli I / O gizlilik.
Mən deyəndə, I / O gizlilik, mən nə istinad kimi hər cür kimi
input output.
Amma kimi, disk bir fayl daxil olmaq üçün Mən statik HTML xidmət etmək istəyirdi
fayl ki, mənim web page və ya kimi bir şey, mən növ var
bir az dayandırmaq ki, fayl oxumaq disk, sonra da
ki, proses gözləyirəm.
Mən faydalı iş görən deyiləm.
>> Bu hər şey doğru deyil, lakin P set kimi applications ümumi
yeddi və proqramları bir çox Siz deyilik ki,
həqiqətən çox düşüncə.
Mən düşüncə deyəndə, mən demək hesablama iş kimi.
Belə ki, hesablama işləri bir şey ola bilər kimi, demək, siz istədi
yalnız hesablanır ki, bir web server yazmaq nth Fibonacci sayı.
Ki, xüsusilə kimi səs deyil fun web server.
Like Mən site olmaq üçün gözləmək olmaz növbəti Facebook, lakin bəzi
hesablama cür işlər.
>> Və ilə əvəz təsəvvür edə bilərsiniz maraqlı bəzi digər növ
hesablama işləri.
Siz bir şey yazılı idi deyirlər ki, dərəcə hesablanmış
iki nəfər arasında ayrılıq və ya kimi bir şey.
Belə ki, bəzi növ cəlb edir hesablanması, sağ?
Və hətta sonra, siz hələ bunu bəlkə gözləmə bir çox
Siz baxmaq üçün bir verilənlər bazası sorğu üçün up edən və ya dost var
ki, kimi bir şey.
Belə ki, anlayışı bu cür var hesablama işləri.
Ki, hissi edirmi?
Heç bir sualınız varmı?
>> Oh və mən orada chat server qoymaq tapmaq chat server cür, çünki
Bu yaxşı bir nümunəsidir.
A chat server yoxdur çox təfəkkür etmək.
Bu yalnız insanlar üçün gözləmək var mesajları və sonra zaman göndərmək
onlar, onları göndərə bilərəm.
OK?
>> Belə ki, yalnız yenidən recap, Apache və ki, çəngəl a bənzər web server
mövzuları və proseslərin çox olan cür israfçı ola bilər.
Mən gələ bilər ki, məsələ danışarlar ki, biz lazımdır olunur
çox mövzuları və proseslər?
Nə biz yalnız bir idi, əgər?
>> Belə ki, belə bir şəkil çəkmək imkan bu kimi baxmaq nə.
Belə ki, yalnız bir mövzu istifadə edək.
OK?
Belə ki, yalnız bir mövzu ilə bu təsəvvür.
>> Biz həqiqətən bunu deyil Güman edək çox faydalı - və mən deyəndə
faydalı, mən hesablama iş demək -
əvvəl çox mövzuları.
Belə ki cür birləşdirmək bildirin bir sap daxil hər şey.
Belə ki, nə biz bir mövzu cür olsaydı yalnız loop ətrafında gedir və
daim çek bir şey etdi yeni baş verir.
Belə ki, məsələn, yeni bir şey oldu Mən geri bir şey var demək bilər
göndərilən verilənlər bazası, və ya kimsə mənə yeni bir HTTP sorğu.
Belə ki, həmin hadisələr cür ki, sağ, nə?
>> Və sonra mən nə edə o yeni baş şeylər bu mövzu deyil
icrası, bu tək Mövzu icra, Mən bəzi kodu zəng edə bilərsiniz ki,
xüsusi şey idarə edirəm.
Belə ki, məsələn, mən bir şey var, əgər geri verilənlər bazası, mən run bilər mənim
bu kiçik hesablama hissəsi ki, həqiqətən yalnız bir şey hazırlayır
istifadəçi geri göndərin.
Belə ki, mənada bu cür edir?
>> Amma həqiqətən nə var Bu nəticələri?
Sağ?
Biz yazdıq, çünki kodu ki, bir çox -
və yalnız irəli tullanmaq üçün gedirəm ki, OK əgər slaydlar.
Əgər ağla deyil əgər Belə ki, mən yalnız bir addım geri gedir.
Belə şey bu cür bir hadisə loop çağırıb.
OK?
Və bu əsas növü var Node.js. arxasında ideyası
>> Node.js həqiqətən bir web kimi edir Belə ki, nə server bir mövzu var ki,
ki, əsasən bir loop ətrafında gedir altında bir müddət bir növ kimi
daim ki, Node.js başlıq yoxlanılması, biz yeni şeylər almaq idi?
Və sonra işleyicileri davam edəcək siz qurmaq.
Amma xahiş yaxşı bir sual, necə biz bu baş edə bilərsiniz
Mövcud şeyi?
>> Mən burada C kodu bir line qoymaq bu açılış kimi əsasən görünür
sağ, fayl?
Mən o, yalnız bir albom ilə çıxdı.
Mən onun yeni bir fayl açmaq idi.
Belə ki, yol fəaliyyət üçün C kodu -
və mən faylları seçdi səbəbi idi danışarlar bu dərəcədə növ çünki
biz C etdik ki, I / O iş input output var ki, bir mənada.
Beləliklə, biz bu kodu zəng ki, Bu f açıq yoxdur.
Və sonra bizim növbəti line proqram, biz indi f ilə işləyə bilər.
>> Belə ki, bu bir nümunəsidir olacaq ki, sinxron və ya kimi
ilk line çünki blok orada biz qədər gözləyir
fayl açıq olsun.
Belə ki, ikinci xətt, biz bilirik ki, f ilə işləmək, lakin bu o deməkdir bilər ki,
ki, ikinci xətt həqiqətən run bilməz ilk line edilir qədər.
Ki, hissi edirmi?
>> Belə ki, bu qoymaq üçün pis olacaq bir hadisə işleyicisindeki.
Və səbəbi ki, gözləyir bu cür, sağ?
Belə ki, bu bizə geri qaytarılırdı eyni şey.
Və indi biz hətta olmaz çox mövzuları fayda və ya
proseslər biz var, çünki Node.js. bir mövzu
Ki, hamıya mənada edirmi?
>> Auditoriya: gözləyin.
Belə ki, əvəz nədir?
>> KEVIN SCHMID: Oh, belə ki, bəli.
Mən almaq üçün gedirəm əvəz.
OK.
Biz bir şey idi ki, nə bu kimi baxdı?
Belə ki, nə mən redaktə indi əgər f bir az açmaq?
Mən eyni keçən alıram əvvəl iki dəlilləri.
Mən hələ də yeni mahnı sevgi o çıxdı ki,.
Amma üçüncü şey keçən alıram olan Bu dəyişən kodu adlanır.
>> Amma kodu həqiqətən nə bu çərçivədə?
Bir müntəzəm C dəyişən kimi?
Bu hüququ, bir funksiyası var?
Və çünki bir az qəribə ola bilər Mən, həqiqətən, indi keçən kimi deyiləm
başqa funksiyası daxil fəaliyyət göstərir.
>> Bu barədə qeyd etmək bir neçə şeyi.
One, Mən, həqiqətən, zəng deyiləm kodu funksiyası.
Beləliklə, siz ilə kodu görmürəm sol paren, sağ paren.
Mən yalnız kodu keçən alıram.
Və C, bu həqiqətən nə edəcəyini ki, faktiki mənə bir göstərici vermək
kodu, və sonra bu run bilər.
Siz etdiyiniz kimi ancaq bu barədə düşünmək çalıştırmak üçün kodu keçən zaman
fayl açılır.
>> Amma bu o deməkdir ki, indi edə biləcək mənim proqram istirahət
digər məhsulları, digər bunu davam edə bilər stuff biz, həqiqətən, gözləyin, lakin deyil isə
yalnız başımızın geri var ki, ki fayl açıq, run ki,
üst kodu.
Ki, hissi edirmi?
>> İndi Node.js arxasında fikir ki, f ilə do məhsulları kodu
hissəsi olduqca qısa və sadə olmalıdır həqiqətən və sadə və
intensiv çox computationally.
Başqa bir fayl açmaq üçün ola bilər, lakin ki, olduqca sürətli olmalıdır
yalnız başqa f nə demək lazımdır, çünki açmaq və sonra bu digər kodu zəng.
>> Belə ki, yalnız tamamilə açıq, f olmaq ki, açmaq, yeni Katy Perry mahnı yoxdur
görülən mp3, ki, olacaq olduqca çox dərhal qayıtmaq.
Və sonra biz yalnız bunu davam edə bilər digər məhsulları çünki indi f bütün
açıq zəng əsasən demək olunur etmir əsas f açıq kodu Bu faylı açmaq
və bu açılış Bitirdiğinizde Siz onu geri almaq zaman fayl və ya,
sonra kodu run.
Lakin həqiqətən kodu çalışmaz.
Və bir sual var idi?
>> Auditoriya: Siz bir neçə çıxırdı computationally əlavə ki dəfə
intensiv kodu sort qırmaq [Işitilemez] idarə sistemi.
[Işitilemez]?
>> KEVIN SCHMID: Bu böyük bir sual var.
Mən həqiqətən necə bir nümunə var Siz computationally inteqrasiya edə bilər
bir az intensiv kodu.
Belə ki, biz kodu nümunələri almaq zaman, Mən bir çəkmək üçün əmin olacaq.
Ki, OK mı?
Təşəkkür edirəm.
>> Adı nə idi?
>> Auditoriya: Aaron.
>> KEVIN SCHMID: Aaron bir çox gətirir olan yaxşı bir nöqtədə, mən əgər
bəzi computationally intensiv kodu f hissəsi, qalan ilə nə stuff
mənim proqram çalıştırmak bilməz və qulaq bilməz bütün qədər yeni sorğu və ya bir şey üçün
ki, stuff başa çatmışdır.
Mən ümumiyyətlə Node kodu yazılı alıram Mən gedirəm kimi biz bir şey halda
baxdığımız zaman sonra gəlir kod nümunələri, mən əmin olmalıdır
mənim kodu up bağlamaq deyil bu hadisə loop.
Ki, hissi edirmi?
OK.
Cool.
>> Belə ki, Node.js bu çərçivə təklif edir ki, Əgər idarə bu hadisə inşa edə bilərsiniz
ilə server.
Belə ki, Asynchronous bu cür var halbuki, I / O kitabxana qeyri-blocker
biz oldum ki, standart C kitabxana ilə iş kimi, əgər yalnız
biz etdik ki, eyni şəkildə istifadə f ilə istifadə edilmişdir açır və
stuff, bu blok, çünki Əgər həqiqətən gözləmək lazımdır
açmaq üçün fayl.
>> Amma Node.js siz verir və əsasən Google V8 əlaqələri
Səbəb olan JavaScript mühərrik Chrome emal belə sürətli olduğunu
JavaScript çünki Bu V8 mühərriki var.
Mən o biri kimi səslənir bilirik WWDC geliştirici konfransları şey
onlar yalnız bir dəstə atmaq prosessorları üçün məktubu sayı şeylər
və bu belə sərin demək.
Amma bu etdiklərini sərin Bu, çünki JavaScript -
və ya bəlkə siz ilə tanış değilseniz JavaScript hələ biz idi, çünki
bu barədə mühazirələr -
lakin JavaScript bir şərh edir dil.
>> Və bu çox əhəmiyyətli bir nöqtə.
Belə ki, bizim web üçün vacibdir server sağ, sürətli olmaq?
Və biz yalnız JavaScript çalışan, əgər şərh ki, kodu, yalnız
hər hansı bir köhnə tərcüməçinin yavaş ola bilər.
Bu olan belə Node faydaları super sürətli V8 tərcüməçi.
Onlar adına əgər mən bilmirəm çünki alnında V8 yumruq
şey, lakin OK.
>> Mən bəzi nümunələr hazırlanır etdik bu URL.
Seminardan sonra, mən növ gedirəm Siz Node toplusunu əldə edə bilərsiniz necə haqqında danışmaq
up, lakin indi üçün, mən yalnız sort istəyirəm Bəzi kodu nümunələr vasitəsilə gəzmək.
Belə ki, birlikdə izləmək istəyirsinizsə, bütün mənbə kodu var mövcuddur.
OK?
>> Mən bu URL tərk edəcəyik bir az üçün.
Və sonra mən yalnız gedirəm terminal keçid.
Hamı bu URL ilə yaxşı?
Mən artıq keçid gedirəm burada mənim terminal.
>> Belə ki, burada kodu ki, Mən bu gün üçün var.
Niyə biz başlamaq deyil simpler.js fayl?
Digər odur ki, bütün bu kodu yazılı olacaq
JavaScript siz bilər və ya ilə tanış ola bilər.
Mən bir neçə şeylər danışarlar ki, bir çox JavaScript kod növ edir
syntax və strukturu çox oxşardır C, kimi cür ala bilərsiniz, belə ki,
Siz birlikdə getmək.
Mən bir çox yazmaq denedim ki, bir şəkildə bu başlanğıc kodu
bu ki, C oxşar bir az daha oxunaqlı.
Amma biz irəliləyiş kimi, mən olacaq əlavə bəzi nümayiş
JavaScript funksiyalar cür sərin var.
>> Amma bu nümunə proqram baxaq.
Mən hər şey orada kəsilmiş oldu danışarlar.
Mən yalnız real düzeltmek üçün gedirəm ki, OK və ya deyil sürətli əgər.
Mən bunu gedir nə bilmirəm.
Bir az daha yaxşı deyilmi?
Siz var və stuff bilərsiniz?
OK.
>> Belə ki, ilk line JavaScript kimi dəyişən versiyası
Bəyannamə.
Belə ki, yalnız nə bu ki vurğulamaq üçün Belə ki, bu kimi C. kimi baxmaq
mənə dedi index üç bərabərdir və ya kimi bir şey.
Mən növü daxil etməyib.
JavaScript növləri var, lakin bu çox dinamik təbiət tipli, belə ki,
bu tipli hər cür təmin etməyib.
Belə ki, yalnız var var.
Dəyişən kimi.
OK?
>> Mən bu dəyişən HTTP zəng edirəm.
Və mənim sağ tərəfdən, mən var Mən HTTP qoymaq istəyirəm ki, ifadə.
Bu HTTP tələb edir.
Belə ki, bu cür analoji daxildir.
Bu bir az daha çox kimi güclü daha var daxildir ki, mənada daxildir
yalnız surəti və mövzu paste olacaq Bu funksiya prototipləri üçün fayl və ya
növü anlayışlar ilə nə.
Amma tələb həqiqətən gedir Bizə kodu almaq üçün.
>> Beləliklə, siz hesab edə bilər bəzi kodu idxal.
Belə ki, haradasa Node.js modul sistemi və ya nə olursa olsun, onlar bütün bu var
HTTP server kodu mən yalnız deyiləm öz üçün gətirilərkən
Bu proqram şəxsi istifadə.
OK?
>> Beləliklə mən bu funksiya var Mən yazdıq ki.
Mən daxil olmamışdır bildiriş qaytarılması növü və ya növü
dəlilləri yenidən.
Belə ki cür boş tipli mənada bu cür.
Bu edir ki, iki dəlilləri, sorğu və cavab.
Belə ki, konseptual növ kimi biz ki, şəkil tanış
ekranda çünki əvvəl biz bu sorğu almaq ki, biz
istifadəçi var.
Və sonra biz bir cavab var ki, biz şeyi yaza bilərsiniz.
>> Belə ki, bu ilk line edir 200 res.writeHead və sonra bu
məzmun növü text plain.
Belə ki, bir az bu ayrı parça bildirin.
Belə ki, yalnız res.write diqqət edək bir az.
Belə ki, yazmaq, əsasən və baş yazmaq sort həyata yazmaq üçün yalnız yolları
cavab şeylər.
OK?
Heç xatırlayır Belə ki, baş yazmaq HTTP mühazirə, siz uşaqlar nə
at başlıqlarını xatırlamaq HTTP şey üst?
Belə ki, niyə yalnız demo deyil real sürətli mövzular.
Ki, faydalı ola bilər?
Və ya olmalıdır biz yalnız növ -
OK.
Sure.
>> Belə ki, browser google.com gedir zaman və ya kimi bir şey,
əslində bir az daha çox var -
Bu gizli kimi -
bir az daha çox məlumat kimi var yalnız daha boru vasitəsilə gəlir
az axtarış və hər şey.
Belə ki, bu göstərmək üçün, mən gedirəm Curl adlı proqramı istifadə etmək.
OK?
Belə ki, bu çalıştırabilirsiniz şeydir Mac OSX command line və ya da
cihaz və ya nə.
Və mən Curl əgər HTTP google.com, Mən HTML görmək üçün gedirəm.
Və bu, ədalət, yalnız Növ sizə deyir ki, HTML
Sənin Brauzer deyil, əgər www yönlendirme avtomatik idarə
redirection.
>> Belə ki, bu, yalnız HTML, lakin mən gedirəm Mən bayraq bu tire Curl əlavə etmək.
OK?
Və bu göstərmək üçün gedir Mənə mövzular.
Belə ki, bu da gəlir ki, məlumat vasitəsilə mən bu cavab almaq zaman.
OK?
>> Belə ki, üst, bu görmək HTTP 301 daimi hərəkət.
Və bu cür əhəmiyyətli, çünki Bu status kodu aiddir.
Belə ki, burada 301, status kodu əsasən yalnız bir tam olan
ki, brauzer və ya kim var deyir Siz ki, iddia, bu oxu
Bir browser etdiyiniz və siz bu gördükdə, əsasən indi baxsaq
və bir 301 bax, siz Mən bilirəm əsasında xüsusi bir şey etmək
301, və ya xüsusi bir şey baş 301 əsaslanır.
Belə ki, daimi köçürülüb deyir.
>> Və sonra, əsasən, biz əsas dəyər cüt bir dəstə.
Beləliklə, biz yer almaq www.google.com edir.
Və sonra cür bütün bu digər məhsulları, lakin əsasən, nə yer
kəlam yeni yer www.google.com edir.
Siz google.com getmək əgər Belə ki, indi, will sort blink browser cür görmək
sizi yönlendirme sonra ikinci və doğru geri www.google.com üçün.
Belə ki, cavab ola bilər Bu mövzular.
>> Və hər şeyi bir neçə qeyd etmək.
Belə ki, biz, həqiqətən, uğurlu idi deyirlər bir web page ziyaret edir.
Belə ki, mənə gedək -
yaxşı veb nədir?
Mən yaxşı düşüncə pis oldum yerində saytları.
>> Auditoriya: Wikipedia.
>> KEVIN SCHMID: OK.
Wikipedia edək.
Belə ki, burada köçürülüb.
Oh gözləyin.
Mən?
Bəli, Mən.
OK.
Mən www etmək lazımdır.
Mən www gedirəm.
Gördüyünüz kimi, burada bütün HTML var brauzer emal ki,
Vikipediya üçün.
>> Amma burada scrolling saxlamaq əgər, Mən üst görəcəksiniz -
wow, bir çox var Vikipediya haqqında HTML -
amma nə mən burada üst görmək bilər Bu kimi qarşı bu 200 durum kodu
Mən əvvəllər gördüm ki, 301.
Və bir gözəl var ki, görürsünüz yanında dostluq OK.
Belə ki, bu yaxşı status kodu kimi.
>> 200 nömrə tanış baxmaq varmı?
Bəli, çünki mən simpler.js etdi, zaman Mən orada bir 200 yazdı.
Belə ki, əsasən demək deyərək oldu browser və ya kim almaq üçün çalışır
Onlar uğurlu idi ki, bu.
Və ya kimi biz bu cür çox uğurlu olmuşdur.
>> Və xüsusi sintaksis bu cür var Cəmi bir elan üçün
content növü kimi bu düymələri xəritəsi və mətn düzənliyi kimi bu dəyərlər.
Beləliklə, siz cavab baxsaq ki, biz əvvəl geri Wikipedia var -
Mən hərəkət etmək üçün cəhd gedirəm bir az daha sürətli up -
Siz server kimi bu düymələri var və bu dəyərlər Apache.
Belə ki, açarları və dəyərlər var.
Və bu belirtebilirsiniz Geri göndərmək üçün nə node.
>> Belə ki, bu, bəzi, həqiqətən növ edir yolları və bəzi yollarla deyil
həqiqətən, ancaq bir az aşağı səviyyədə var siz ola bilər ki, PHP kodu dən
P üçün yazılı yeddi müəyyən çünki PHP və Apache sort bəzi qayğı
sizin üçün bu şeyi.
PHP, mənim yalnış bilər Öz başlıqlarını yazmaqla davranış.
Amma bu məqsədləri üçün, biz almaq öz başlıqlarını yazmaq üçün.
>> Belə ki line mənada edir hamı, yazma baş line?
OK.
Awesome.
>> Beləliklə nə mən cavab sonu dünya salam söyləyərək.
OK.
Amma bu yalnız bir funksiyası var sorğu handler çağırıb.
Belə ki, indi mən həqiqətən cür nə etmək lazımdır Bu funksiya ilə bir şey, sağ?
>> Belə ki, burada nə bu var edir var server bərabərdir hansı line
HTTP.create server, və sonra tələbi handler keçir.
Belə ki, bu node növüdür bir server yaratmaq yolu.
Mən keçən edirəm ki, görürsünüz sorğu işleyicisindeki.
Belə ki, bu createServer izah Mən sizə bir mənə etmək istəyirəm ki, funksiyası
server, və zaman server alır bir cavab, Mən sizə bu zəng etmək lazımdır
handler funksiyası tələb.
OK?
>> Belə ki line olduqca çox hemen başa.
Belə ki, var server line sağ edilir Siz olduqca çox bunu sonra.
Mən demək, bəzi daxili qurmaq var siz var ki, bilmək dövlət
ki, sorğu handler funksiyası zəng, lakin orada oturmaq gedən və deyil
demək göndərilən istifadəçi var Mənə hələ sorğu?
Istifadəçi hələ mənə sorğu göndərib?
Belə ki, blok deyil.
OK?
>> Belə ki, nə bu edəcəyik əsasən indi bu kodu bir göstərici mağazalar,
sonra bu tələbi handler funksiyası, və kod davam edəcək zaman kimsə
tələb edir.
Və sonra biz server.listen etmək.
>> The 1337 olduqca ixtiyari var.
Mən heç bir xüsusi səbəbi var idi ki sayı seçmək üçün.
Bu tamamilə təsadüfi idi.
Amma yalnız port müəyyənləşdirir.
Belə ki, ən web server görəcəksiniz ki, onlar ki növü var, çünki port 80 istifadə
qurultayının kimi.
Mən kimi bir şey getmək əgər, Mən bilmirəm, Wikipedia.org,
və mən nöqtə 8 qoymaq -
wow oh, siz göremiyorum.
Üzgünüm.
Amma Wikipedia əgər -
Mən burada yaza bilərsiniz ki, yalnız belə Bu kamera aydındır.
Amma bir brauzer bu almaq əgər ifadə edən bir colon 80, getmək
Wikipedia.org port 80.
Belə ki, Amerika Birləşmiş Ştatları nə kimi Siz gəmi bilərsiniz kimi çox limanları
cür şeylər.
Belə ki, bu xüsusi getmək kimi Bu server yer.
OK.
>> Mən yalnız 1337 seçdi.
Nömrələri bir sıra var Siz seçə bilərsiniz ki,.
Ki, tamamilə xüsusi deyil.
>> Amma nə indi gedirəm I Bölməsi çalıştırmak üçün gedirəm edir.
Mənə həqiqətən daxil edək ki, bir neçə Siz görə bilərsiniz ki, aşağı satır.
Mən Bölməsi gedirəm, və mən simpler.js çalıştırmak üçün gedir.
Və biz almaq üçün necə haqqında danışmaq lazımdır Node bir az qurmaq.
Amma indi yalnız server çalışan.
>> Belə ki, bir şey cəhd edə bilərsiniz hansı ola bilər maraqlı, biz, həqiqətən bilər ki, ola
Curl daxil olmaq üçün cəhd edin.
Mən Curl edə bilər, və mənim maşın yerli host edir.
Siz həmçinin bu yazılı görəcəksiniz bəzən bu kimi.
Yerli host və 127.0.0.1 növ var sizin ev kompüter kimi.
Belə ki, söhbət kimi öz kompüter.
OK.
>> Və sonra mən 1337 demək olar.
Mən kodu bu xətt run əgər, dünya merhaba deyir.
Mən ki, stuff görmək istəyirdi ki, idi content növü mətn düz və ya
nə, mən hətta burada bu qoymaq bilər.
Və OK deyir ki, görürsünüz.
Mən mətn düz var.
Və sonra bu başqa cür bütün var Node əlavə edəcək ki, stuff
orada mənim üçün.
Bu super vacib deyil.
>> Mən demək, texniki bir növ var cür ki aspektləri
yalnız göstərmək üçün danışmaq sərin, lakin Mən də sizin güc var
ətrafında bu dəyişir.
Mən yalnız bir dəstə əlavə edə bilərsiniz ki, kimi məhsulları.
Və sonra indi mən baxmaq əgər mənim çıxış, bu olacaq.
Belə ki, bu mövzular müəyyən şeylər demək kimi brauzerlərdə və şeylər.
>> Və mövzular əsasən bir browser deyə bilərsiniz necə bir şey cavab.
Əgər əvvəl cookies eşitdim varsa və ya heç rahatsız olduğunuz halda
cookies qəbulu web page, və ya cookie blok və ya açıq
ki, kimi bir şey.
Siz, həqiqətən, cookies bilərsiniz bu başlıqlarını.
Belə ki, onlar necə bir browser demək bəzi hallarda davranış.
OK.
>> Belə ki, simpler.js idi.
Heç bir sualınız varmı ki, mənbə kodu fayl?
OK.
Cool.
>> Belə ki, gələn r aradan qaldırılması imkan və simple.js baxmaq.
Belə ki, bu olduqca çox olur eyni proqram.
Mən yalnız bir az fərqli yazdı Mən məqamı düzmək üçün istəyirdi, çünki
JavaScript bəzi xüsusiyyətləri.
>> Belə ki, fark tələbi handler funksiyası tamamilə yox oldu.
Yep Oh, bir sual var idi?
>> Auditoriya: Bəli, arqumentləri ki, qəbul olunur ki,
funksiyası, onlar nə var?
>> KEVIN SCHMID: Belə ki, o var JavaScript obyektləri.
Node.js sənədlərin, o əsasən üsulları var nə deyir
onlara mövcuddur.
Biz yalnız çıxışı var nə yazma baş və son adlanan bu üsul
və kimi stuff.
Amma bütün dəstə var daha üsulları.
>> Və məsələn, onlardan biri kimi AzTV xüsusilə, siz edə bilərsiniz
rec.method kimi bir şey verəcək bir HTTP almaq var və ya sizə
HTTP POST sorğu və kimi şeylər.
Belə ki, müxtəlif bütün növ var xassələri, lakin onlar həm də istəyirik
JavaScript obyektlərin, və onlar yalnız var onlara əlavə funksiyaları siz ki,
şeyi yaza bilərsiniz.
OK?
>> Belə ki, sorğu handler fark tamamilə getdi.
Amma tələbi idi ki, kodu handler hələ.
Mən hələ bu res.writeHead var və Mən hələ bu res.end var.
Və bu nümunə nə JavaScript bir bu fikir
anonim funksiyası.
və anonim uyğun adı kimi bunun üçün bu sözün deyil, çünki
bir adı var.
Heç bir funksiyası tələb var orada handler.
>> Heç bir adı var, lakin hələ də bir dəlil atır.
Mən hələ rec və res var.
Və mən hələ kodu var.
Bu mükəmməl gözəl JavaScript kodu.
Mən bir funksiyası elan edə bilər aydın bir ad verilməsi.
Bu ilk bir az confusing var.
Bəzi kimi faydalı şeylər var ilə edə bilərsiniz ki,
bu anonim funksiyaları.
Heç bu barədə hər hansı bir sualınız varmı, və ya, yalnız, indi OK
sort yalnız qəbul ki, bu eyni şey olacaq?
Yep?
>> Auditoriya: funksiyaları ilk edirsiniz JavaScript sinif?
>> KEVIN SCHMID: Onlar ilk var JavaScript sinif.
Və yalnız bilirik ki, bu anlayışlar kimi bir anonim funksiyası keçən
Bu JavaScript müraciət ki, üçün yekun layihə yazmaq bilər
çox web browser.
Belə ki, məsələn, JavaScript ildə brauzerinizin, bu qədər də hadisə
mənada idarə ki, nə lazımdır istifadəçi bu tıkladığında var
düyməsini, mən bu kodu run etmək istəyirəm.
>> Belə ki, ideyalarının eyni cür var klient bir siçan klik və ya onlar zaman
bəzi image üzərində mouse sizin web page, bu kodu run.
Server müraciət edə bilər.
Belə ki, növ maraqlı kimi JavaScript həqiqətən nə səbəb
uyğun və ya bəzi insanlar bu hesab bu cür üçün uyğun dil
hadisə sürücü server var, çünki bu anonim funksiyaları.
Siz bütün fikir var Bu asynchronous kodu.
OK.
Kimsə Yox Mu hansı bir sualınız var?
>> OK.
Belə ki, simple.js idi.
Belə ki, bir daha baxaq və ya bir neçə daha çox.
Belə ki, bu sleep.js edir.
Belə ki, ilə tanış heç edir C funksiyası yuxu?
Əvvəllər mühazirələr bəlkə biri və ya kimi bir şey?
>> Belə ki, əsasən düşünürəm keçə bilər bir saniyə nömrəsi və ya U kullanıyorsanız
ms bir sıra yatmaq və ya nanoseconds.
Və əsasən proqram yalnız dayandırmaq vaxt bu məbləğ üçün çalışan.
Sağ?
Və sonra nəhayət ayılmaq və o, yalnız çalışan davam edəcəyik
proqram.
>> Belə ki, bu server sort verir yuxu təəssürat.
Beləliklə, biz eyni olduğunu fark mövzu kimi 200 res.writeHead
əvvəl, lakin sonra biz bu zəng etdiyiniz funksiyası set zaman aşımı adlanır.
Set fasiləsi də mövcuddur web browser Google Chrome
və ya Safari və ya hər hansı.
Və əsasən burada bunu nə bir funksiyası alaraq olunur.
Notice, yenidən, bu var anonim funksiyası.
Biz istəyirik, çünki Belə ki, sərin növü var bir ərzində anonim funksiyası istifadə edərək,
anonim funksiyası bir az qəribə ola bilər.
>> Amma hansı ki funksiyası alaraq Bu yol və - əsasən deyərək
işləri istəyirəm, 5000 ms edir ki, funksiyası icra edən
yalnız hey cavab bitir və yazır.
Belə ki, bu kimi təəssürat verir yuxu, lakin yol bu, həqiqətən,
işləri biz vasitəsilə run lazımdır edir çox tez bu xətt.
Biz yalnız bir şey yazılı edirik.
Və sonra biz də axır olacaq çox tez bu xətt.
Belə ki, biz, həqiqətən, fikrində deyilik Beş saniyə gözləyin.
Biz yalnız run olacaq dərhal bu kodu.
>> Və sonra, yenidən, bu az var indi bu şey var ki, hadisə loop
əsasən yalnız ki, qeydiyyat daim bir dairə ətrafında gedən
və bir saat baxaraq mövzu və söz, beş saniyə var
Hələ keçdi?
Və sonra gördüyü zaman ki, ikinci əl beş saniyə və ya kimi köçürülüb
nə olursa olsun, o qədər wakes və deyir oh, mən nə var?
Oh, mən bu kodu run var.
Və sonra olacaq hey res.end axır.
>> Belə ki, yenə biz burada gözləyən heç edirik.
Belə ki, deyil ki, daxilində bu kodu bu funksiya beş alıb gedir
run saniyə.
Bu kodu olduqca çox davam edəcək dərhal, ən azı nisbi
biz söhbət ki, beş saniyə haqqında əvvəllər əvvəl.
>> Belə ki, yalnız, fəaliyyət bu göstərmək üçün Mən Node.sleep.js edə bilərsiniz.
Və bir şey mən mess etdi?
Ola bilər.
Üzr istəyirik.
Biz bu düzeltmek üçün nə edə bilər nə edək.
OK.
Belə ki, mütləq Node.js. istifadə
Mən yalnız söylüyorum deyiləm.
OK.
Yalnız bir sec.
OK.
Mən nə bilirik.
>> Belə ki, məsələ ki, mənim digər nişanı burada, mən artıq Bölməsi çalışan
Eyni ünvanı, 1337.
Biz baxsaq bu, atdı ki, səhv ona real yaxından, ünvanı var
, EADDRINUSE istifadə edin.
Mən artıq burada 1337 istifadə edilmişdir.
Mən indi sonra bu off bağlamaq, və əgər ümid edirəm ki, hər şey bu çalıştırmak üçün cəhd
gözəl olacaq.
OK.
Belə ki, yalnız bir şey növ ola bilər da bir port dinləmək.
Digər həll mənim üçün olardı yalnız proqram redaktə və etmək
Bu 1338-ya bir şey kimi ola kimi.
>> Amma indi yuxu qaçır.
Belə ki, həqiqətən, bu cəhd edək browser bu dəfə çünki bir
görmək üçün az unexciting bir terminal.
Mən yalnız getmək üçün gedirəm 127 ünvanı yenə 1337.
Və əgər bunu edə bilərsiniz -
Mən əgər bilmirəm - ancaq mənim browser bir çox, çox uzun alaraq
və ya beş saniyə kimi yüklemek üçün vaxt.
>> Və sonra sonra, nəhayət cavab sona çatdı.
Və siz onu görmək bilməz, çünki şey Mən əgər bir az artıq köçürülüb, lakin
bu bir az kiçik, siz Bu hey deyir bilərsiniz.
Mən hey var, lakin beş saniyə sonra.
Və bu bir az təmiz ola bilər burada terminalında bu, mən deyiləm
bir edəcəyimiz -
burada nə edək -
ki ünvan Curl bunu bildirin yenidən 1337 ilə.
Mən yalnız cür oturmaq üçün burada beş saniyə üçün.
Amma fark server yeni cavab qəbul edə bilər.
Belə ki, hey görüntüler.
>> Və əsasən, bu demo nə Mən bu digər nişanı edə bilərsiniz -
belə ki, mən başqa nişanı bu nə demək, Mən Curl və eyni gedirəm
şey yenidən.
Və mən bu salmaq üçün cəhd gedirəm eyni zamanda uşaqlar off.
Mən bunu gedirəm, və mən burada irqi gedir və mən
daha bunu edəcəyik.
>> Və bunu etmək qoy ki, onların hər ikisi bilərsiniz.
Hey çap ki, bir və bir çap hey bütün yol at -
yenidən ki, eksperiment bunu bildirin.
Əslində, bu istifadə edək ki, OK varsa, bezemek.
>> Mən bir shell şey istifadə gedirəm ki, Mənə əsasən iki nüsxədə run imkan verir
paralel olaraq bu proqramın.
Belə ki, ilk proqram run lazımdır paralel olaraq ikinci proqram.
Mən Enter düyməsini basın əgər Belə ki, indi gedir ki, sorğu olduqca çox etmək
dərhal eyni zamanda.
Belə ki, bu bir shot vermək bildirin.
>> Belə ki, indi bu iki proses deyir görürsünüz.
Və maraqlı olduğunuz halda ki, 27,000 sayı əsasən proses ID edir.
Və sonra onlar çap bildiriş hey eyni zamanda.
Biz beş gözləmək idi kimi deyil sonra bir və sonra üçün saniyə,
beş saniyə sonra ikinci almaq.
Belə ki, növ, bəzi yollarla, o var oldu həqiqətən sübut, lakin deyil
yalnız deyil ki, intuitiv sübut Beş saniyə gözləyən və blok kimi
bütün mövzu.
Cool OK.
>> Belə ki, Aaron əvvəl bir sual soruşdu ki idi, yaxşı nə biz bir şey yoxdur, əgər -
Yep?
>> Auditoriya: gözləyin.
Necə ki fərqli printf bufer, baxmayaraq ki?
Avtomatik olaraq bunu etmir?
Niyə biz bu barədə narahat var?
>> KEVIN SCHMID: Oh, siz bilər ki, bir dəfə daha demək?
>> Auditoriya: printf bufer kimi deyil eyni şey?
>> KEVIN SCHMID: The printf bufer?
>> Auditoriya: Bəli.
OK.
Onlar sınavlar bir deyil necə əgər sağ printf söhbət
bir şey və sonra bir fasilə var ikinci, və sonra siz loop on var
dəfə, on saniyə gözləyin və lazımdır sonra birlikdə hər şey printf?
>> KEVIN SCHMID: OK, Oh.
>> Auditoriya: Bu eyni bunu edir şey bu halda?
>> KEVIN SCHMID: Belə ki, sual idi əsasən keçmiş sınavlar biri
və ya bir şey, bir sual var idi ki, əsasən çap f 10 demək əgər
sonra bir anda şey və kimi yuxuda həmin çap prosesi,
nədənsə sonunda, bu ki, yalnız ekranda bütün bu kötük.
Belə ki, iki fərqli növü var burada anlayışlar.
>> Mən bir şey ki, bu tapmaq halda, biz iki fərqli ilə məşğul olduğunuz
sort adam server tələb eyni zamanda şeylər üçün.
Ki, printf cür səbəbi kimi gözləyir və bütün zibilliklərin
bir dəfə daha çox bağlıdır necə printf cür -
belə ki, yol printf əslində həyata əsasən üçün var
yazmaq üçün əməliyyat sistemi danışmaq konsol ki stuff.
Belə ki, bütün etmək istəmir Siz printf deyəndə stuff dərhal
bəzi string ki, ola bilər, çünki o var əgər bahalı almaq
hər zaman bunu.
>> Əgər Belə ki, hey proqram printf həqiqətən ki, çap bilər
dərhal konsol.
Bu OK, mən bunu yazmışdır, demək bilər.
Vermək üçün və sonra cür gözləyin bu, həqiqətən əvvəl bir az daha
konsol onu yazılı.
>> Belə ki, bu halda idi ki, səbəb -
və bu cür bir əlaqəsi yoxdur yuxu üçün -
yuxu sort yalnız idi ki, nümayiş etdirmək üçün orada vurulan
Bu yazmaq deyil ki fakt Bu synchronously.
Amma səbəbi yalnız performans yoxdur ki,
ki, bir çox əlaqələr etmək əməliyyat sistemi.
>> Amma burada, nə biz, həqiqətən etmək çalışdığınız bu yuxu şey ilə yalnız şou
ki, səfər iki nəfər var Bu veb qoymaq niyyətində deyil
Onlara demək olacaq bir xətt Mən olduğumu sizə kömək, və var
tamamilə bu sonra sizə yardım tamamladı beş saniyə sonra mən gedirəm
növbəti şəxs üzərində hərəkət.
Belə ki, ilk şəxsin tələb etmir ki, hadisə loop bağlamaq
ki, anlamlı əgər.
>> Amma burada həqiqətən bir nümunəsidir bağlamaq olacaq ki, bir şey
hadisə loop up.
Belə ki, burada bir dəhşətli funksiyası var nth Fibonacci hesablamaq.
Bu sözün siz pis yoldur nth Fibonacci sayı hesablamaq.
Və bu, yalnız etiraf əslində Bu, haradan gəldi
həqiqətən var -
Mən demək, siz onu tapmaq getmək üçün cəhd edə bilərsiniz - ancaq çox uzun blog kimi var
kimsə yazdı ki, göndərin.
O Reddit şeyi biri kimi.
Amma kimsə Node.js tənqid və Onlar nümunə kimi istifadə.
Mən cür yalnız iki göstərmək istəyirdi müxtəlif perspektivləri yalnız almaq üçün
anlayışlar bir ümumi anlayış Bu iki şeyi geridə.
>> Amma bu, yalnız bir dəhşətli seçilmişdir horribly səmərəsiz computationally
Bu hesablamaq intensiv yol nth Fibonacci sayı.
Belə ki, yalnız bir tərəfdən qeyd kimi, niyə bu dəhşətli bir şəkildə kimi?
Yep?
>> Auditoriya: Siz başlamaq De 1000 ilə.
999 və 998 daxil 1000 böler.
Bu hər iki şeyi daxil olur.
>> KEVIN SCHMID: Right.
>> Auditoriya: Bütün yol aşağı.
>> KEVIN SCHMID: Exactly.
Belə ki, yalnız, kamera üçün təkrar I 1000 və ya bir şey kimi uydurma zəng
kimi, açıq-aydın az deyil və ya bir bərabər mən gedirəm
bu başqa işə getmək, sonra gedirəm 999 Uydurma plus 998 Uydurma zəng etmək üçün.
Və sonra olduqca çox bütün ki 999 yoxdur yalan ki, iş
növ bu səviyyədə.
Aşağı getmək əgər, daha lazımsız var çox, lakin əgər yalnız
hesablama fib 998 alır hesab us olduqca yaxın 999 Uydurma üçün.
Belə ki, biz, həqiqətən, bir az daha çox olmalıdır biz növ təkrar istifadə haqqında ağıllı
Bu, lakin biz yeniden deyilik bütün bunlar.
Belə ki, bu nəhəng təsəvvür edə bilərsiniz yalnız dəhşətli ki, nəhəng ağac.
>> Amma hər halda, OK.
Belə ki, yalan idi.
Bu yalnız çalıştırmak üçün bir müddət alır.
Yep?
>> Auditoriya: [işitilemez].
>> KEVIN SCHMID: Oh, siz bilər sual təkrar?
>> Auditoriya: [işitilemez].
>> KEVIN SCHMID: Oh, belə ki, bu yalnız kodu edir ki, sort on olacaq
server yan.
Belə ki, bu aşkar etmək niyyətində deyil brauzerinizin və ya bir şey.
Biz buna nə var əsasən ki, zaman burada istifadəçi olduqca çox markalar
yenə onların tələbi, biz sort sorğu etmək, biz zəng olacaq
server tərəfində bu funksiya.
Və sonra biz nəticə geri almaq lazımdır ki, funksiyası zəng.
Və sonra biz yalnız çap edəcəyik istifadəçi bu.
Belə ki, istifadəçi həqiqətən məşğul deyil çox bu funksiyası ilə.
>> Sual idi?
Ki, hissi edirmi?
OK.
Cool.
>> Belə ki, yenə, biz bu bütün res.writeHead etmək biz çap Ü şey
mövzu.
Və sonra mən etməklə cavab başa sehrli sayı fib 45.
Belə ki, yalnız bu server run imkan verir.
Mən bir Node fib.js. gedirəm
Belə ki, indi mənim fib server çalışır.
>> Və sonra burada, mən gedirəm bu bir etmək.
OK?
Mən yalnız Curl demək gedirəm.
Belə ki, bir az müddət gedir, lakin var inşallah tezliklə başa və
bu 45-ci çap edəcək Sayı Fibonacci.
>> Auditoriya: [işitilemez].
>> KEVIN SCHMID: Bu olmalıdır olduqca tez həyata almaq.
Belə ki, beş-altı saniyə olmalıdır.
Mən yalnız V8 olan super bilmirəm sürətli, lakin hər halda, bu deyil
məqsədli çox qısa misal və bir qeyri-mənasız və sərt
hesablama.
Belə ki, bir müddət sonra, bu almaq deyil.
>> Amma indi mən nə ki, əgər eyni cür Mən harada əvvəl sınaq
eyni zamanda iki sorğu?
Belə ki, burada bir Curl gedirəm ki, ünvanı, və gedirəm
başqa Curl etmək.
Və biz bu nə zaman, xatırlayıram biz əsasən bu idi zaman, server yatmaq
beş saniyə sonra, onlar olduqca çox sağ, həm də geri gəldi
eyni zamanda ətrafında.
Belə ki, xüsusilə up bağlı deyil.
>> Amma indi cəhd edək.
OK, belə ki, biz iki prosesləri var.
O prosesi kimlikleri saxla.
Bu bir az olacaq biz tövlə isə yöndəmsiz.
Belə ki, yalnız burada qalmaq imkan və gözləmək.
>> Belə ki, onlardan biri gəlməlidir geri kimi sonra -
OK, belə ki, bir geri gəldi.
Bəs onda niyə ikinci etmədi yalnız hələ geri gəlir?
Yep?
>> Auditoriya: The server bir şey edə bilməz ki böyük sayı hesablama var isə.
>> KEVIN SCHMID: Right.
Belə ki, cavab idi ki, yalnız server həqiqətən bir şey edə bilməz
ki, Fibonacci sayı hesablama edir.
Belə ki, indi mən yalnız mənim iki şey var.
Amma yalnız indeksi haqqında düşünmək tapmaq bir az daha, necə çalışır
və hər şey.
>> Belə ki, burada bu funksiya kodu edir ki, Mən zaman çalıştırmak üçün bu server bildirib etdik
yeni daxil olan sorğu alır.
Belə ki, yalnız bu axır olacaq bütün kodu, sonra getmək olacaq
Tədbirdə loop geri və sonra davam Yeni hadisələr üçün yoxlanılması.
Belə ki, əsasən biz baş nə server edir
yeni şeylər üçün dinləmək.
Ilk şəxs 45 nə üçün xahiş edir.
Biz bunu hesablamaq üçün bu kodu run.
Bu kodu edir təxminən beş çalıştırmak üçün altı saniyə.
Sonra tədbir loop geri və yeni istekleri üçün kontrol edin.
>> Belə ki, bu halda, necə bir nümunəsidir sözdə compute olan şeylər var
bağlı, və ya hesablama bir çox istifadə, güc deyil, lakin kimi
intensiv computationally -
Mən bu barədə demək bir şey tapmaq bu funksiya tamamilə etdiyini
çox hissəsi üçün, olduqca faydalı iş hüququ.
Bütün vaxt ki, callback funksiyası çalışan, bu olduqca idi
çox onun çox vaxt sərf yalnız hesablama ki nth Fibonacci sayı.
>> Amma biz yalnız bir mövzu var idi ilə məşğul.
Apache model olaraq, zaman iki insan , 45 Uydurma almaq üçün sorğu biz
iki müxtəlif mövzuları olardı.
Və sonra əməliyyat sisteminin iş istifadəçi səviyyədə olmuşdur, və ya olardı
mövzuları idarə kodu, var ki on qədər dilim olmuşdur
CPU, və ya birdən çox CPU'lar idi, hətta, Bu CPU'lar arasında bərabər onlara paylamaq
onlar rəngi, həm də idi ki, təxminən eyni zamanda.
>> Belə ki, yalnız biz düzmək bilər necə göstərmək - və bu da ümumi mükəmməl deyil
həll, lakin sort necə biz etmək bura gəlib və bunu
bir az daha yaxşı.
Belə ki, nə mən burada adlı bir proqramdır Uydurma C. Bu əsasən istifadə edir
adlı Node-in modulları başqa bir Uşaq Process Modulu.
Mən daxil etdik ki, üst cür daxildir Mən bir funt edəcəklərinə kimi
uşaq process.h və ya bir şey.
İndi bu CP dəyişən etmək imkanı var olan bütün funksionallıq var.
>> Belə ki, indi mən bu cavab yapýyorum nə handler Bu proqram çalışan alıram deyil
dot Uydurma 45 doğramaq.
Belə ki, nə I etdik - və mən yalnız gedirəm bir üçün bu proqramın həyata addım
az -
Mən bir C proqram yazdıq ki, əsasən hesablayır
nth Fibonacci sayı.
Belə ki, burada yazdıq, bir proqram C Bu hesablayır.
Mən bunu tərtib edə bilərsiniz, və mən çalıştırabilirsiniz bu command line.
Və bu hesablamaq etmək olacaq 45 Fibonacci sayı.
>> Belə ki, yalnız alır qeyd uzun kimi olduqca çox.
Mən yəqin ki, tire 03 istifadə edə bilərdi onu və ya kimi bir şey optimize,
amma yalnız müntəzəm kimi etdi compiler parametrləri.
Və onu çap.
>> Amma indi, mən növ nə edirəm?
Sorry Oh, səhv fayl.
Mən eyni stuff etmək əvvəlki kimi mövzu.
Sonra bu cp.exec etmək.
Belə ki, nə bu nə gedir ki, edir, Bu proqram çalıştırmak üçün gedir.
Amma bu işləri yolu ki bunun üçün gözləmək niyyətində deyil
başa çatdırmaq üçün proqram.
Bu, yalnız əsasən deyir bu proqram icra.
Belə ki, əsasən bu yazın tez cür əmr.
>> Və sonra, siz tamamladığınızda , bu funksiyanı çalıştırmak.
Belə ki, indi biz növ bu almaq bütün bərpa şey
kimi biz gözləyirik deyilik.
Bu cür mənada edirmi?
Yep?
>> Auditoriya: [işitilemez]?
>> KEVIN SCHMID: Yəni bu, həqiqətən bunu yeni bir proses açmaq.
Belə ki, bu bəzi yollarla, əslində, , pis super pis deyil, lakin
əhəmiyyətli bu cür olduğunu demək bir tərəfdən, geri gedir, Apache
biz mövzuları və prosesləri harada model hər bir sorğu və ya
hər bir sorğu üçün proseslər.
Belə ki, bu analoji növ Apache nə üçün.
Bəzi hallarda, yalnız yeni bir istifadə edəcək bir az daha yüngül olan mövzu,
prosesi daha çəkisi, lakin Apache bilər yeni bir proses forking başa
biz burada nə cür olan dolayısı dot çizgi Uydurma 45 etməklə.
>> Və sonra bu halda, biz növ ortaya proseslərin eyni xərcləri.
Belə ki, bu nə edə bilər yalnız bir şey.
Amma yalnız çalışan bu cür göstərmək üçün.
Və bu söhbət yalnız həqiqətən yönəlmişdir kimi proqramları bu cür təqdim
müxtəlif perspektivləri göstərmək üçün yol necə ki, kimi server dizayn.
Mən əgər Belə ki, indi, sonra çalışan və Bu yenidən, mən iki proses kimlikleri var.
>> Yalnız danışaq şeyi qeyd etmək.
Belə ki, onlar tədricən istəyirik ki, görürsünüz.
Ki, sərin var.
Əvvəl 27.122 idi.
Ancaq xəbərdarlıq indi, onlar geri gəldi təxminən eyni zaman.
>> İndi, bir yaxşı sual haqqında sual niyə halda, kimin iş deyil ki,
bu sort bu şeyi etmək idi cür hər Fair Play
başqa, bu iki instansiyalarından qaçdım ki, dot çizgi fib 45
və ya Node qaçdı?
Sort bu ədalətli edir ki, onlar həm cür run vaxt balanslaşdırılmış almaq?
>> Auditoriya: [işitilemez].
>> KEVIN SCHMID: Bəli.
Belə ki, əsasən, mən dot çizgi Uydurma nə zaman 45 və ya kimi bir şey, indi
cür əməliyyat sistemi qədər həmin proqramların uzunluğu idarə.
Və indi onlara cədvəli bilər müxtəlif CPU'lar və ya bu
onlara cədvəli bilər.
Bu ki, bir vaxt dilim bilər CPU onlar almaq olur ya
bir CPU çalıştırmak üçün.
Belə ki, arxasında ideyası var.
Ki, hamıya mənada edirmi?
Belə ki, indi Node həqiqətən oynayan deyil Bu vəzifələri up bölünməsi hissəsidir.
OK.
>> Belə ki, demək olar ki, misal üçün var.
Mən yalnız bir şey daha göstərmək istəyirdi Bu bir çox bu günə qədər, çünki
tamamilə super praktik deyil bəzi hallarda.
Bu sonra evə gələn təsəvvür edə bilərsiniz danışmaq və bir şey və kimi söyləyərək,
yaxşı mən cür ki, müzakirəsi həyata var ki, Mən bir Fibonacci server edə bilər
mənim son layihə.
Belə ki, burada yalnız sort daha bir misal var ümid edirəm olacaq -
bəlkə, lakin bəlkə - bir az daha sort son layihələr üçün müvafiq və
kimi şeylər üçün irəlidə düşüncə.
>> Belə ki, bu chat.js. edir
Belə ki, bu cür bəzi nümunəsi kimi edir siz istifadə edə bilər ki server yan kodu
kiçik chat server kimi qurmaq Siz görüldü ola bilər
Facebook Chat və ya nə.
Mən bu Facebook kimi demirəm Chat, lakin bu növ edir
bəlkə bəlkə yaxşı deyil, lakin - yaxşı kimi yaxşı - bir chat üçün başlanğıc nöqtəsi
Sizin veb üçün server yekun layihə üçün.
Belə ki, bunu nə baxaq.
>> Beləliklə, biz bu xüsusi şey əldə edirik üst, bu Sio VAR
Socket.IO tələb bərabərdir.
Belə ki, bu o deyil ki, bir şey həqiqətən ilə hediye gəlir
Node lakin siz onu quraşdıra bilərsiniz.
Bu Node modulu var.
Belə ki, yalnız bir kimi Node məsləhət.
>> SocketIO həqiqətən əslində Sərin növü.
Bu əsasən nə abstraksiya var Bu o sizə imkan verir olar
rabitə bu axın var bir web arasında
browser və web server.
Belə ki, bu günə qədər çox hissəsi üçün, biz etdik Bu çox sürətli bir ikinci və ya iki
bir web arasında ikinci rabitə browser və web server.
Belə ki, əsasən google.com, almaq getmək edir stuff, sonra geri göndərmək və
biz tamamlayın.
Biz qədər yenidən danışmağa heç etdiyiniz istifadəçi növləri başqa bir şey.
>> Amma nə Socket.IO və analoji cür şeyi - və SocketIO həqiqətən biridir
kimi inşa edilmişdir ki, hər şeyi WebSocket olan sort mövcuddur
HTML5 hissəsi kimi -
ki, bu imkan verir davam dialoq.
Və bu chat server çox faydalıdır şey növ, çünki
cür bir davam dialoq kimi bəzi yollar, çünki söhbət edirsinizsə
kimsə ilə, indi yalnız bir göndərə bilərsiniz sonra boru aşağı mesaj və
server aşağı bir mesaj göndərə bilərsiniz siz digər şəxsə boru
söhbət.
Və sonra bu ola bilər kimi mübadiləsi.
>> Belə ki, nə cür var SocketIO üçün yaxşıdır.
SocketIO WebSockets istifadə edir ki, səbəb bir şey kimi ki,
yalnız düz köhnə WebSockets əlavə, bu da əsasən bəzi tövsiyələr yoxdur
Bu browser uyğun olun.
Internet Explorer kimi belə brauzerlər təəssüf ki WebSockets bilmir
qutusu sağ həyata.
Belə ki, sərin səliqəli bəzi başqa cür istifadə edir imkan Adobe Flash ilə şeyi
Siz cross browser dəstəyi var.
Belə ki, həqiqətən faydalıdır.
>> Və həqiqətən, I növ Ben bilirik burada vaxt çalışan, lakin CS50
Müzakirə, heç bir şey gördük kimi, mən bilmirəm, boş filan deyil
Bu ismarıca və ya bir şey cavablandırarkən kimi ki, xüsusiyyət?
Bu SocketIO var.
Belə ki, kimsə yazaraq başladığında Cavab və ya etmək qutusu müzakirə
bir şey, sizin browser nə etmir SocketIO adlı bir növ radio
kimsə deyir ki, hadisə bu ismarıca cavab.
>> Sonra server, OK deyir mən nə var?
Yaxşı, indi başqa uşaqlar demək lazımdır kim CS50 var axtarır müzakirə
bu vəzifədə kimsə cavab ki.
Belə ki, SocketIO nə cür var bu davam cür üçün yaxşı
dialoq stream.
OK.
>> Mən burada nə var - və biz yalnız istəyirik əlaqələri array ignore olacaq
bir az -
nə mən başqa qulaq asmaq yoxdur.
Belə ki, yalnız Socket.IO yoldur var Bu port dinləmək imkan deyərək.
Və sonra mən bağlantısı bunu.
Belə ki, yalnız əsasən Socket IO nin var biz almaq zaman deyərək yolu
əlaqə, Mən sizə istəyirəm bu kodu run.
>> Əvəzinə tövsiyələr olan fark və orada keçdi res I Priz var.
Bu Socket fikir əsasən bu siz yazmaq və oxumaq bilər ki şey
ki, istifadəçinin var bəlkə messages.
Və göndərmək ki, mesajlar ki, Socket ilə getmək olar.
Ki, hissi edirmi?
Belə ki, bu davam şey var.
>> Belə ki, nə mən, mən Socket.emit zəng edir.
Və buraxmaq olduqca alır çox iki dəlilləri.
Ilk arqument bir string yalnız növü təmsil
Siz saçan edirik şey.
Belə ki, bu halda, mən istifadə etdik Bu simli yeni mesaj.
Və yalnız əsasən dedi ki, Mən nə bu şey növü,
göndərilməsi, yeni bir mesaj.
Belə ki, xüsusi növləri üçün dinləyə bilərsiniz yeni mesaj və ya hər hansı kimi
nöqtə üzərində istifadə edərək,.
>> Belə ki, əlaqə və istifadəçi əgər, göndərildi , biz dot zəng harada baxmaq
o təmsil edən digər strings var istifadəçi mesaj növləri.
Belə ki, bu buraxmaq ola bilər əsasən var Bu mesaj növləri biri və
sonra cavab bir şey Bu mesaj növləri biri
>> Mən bu yeni mesaj yayan alıram.
Biz connections.push ignore olacaq ikinci.
Lakin sonra mən Socket.on istifadəçi göndərdi, deyirlər.
Belə ki, indi bu cür kimi zamanı Mənə bir mesaj göndərir, mən istəyirəm
Siz bu kodu run.
Və bildiriş ki, anonim funksiyası Bu dəyişən edir
əsasən gedir data adlı istifadəçi mesaj var.
>> Haqqında danışmaq Belə ki, indi edək cür əlaqələri array.
Belə ki, bu chat müştəri üçün nəzərdə tutulmuşdur əsasən hamı cür olduğu
Eyni chat otağı.
Belə ki, əsasən, biz saxlamaq lazımdır ətrafında bir sıra edir ki, əsasən
söhbət bütün xalqı təmsil bəzi yolları ki, anlamlı əgər.
Sağ?
Biz edənlər uşaqlar bilmək lazımdır, çünki belə ki, biz onlara göndərə bilərsiniz var
digər insanlar bizə göndərin.
>> Belə ki, nə bu kodu nə zaman istifadəçi bir mesaj göndərir - ki növü var
Tədbirdə -
biz bu kodu run olacaq.
Və nə biz nə biz bu yolu run biz əlaqələri deyilir ki array.
Və hər qoşulma üçün olduqca çox bizim ki, bir istisna olmaqla, ki,
Bu kodu deyir, biz yeni göndər ki, əlavə mesajı ilə mesaj
məlumat.
>> Siz burada qeyd Belə ki, nə mən nə zaman istifadəçi həqiqətən yeni bir edir
bağlantısı Mən ilə əlavə etdik ki, JavaScript.push üsul, bu
əsasən yalnız kimi əlavə söyləyərək bir dəyər kimi Socket
bizim əlaqələri array.
Bu kodu çalışır Belə ki, indi, o, xüsusilə şeyi göndər
əlaqələri.
Belə ki, bu yaxşı bir başlanğıc nöqtəsi ola bilər bir chat server edilməsi üçün
və ya oxşar bir şey.
>> Və sərin şey növüdür ki, Siz kimi üçün buraya baxın və kodu
buraxmaq və kimi stuff eyni JavaScript kodu cür siz ki
qarşılıqlı brauzerinizin yazmaq server ilə.
SocketIO növ edir nə ki, var səliqəli və yol faydalı.
>> Oh və yalnız bir şey daha real sürətli.
Bir CS50 yekun layihə keçən il var idi ki, əsasən bir chat həyata
Node.js. server
Mən Harvardchats.org hesab edirəm lakin mən deyiləm -
OK.
Mən URL nə əmin deyiləm, lakin Mən sonra ki, həyata göndərə bilərsiniz.
Amma bu cür sərin nə Siz Node.js. ilə edə bilərsiniz
>> Mən, ümumiyyətlə, uşaqlar var, ümid Node.js faydalı nə yaxşı mənada
üçün və necə bəlkə müraciət edə bilər son layihə.
Mən bir daha həyata göndərilməsi olacaq Bu birlikdə resursları.
Və gələn üçün təşəkkür edirik.
Təşəkkür edirəm.
>> [Alqış]