>> केविन SCHMID: सबको नमस्ते.
CS50 संगोष्ठी में आपका स्वागत है Node.js. पर
मेरा नाम केविन है.
मैं एक CS50 TF हूँ.
और मैं की तरह वास्तव में उत्साहित की तरह हूँ इस संगोष्ठी के बारे में.
मैं Node.js बहुत शांत है.
मैं इस संगोष्ठी में इस्तेमाल किया जा सकता है उम्मीद के लिए एक अच्छा है, मुझे लगता है, मंच के रूप में
अपने अंतिम परियोजनाओं की अगर कुछ आप का उपयोग करने में रुचि रखते हैं
Node.js. तरह कुछ
>> हम की तरह द्वारा संगोष्ठी शुरू करेंगे बस का एक छोटा सा के बारे में बात
पृष्ठभूमि scalability की तरह फिर Node.js के दृष्टिकोण, और
हम कुछ कोड उदाहरण के लिए कदम होगा.
और मैं एक वेबसाइट पर कोड होगा, और आप कोड में देख सकते हैं.
और संगोष्ठी के बाद, मैं बात की सुलझा लेंगे आप Node.js स्थापित कर सकते हैं के बारे में
आपके कंप्यूटर पर.
>> ठीक है.
तो चलो शुरू हो जाओ.
इसलिए मुझे लगता है मैं बस के बारे में बात करना चाहता हूँ लगता है वेब सर्वर, वास्तव में, पहले.
और इस चर्चा शुरू करने के लिए, मैं मूल रूप से है जो एक चित्र है
CS61 के लिए इस्तेमाल किया पाठ्यपुस्तक, जो मूल रूप से बातचीत से पता चलता है
कृपया अपने वेब की तरह एक ग्राहक प्रक्रिया के बीच ब्राउज़र या अपने उद्देश्य ग्राहक या पसंद
ऐसा कुछ, और एक वेब सर्वर.
तो इस तरह से करने के लिए समान दिखता है आप पर व्याख्यान में देखा कि तस्वीर
बुधवार जहां बुनियादी तौर पर हम कुछ है गूगल क्रोम की तरह ग्राहक की प्रक्रिया.
>> और फिर एक कदम है ग्राहक एक अनुरोध भेजता है.
तो यह है कि कुछ की तरह अच्छी तरह से जाने के किया जा सकता है यात्रा, मैं, CS50.net पता नहीं है.
तो हम उस अनुरोध को जारी करते हैं.
और किसी को नाम से याद करता है कैसे कि यह बताता है कि प्रोटोकॉल
अनुरोध संरचित किया जाना चाहिए?
हां.
>> दर्शक: [सुनाई].
>> केविन SCHMID: बिल्कुल.
तो यह ठीक है, HTTP की तरह है?
कैसे के लिए तो बुनियादी तौर पर विनिर्देश उस अनुरोध को वास्तव में रखा जाना चाहिए
बाहर, क्योंकि दिन के अंत में, उस अनुरोध को सच की तरह है एक
स्ट्रिंग है कि मूल रूप से मैं यह चाहता हूँ कहते हैं.
और विशिष्टता उस के लिए एचटीटीपी है.
इसलिए कि एक प्रोटोकॉल की तरह है.
>> तो फिर सर्वर को प्राप्त करता है उस अनुरोध.
तो तुम लोग एक वेब सर्वर स्थापित CS50 उपकरण में.
यह अपाचे है.
और इस सप्ताह आप समस्या पर काम करते समय सात सेट, तुम वास्तव में काम कर सकता हूँ
कि वेब सर्वर के साथ.
तो सर्वर उस अनुरोध प्राप्त करता है, और तो यह एक तरह से खरोंच करने के लिए है इसकी
सिर और क्या अच्छी तरह से जैसे कहना मैं इस के साथ क्या करते हैं?
>> तो यह तो करना तय किया है पर आधारित यह किसी तरह का संपर्क करना पड़ सकता
संसाधन की.
और कहा कि संसाधन एक हो सकता है विभिन्न बहुत सी चीजें.
एक के लिए, यह हो सकता है अभी एक स्थैतिक HTML फ़ाइल की तरह.
तो यह सिर्फ कुछ की तरह हो सकता है के लिए की तरह है कि एचटीएमएल
अपनी निजी वेबसाइट.
यह एक छवि की तरह एक स्थिर फाइल किया जा सकता है या तुम हो कि एक फिल्म की तरह.
यह भी बात करने के लिए हो सकता है डेटाबेस का किसी तरह से
एक डाटाबेस की तरह.
तो यह हमेशा से संवाद करने की जरूरत नहीं है एक संसाधन है, लेकिन साथ में
कुछ मामलों में, यह सकता है.
>> तो फिर ऐसा करने में क्या हो रहा है उसके बाद यह जा रहा है है
प्रतिक्रिया वापस भेज देते हैं.
और इस के लिए प्रतिक्रिया है यह भी HTTP द्वारा निर्दिष्ट.
तो फिर ग्राहक इसे प्राप्त कर सकते हैं.
यह इसे फाड़ और यह प्रक्रिया कर सकते हैं.
और फिर आप एक वेब पेज मिल जैसे गूगल या CS50.net या
आप के लिए गया था जो भी हो.
ठीक है?
>> तो इस बुनियादी बातचीत है कि हम साथ काम करने जा रहे हैं.
और हम बहुत ज्यादा होने के लिए जा रहे हैं के इस भाग पर ध्यान केंद्रित
बातचीत, सर्वर.
ठीक है.
कूल.
किसी को भी अब तक किसी भी प्रश्न हैं?
ठीक है.
>> हमने कहा तो, के रूप में वेब सर्वर को प्राप्त करता है तो इस HTTP अनुरोध और इस मुद्दे
HTTP प्रतिक्रिया.
और इस तरह हम, पहले के बारे में बात की थी CS50 उपकरण वेब सर्वर अपाचे है.
आप लोगों पर काम तो जब पी, सात सेट आप के साथ काम करने जा रहे हैं
अपाचे वेब सर्वर.
आप वास्तव में काम करने के लिए कभी नहीं होगा सीधे बहुत ज्यादा अपाचे के साथ.
आप की तरह अपाचे एक छोटे से कॉन्फ़िगर आप आभासी मेजबान या निर्दिष्ट जब
वी होस्ट करता है, और हम मिल जाएगा एक छोटा सा में है कि करने के लिए.
>> लेकिन मूल रूप से, अपाचे वेब सर्वर PHP प्रकार के साथ काम करने के लिए स्थापित
के बॉक्स से बाहर.
जब तुम जाओ तो क्या वास्तव में होता है कहते हैं, की तरह अपने वेबसाइटों में से एक के लिए,
स्थानीय मेजबान स्लैश index.php या कुछ और, अपने ब्राउज़र भेजता है कि
अनुरोध है, और फिर अपाचे बैठी है वहाँ और इसके साथ क्या बाहर के आंकड़े.
और कार्रवाई अमल करने के लिए है कि index.php में कोड और
फिर इसे वापस भेजना बंद.
तो यह है कि वहाँ है.
तो हम एक तरह से इस बारे में बात की.
तो यह सिर्फ एक स्थिर फाइल की सेवा कर सकता या मुद्दा तो कुछ PHP कोड को चलाने और
प्रतिक्रिया.
>> आ सकता है तो फिर एक आम सवाल ऊपर अच्छी तरह से है, हम वास्तव में कैसे सौदा करते हैं
एकाधिक उपयोगकर्ताओं होने के साथ एक ही समय में?
आप एक वेब लिख रहे थे तो कल्पना सर्वर, आप एक वेब सर्वर था कि अगर
यदि आप कुछ लिखने के लिए कोशिश कर रहे थे सी या ऐसा कुछ की तरह,
मूल रूप से आप के बारे में सोच सकते हैं कि कैसे वहाँ कोड किसी तरह का हो सकता है
फिर अनुरोध प्राप्त करते हैं, लेकिन होता यह उस पर यह सब काम करना पड़ता है.
यह उदाहरण के लिए, संपर्क करने के लिए हो सकता है डेटाबेस या ऐसा कुछ.
है ना?
और फिर यह उस तरह से करना होगा प्रसंस्करण की और उसके बाद
प्रतिक्रिया वापस भेज दिया.
इसलिए कि उच्च की तरह है स्तर सिंहावलोकन.
>> लेकिन यह तत्काल स्पष्ट नहीं है कि कैसे आप क्या कर सकते हैं कि इतना है कि दो लोग या
यहां तक ​​1,000 लोगों के साथ काम कर सकता है आपकी एक ही समय में वेब सर्वर.
तो अपाचे का उपयोग करता है कि समाधान धागे या प्रक्रियाओं कहा जाता है.
तो आप के बारे में सुना हो सकता है पहले इन शर्तों.
यह अगर तुम नहीं है ठीक है, लेकिन अभी लगता है के लिए तरीके के रूप में धागे या प्रक्रियाओं के बारे में
एक ऑपरेटिंग सिस्टम या एक उपयोगकर्ता कार्यक्रम या कुछ उस तरह या एक वेब सर्वर
की तरह कई निष्पादित करने के लिए एक ही बार में बातें.
तो तुम शब्द सुना हो सकता है निष्पादन के धागे की तरह.
आप कर रहे हैं तो यह एक तरह से है मल्टीटास्किंग की तरह.
>> और आप के बॉक्स पर देखा है अगर आपके लैपटॉप, या ऐसा कुछ,
आप क्या कर सकते हैं मल्टीकोर, आप यह कर सकते है अलग पर दो अलग धागे चलाने
सीपीयू के कुछ हिस्सों वे कर सकते हैं कि इतना वास्तव में एक ही समय में होता है.
तो यह वास्तव में शक्तिशाली है.
और यह अपाचे की तरह है इस समस्या का हल.
>> इतनी तरह की किसी भी मुद्दे की तरह कर रहे हैं हालांकि इस दृष्टिकोण के साथ?
इसलिए मुझे लगता है मैं एक तरह से उन्हें वहाँ लिखा लगता है.
लेकिन उन दोनों की तरह स्मृति का एक बहुत का उपयोग करें.
इसे बनाने के लिए बहुत महंगा है एक धागा या एक प्रक्रिया.
>> और तर्क का हिस्सा है कि बस जैसे तुम एक सी कार्यक्रम चला रहे हैं जब
अपने मुख्य जैसे और फिर उस कॉल एक अन्य समारोह, कि है
ढेर के कुछ प्रकार की.
तो धागे भी पूरी तरह से एक की आवश्यकता अलग ढेर जो
काफी बड़ा हो सकता है.
और जैसा कि आप कल्पना कर सकते हैं के टन होने अपनी वेबसाइट पर उपयोगकर्ताओं को, तुम होगा
अलग धागे का एक बहुत.
उस के लिए ढेर का एक बहुत कुछ है प्रबंधन करने और बनाए रखने के.
तो यह बड़ी स्मृति खपत है.
>> और फिर, भी, की आप केवल हम कहते हैं एक सीपीयू, या मान लीजिए कि आप हम कहते हैं
आप अधिक से अधिक धागे उन multicores.
है ना?
तो चलो आप 10 धागे था हम कहते हैं और आप केवल पांच CPUs था.
आप इस तरह की बात करना है, जहां आप वर्तमान के बीच स्विच
तुम क्योंकि चल रहा है कि एक एक ही बार में सभी 10 नहीं चलाया जा सकता.
और कहा कि एक संदर्भ स्विच कहा जाता है.
और उस शब्द वास्तव में एक जोड़े की है विभिन्न संदर्भों, लेकिन अभी चलो
स्विचन के रूप में सोच दो धागे के बीच.
यह बहुत महंगा हो सकता है क्योंकि मूल रूप से क्या तुम्हें क्या करना है आप है
आप क्या कर रहे हैं रोकने के लिए है, बचा चल रहा है कि राखी के राज्य, और
फिर कहीं और करने के लिए स्विच.
>> इसलिए सब लोग एक तरह से देखा है क्यों धागे और की प्रेरणा
प्रक्रियाओं थोड़ा भारी हो सकता है?
और अगर आप एक प्रश्न किया है?
ठीक है.
कूल.
किसी को भी किसी भी प्रश्न हैं?
ठीक है.
>> तो हम एक दूसरे के लिए एक कदम वापस ले, तरह का एक तरह वहाँ
के बारे में हम कर सकते हैं कि अवलोकन वेब अनुप्रयोगों का एक बहुत.
और वह वास्तव में है कि उनमें से एक बहुत वास्तव में ऐसा नहीं है कि बहुत उपयोगी
एक धागे के अंदर काम करते हैं.
तो किसी पर शुरू कर दिया गया है पी में सभी सात सेट?
तो आप शायद का वर्णन करना चाहते हैं भागों में से कुछ?
आप लॉगिन पर काम किया है या ऐसा कुछ?
>> दर्शकों: नहीं
>> केविन SCHMID: ठीक है.
कोई बात नहीं.
माफ़ कीजिए.
लेकिन मूल रूप से, पी सेट में, आप कर रहे हैं की तरह का एक बहुत कुछ कर रही हो जा
कुछ पाने के लिए एक डेटाबेस के लिए क्वेरी उस डेटाबेस से जानकारी.
और क्या अपने कोड कर रही हो जा रहा है, क्या है कि अपाचे प्रक्रिया या
अपाचे धागा कर रही हो जा रहा है कि यह संपर्क करने के लिए है, जबकि
डेटाबेस यह की तरह होने जा रहा है है वहाँ बैठे और यह होने जा रहा है
डेटाबेस उत्तर करने के लिए इंतज़ार कर रहे.
>> अब जब कि कि एक बड़ा तरह बात नहीं कर सकते हैं डेटाबेस अपने पर है, क्योंकि सौदा
CS50 उपकरण, सही?
लेकिन नेटवर्क के कुछ प्रकार है वहाँ विलंबता अब वेब क्योंकि
सर्वर के लिए अपने स्वयं के अनुरोध जारी करने के लिए है साथ संवाद करने के लिए डेटाबेस
डेटाबेस और फिर उस मिल जानकारी वापस.
तो अब यह मैं हूँ, अच्छी तरह से मेरे लिए प्रतीक्षा की तरह है जाने के लिए जाने से कुछ मिल
डेटाबेस और फिर वहाँ एक है चल रहा इंतजार कर के बहुत कुछ.
कि मतलब?
>> और कुछ बातों के लिए यह इतना बुरा नहीं है.
यह बस गया है, उदाहरण के लिए, एक्सेस मेमोरी, ऐसी बात नहीं है
भयानक मैं / हे विलंबता.
मैं कहता हूँ और जब मैं / हे विलंबता, मैं क्या कर रहा हूँ करने के लिए बात की तरह की किसी भी तरह की तरह है
इनपुट आउटपुट.
लेकिन जैसे, डिस्क पर एक फ़ाइल का उपयोग करने के लिए मैं स्थैतिक HTML की सेवा करना चाहता था
फ़ाइल कि अपने वेब पेज पर था या ऐसा कुछ, मैं एक तरह से करने के लिए है
एक बिट के लिए बंद करो, उस फ़ाइल को पढ़ने डिस्क से, और उसके बाद में में
कि प्रक्रिया मैं इंतज़ार कर रहा हूँ.
मैं उपयोगी काम नहीं कर रहा हूँ.
>> यह यह सब कुछ का सच नहीं है, लेकिन पी सेट जैसे अनुप्रयोगों में आम है
सात और अनुप्रयोगों का एक बहुत आप नहीं कर रहे हैं कि
वास्तव में बहुत सोच कर.
मैं सोच कहना और, जब मैं मतलब कम्प्यूटेशनल काम की तरह.
तो कम्प्यूटेशनल काम कुछ हो सकता है जैसे, कहते हैं, तुम चाहते थे
बस अभिकलन कि एक वेब सर्वर लिखना n वें फिबोनैकी संख्या.
यह एक विशेष रूप से की तरह बात नहीं करता मज़ा वेब सर्वर.
जैसे मैं उस साइट होने की उम्मीद नहीं की होगी अगले फेसबुक, लेकिन लगता है कि कुछ है
कम्प्यूटेशनल काम की तरह.
>> और आप के साथ उस जगह की कल्पना कर सकते हैं दिलचस्प के कुछ अन्य प्रकार
कम्प्यूटेशनल काम.
मान लीजिए कि आप कुछ लिख रहे थे हम कहते हैं कि डिग्री की गणना की
दो लोगों के बीच अलगाव या ऐसा कुछ.
तो यह है कि किसी तरह का शामिल करता है गणना की है, है ना?
और फिर भी, आप अभी भी है कि ऐसा करने के लिए शायद नहीं क्षेत्रों के लिए बहुत कुछ करने की
आप देखने के लिए एक डेटाबेस क्वेरी के लिए है ऊपर कौन या के साथ दोस्त है
ऐसा कुछ.
तो धारणा के उस तरह नहीं है के कम्प्यूटेशनल काम.
कि मतलब?
किसी को भी किसी भी सवाल है?
>> ओह, और मुझे लगता है मैं वहाँ चैट सर्वर डाल अनुमान चैट सर्वर प्रकार के हैं, क्योंकि
इस का एक और अच्छा उदाहरण.
एक चैट सर्वर नहीं है बहुत सोच करने के लिए.
यह सिर्फ लोगों के लिए इंतजार करना पड़ता है संदेशों और फिर जब भेज
वे, उन्हें भेजूं.
ठीक है?
>> तो बस फिर से संक्षिप्त करने के लिए, अपाचे और कि कांटा एक तरह समान वेब सर्वर
धागे और प्रक्रियाओं की बहुत जो एक तरह से बेकार हो सकता है.
तो मैं आ सकता है कि सवाल लगता है उस से हम की आवश्यकता है है
कई धागे और प्रक्रियाओं?
क्या हम सिर्फ एक था?
>> तो चलो तरह की एक तस्वीर रंग देना इस तरह से देखना होगा की.
तो चलो केवल एक धागे का उपयोग करते हैं.
ठीक है?
तो सिर्फ एक ही धागे के साथ इस कल्पना.
>> हम वास्तव में नहीं कर रहे थे लगता हैं कि बहुत उपयोगी हैं - और जब मैं कहता हूँ
उपयोगी, मैं कम्प्यूटेशनल काम मतलब है -
पहले उन कई धागे में.
तो चलो तरह की समेकित करते हैं एक धागे में सब कुछ.
तो क्या हम एक धागा तरह था अगर की बस पाश में चारों ओर चला जाता है और
लगातार चेक कुछ किया नई हो.
तो उदाहरण के लिए, कुछ नया हुआ मैं से कुछ वापस मिल गया मतलब हो सकता है
भेजा डेटाबेस, या किसी मुझे एक नया HTTP अनुरोध.
तो उन घटनाओं की तरह कर रहे हैं कि ठीक है, हो?
>> और फिर मैं क्या कर सकता है जब उन नए हुआ कुछ इस एक ही धागे में है
निष्पादन की, यह एक धागे की निष्पादन, मैं कुछ कोड कॉल कर सकते हैं
उस विशेष बात संभालना होगा.
तो उदाहरण के लिए, मैं कुछ मिल गया, तो वापस डेटाबेस से, मैं चला सकता है मेरा
यह के छोटे कम्प्यूटेशनल हिस्सा है कि वास्तव में अभी तक बात को तैयार
उपयोगकर्ता को वापस भेज देते हैं.
तो मतलब की है कि तरह है?
>> लेकिन वास्तव में क्या कर रहे हैं इस का निहितार्थ है?
है ना?
हम लिखा है क्योंकि कोड है कि का एक बहुत -
और मैं बस आगे कूद करने के लिए जा रहा हूँ यह ठीक है अगर स्लाइड्स में.
तुम बुरा न मानो तो, मैं कर रहा हूँ बस एक कदम वापस लेने के लिए जा रहा.
तो इस तरह की बात है एक घटना लूप कहा जाता है.
ठीक है?
और यह मूल की तरह है Node.js. पीछे विचार
>> Node.js वास्तव में एक वेब के रूप में कर रही है तो क्या हुआ सर्वर एक भी मुद्दा नहीं है है
कि मूल रूप से एक पाश में चारों ओर जा रहा है के तहत की है, जबकि एक प्रकार की तरह
लगातार है कि Node.js के हुड जाँच, हम नई चीजें प्राप्त किया था?
और फिर यह हैंडलर चलेंगे आप की स्थापना की है.
लेकिन पूछने के लिए एक अच्छा सवाल है, हम यह कैसे कर सकते हो
मौजूदा चीजों के साथ?
>> इसलिए मैं यहाँ सी कोड की एक लाइन में कहें कि इसे खोलने की तरह मूल रूप से दिखता है एक
सही, फ़ाइल?
मैं वह सिर्फ एक एल्बम के साथ बाहर आ गया.
तो मैं उसे एक नई फ़ाइल को खोलने के लिए किया था.
तो जिस तरह से संचालन के लिए हमारे सी कोड -
और मुझे लगता है मैं फ़ाइलों को चुना कारण था इस हद तक की तरह है क्योंकि
हम में सी में किया है कि मैं / ओ काम की इनपुट आउटपुट है कि वहाँ एक भावना.
इसलिए हम इस कोड है कि कॉल इस च खुला करता है.
और फिर हमारे की अगली पंक्ति पर कार्यक्रम, हम अब एफ के साथ काम कर सकते हैं.
>> तो यह कुछ का एक उदाहरण होगा कि तुल्यकालिक या की तरह है
कि पहली पंक्ति पर क्योंकि अवरुद्ध वहाँ हम हम जब तक प्रतीक्षा कर रहे हैं
फ़ाइल खुला मिलता है.
तो दूसरी लाइन पर, हम जानते हैं कि हम एफ के साथ काम करते हैं, लेकिन इसका मतलब यह है कि कर सकते हैं
कि दूसरी पंक्ति वास्तव में नहीं चल सकता पहली पंक्ति किया जाता है जब तक.
कि मतलब?
>> तो यह डाल करने के लिए बुरा होगा कोई ईवेंट हैंडलर में.
और उस के लिए कारण यह है कि इंतजार कर रहा है की इस तरह, सही?
तो यह हमें वापस लौट जाएगा एक ही बात करने के लिए.
और अब हम भी नहीं होता कई सूत्र के लाभ या
प्रक्रियाओं हमें मिल गया है क्योंकि Node.js. में एक धागा
कि हर किसी को मतलब?
>> दर्शक: रुको.
तो प्रतिस्थापन क्या है?
>> केविन SCHMID: ओह, तो हाँ.
तो मैं करने जा रहा हूँ प्रतिस्थापन.
ठीक है.
हम कुछ था तो क्या हुआ अगर कि इस तरह से देखा?
तो क्या मैं संपादित अब अगर एफ एक छोटे से खोलने?
इसलिए मैं उसी में गुजर रहा हूँ पहले की तरह दो तर्क.
मैं अभी भी नए गाने से प्यार है वह साथ बाहर आ गया है.
लेकिन मैं एक तीसरी बात गुजर रहा हूँ जो इस चर कोड कहा जाता है.
>> लेकिन कोड वास्तव में क्या है इस संदर्भ में?
यह एक नियमित रूप से सी चर की तरह है?
यह ठीक है, एक समारोह है?
और उस वजह से एक अजीब सा हो सकता है मैं वास्तव में अब गुजर जैसा हूँ एक
एक अन्य समारोह में कार्य करते हैं.
>> इस बारे में ध्यान दें तो कुछ बातें.
एक, मैं वास्तव में नहीं बुला रहा हूँ कोड समारोह.
तो आप के साथ कोड नहीं दिख रहा है छोड़ दिया कोष्ठक, सही paren.
मैं सिर्फ कोड में गुजर रहा हूँ.
और सी में, यह वास्तव में क्या करना होगा कि वास्तविक मुझे एक सूचक दे ​​रहा है
कोड, और तब यह यह चला सकता है.
आप कर रहे हैं लेकिन अभी इसके बारे में सोचते हैं चलाने के लिए कोड गुजर जब
उस फ़ाइल को खोल दिया है.
>> लेकिन क्या इसका मतलब यह है कि अब कर सकता है जो अपने कार्यक्रम के बाकी
अन्य सामान, अन्य कर जारी कर सकते हैं सामान हम वास्तव में इंतजार है, लेकिन नहीं है, जबकि
अभी हमारे सिर के पीछे में है कि जब कि फ़ाइल का खुला, भागो कि
शीर्ष पर कोड.
कि मतलब?
>> और अब Node.js के पीछे विचार यह है कि एफ के साथ क्या सामान में कोड
हिस्सा बहुत कम है और सरल होना चाहिए वास्तव में होना है और ईमानदार और नहीं
गहन बहुत computationally.
यह एक और फ़ाइल खोलने के लिए है, लेकिन हो सकता है वह भी बहुत जल्दी होना चाहिए
यह सिर्फ एक और च कर कहना चाहिए क्योंकि खोलने के लिए और फिर यह अन्य कोड कहते हैं.
>> इसलिए अभी पूरी तरह से स्पष्ट है, च होने के लिए कि खुले नए कैटी पेरी गीत करता है
किया एमपी 3, कि जा रहा है बहुत ज्यादा आती हूँ.
और फिर हम सिर्फ कर जारी कर सकते हैं अन्य सामान वजह है कि अब एफ सभी
खुले कॉल मूल रूप से बता रहा है है अंतर्निहित च खुला कोड इस फाइल को खोलने
और आप इस खोलने काम पूरा हो जाने आप इसे वापस पाने के लिए जब फ़ाइल या,
फिर उस कोड चलाते हैं.
लेकिन यह वास्तव में है कि कोड नहीं चला.
और आप में एक सवाल था?
>> दर्शक: आप कुछ संकेत करने के लिए लग रहा था computationally उनका कहना है कि कई बार
गहन कोड की तरह तोड़ [सुनाई] संचालित प्रणाली.
[सुनाई]?
>> केविन SCHMID: यह एक बड़ा सवाल है.
इसलिए मैं वास्तव में कैसे का एक उदाहरण है आप computationally एकीकृत कर सकता
एक छोटा सा में गहन कोड.
इसलिए हम कोड उदाहरण के लिए मिलता है, मुझे लगता है कि एक खींचने के लिए सुनिश्चित हो जाएगा.
क्या यह ठीक है?
धन्यवाद.
>> आपका नाम क्या था?
>> दर्शक: हारून.
>> केविन SCHMID: हारून एक बहुत ऊपर लाता है है जो अच्छी बात है, कि अगर मैं था
में कुछ computationally गहन कोड च हिस्सा है, बाकी के साथ क्या सामान
मेरे कार्यक्रम नहीं चलाया जा सकता है और नहीं सुन सकते हैं सभी जब तक नया अनुरोध या कुछ के लिए
सामान है कि समाप्त हो गया है.
इसलिए मैं सामान्य में नोड कोड लिख रहा हूँ अगर मैं जा रहा हूँ जैसे हम कुछ कर जब तक
हम पर देखने के लिए जब बाद में करने के लिए सुझाव कोड उदाहरणों, मुझे यकीन है कि होना जरूरी
मेरे कोड टाई नहीं है इस घटना पाश.
कि मतलब?
ठीक है.
कूल.
>> तो Node.js इस ढांचे प्रदान करता है आप प्रेरित ये घटना का निर्माण कर सकते हैं
साथ सर्वर.
तो यह अतुल्यकालिक के इन प्रकार जबकि, मैं / हे पुस्तकालयों गैर अवरुद्ध
हम किया गया है कि मानक सी पुस्तकालयों , के साथ काम करना पसंद है तो आप बस
हम है कि उन्हें उसी तरह का उपयोग एफ के साथ उन का उपयोग किया गया खोलता है और
सामान, उन अवरुद्ध कर रहे हैं क्योंकि आप वास्तव में के लिए इंतज़ार करना होगा
खोलने के लिए उस फ़ाइल.
>> लेकिन Node.js यह आपको लगता है कि देता है और मूल रूप से गूगल के वी 8 में संबंध
कारण है जो जावास्क्रिप्ट इंजन क्रोम प्रसंस्करण में इतनी तेजी है कि
जावास्क्रिप्ट क्योंकि यह इस वी 8 इंजन है.
इसलिए मुझे लगता है कि उनमें से एक की तरह लगता है WWDC डेवलपर सम्मेलनों बात
वे बस का एक गुच्छा फेंक जहां प्रोसेसर के लिए पत्र संख्या बातें
और यह बहुत अच्छा है कहना.
लेकिन यह है कि वे किया शांत है इस वजह जावास्क्रिप्ट -
या हो सकता है आप के साथ परिचित नहीं हैं जावास्क्रिप्ट अभी तक हम नहीं पड़ा है क्योंकि
इस पर व्याख्यान -
लेकिन जावास्क्रिप्ट एक व्याख्या है भाषा.
>> और यह भी एक महत्वपूर्ण बिंदु है.
तो यह हमारे वेब के लिए महत्वपूर्ण है सर्वर सही, तेजी से हो सकता है?
और हम बस जावास्क्रिप्ट चल रहे थे साथ व्याख्या की गई थी कि कोड बस
किसी भी पुराने दुभाषिया यह धीमी गति से हो सकता है.
इस होने से तो नोड लाभ सुपर फास्ट वी 8 दुभाषिया.
वे इसे नाम दिया है और अगर मैं नहीं जानता क्योंकि माथे में वी 8 थप्पड़
बात है, लेकिन ठीक है.
>> तो मैं कुछ उदाहरण तैयार किया है इस यूआरएल पर.
संगोष्ठी के बाद, मैं एक तरह से करने के लिए जा रहा हूँ आप नोड सेट प्राप्त कर सकते हैं के बारे में बात
ऊपर, लेकिन अब के लिए, मैं बस की तरह चाहते हैं कुछ कोड उदाहरण के माध्यम से चलने के लिए.
तो तुम साथ पालन करना चाहते हैं, तो सभी स्रोत कोड वहाँ उपलब्ध है.
ठीक है?
>> इसलिए मैं इस यूआरएल छोड़ देंगे एक छोटी सी के लिए ऊपर.
और फिर मैं अभी जा रहा हूँ टर्मिनल में स्विच.
हर कोई इस यूआरएल के साथ अच्छा है?
तो मैं स्विच करने के लिए जा रहा हूँ यहाँ मेरे टर्मिनल के लिए.
>> तो यहाँ कोड है कि मैं आज के लिए है.
क्यों करते हैं हम के साथ शुरू नहीं simpler.js फ़ाइल?
दूसरी बात यह है कि इस सब कोड में लिखा जा रहा है
जावास्क्रिप्ट जो आप कर सकते हैं या साथ परिचित नहीं हो सकता.
मैं एक दो चीजें है लगता है कि एक बहुत जावास्क्रिप्ट कोड की तरह का है
वाक्यविन्यास और संरचना के समान है सी, के रूप में आप की तरह इसे उठा सकते हैं तो
तुम्हारे साथ जाना.
मैं का एक बहुत कुछ लिखने की कोशिश की है है कि एक तरह से इस के लिए शुरू कर कोड
यह है कि इतनी सी के समान एक छोटे से अधिक पठनीय.
लेकिन हम प्रगति के रूप में, मैं हो जाएगा अतिरिक्त के कुछ का प्रदर्शन
जावास्क्रिप्ट की सुविधाओं कि एक तरह से शांत कर रहे हैं.
>> लेकिन यह नमूना कार्यक्रम पर नजर डालते हैं.
मैं वहाँ सब कुछ काट रहा है लगता है.
मैं सिर्फ इतना है कि असली तय करने के लिए जा रहा हूँ कि ठीक है या नहीं की तेजी है.
मैं यह करने के लिए क्या हो रहा है पता नहीं है.
एक छोटे से बेहतर है?
आप वर और सामान देख सकते हैं?
ठीक है.
>> तो पहली पंक्ति जावास्क्रिप्ट की तरह है एक चर का संस्करण
घोषणा.
तो बस क्या यह होगा उजागर करने के लिए तो यह बस की तरह है सी में की तरह दिखते
मुझे कह सूचकांक तीन बराबर होती है या ऐसा कुछ.
तो मैं प्रकार निर्दिष्ट नहीं किया है.
जावास्क्रिप्ट प्रकार है, लेकिन यह बात है बहुत गतिशील रूप से प्रकृति में लिखा है, तो
इस पर प्रकार के किसी भी प्रकार प्रदान नहीं किया.
तो यह सिर्फ वर है.
उस चर की तरह है.
ठीक है?
>> और मैं इस चर HTTP बुला रहा हूँ.
और मेरे दाहिने हाथ की ओर, मेरे पास है मैं HTTP में डाल करना चाहते हैं कि अभिव्यक्ति.
और यह HTTP आवश्यकता कहते हैं.
तो इस तरह के समान शामिल करने के लिए है.
यह एक छोटे से अधिक की तरह शक्तिशाली की तुलना में है शामिल है कि भावना में शामिल
बस कॉपी और हैडर पेस्ट होगा समारोह प्रोटोटाइप के लिए फ़ाइल या
प्रकार परिभाषा के साथ जो कुछ भी.
लेकिन आवश्यकता वास्तव में जा रहा है हमें कोड पाने के लिए.
>> तो आप के रूप में सोच सकते हैं कुछ कोड का आयात.
तो कहीं Node.js मॉड्यूल में सिस्टम या जो भी हो, वे यह सब किया है
HTTP सर्वर कोड तो मैं अभी कर रहा हूँ मेरे अपने के लिए यह दिलकश
इस कार्यक्रम में निजी इस्तेमाल के.
ठीक है?
>> इतना तो मैं इस समारोह है मैंने लिखा है कि.
और मैं स्पष्ट करना होगा नहीं किया नोटिस वापसी प्रकार या के प्रकार
तर्क फिर से.
इतनी तरह की ढीली में टाइप भावना के उस तरह.
उस में लेता है कि दो तर्क, अनुरोध और प्रतिक्रिया.
तो उस धारणा की तरह की तरह है हम था कि तस्वीर से परिचित
स्क्रीन पर क्योंकि पहले हम इस अनुरोध को मिलता है कि हम
उपयोगकर्ता से है.
और फिर हम एक प्रतिक्रिया है कि हम बातें करने के लिए लिख सकते हैं.
>> तो यह की पहली पंक्ति करता है 200 res.writeHead और फिर इस
सामग्री प्रकार पाठ सादे.
तो चलो एक छोटे से यह अलग टुकड़ा चलो.
तो चलो बस res.write पर ध्यान केंद्रित करते हैं एक छोटी सी के लिए.
तो राइट, मूल रूप से है, और सिर लिखना एक तरह से बाहर लिखने के लिए सिर्फ तरीके हैं
प्रतिक्रिया के लिए चीजें.
ठीक है?
किसी को भी याद करते हैं तो, अगर सिर लिखना HTTP के व्याख्यान से, तुम लोग करते हैं
पर हेडर याद HTTP बात के ऊपर?
तो क्यों मैं सिर्फ डेमो नहीं है असली जल्दी हेडर.
कि मददगार होगा?
चाहिए या हम बस की तरह -
ठीक है.
ज़रूर.
>> तो अपने ब्राउज़र google.com पर चला जाता है जब या ऐसा कुछ,
वास्तव में एक छोटे से अधिक है -
यह एक रहस्य की तरह है -
एक छोटे से अधिक जानकारी की तरह नहीं है कि बस से पाइप के माध्यम से आता है
छोटे से खोज और सब कुछ.
तो आप यह दिखाने के लिए, मैं जा रहा हूँ कर्ल नामक एक प्रोग्राम का उपयोग करने के लिए.
ठीक है?
तो यह आप पर चला सकते हैं कि कुछ है अपने मैक OSX कमांड लाइन या में
उपकरण या जो भी हो.
और इसलिए मैं कर्ल है अगर HTTP google.com, मैं HTML को देखने के लिए जा रहा हूँ.
और यह, निष्पक्षता में, है अभी एक तरह से करने के लिए आपको बताता है कि HTML
अपने ब्राउज़र नहीं करता है www पर रीडायरेक्ट स्वचालित रूप से संभाल
पुनर्निर्देशन.
>> तो यह बस HTML है, लेकिन मैं जा रहा हूँ मैं झंडा इस हाइफ़न कर्ल जोड़ने के लिए.
ठीक है?
और यह दिखाने के लिए जा रहा है मुझे हेडर.
तो यह भी आता है कि जानकारी है के माध्यम से मैं इस प्रतिक्रिया मिलता है.
ठीक है?
>> तो शीर्ष पर, आप यह देखना HTTP 301 स्थायी रूप से चलते हैं.
और इस तरह के महत्वपूर्ण है क्योंकि इस स्थिति कोड को दर्शाता है.
तो यहाँ 301, स्थिति कोड है बुनियादी तौर पर सिर्फ एक पूर्णांक है जो
उस ब्राउज़र या जो कोई भी है कहता है आप बहाना है कि अगर यह पढ़
आप एक ब्राउज़र रहे हैं और आप यह देख रहे हैं, मूल रूप से अब अगर तुम देखो
कि और आप एक 301 देख, तुम मुझे पता है के आधार पर कुछ खास करना
301, या कुछ विशेष हुआ 301 पर आधारित है.
तो यह स्थायी रूप से स्थानांतरित कहते हैं.
>> और फिर, मूल रूप से, हम हैं महत्वपूर्ण मूल्य जोड़े का एक गुच्छा.
इसलिए हम स्थान मिल www.google.com है.
और फिर एक तरह से यह सब अन्य सामान, लेकिन असल में, क्या स्थान है
कहावत नया स्थान है www.google.com पर है.
आप google.com पर जाना तो अब, अगर तुम हूँ सॉर्ट की झपकी के ब्राउज़र तरह देखना
आप पुनर्निर्देशित तो एक दूसरे और के लिए सही वापस www.google.com पर.
इसलिए प्रतिक्रियाओं शामिल कर सकते हैं इन हेडर.
>> और चीजों के एक जोड़े को बाहर बात करने के लिए.
तो चलिए हम वास्तव में सफल रहे थे, हम कहते हैं एक वेब पेज का दौरा करने में.
इसलिए मेरे लिए चलते हैं -
एक अच्छी वेबसाइट क्या है?
मैं अच्छा के बारे में सोच पर बुरा हूँ मौके पर वेबसाइटों.
>> दर्शक: विकिपीडिया.
>> केविन SCHMID: ठीक है.
विकिपीडिया करते हैं.
यहाँ तो मैं ले जाया गया था.
ओह रुको.
मैं था?
हाँ, मैं था.
ठीक है.
इसलिए मैं www करना होगा.
इसलिए मैं www क्या करने जा रहा हूँ.
आप देख सकते हैं और, यहाँ सभी HTML है ब्राउज़र की प्रक्रिया होगी कि
विकिपीडिया के लिए.
>> लेकिन मैं यहाँ स्क्रॉल रखने के लिए, मैं शीर्ष पर क्या देखेंगे -
वाह, का एक बहुत कुछ है विकिपीडिया पर HTML -
लेकिन क्या मैं यहाँ शीर्ष पर देख सकते है के रूप में विरोध किया इस 200 स्थिति कोड
जैसा कि मैंने पहले देखा था कि 301.
और यह एक अच्छा है कि नोटिस यह अगले अनुकूल ठीक है.
तो यह अच्छी स्थिति कोड की तरह है.
>> कि 200 नंबर परिचित दिखता है?
हां, क्योंकि मैं simpler.js किया था, जब मैं वहाँ एक 200 लिखा था.
तो यह है कि मूल रूप से बता कह रहा है ब्राउज़र या जो कोई भी प्राप्त करने की कोशिश कर रहा है
वे सफल रहे थे कि यह.
या जैसा कि हम उस तरह भी सफल रहे थे.
>> और विशेष वाक्यविन्यास के इस तरह वहाँ जावास्क्रिप्ट में एक घोषित करने के लिए
सामग्री प्रकार की तरह इन चाबियों का नक्शा और पाठ सादे तरह इन मूल्यों.
तो आप प्रतिक्रिया पर नजर डालें तो लगता है कि हम , पहले वापस विकिपीडिया से मिला -
मैं स्क्रॉल करने के लिए प्रयास करने के लिए जा रहा हूँ एक छोटे से तेजी से ऊपर -
आप सर्वर की तरह इन चाबियों है और इन मूल्यों अपाचे.
तो आप कुंजी और मूल्यों मिल गया है.
और आप में यह निर्दिष्ट कर सकते हैं वापस भेजने के लिए क्या नोड.
>> तो यह कुछ में, वास्तव में किस तरह का है तरीके, और कुछ मायनों में यह नहीं है
वास्तव में, लेकिन यह एक छोटे से कम स्तर है आप हो सकता है कि PHP कोड से
पी के लिए लिख सात सेट क्योंकि PHP और अपाचे की तरह कुछ का ख्याल रखना
आपके लिए इन बातों के बारे में.
PHP में, आप डिफ़ॉल्ट ओवरराइड कर सकते हैं अपने खुद के हेडर लिखने से व्यवहार.
लेकिन इस के प्रयोजनों के लिए, हम मिल हमारे अपने हेडर बाहर लिखने के लिए.
>> तो यह है कि लाइन को समझ पड़ता है सब लोग, लिखने के सिर रेखा?
ठीक है.
बहुत बढ़िया.
>> तो फिर मैं क्या मैं प्रतिक्रिया अंत है दुनिया नमस्ते कह कर.
ठीक है.
लेकिन वह सिर्फ एक समारोह है अनुरोध हैंडलर कहा जाता है.
तो अब मैं वास्तव में किस तरह की क्या करना है इस समारोह के साथ कुछ है, है ना?
>> तो यहाँ मैं क्या कर यह वहाँ है वर सर्वर के बराबर होती है जो लाइन
HTTP.create सर्वर, और फिर मैं अनुरोध हैंडलर में गुजरती हैं.
तो इस नोड की तरह है एक सर्वर बनाने का तरीका.
और मैं जा रहा हूँ कि नोटिस अनुरोध हैंडलर में.
तो इस createServer कह रहा है मैं आपको एक मुझे बनाना चाहते कि समारोह
सर्वर, और जब कि सर्वर को प्राप्त करता है एक प्रतिक्रिया है, मैं आप इस फोन की जरूरत
हैंडलर समारोह का अनुरोध.
ठीक है?
>> तो यह है कि लाइन बहुत ज्यादा सही दूर रहता है.
तो वर सर्वर लाइन सही किया जाता है तुम बहुत ज्यादा है कि ऐसा करने के बाद.
मेरा मतलब है, यह कुछ आंतरिक स्थापित करने के लिए है आप के लिए होता है कि पता करने के लिए राज्य
उस अनुरोध हैंडलर समारोह फोन है, लेकिन यह वहाँ बैठने के लिए जा रहा है और नहीं है
कहते भेजा उपयोगकर्ता है मुझे अभी तक एक अनुरोध?
अभी तक मुझे एक अनुरोध भेजा है?
तो यह ब्लॉक नहीं करता है.
ठीक है?
>> तो क्या यह करना होगा कि यह मूल रूप से है अब इस कोड के लिए एक संकेत संग्रहीत करता है,
तो इस अनुरोध हैंडलर समारोह, और उस कोड चलेंगे जब किसी को
एक अनुरोध करता है.
और फिर हम server.listen करना.
>> 1337 सुंदर मनमाना है.
मैं कोई विशेष कारण था उस नंबर चुनने के लिए.
यह पूरी तरह से यादृच्छिक था.
लेकिन वह सिर्फ पोर्ट निर्दिष्ट करता है.
तो सबसे वेब सर्वर आप देखेंगे कि वे उस तरह है क्योंकि 80 बंदरगाह का उपयोग
के सम्मेलन की तरह.
तो मैं ऐसा कुछ करने के लिए जाना है, मैं नहीं जानता, Wikipedia.org,
और मैं पेट के 8 डाल -
अरे वाह, तुम देख नहीं सकते.
मैं माफी चाहता हूँ.
लेकिन मैं विकिपीडिया से करते हैं -
मैं यहां यह लिख देता हूँ बस इतना है कि यह कैमरे पर स्पष्ट है.
लेकिन मैं के साथ एक ब्राउज़र में यह लो अगर यह बताता है कि एक पेट के 80, के लिए जाना
Wikipedia.org पोर्ट 80 पर.
तो यह संयुक्त राज्य अमेरिका है कि कैसे की तरह है आप जहाज कर सकते हैं जहां की तरह कई बंदरगाहों
की तरह बातें करने के लिए.
तो यह इस विशेष के लिए जाना पसंद है इस सर्वर पर जगह है.
ठीक है.
>> इसलिए मैं सिर्फ 1337 चुना.
संख्या की एक पूरी श्रृंखला है आप चुन सकते हैं कि.
यह पूरी तरह से विशेष नहीं था.
>> लेकिन अब मैं क्या करने जा रहा हूँ मैं नोड चलाने के लिए जा रहा हूँ.
मुझे वास्तव में दर्ज करते हैं कि एक जोड़े आप इसे देख सकते हैं कि इतने नीचे लाइनों.
मैं नोड क्या करने जा रहा हूँ, और मैं कर रहा हूँ simpler.js चला जा रहा.
और हम कैसे प्राप्त करने के बारे में बात करेंगे नोड एक छोटा सा में स्थापित की.
लेकिन अब यह सिर्फ सर्वर चल रहा है.
>> तो एक बात हम कोशिश कर सकते हैं, जो नहीं हो सकता रोमांचक हम वास्तव में कर सकते है कि हो सकता है
कर्ल में इसे उपयोग करने की कोशिश.
इसलिए मैं कर्ल कर सकते हैं, और मेरे मशीन स्थानीय मेजबान है.
तुम भी यह लिखा देखेंगे कभी कभी इस तरह से.
स्थानीय मेजबान और 127.0.0.1 प्रकार हैं के अपने घर को कंप्यूटर की तरह.
तो यह करने के लिए बात की तरह है अपने खुद के कंप्यूटर.
ठीक है.
>> और फिर मैं 1337 में कह सकते हैं.
तो मैं कोड की इस पंक्ति चलाते हैं, यह दुनिया नमस्कार कहते हैं.
और मुझे लगता है कि चीजें देखना चाहता था कि अगर था सामग्री प्रकार पाठ सादे या
जो भी हो, मैं भी यहाँ इस डाल सकता है.
और यह ठीक कहती है कि नोटिस.
और मैं पाठ सादा है.
और फिर यह अन्य तरह के सभी वहाँ नोड में जोड़ना होगा कि सामान
वहाँ मेरे लिए.
यही कारण है कि सुपर महत्वपूर्ण नहीं है.
>> मेरा मतलब है, तकनीकी के कुछ प्रकार के होते हैं तरह कर रहे हैं उस पर के पहलुओं
सिर्फ दिखाने के लिए के बारे में बात करने के लिए शांत है, लेकिन आप, मैं भी सत्ता के लिए है
चारों ओर इन बदलते हैं.
तो मैं सिर्फ एक गुच्छा जोड़ सकते हैं इस तरह से सामान की.
और फिर अब, मैं में देखो अगर मेरी उत्पादन, यह है कि हो जाएगा.
इसलिए इन हेडर कुछ बातें मतलब कि जैसे ब्राउज़रों और बातें करने के लिए.
>> और हेडर मूल रूप से एक ब्राउज़र बता सकते हैं कैसे कुछ करने के लिए प्रतिक्रिया करने के लिए.
आप पहले कभी कुकीज़ के बारे में सुना है तो या आप कभी नाराज़ किया गया है अगर
कुकी सेट करने के लिए एक वेब पेज से, या कुकी ब्लॉक या पर दिया
ऐसा कुछ.
आप वास्तव में कुकीज़ सेट कर सकते हैं इन शीर्ष लेख में.
तो वे कैसे एक ब्राउज़र बताओ कुछ मामलों में व्यवहार.
ठीक है.
>> इसलिए कि simpler.js था.
किसी को भी किसी भी सवाल है उस स्रोत कोड फ़ाइल पर?
ठीक है.
कूल.
>> तो चलो से आर को दूर करते हैं और simple.js पर दिखेगा.
तो यह बहुत ज्यादा है एक ही कार्यक्रम.
मैं सिर्फ एक छोटे से इसे दूसरे तरीके से लिखा मैं उजागर की तरह करना चाहता था क्योंकि
जावास्क्रिप्ट के कुछ सुविधाएँ.
>> इसलिए सूचना के उस अनुरोध हैंडलर समारोह पूरी तरह से गायब हो गया है.
हां ओह, आप एक प्रश्न किया है?
>> दर्शक: हाँ, तर्क कि करने के लिए पारित कर रहे हैं कि
समारोह, वे क्या कर रहे हैं?
>> केविन SCHMID: तो उन हैं जावास्क्रिप्ट वस्तुओं.
Node.js दस्तावेज में, यह मूल रूप से तरीके हैं क्या कहते हैं
उन पर उपलब्ध.
हम बस के लिए उपयोग के लिए होता है लिखने के सिर और अंत नामक इस विधि
और इस तरह से सामान.
लेकिन एक पूरी गुच्छा है अधिक तरीकों.
>> और उदाहरण के लिए, उनमें से एक की तरह आरईसी पर विशेष रूप से, आप कर सकते हैं
rec.method तरह कुछ जो होगा यह एक HTTP मिलता है या कि क्या आप बता
HTTP पोस्ट अनुरोध और इस तरह बातें.
इसलिए अलग से सभी प्रकार के होते है गुण, लेकिन वे दोनों कर रहे हैं
जावास्क्रिप्ट वस्तुओं, और वे बस उनमें से जुड़े कार्यों आपको लगता है कि
बातें करने के लिए लिख सकते हैं.
ठीक है?
>> तो उस अनुरोध हैंडलर नोटिस पूरी तरह से चला गया है.
लेकिन मैं अनुरोध में था कि कोड हैंडलर अभी भी वहाँ है.
मैं अभी भी इस res.writeHead है और मैं अभी भी इस res.end है.
और इस में से एक उदाहरण क्या है जावास्क्रिप्ट एक के इस विचार है
गुमनाम समारोह.
और बेनामी एक उपयुक्त नाम की तरह है इसके लिए यह सचमुच नहीं है, क्योंकि
एक नाम है.
कोई समारोह अनुरोध नहीं है वहाँ में हैंडलर.
>> कोई नाम नहीं है, लेकिन यह अभी भी एक तर्क ले रही है.
इसलिए मैं अभी भी आरईसी और जोड़कर मिला.
और मैं अभी भी कोड है.
यह पूरी तरह से ठीक है जावास्क्रिप्ट कोड.
इसलिए मैं बिना एक समारोह की घोषणा कर सकते हैं स्पष्ट रूप से यह एक नाम दे रही है.
यह पहली बार में एक छोटे से भ्रामक है.
कुछ की तरह उपयोगी बातें कर रहे हैं आप के साथ क्या कर सकते हैं
इन बेनामी कार्य करता है.
किसी को भी इस पर कोई प्रश्न है, या यह सिर्फ के लिए, के लिए अब ठीक है
एक तरह से सिर्फ स्वीकार करते हैं कि यह एक ही बात करेंगे?
हाँ?
>> दर्शक: कार्यों पहले कर रहे हैं जावास्क्रिप्ट में वर्ग?
>> केविन SCHMID: वे पहले कर रहे हैं जावास्क्रिप्ट में वर्ग.
और सिर्फ इतना पता है कि इन अवधारणाओं की तरह एक गुमनाम समारोह में गुजर
इस जावास्क्रिप्ट लागू करने के लिए आप के लिए अपने अंतिम परियोजना में लिख सकते हैं
भी वेब ब्राउज़र.
तो उदाहरण के लिए, जावास्क्रिप्ट में में अपने ब्राउज़र, यह कुछ हद तक भी घटना है
समझ में संचालित है कि क्या तुम हूँ उपयोगकर्ता इस पर क्लिक करने पर है
बटन, मैं आप इस कोड को चलाने के लिए चाहते हैं.
>> इसलिए इसके बारे में विचारों का एक ही तरह का है ग्राहक की ओर एक माउस क्लिक करें या वे जब
पर कुछ छवि पर माउस अपने वेब पेज, इस कोड को चलाने.
कि सर्वर के लिए आवेदन कर सकते हैं.
तो उस तरह के रोमांचक तरह है जावास्क्रिप्ट एक सच है कारण
उपयुक्त या कुछ लोगों को यह एक लगता है इस तरह के लिए उपयुक्त भाषा
घटना चालक सर्वर क्योंकि तुम इन बेनामी कार्य करता है.
आप पूरे विचार के लिए है इस अतुल्यकालिक कोड.
ठीक है.
किसी को भी किसी भी प्रश्न हैं?
>> ठीक है.
इसलिए कि simple.js था.
तो चलो एक और को देखो या कुछ और.
तो इस sleep.js है.
तो साथ परिचित किसी को है सी समारोह नींद?
पहले व्याख्यान का शायद एक से या ऐसा कुछ?
>> तो बुनियादी तौर पर आप मुझे लगता है कि में पारित कर सकते हैं एक सेकंड की संख्या या आप यू का उपयोग कर रहे हैं
मिसे के एक नंबर सो या nanoseconds.
और मूल रूप से कार्यक्रम बस बंद हो जाएगा समय की है कि राशि के लिए चल रहा है.
है ना?
और फिर यह अंततः जाग और होगा तो यह सिर्फ उनका प्रदर्शन जारी रहेगा
कार्यक्रम.
>> इसलिए इस सर्वर की तरह देता है नींद की छाप.
तो हम एक ही है कि नोटिस शीर्षक के रूप में साथ 200 res.writeHead
इससे पहले, लेकिन फिर हम यह कह रहे हैं समारोह सेट मध्यांतर बुलाया.
सेट मध्यांतर में भी उपलब्ध है कृपया अपने वेब ब्राउजर गूगल क्रोम
या सफारी या जो भी हो.
और असल में यह यहाँ क्या कर रहा है यह एक समारोह में ले जा रहा है.
सूचना, फिर से, यह एक है गुमनाम समारोह.
हम कर रहे हैं क्योंकि तो उस तरह से शांत है एक के भीतर एक गुमनाम समारोह का उपयोग
अनाम समारोह जो एक अजीब सा हो सकता है.
>> लेकिन ऐसा नहीं है, जो कि समारोह ले जा रहा है और इस तरह से - मूल रूप से कह
निर्माण मैं चाहता हूँ, 5000 मिसे में है आप उस समारोह निष्पादित करने के लिए जो
बस अरे प्रतिक्रिया समाप्त होता है और लिखते हैं.
तो इस तरह का आभास देता है सो, लेकिन जिस तरह से यह वास्तव में
काम करता है हम के माध्यम से चलाया जाएगा बहुत जल्दी इस लाइन.
हम सिर्फ कुछ लिख रहे हैं.
और फिर हम भी माध्यम से चलने देंगे बहुत जल्दी इस लाइन.
इसलिए हम वास्तव में नहीं जा रहे हैं पाँच सेकंड प्रतीक्षा करने के लिए.
हम बस चलाने के लिए जा रहे हैं तुरंत इस कोड.
>> और फिर, फिर से, इस छोटे से वहाँ अब इस बात की है कि घटना पाश
मूल रूप से बस है कि रजिस्टरों लगातार एक सर्कल में चारों ओर जा रहा
और एक एकल में घड़ी को देख मुद्दा है और कह, पाँच सेकंड है
अभी तक पारित किया?
और फिर यह देखता है कि जब दूसरा हाथ में पाँच सेकंड या की तरह ले जाया गया
जो भी हो, तो यह उठता है और कहता है ओह, मुझे क्या करना है?
ओह मैं इस कोड चलाने के लिए है.
और फिर यह जा रहा है अरे res.end चलाते हैं.
>> तो फिर, हम यहाँ इंतज़ार कभी नहीं रहे हैं.
इसलिए यह नहीं है कि के अंदर इस कोड इस समारोह में पाँच ले जा रहा है
चलाने के लिए सेकंड.
इस कोड को बहुत ज्यादा चलेंगे करने के लिए तत्क्षण, कम से कम रिश्तेदार
हम बात कर रहे थे कि पाँच सेकंड के बारे में पहले से पहले.
>> तो बस, कार्रवाई में यह दिखाने के लिए मैं Node.sleep.js कर सकते हैं.
और कुछ मैं गड़बड़ कर दी?
संभवतः.
माफ़ कीजिए.
हम इसे ठीक करने के लिए क्या कर सकते हैं देखते हैं.
ठीक है.
तो निश्चित रूप से Node.js. उपयोग
मैं सिर्फ मजाक कर रहा हूँ.
ठीक है.
बस एक सेकंड.
ठीक है.
मैं यह क्या है.
>> तो मुद्दा है कि मेरे अन्य टैब में यहाँ, मैं पहले से ही पर नोड चल रहा था
कि एक ही पते, 1337.
हम देखें तो यह फेंक दिया तो त्रुटि इसे असली बारीकी, पते में है
, EADDRINUSE का उपयोग करें.
इसलिए मैं यहाँ पहले से ही 1337 का उपयोग कर रहा था.
मुझे लगता है मैं तो अब इस बंद, और यदि हां हमें उम्मीद है कि सब कुछ इस चलाने का प्रयास
ठीक हो जाएगा.
ठीक है.
तो आप केवल एक ही बात के आधार पर क्रमबद्ध हो सकती है के एक बार में एक बंदरगाह पर सुन रहा है.
एक अन्य समाधान मेरे लिए हो गया होता सिर्फ इतना है कि कार्यक्रम को संपादित करने और बनाने के लिए
यह 1338 या कुछ और की तरह हो ऐसे ही.
>> लेकिन अब नींद से चल रहा है.
तो चलो वास्तव में इसे बाहर की कोशिश करते हैं ब्राउज़र इस समय यह है क्योंकि एक
देखने के लिए थोड़ा unexciting यह एक टर्मिनल में.
इसलिए मुझे लगता है कि बस में जाने के लिए जा रहा हूँ 127 पते फिर 1337 में.
और अगर आप इसे देख सकते हैं -
मैं आप कर सकते हैं अगर नहीं पता है - लेकिन मेरी ब्राउज़र की एक बहुत, बहुत लंबे समय ले
या पाँच सेकंड की तरह लोड करने के लिए समय है.
>> और फिर उसके बाद, यह अंत में प्रतिक्रिया समाप्त हो गया.
और आप इसे देख नहीं सकते क्योंकि बात अगर मैं एक छोटे से अधिक चले गए, लेकिन है
इस एक छोटे से छोटे, तुम यह हे कहते हैं देख सकते हैं.
इसलिए मैं हे मिल गया, लेकिन पाँच सेकंड के बाद.
और यह देखने के लिए एक छोटे से क्लीनर हो सकता है यहां टर्मिनल पर यह है, तो मैं कर रहा हूँ
एक क्या करने जा रहा -
चलो यहाँ में करते हैं -
चलो उस पते कर्ल करते हैं फिर 1337 के साथ.
और मैं बस की तरह बैठना होगा यहाँ पाँच सेकंड के लिए.
लेकिन सूचना है कि सर्वर नई प्रतिक्रियाओं को स्वीकार कर सकते हैं.
तो यह हे प्रिंट.
>> और असल में, इस डेमो के लिए क्या मैं यह अन्य टैब में कर सकते हैं -
तो चलो मैं एक और टैब में ऐसा कर हम कहते हैं, मैं कर्ल और ऐसा ही करने जा रहा हूँ
बात फिर से.
और मैं इन किक करने की कोशिश करने जा रहा हूँ एक ही समय में लोगों को बंद.
तो मैं यह करने के लिए जा रहा हूँ, और मैं कर रहा हूँ यहाँ पर दौड़ के लिए जा रहा है और मैं हूँ
फिर से ऐसा करने जा रहा.
>> और हम इसका बनाते हैं इतना है कि आप उन दोनों को देख सकते हैं.
अरे मुद्रित है कि एक और एक है कि मुद्रित हे सब रास्ते पर -
फिर उस प्रयोग करते हैं.
दरअसल, हम इस का उपयोग करते हैं यह ठीक है, तो चाल.
>> तो मैं एक खोल बात का उपयोग करने के लिए जा रहा हूँ कि मुझे मूल रूप से दो प्रतियों को चलाने के लिए अनुमति देता है
समानांतर में इस कार्यक्रम का.
तो यह पहला कार्यक्रम चलाने के लिए और करेंगे समानांतर में दूसरा कार्यक्रम है.
मैं प्रेस दर्ज करें तो अब, अगर यह हो रहा है उस अनुरोध को बहुत ज्यादा बनाने के लिए
तत्क्षण ही समय में.
तो चलो इस एक शॉट देना.
>> तो अब यह दो प्रक्रियाओं कहते हैं नोटिस.
और यदि आप उत्सुक हैं, कि 27,000 नंबर मूल रूप से प्रक्रिया आईडी है.
और फिर वे मुद्रित, नोटिस अरे एक ही समय में.
यह हम पांच इंतजार करना पड़ा पसंद नहीं था उसके बाद एक और तब के लिए सेकंड,
पांच सेकंड बाद दूसरा मिलता है.
तो उस तरह का कुछ मायनों में, यह है वास्तव में सबूत है, लेकिन यह नहीं है
यह बस नहीं है कि सहज ज्ञान युक्त सबूत पाँच सेकंड प्रतीक्षा और अवरुद्ध की तरह
पूरे धागा.
शांत ठीक है.
>> इसलिए हारून पहले एक सवाल पूछा कि था, अच्छी तरह से क्या हम कुछ करते हैं अगर -
हाँ?
>> दर्शक: रुको.
कैसे है कि से अलग printf बफर, हालांकि?
यह स्वचालित रूप से ऐसा नहीं करता है?
क्यों हम इसके बारे में चिंता करने की ज़रूरत है?
>> केविन SCHMID: ओह, तुम सकता है कि एक बार और कहते हो?
>> दर्शक: printf बफर पसंद नहीं करता सटीक एक ही बात करते हैं?
>> केविन SCHMID: printf बफर?
>> दर्शक: हाँ.
ठीक है.
वे थे परीक्षाएँ में से एक में नहीं था कैसे आप अगर सही printf के बारे में बात
कुछ और तो यह एक रोकते हैं, दूसरा, और फिर आप इसे पाश दस है
कई बार, यह दस सेकंड तक प्रतीक्षा करेंगे तब सब कुछ एक साथ printf?
>> केविन SCHMID: ओह, ठीक है.
>> दर्शक: यह वही कर रहा है बात तो इस मामले में?
>> केविन SCHMID: तो सवाल था मूल रूप से पूर्व परीक्षाएँ में से एक में
या कुछ और, एक सवाल ही नहीं था कि मूल रूप से आप प्रिंट एफ 10 का कहना है कि अगर
तो एक बार में बातें और में जैसे सोया उन बाहर मुद्रण की प्रक्रिया,
किसी कारण के लिए अंत में, यह होगा सिर्फ स्क्रीन पर सभी बाहर उन डंप.
इसलिए अलग दो की तरह नहीं है यहाँ अवधारणाओं.
>> तो मैं एक बात है कि, इस में है लगता है मामले में, हम अलग दो के साथ काम कर रहे हैं
एक तरह से लोगों को सर्वर पूछ एक ही समय में बातें करने के लिए.
और कहा कि printf तरह का कारण उस तरह इंतजार कर रहा है और यह सब बाहर उदासीनता
एक बार में अधिक से संबंधित है की कैसे printf तरह -
इसलिए जिस तरह printf वास्तव में है कार्यान्वित यह मूल रूप से करने के लिए किया है
लिखने के लिए ऑपरेटिंग सिस्टम से बात दिलासा देने के लिए है कि सामान.
तो यह है कि सभी को करना नहीं चाहता है आप printf का कहना है कि जब सामान तुरंत
कुछ स्ट्रिंग है कि सकता है क्योंकि यह करने के लिए है, तो महंगा हो
हर बार करते हैं.
>> अगर आप ऐसा करेंगे तो, हे अपने कार्यक्रम printf वास्तव में है कि मुद्रित नहीं हो सकता
तुरंत दिलासा देने के लिए.
यह ठीक है, मैं इसे लिखा था, कह सकते हैं.
तुम्हें देने के लिए के लिए और फिर तरह की प्रतीक्षा यह वास्तव में से पहले एक छोटे से अधिक
सांत्वना के लिए इसे बाहर लेखन.
>> तो यह है कि इस मामले था कि कारण -
और यह एक तरह से असंबद्ध है नींद के लिए -
नींद की तरह बस गया था कि है प्रदर्शित करने के लिए वहाँ में इंजेक्ट
यह लिख नहीं है कि तथ्य यह synchronously.
लेकिन उस के लिए कारण बस है प्रदर्शन आप की जरूरत नहीं है कि इतनी
कि बहुत से संपर्क करने के लिए बना ऑपरेटिंग सिस्टम.
>> लेकिन यहाँ, क्या हम वास्तव में करने की कोशिश कर रहे हैं इस नींद बात के साथ ही शो है
कि हम पर जाकर दो लोगों के पास जब इस वेबसाइट, यह डाल करने के लिए नहीं जा रहा है
उन्हें यह कहने जा रहा है जहां एक पंक्ति में मुझे लगता है मैं कर रहा हूँ तो जब आप मदद, और करने के लिए है
पूरी तरह से इन के बाद आप की मदद समाप्त पाँच सेकंड, तो मैं करने जा रहा हूँ
अगले व्यक्ति पर चलते हैं.
तो सबसे पहले व्यक्ति के अनुरोध नहीं करता उस घटना पाश टाई
कि समझ में आता है.
>> लेकिन यहाँ वास्तव में एक उदाहरण है टाई होगा कि कुछ की
घटना पाश.
तो यहाँ एक भयानक कार्य करने के लिए है n वें फिबोनैकी गणना.
यह सचमुच आप कर सकते हैं बदतर तरीका है n वें फिबोनैकी संख्या की गणना.
और यह सिर्फ स्वीकार करने के लिए वास्तव में है यह कहाँ से आया
वास्तव में नहीं है -
मेरा मतलब है, आप इसे पा जाने की कोशिश कर सकते हैं - लेकिन एक बहुत लंबी ब्लॉग की तरह नहीं है
किसी ने लिखा है कि पोस्ट.
यह उन Reddit चीजों में से एक की तरह है.
लेकिन किसी Node.js आलोचना की, और वे एक उदाहरण के रूप में इस का उपयोग किया.
तो मैं एक तरह से सिर्फ तुम दो दिखाना चाहता था अलग अलग दृष्टिकोण बस पाने के लिए
अवधारणाओं के एक सामान्य समझ इन दोनों चीजों के पीछे.
>> लेकिन यह सिर्फ एक भयानक रूप में चुना है बुरी अक्षम computationally
गणना करने के लिए गहन तरीका n वें फिबोनैकी संख्या.
तो बस एक तरफ ध्यान दें के रूप में, क्यों है यह भयानक एक तरह की तरह?
हाँ?
>> दर्शक: आप शुरू कहो 1,000 से बाहर.
999 और 998 में 1,000 विभाजन.
इस में से प्रत्येक दो चीजों में विभाजन.
>> केविन SCHMID: ठीक है.
>> दर्शक: सभी तरह से नीचे.
>> केविन SCHMID: बिल्कुल.
तो अगर सिर्फ कैमरे के लिए दोहराने के लिए मैं 1,000 या कुछ और की तरह पर मिथ्या कॉल
ऐसे ही, यह स्पष्ट रूप से कम नहीं है या एक के बराबर है तो मैं करने जा रहा हूँ
यह किसी और मामले में जाते हैं, और फिर मैं जा रहा हूँ 999 मिथ्या प्लस 998 मिथ्या कॉल करने के लिए.
और फिर बहुत ज्यादा है कि सभी की 999 करता मिथ्या है कि काम है
एक तरह से इस स्तर पर.
आप नीचे जाना है, तो यह और भी अधिक बेमानी है उस से भी, लेकिन अगर आप बस
कंप्यूटिंग मिथ्या 998 हो जाता है हमें बहुत करीब 999 मिथ्या है.
इसलिए हम वास्तव में एक छोटे से अधिक होना चाहिए हम किस तरह का पुन: उपयोग के बारे में कैसे चतुर
इन, लेकिन हम पुन: उपयोग नहीं कर रहे हैं सभी में इन बातों को.
तो अगर आप इस विशाल कल्पना कर सकते हैं सिर्फ भयानक है कि विशाल पेड़.
>> लेकिन वैसे भी, ठीक है.
इसलिए कि मिथ्या था.
यह बस चलाने के लिए कुछ समय लगता है.
हाँ?
>> दर्शक: [सुनाई].
>> केविन SCHMID: ओह, तुम सकता है सवाल दोहराने?
>> दर्शक: [सुनाई].
>> केविन SCHMID: ओह तो यह सिर्फ कोड है उस तरह का पर होने जा रहा है
सर्वर साइड.
तो यह पाया नहीं किया जा रहा है ब्राउज़र या कुछ में.
यह क्या हमारे पास है मूल रूप से है कि जब यहाँ उपयोगकर्ता बहुत ज्यादा बनाता है
फिर उनके अनुरोध, जब हम की तरह एक अनुरोध करना, हम कॉल करने के लिए जा रहे हैं
सर्वर साइड पर इस समारोह.
और फिर हम परिणाम वापस मिल जाएगा उस समारोह कॉल करने से.
और फिर हम सिर्फ मुद्रित करेंगे यह उपयोगकर्ता के लिए.
तो उपयोगकर्ता वास्तव में सौदा नहीं करता बहुत ज्यादा इस समारोह के साथ.
>> सवाल था?
कि मतलब?
ठीक है.
कूल.
>> तो फिर, हम इस पूरे res.writeHead करना हम बाहर प्रिंट जहां बात
हैडर.
और फिर मैं कर रही द्वारा प्रतिक्रिया खत्म जादुई संख्या मिथ्या 45 है.
तो चलो बस इस सर्वर चलाते हैं.
तो मैं एक नोड fib.js. क्या करने जा रहा हूँ
तो अब मेरे मिथ्या सर्वर चल रहा है.
>> और फिर यहाँ, मैं जा रहा हूँ इनमें से एक करने की.
ठीक है?
तो मैं बस, कर्ल कहने जा रहा हूँ.
तो यह एक छोटे से समय लेने के लिए जा रहा है, लेकिन है उम्मीद है कि जल्द ही यह खत्म होगा और
यह है कि 45 वीं बाहर प्रिंट होगा संख्या फिबोनैकी.
>> दर्शक: [सुनाई].
>> केविन SCHMID: यह चाहिए बहुत जल्द करवाने के.
तो यह 5-6 सेकंड लेना चाहिए.
मुझे लगता है कि सिर्फ वी 8 की जा रही सुपर है पता नहीं है तेजी से, लेकिन किसी भी मामले में, यह एक है
जानबूझकर बहुत कम उदाहरण और एक गैर तुच्छ के असजीला
अभिकलन.
तो एक समय के बाद, यह इस प्राप्त करता है.
>> लेकिन अब, मुझे क्या करना है कि एक ही तरह की मैं जहां पहले के रूप में प्रयोग
एक ही समय में दो अनुरोध?
तो यहाँ मैं पर एक कर्ल करने के लिए जा रहा हूँ उस पते, और मैं जा रहा हूँ
एक और कर्ल करने के लिए.
और हम के लिए यह किया है, याद हम मूल रूप से यह था जब, सर्वर सो
पाँच सेकंड के बाद, वे सुंदर बहुत दोनों अभी वापस आया
एक ही समय के आसपास.
इसलिए यह विशेष रूप से करार नहीं किया गया था.
>> लेकिन अब यह कोशिश करते हैं.
ठीक है, तो हम हमारे दो प्रक्रियाओं मिला.
उन प्रक्रिया आईडी के हैं याद रखें.
यह एक छोटे से होने जा रहा है हम स्टाल, जबकि अजीब.
तो चलो बस यहाँ रहने के लिए और इंतजार.
>> तो उनमें से एक आना चाहिए पीठ की तरह के बाद -
ठीक है, तो एक वापस आ गया.
लेकिन फिर क्यों दूसरा नहीं किया एक बस अभी तक वापस आ गए?
हाँ?
>> दर्शक: सर्वर कुछ नहीं कर सकते यह है कि बड़ी संख्या कंप्यूटिंग की है.
>> केविन SCHMID: ठीक है.
तो जवाब था कि बस सर्वर वास्तव में कुछ नहीं कर सकते, जबकि
यह कि फिबोनैकी संख्या कंप्यूटिंग की.
तो अब मैं बस वापस अपने दो चीजें मिल गया.
लेकिन मैं सिर्फ कोड के बारे में सोचने के लिए लगता है एक छोटे से अधिक, यह कैसे काम कर रहा है
और सब कुछ.
>> तो यहाँ इस समारोह कोड है कि मैं जब इसे चलाने के लिए इस सर्वर बता दिया
एक नई आवक अनुरोध प्राप्त करता है.
तो यह सिर्फ इस माध्यम से चलाने के लिए जा रहा है पूरे कोड, और तब यह जाना जा रहा है
घटना पाश को लेने और फिर जारी नई घटनाओं के लिए जाँच.
तो बुनियादी तौर पर हम क्या हो रहा है क्या सर्वर है
नई चीजों के लिए सुन रहा है.
पहले व्यक्ति 45 क्या है के लिए पूछता है.
हम यह गणना करने के लिए इस कोड को चलाने.
इस कोड लेता लगभग पाँच चलाने के लिए छह सेकंड के लिए.
तो फिर हम घटना पाश के लिए वापस जाओ और नए अनुरोधों के लिए जाँच करें.
>> तो यह आप हैं, कैसे का एक उदाहरण है तथाकथित गणना कर रहे हैं कि चीजें है
बाध्य, या कम्प्यूटेशनल का एक बहुत का उपयोग करें, सत्ता नहीं, लेकिन पसंद कर रहे हैं
गहन computationally -
मैं इस बारे में एक बात कहना है लगता है इस समारोह में पूरी तरह से कर रही है कि
अधिकांश भाग के लिए, सुंदर उपयोगी काम सही.
पूरे समय है कि उस कॉलबैक समारोह चल रहा था, यह बहुत था
ज्यादा अपने समय के सबसे अधिक खर्च सिर्फ कंप्यूटिंग कि वें फिबोनैकी संख्या.
>> लेकिन हम केवल एक मुद्दा था साथ सौदा करने के लिए.
अपाचे मॉडल में, जब दो लोग , 45 मिथ्या प्राप्त करने के लिए अनुरोध किया है कि हम
दो अलग धागे पड़ता था.
और फिर ऑपरेटिंग सिस्टम का काम उपयोगकर्ता स्तर से किया गया है, या होता
धागे का प्रबंधन करता है कि कोड, गया होता पर कि टुकड़ा दिया गया
सीपीयू, या आप अधिक CPU था, भले ही CPUs भर में समान रूप से वितरित
वे खत्म दोनों थे कि इतने मोटे तौर पर एक ही समय में.
>> तो बस हम की तरह कर सकते हैं कि कैसे आप को दिखाने के लिए - और यह एक कुल सही नहीं है
समाधान है, लेकिन एक तरह से हम कैसे कर सकते हैं कर एक वापस यहां आते हैं और करते हैं
एक छोटा सा बेहतर.
तो क्या मैं यहाँ एक कार्यक्रम बुलाया है मिथ्या सी. और यह मूल रूप से उपयोग करता है
कहा जाता नोड के मॉड्यूल का एक और एक बाल प्रक्रिया मॉड्यूल.
इसलिए मैं शामिल की है कि शीर्ष प्रकार पर शामिल मैं एक पाउंड करना होगा की तरह
बच्चे process.h या कुछ और.
अब मैं इस सी.पी. चर के लिए उपयोग किया जो अपने सभी कार्यक्षमता है.
>> तो अब मैं इस प्रतिक्रिया में क्या कर रहा हूँ हैंडलर मैं इस कार्यक्रम चल रहा है
डॉट मिथ्या 45 स्लेश.
तो क्या मैंने किया है - और मैं अभी जा रहा हूँ एक के लिए इस कार्यक्रम से बाहर कदम
थोड़ा -
मैं एक सी प्रोग्राम लिखा है यह है कि मूल रूप से की गणना
n वें फिबोनैकी संख्या.
यहाँ तो मैंने लिखा है बस एक कार्यक्रम है सी में है कि इस गणना करता है.
मैं यह संकलन कर सकते हैं, और मैं चला सकते हैं यह कमांड लाइन पर.
और यह गणना करने के लिए जा रहा है 45 वें फिबोनैकी संख्या.
>> तो यह सिर्फ लेता नोटिस लंबे समय के रूप में बहुत ज्यादा.
मैं शायद पानी का छींटा 03 के लिए इस्तेमाल किया जा सकता था यह या ऐसा कुछ अनुकूलन,
लेकिन मैं सिर्फ नियमित रूप से पसंद नहीं आया संकलक सेटिंग्स.
और यह इसे बाहर प्रिंट.
>> लेकिन अब, मैं एक तरह से क्या कर रहा हूँ?
ओह, माफ करना, गलत फ़ाइल.
तो मैं के साथ एक ही सामान करना के रूप में पहले शीर्ष लेख.
तब मैं इस cp.exec करना.
तो क्या यह करने के लिए जा रहा है यह है है इस कार्यक्रम को चलाने के लिए जा रहा है.
लेकिन यह काम करता है जिस तरह से है इसके लिए प्रतीक्षा करने के लिए नहीं जा रहा है
समाप्त करने के लिए कि कार्यक्रम.
यह सिर्फ मूल रूप से कहते हैं इस कार्यक्रम पर अमल.
तो बुनियादी तौर पर यह लिखें के शीघ्र तरह कमान.
>> और फिर, आप के साथ कर रहे हैं जब यह, इस समारोह में चलाते हैं.
तो अब हम एक तरह से इस मिल के पूरे बहाल बात
जैसे हम इंतजार नहीं कर रहे हैं.
के उस तरह मतलब?
हाँ?
>> दर्शक: [सुनाई]?
>> केविन SCHMID: तो यह होगा वास्तव में यह करने के लिए एक नई प्रक्रिया खुला.
तो यह कुछ मायनों में, वास्तव में है, , बुराई सुपर बुराई नहीं है, लेकिन यह है
महत्वपूर्ण इस तरह की है कि कहने के लिए एक ओर, वापस करने के लिए जा रहे हैं, अपाचे
हम धागे और प्रक्रियाओं जहां मॉडल प्रत्येक अनुरोध या के लिए
प्रत्येक अनुरोध के लिए प्रक्रियाओं.
तो यह अनुरूप की तरह है अपाचे क्या करता है.
कुछ मामलों में, यह सिर्फ एक नया प्रयोग करेंगे एक छोटे से अधिक प्रकाश है जो धागा,
एक प्रक्रिया की तुलना में वजन, लेकिन अपाचे सकता है एक नई प्रक्रिया forking अंत तक
हम यहाँ क्या कर की तरह है जो उलझाव डॉट स्लेश मिथ्या 45 कार्य करके.
>> और फिर उस मामले में, हम एक तरह से अपने ऊपर लेना प्रक्रियाओं का एक ही खर्च.
तो यह आप क्या कर सकते हैं सिर्फ एक ही बात है.
लेकिन अभी चल रहा है की इस तरह दिखाने के लिए.
और यह बात सिर्फ सच के उद्देश्य से है एक के रूप में कार्यक्रम के इन प्रकार पेश
अलग अलग दृष्टिकोण पर दिखाने के लिए रास्ता कैसे की तरह है कि सर्वर डिजाइन करने के लिए.
अगर मैं तो यह अब तो चल रहा है, और है इस बार फिर, मैं दो प्रक्रिया आईडी के लिए मिला है.
>> चलो बस के बारे में बात करते हैं बातें बाहर बात करने के लिए.
इसलिए वे संवर्द्धित कर रहे हैं नोटिस.
वह शांत है.
यह पहले 27,122 थी.
लेकिन नोटिस अब, वे वापस आए लगभग एक ही समय.
>> और अब, एक अच्छा सवाल पूछने के बारे में क्यों मामला है, जिसका काम है कि था
यह एक तरह से इन चीजों को बनाने के लिए अब था तरह से प्रत्येक के साथ निष्पक्ष खेलने
अन्य, इन दो उदाहरणों की मैं भागा कि डॉट स्लेश मिथ्या 45
या कि नोड भाग गया?
एक तरह से यह उचित है कि कौन बनाता है कि वे दोनों एक तरह से चलाने के लिए समय संतुलित मिलता है?
>> दर्शक: [सुनाई].
>> केविन SCHMID: हाँ.
तो बुनियादी तौर पर, मैं डॉट स्लेश मिथ्या करते हैं 45 या ऐसा कुछ है, अब यह है
एक तरह से करने के लिए ऑपरेटिंग सिस्टम के लिए ऊपर उन कार्यक्रमों के क्रम संभाल.
और अब यह उनके कार्यक्रम कर सकते हैं अलग CPUs या उस पर
उन्हें कार्यक्रम कर सकते हैं.
ऐसा लगता है कि एक समय काट सकते हैं सीपीयू है कि वे मिल यह हो जाता है या
एक सीपीयू पर चलने के लिए.
इसलिए कि उस के पीछे विचार है.
कि हर किसी को मतलब?
तो अब नोड वास्तव में एक खेल नहीं है इन कार्यों को विभाजित में हिस्सा.
ठीक है.
>> तो यह है कि लगभग यह उदाहरण के लिए है.
मैं सिर्फ एक बात और दिखाना चाहता था इस का एक बहुत अब तक किया गया है क्योंकि
पूरी तरह से सुपर व्यावहारिक नहीं कुछ मामलों में.
मैं इस के बाद घर आ रहा कल्पना कर सकते हैं बात करते हैं और कुछ और की तरह कह,
अच्छी तरह से मैं एक तरह से उस बात से बाहर हो गया है कि मैं के लिए एक फिबोनैकी सर्वर बना सकते हैं
मेरा अंतिम परियोजना.
यहाँ तो बस की तरह एक और उदाहरण है उम्मीद है कि हो जाएगा -
शायद नहीं, लेकिन हो सकता है - एक छोटे से अधिक एक तरह से अंतिम परियोजनाओं के लिए प्रासंगिक और
उस जैसी चीजों के लिए आगे की सोच.
>> तो इस chat.js. है
तो इस तरह के कुछ उदाहरण की तरह है आप करने के लिए इस्तेमाल कर सकते हैं कि सर्वर साइड कोड
एक छोटे चैट सर्वर की तरह स्थापित तुम पर देखा है सकते हैं
फेसबुक चैट या जो भी हो.
इसलिए मैं इस फेसबुक की तरह नहीं कह रहा हूँ चैट, लेकिन इस तरह की है
शायद शायद अच्छा नहीं है, लेकिन - एक अच्छा तरह अच्छा - एक चैट के लिए शुरुआती बिंदु
अपनी वेबसाइट के लिए सर्वर एक अंतिम परियोजना के लिए.
तो चलो यह क्या कर रहा है पर देखो.
>> इसलिए हम इस विशेष बात हो रही है शीर्ष पर, इस SIO var
Socket.IO की आवश्यकता होती है.
तो यह बात नहीं है कि एक और बात है वास्तव में बंडल के साथ आए
नोड लेकिन आप इसे स्थापित कर सकते हैं.
यह एक नोड मॉड्यूल है.
तो यह सिर्फ कुछ की तरह है नोड के लिए विस्तार.
>> SocketIO वास्तव में वास्तव में है शांत की तरह.
ऐसा लगता है कि असल में क्या एक अमूर्त है यह है कि यह आपको अनुमति देता है है
संचार की इस धारा है एक वेब के बीच
ब्राउज़र और एक वेब सर्वर.
तो अब तक सबसे अधिक भाग के लिए, हमें मिला है ये बहुत जल्दी एक दूसरे या दो
एक वेब के बीच दूसरा संचार ब्राउज़र और वेब सर्वर.
तो यह मूल रूप google.com, मिल जाना है सामान, तो इसे वापस भेजने के लिए, और
हम कर रहे हैं.
हम जब तक फिर से बात कभी नहीं रहे उपयोगकर्ता प्रकार कुछ और ही है.
>> लेकिन क्या Socket.IO और इसी प्रकार की बातों - और SocketIO वास्तव में एक है
के रूप में बनाया गया है कि चीजों की WebSocket जो एक तरह से उपलब्ध है
एचटीएमएल 5 के भाग के रूप में -
कि आप इस के लिए अनुमति देता है जारी रखने बातचीत.
और यह एक चैट सर्वर में बहुत उपयोगी है बात की तरह है क्योंकि यह
एक तरह से में एक सतत संवाद की तरह कुछ मायनों क्योंकि आप बातें कर रहे हैं
किसी के साथ, अब आप सिर्फ एक भेज सकते हैं फिर पाइप नीचे संदेश, और
सर्वर डाउन एक संदेश भेज सकते हैं आप कर रहे हैं अन्य व्यक्ति के लिए पाइप
साथ चैट.
और फिर आप यह कर सकते हैं उस तरह का आदान प्रदान.
>> तो यह है कि क्या की तरह है SocketIO के लिए अच्छा है.
SocketIO WebSockets का उपयोग करता है कि कारण एक बात है कि के रूप में
सिर्फ सादे पुराने WebSockets के अलावा, यह भी मूल रूप से करने के लिए कुछ गुर करता है
यह ब्राउज़र संगत बनाने.
इंटरनेट एक्सप्लोरर की तरह तो ब्राउज़रों दुर्भाग्य WebSockets का समर्थन नहीं करते
सही बॉक्स से बाहर.
तो यह अच्छा साफ के कुछ अन्य प्रकार का उपयोग करता है अनुमति देने के लिए एडोब फ्लैश के साथ बातें
तुम पार ब्राउज़र का समर्थन किया है.
तो यह है कि वास्तव में उपयोगी है.
>> और वास्तव में, मैं मैं एक तरह से कर रहा हूँ यहां समय पर चल रहा है, लेकिन CS50
चर्चा, क्या तुमने कभी कुछ देखा है जैसे, मैं नहीं जानता, रिक्त इतना और इतनी है
इस संदेश या कुछ और करने के लिए जवाब ऐसे ही, उस सुविधा?
यही SocketIO है.
तो किसी में टाइपिंग शुरू होता है जब एक उत्तर या बनाने के लिए बॉक्स पर चर्चा
कुछ, अपने ब्राउज़र क्या करता है SocketIO में कहा जाता है किसी तरह का उत्सर्जन करता है
किसी का कहना है कि घटना इस संदेश का जवाब देने के.
>> फिर सर्वर, ठीक है, कहते हैं मुझे क्या करना है?
खैर अब मैं उन अन्य लोगों को बताने के लिए है जो CS50 पर देख रहे हैं पर चर्चा
इस पद पर किसी को जवाब देते है कि.
इसलिए कि SocketIO क्या है की तरह है इस सतत तरह के, के लिए अच्छा
बातचीत की धारा.
ठीक है.
>> इसलिए मैं यहाँ क्या है - और हम बस कर रहे हैं कनेक्शन सरणी अनदेखी करने के लिए जा रहा
एक छोटा सा के लिए -
मैं क्या मैं एक और सुनते हो रहा है.
ताकि बस Socket.IO में जिस तरह से है चलो इस बंदरगाह पर सुनो कह रही.
और फिर मैं कनेक्शन पर यह करते हैं.
तो यह है कि सिर्फ मूल रूप से सॉकेट कब है हम एक प्राप्त होता है, कहने का तरीका
कनेक्शन, मैं आप चाहते हैं इस कोड को चलाने के लिए.
>> और बदले आरईसी होने की सूचना है कि और वहाँ में पारित छोड़कर मैं सॉकेट है.
और इस सॉकेट विचार मूल रूप से यह है आप को लिखने और पढ़ने के लिए कर सकते हैं कि बात
उस से उपयोगकर्ता है संभवतः संदेश.
और आप भेजना होगा कि संदेश कि सॉकेट के माध्यम से जा सकते हैं.
कि मतलब?
तो यह इस जारी रखने की बात है.
>> तो मैं क्या मैं Socket.emit कॉल है.
फेंकना बहुत लेता है ज्यादा दो तर्क.
पहला तर्क एक स्ट्रिंग है बस प्रकार का प्रतिनिधित्व करने वाले
आप उत्सर्जक रहे हैं बात.
तो इस मामले के लिए, मैं का उपयोग करें इस स्ट्रिंग नया संदेश.
और कहा कि सिर्फ मूल रूप से कह रहा है कि मैं क्या कर रहा हूँ इस बात के प्रकार,
भेजने, एक नया संदेश है.
तो आप विशिष्ट प्रकार के लिए सुन सकते हैं नया संदेश या जो कुछ भी तरह
डॉट पर उपयोग करके.
>> तो कनेक्शन और उपयोगकर्ता हैं, वहाँ भेजा आप, हम डॉट पर फोन जहां पर देखने के लिए
उन लोगों का प्रतिनिधित्व करने वाले अन्य तार कर रहे हैं उपयोगकर्ता संदेशों के प्रकार.
तो यह है कि आप इस फेंकना हो सकता है मूल रूप से है इन संदेश प्रकारों में से एक है, और
तब के जवाब में कुछ करना इन संदेश प्रकारों में से एक
>> इसलिए मैं इस नए संदेश उत्सर्जन रहा हूँ.
हम connections.push अनदेखी करने के लिए जा रहे हैं एक पल के लिए.
लेकिन तब मैं Socket.on उपयोगकर्ता भेजा, कहते हैं.
तो अब यह एक तरह से पसंद है जब उपयोगकर्ता मुझे एक संदेश भेजता है, मैं चाहता हूँ
आप इस कोड को चलाने के लिए.
और नोटिस कि कि गुमनाम समारोह इस चर में ले जा रहा है
मूल रूप से जा रहा है, जो डेटा बुलाया उपयोगकर्ता का संदेश है.
>> के बारे में बात की तो अब चलो तरह कनेक्शन सरणी.
तो यह एक चैट क्लाइंट के लिए डिज़ाइन किया गया है मूल रूप से हर किसी में एक तरह से है, जहां
एक ही चैट रूम.
तो बुनियादी तौर पर, क्या हम रखने की जरूरत चारों ओर कुछ सरणी है कि मूल रूप से
में बातें कर सभी लोगों का प्रतिनिधित्व करता है कुछ तरीके, जो समझ में आता है.
है ना?
हम उन लोगों को जो जानने की जरूरत है क्योंकि इसलिए हम उन्हें संदेश भेज सकते हैं
अन्य लोगों कि हमारे पास भेजें.
>> तो क्या इस कोड करता है जब उपयोगकर्ता है एक संदेश भेजता है - उस प्रकार की है
घटना -
हम इस कोड को चलाने के लिए जा रहे हैं.
और हम क्या हम इस के माध्यम से चलाने के लिए है हम कनेक्शन कहा जाता है कि सरणी.
और हर कनेक्शन के लिए बहुत ज्यादा हमारा है कि एक को छोड़कर, कि
इस कोड को क्या कहते हैं, हम एक नई भेज कि संलग्न संदेश के साथ संदेश
जानकारी.
>> आप यहाँ नोटिस यदि हां, तो क्या मैंने किया था जब उपयोगकर्ता वास्तव में एक नया बनाता है
कनेक्शन मैं साथ जोड़ दिया है JavaScript.push विधि, यह है
मूल रूप से बस की तरह जोड़ कह में एक मूल्य के रूप में है कि सॉकेट
हमारे कनेक्शन सरणी.
इस कोड चलाता है जब तो अब, यह होगा उन विशेष बातें करने के लिए भेज
कनेक्शन.
तो यह एक अच्छा प्रारंभिक बिंदु हो सकता है एक चैट सर्वर बनाने के लिए
या कुछ इसी तरह की.
>> और शांत बात की तरह है कि तुम पर कैसा लिए यहाँ देख सकते हैं और उस कोड
फेंकना और इस तरह से सामान एक ही है जावास्क्रिप्ट कोड की तरह है कि आप होता
बातचीत करने के लिए ब्राउज़र में लिखना सर्वर के साथ.
SocketIO तरह की है तो इसलिए साफ है कि रास्ते में उपयोगी.
>> ओह, और सिर्फ एक और बात जल्दी असली.
एक CS50 अंतिम परियोजना पिछले साल हुई थी कि मूल रूप से एक चैट कार्यान्वित
Node.js. में सर्वर
मैं यह Harvardchats.org लगता है लेकिन मैं नहीं कर रहा हूँ -
ठीक है.
मैं यूआरएल है यकीन नहीं है, लेकिन मैं बाद में कि बाहर भेज सकते हैं.
लेकिन यह एक तरह से अच्छा है क्या आप Node.js. के साथ क्या कर सकते हैं
>> इसलिए मैं सामान्य रूप में, तुम लोगों को है, आशा है कि एक Node.js उपयोगी है क्या की अच्छी समझ
के लिए और कैसे आप शायद लागू हो सकते हैं अपने अंतिम परियोजना के लिए.
मैं कुछ और बाहर भेज दिया जाएगा इस के साथ संसाधनों.
और आने के लिए धन्यवाद.
धन्यवाद.
>> [वाहवाही]