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. 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ış]