हन्ना BLUMBERG: हाय सब लोग। हम आरंभ करने के लिए जा रहे हैं मिनट के एक जोड़े को जल्दी हम एक पूरी बहुत कुछ के बाद से सामग्री के माध्यम से प्राप्त करने के लिए। मैं हन्ना हूँ। मैं एक टीएफ हूँ। मारिया शामिल होने के लिए जा रहा है हमें सिर्फ एक दो मिनट में। वह ठीक से पहले खंड सिखाता है। मैं अनुभाग सही सिखाना के बाद, इसलिए हम जा रहे हैं डेढ़ घंटे के लिए इसे रखने के लिए। तुम यहाँ देखेंगे तो, जैसा कि हम काफी है कुछ विषयों हम, के माध्यम से प्राप्त करने की आवश्यकता तो हम तेजी से एक छोटा सा जा रहा हूँ। लेकिन किसी भी बिंदु पर यदि हम कुछ कहना बहुत जल्दी या आप समझ में नहीं आता, सवालों के साथ बाधित करने के लिए स्वतंत्र महसूस। हम इस एक बनाने के लिए सक्षम होना चाहता हूँ आप सभी के लिए उपयोगी के रूप में सत्र की समीक्षा यथासंभव। भयानक। तो चलो साथ में सही कूद जाने कुछ विषयों है कि हम वास्तव में बहुत, बहुत संक्षेप लिए कवर प्रश्नोत्तरी 0 समीक्षा सत्र में प्रश्नोत्तरी 0। तो लिंक सूचियों के साथ शुरू। तो बस आप कुछ है सुनिश्चित करें लिंक सूचियों के बारे में बुनियादी ज्ञान और आराम कर रहे हैं बुनियादी कार्यों में से कुछ। तो बस, की समीक्षा से जुड़े सूचियों सरणियों की तुलना में बेहतर कर रहे हैं वे गतिशील विकसित कर सकते हैं। इसलिए हम चाहते हैं कि बहुत बड़ा फायदा है। हम उन्हें इस्तेमाल देखा है हैश तालिकाओं में जब हम वास्तव में कितने पता नहीं है बातें हम चाहते करने के लिए जा रहे हैं हमारे डेटा संरचना में डालने के लिए। दुर्भाग्य से, हम के टुकड़े सभी स्मृति से अधिक लिंक सूची, इसलिए हम जरूरी नहीं होगा लगातार समय का उपयोग करने के लिए सक्षम लिंक सूची में किसी भी तत्व को। एक खोजने के क्रम में विशेष तत्व है, हम सभी पुनरावृति करने के लिए है शुरू से ही तरीका है। तो मन में रखने के सबसे कि बुनियादी कार्यों 1 की ओमेगा हैं। इसलिए डालने सिर्फ 1 लेने के लिए जा रहा है। मिटायें लेने के N हम के बाद से करने जा रहा है सूची से मिल जाना है। और खोज एन, सबसे पर, ले सकता है। हम ऐसा कुछ कर नहीं सकते एक लिंक सूची पर द्विआधारी खोज के बाद से हम नहीं कर सकते बस बेतरतीब ढंग से बीच करने के लिए कूद। कूल। भयानक। ढेर का एक छोटा सा। यह, फिर से, प्रश्नोत्तरी 0 पर आया, तो आप ऐसा इसके साथ सुपर सहज होना चाहिए। लेकिन ढेर के लिए, हम आप से पूछना ट्रे के एक ढेर को याद करने के लिए। और उस में पहली बार होने जा रहा है, बाहर पिछले। इसलिए हम बातें हो चुकी है ढेर में, और उसके बाद हम कुछ लेने के लिए कोशिश कर रहे हैं हम off-- बंद popping जो फोन stack-- हम ऊपर से आते हैं। और हम कुछ करना चाहते हैं ढेर में, हम इसे आगे बढ़ाने कहते हैं। तो यह हमेशा आगे बढ़ रही है किया जा रहा है ट्रे के एक ढेर की तरह नीचे से। भयानक। हमने देखा ढेर को क्रियान्वित किया है दोनों लिंक सूचियों और सरणियों के साथ। आप को लागू कर रहे हैं सरणियों के साथ, आप चाहते हैं का ट्रैक रखने के लिए सुनिश्चित करने के लिए आकार और क्षमता दोनों। तो आकार चालू होने जा रहा है अपने ढेर में बातें की संख्या, क्षमता जबकि कुल संख्या है बातों के बारे में आप अपने ढेर में स्टोर कर सकते हैं। कूल। बहुत इसी तरह, हम कतारों है। इस मामले में, बजाय के बारे में सोच की ट्रे के एक ढेर, एक लाइन का लगता है। यह पहली बार में पहली बार हो रहा से बाहर जा रहा है। आप के लिए ऊपर अस्तर रहे हैं तो दुकान पर कुछ है, हमें उम्मीद है कि व्यक्ति में पहली बार है कि लाइन पहले मदद की जा रही है। इसके बजाय धक्का कह के और हम ढेर के लिए क्या पसंद पॉप, हम सिर्फ एन्क्यू और विपंक्ति कहते हैं। और फिर, अगर आप कर रहे एक सरणी के साथ इस को लागू करने, हम ट्रैक रखने की जरूरत का न केवल आकार क्षमता, लेकिन यह भी सिर, और जो हमारी लाइन के सामने होने जा रहा है। कूल। इस बात का किसी पर कोई सवाल? भयानक। सही साथ चल रहा है। ठीक है, हैश टेबल। यह करने के लिए शुरू होता है, जहां यहाँ है वास्तव में दिलचस्प मिलता है। तो एक हैश तालिका एक कार्यान्वयन है एक साहचर्य सरणी की। मूल रूप से तो क्या हुआ हम सब इस इनपुट है, और हम एक हैश को दे जो कहते हैं, समारोह, ठीक है, इस जहां में है हैश तालिका यह अंतर्गत आता है। सरलतम हैश समारोह तो हम सिर्फ यह कह रहा है देखा है, ठीक है, हम डाल करना चाहते हैं लगता है हमारे हैश तालिका में तार। और वास्तव में एक सरल विचार ठीक है, कहने के लिए हो सकता है, चलो बस द्वारा सॉर्ट जाने शब्द के पहले अक्षर। आप यहाँ देख सकते हैं तो, हम, केले लेने के लिए हम एक हैश समारोह के माध्यम से रखा और यह कि, हे कहते हैं, सूचकांक 1 पर जाना चाहिए। इसलिए हम अनिवार्य रूप से एक हैश के बारे में सोच सकते हैं अलग बाल्टी के एक समूह के रूप में मेज। और उन बाल्टियों में से प्रत्येक के जा रहा है एक लिंक सूची के सिर पकड़ लिए। और कहा कि लिंक सूची में जहां हम कर सकते है वास्तव में डेटा के विभिन्न टुकड़े डाल दिया। तो डाइविंग थोड़ा और अधिक एक हैश समारोह में, यहाँ है उदाहरण मैं बस हम सिर्फ इतना कहना है, जहां वर्णित है, ठीक है, पहले अक्षर को लेकर हम कर रहे हैं और इस शब्द का बाल्टी में यह ऐसा करने जा। तो शायद, 26 बाल्टी वहाँ हो जाएगा, वर्णमाला के प्रत्येक अक्षर के लिए एक। क्यों यह एक महान हैश समारोह में नहीं है? क्या इस गैर आदर्श बनाता है? हाँ। दर्शकों: आप जा रहे हैं टक्करों है। हन्ना BLUMBERG: हाँ, बिल्कुल। आप टक्करों के लिए जा रहे हैं। तो यह है कि एक बात है। हम कैसे कर सकते हैं और हम के बारे में बात करेंगे बस एक पल में टकराव तय है। इस के साथ एक और समस्या विशेष हैश समारोह हमारे विभिन्न यह है कि बाल्टी होने जा रहे हैं का सुंदर काफी अलग आकार। हम एक पूरी बहुत कुछ पता है कि वहाँ एक्स से एक साथ शुरू है कि अधिक शब्द, इसलिए हम बहुत है जा रहे हैं हमारे हैश तालिका में असंतुलित बाल्टी। कूल। तो हाँ, के लिए वापस मिल जाने टकराव के बिंदु। एक टकराव है कि अगर वहाँ हम क्या करते हैं? हम कुछ अलग विकल्प हैं। तो एक है, इसलिए हम कोशिश कर रहे हैं लगता है हमारे हैश तालिका में बेरी रख दिया। और हम ओह, हम चाहते हैं, देखते हैं सूचकांक 1 में डाल दिया है, लेकिन केले वहां पहले से ही रहता है। हम क्या करने जा रहे हैं? हम दो मुख्य विकल्प हैं। नंबर एक ठीक है, हम कह सकते है, सूचकांक 1 में कोई जगह नहीं है, लेकिन हम बस के माध्यम से देख रख देना हम एक और खुली जगह पा सकते हैं जब तक। इसलिए हम, ठीक है, कह देंगे की जगह 3 में डाल दिया। यही कारण है कि एक ही विकल्प है। यही कारण है कि जांच कर रही रैखिक कहा जाता है। और एक दूसरा विकल्प है, ठीक है, ठीक है, कह रही है चलो बस इन बाल्टियों में से प्रत्येक के कर देना लिंक सूचियों के प्रमुखों को किया जाना है। और यह और भी है, तो ठीक है एक बाल्टी में एक बात से। हम सिर्फ करने के लिए जा रहे हैं सामने पर संलग्न। यहाँ तो आप ठीक हैं, देख सकते हैं, हम बेरी जब डाला, हम बस की तरह, केला ले लिया एक छोटा सा पर इसे धक्का दिया और वहाँ में एक बेर फेंक दिया। और वह भी पूरी तरह से ठीक है। यह अलग श्रृंखलन कहा जाता है। आप के रूप में की तरह की तरह इस के बारे में सोच सकते हैं लिंक सूचियों को सिर की एक सरणी। हैश पर कोई प्रश्न टेबल, हैश कार्यों? भयानक। पेड़ों और कोशिश करता है। तो एक पेड़ के किसी भी प्रकार है डेटा संरचना की जिसमें किसी प्रकार है पदानुक्रम या किसी प्रकार की की अपनी अलग-अलग वस्तुओं के लिए रैंकिंग। और इस सुपर बन जाएगा स्पष्ट है कि हम एक उदाहरण देखते हैं। और हम साथ-साथ, कोशिश करता देखा हैश तालिका के साथ, pset5-- में जो, फिर से, पूरी तरह से निष्पक्ष खेल यह एक और डेटा के रूप में quiz-- के लिए संरचनाओं कि हम कर सकते हैं अलग अलग चीजों की दुकान। शब्दकोश के मामले में, हम शब्दों का एक गुच्छा संग्रहीत। तो चलो कुछ पेड़ पर एक नजर डालते हैं। तो यह एक पेड़ का एक उदाहरण है। यह संरचना का एक प्रकार है सौपानिक संरचना है कि, आप देख सकते हैं कि जहां शीर्ष पर यह 1 नोड , 2 और 3 से ऊपर रैंक के कुछ प्रकार है जो कर रहे हैं, 4, 5 और 6 और 7 से ऊपर, जो 8 और 9 से ऊपर हैं। वह सब है तो हम एक से मतलब पेड़, कर सकते हैं आप तो बस प्रकार अपने सिर में इस तस्वीर। अब, हम की एक जोड़ी है अधिक विशिष्ट पेड़। तो एक उदाहरण के एक द्विआधारी पेड़ है। और एक द्विआधारी पेड़ है, फिर से, बस होने जा रहा किसी प्रकार के साथ एक डेटा संरचना पदानुक्रम, लेकिन नोड्स के प्रत्येक सबसे दो बच्चों पर पड़ सकता है। शब्द द्विआधारी से आता है। तो यह एक द्विआधारी पेड़ का एक उदाहरण है। तो यह है कि पेड़ के एक छोटे वर्ग है। अब चलो भी अधिक विशिष्ट हो और बाइनरी trees-- द्विआधारी खोज के बारे में बात पेड़, बल्कि। तो यहाँ विचार करता ही नहीं है हर नोड, सबसे दो बच्चों पर है लेकिन करने के लिए बच्चों के सभी बाएं छोटे होने जा रहे हैं और करने के लिए बच्चों के सभी सही बड़ा होने जा रहे हैं। तो बस में नोटिस हमारी द्विआधारी पेड़ नहीं है, संख्याओं के बीच कोई संबंध नहीं है। लेकिन हमारे द्विआधारी खोज में पेड़, हम देखते हैं, ठीक है, यहाँ 44 है। और 44 के बाईं ओर हर नंबर है सही करने के लिए छोटे और सब कुछ बड़ा है। और कहा कि हर पर रखती है पेड़ के स्तर पर। तो यहाँ, इस से भी छोटा होता है 22 और यह 22 से भी बड़ा है। और कहा कि द्विआधारी खोज वृक्ष है। हम यह क्यों कहा जाता है लगता है एक द्विआधारी खोज वृक्ष? क्या एल्गोरिथ्म यह की याद दिलाती है? दर्शकों: बाइनरी खोज। हन्ना BLUMBERG: बाइनरी खोज। आप एक के लिए देख रहे हैं क्योंकि इस पेड़ में विशेष नंबर, हर बिंदु पर, तुम बस दस्तक कर सकते हैं महान है जो पेड़, के बंद आधा। और इतना है कि हमें कुछ देने के लिए जा रहा है कि द्विआधारी खोज की तरह एक बहुत लग रहा है। कोई सवाल? ठीक है, शांत। ठीक है, कोशिश करता है। हर कोई पसंदीदा। तो यह उदाहरण है कि हम कक्षा में एक गुच्छा देखा है। और फिर, यह सिर्फ एक और है हम डाटा स्टोर कर सकते हैं। शब्दकोश के मामले में, फिर से, इस बस तार होने जा रहा है। तो चलो वास्तव में क्या यह देखते हैं एक से थोड़ा कम स्तर पर की तरह लग रहा है। तो चलो एक नजर डालते हैं एक Trie में एक नोड पर। और हम ठीक है, वहाँ जा रहा है, देखते हैं एक बूलियन और एक नोड हो सकता है, एक नोड के लिए एक सूचक। और हम देखते हैं कि बूलियन is_word कहा जाता है। तो अनिवार्य रूप से, कि अनुरूप करने के लिए जा रहा इन छोटे त्रिकोण जो आप यहाँ मिल गया है, कहते हैं, आप एक पूरा शब्द पाया है। हम जानते हैं कि "ट्यूरिंग" पर यहां एक पूरा शब्द है, जबकि सिर्फ टी यू-आर में एक शब्द भी नहीं है हम उस छोटे से डेल्टा नहीं दिख रहा है। और उस छोटे डेल्टा, फिर से, इस is_word से मेल खाती है, इस बूलियन is_word। और फिर हम बच्चों की एक सरणी है। आप प्रत्येक स्तर पर तो एक विशेष नोड है, और एक करने के लिए कि नोड अंक पूरी वर्णमाला की सरणी। तो क्या आप फिर से देख सकते हैं, इस picture-- में मैं कर रहा हूँ वापस कूद रखने के लिए जा रहा है और forth-- कि शीर्ष पर है कि सरणी अलग से एक गुच्छा है इसे दूर आ रहा नोड्स। आप चाहते हैं तो यह 26 या 27 है एक अतिरिक्त चरित्र शामिल करने के लिए। और यह हमें एक देता है हमारे डेटा स्टोर करने के लिए रास्ता पर देखा जा सकता है कि एक तरह से कि आप सुपर फास्ट देख सकते हैं। एक Trie के लिए देखने का समय क्या है? दर्शकों: [अश्राव्य]। हन्ना BLUMBERG: हाँ। सिद्धांत रूप में, यह लगातार समय है। यह केवल के आकार के होने जा रहा है आप को देखना चाहता हूँ कि शब्द। हम एक zillion जोड़ने यहां तक ​​कि अगर हमारे Trie करने के लिए अधिक शब्द, यह हमें लेने के लिए नहीं जा रहा है किसी भी लंबे समय निर्धारित करने के लिए एक भी शब्द Trie में है। तो यह है कि वास्तव में अच्छा है। दर्शकों: बस क्या आप उस सरणी से प्रारंभ? आप एक बिंदु या दो याद किया। आप बस के बारे में बात कर सकते हैं एक पल के लिए है? हन्ना BLUMBERG: यकीन है, बिल्कुल। अच्छा प्रश्न। सवाल है कि हम था, है कि एक सरणी है के रूप में नोड स्टार के लिए जा ठीक है, सिर्फ नोड करने का विरोध किया? कूल। यहाँ तो हम क्या कह रहे हैं हमारे सरणी बस है अन्य सरणियों के लिए संकेत किया जा रहा है। तो यह एक तरह से यह essentially-- है इस तरह से एक लिंक सूची की तरह लगता है जहां इन बच्चों में से प्रत्येक बस अगले नोड के लिए बात। और वैसे भी है कि हम वास्तव में ठीक है, अरे, निर्धारित करते हैं, हम एक पूरे के माध्यम से दोहराया गया है, शब्द, शब्दकोश में इस शब्द है, हम सिर्फ इस is_word की जाँच करें। बड़ा सवाल है। हाँ। दर्शकों: ठीक है। तो Trie के लिए क्रम क्या था? हन्ना BLUMBERG: यकीन है। के लिए एक Trie के लिए क्रम तो देखने लगातार समय होने जा रहा है। तो यह सिर्फ होने जा रहा है शब्द में पत्र की संख्या। उस पर निर्भर नहीं है शब्दकोश का आकार या डेटा संरचना के आकार। यहाँ तो एक से थोड़ा सरल उदाहरण है। इस मामले में, आप देख सकते हैं कि शब्द बल्ला शब्दकोश में है और आप ज़ूम है, लेकिन आप चिड़ियाघर की तरह कुछ भी नहीं है। हम कैसे चिड़ियाघर करना होगा? हम चिड़ियाघर में जोड़ने के लिए कैसे करते हैं हमारी शब्दकोश, हमारे Trie करने के लिए? हाँ। दर्शकों: is_word बनाओ सच [सुनाई] के लिए। हन्ना BLUMBERG: अच्छा। इसलिए हम जेड-ओ-ओ कह सकता हूँ, और फिर हम चाहते हैं के रूप में अच्छी तरह से है कि बॉक्स को बंद करना चाहते हैं। अच्छा है। बहुत संक्षेप में तुलना करते हैं हैश टेबल बनाम कोशिश करता है। कोशिश करता है वास्तव में बहुत अच्छा कर रहे हैं क्योंकि, जैसा कि हमने कहा, वे लगातार समय देखने प्रदान करते हैं। लेकिन बहुत बड़ा नुकसान वे humongous रहे है। तुम समझ प्राप्त कर सकते हैं, यहां तक ​​कि यह देख कर, इसे लेने के लिए जा रहा है कि स्मृति की एक बड़ी राशि है। इसलिए वे ज्यादा होने के लिए जा रहे हैं हैश तालिकाओं की तुलना में बड़ा है, लेकिन वे देने के लिए जा रहे हैं हमें बहुत तेजी से देखने गुना। तो यह है कि की तरह है आपके tradeoff, आप के बारे में परवाह है, क्या यह गति या स्मृति है या नहीं। इस बात का किसी पर कोई प्रश्न, सी डेटा संरचनाओं के सभी। खूबसूरत। ठीक है। हम एक छोटे से करने के लिए पर स्थानांतरित करने के लिए जा रहे हैं मारिया के साथ वेब विकास का एक सा है। मारिया ZLATKOVA: लवली। ठीक है। हन्ना BLUMBERG: आप अपने लैपटॉप का उपयोग कर सकते हैं। मारिया ZLATKOVA: अच्छा। अच्छा ठीक है। हम वेब के लिए अब कदम के रूप में विकास, हम एक छोटे से बात की बदलते अनुमतियों के बारे में फाइल और निर्देशिका की इतना है कि वे सुलभ हो सकता है अन्य उपयोगकर्ताओं के लिए, दुनिया के लिए, और इतना है कि हम कैसे देख सकते हैं मूल रूप से हम उन्हें व्यक्त कर सकते हैं हम वेबसाइटों की तरह चीजों का विकास जब कि हम ज्यादातर कर दिया गया है। इसलिए हम chmod कमांड देखा, जो मूल रूप से, परिवर्तन विधा है। यही कारण है कि एक लिनक्स कमांड है और यह पहुँच अनुमतियाँ बदल जाता है फाइल सिस्टम वस्तुओं की। और एक फाइल सिस्टम वस्तु है सिर्फ एक निर्देशिका, एक फ़ाइल, कुछ भी है कि आप कर सकते हैं की अनुमतियाँ बदल जाते हैं। तो फाइल अनुमति, देखने के लिए हम आदेश रास, सूची, -l टाइप करें। और हम उस टाइप करते हैं, हम आम तौर पर कुछ अनुमतियाँ देखने कि इस तरह की तरह देखो एक निर्देशिका के नाम के सामने। तो घ निर्देशिका को दर्शाता है। और फिर हम तीन हैं तीनों मूल रूप से उस या तो की अनुमतियों के लिए देखें एक उपयोगकर्ता, एक समूह, या दुनिया। अनुमतियों के प्रकार है कि हम कर सकते हैं लोगों के इन तीन समूहों के लिए है के लिए डब्ल्यू पढ़ने के लिए या तो आर, कर रहे हैं लिखते हैं, और अमल के लिए एक्स। और हम के लिए उन लोगों के हो सकते हैं समूह और दुनिया के रूप में अच्छी तरह से। मुश्किल बात यह है कि कभी कभी होता है हम chmod कमांड टाइप करते हैं, हम कुछ नंबर टाइप करेंगे कि तीन बिट्स शामिल थे। इसलिए हम की तरह कर सकता है 777 और कहा कि मूल रूप से कहा कि मूल्य में भेजा इन तीनों में से प्रत्येक की आर 4 का उल्लेख होगा, क्योंकि डब्ल्यू होगा 2 का उल्लेख है, और एक्स 1 का उल्लेख होगा, इसलिए, नंबरों में से प्रत्येक के लिए कहा जब एक संचयी नंबर करने के लिए नीचे आ जाएगा 0 और 7 के बीच एक संचयी मूल्य के लिए। इसलिए हम भी 0 हो सकता था सभी में कोई अनुमतियों के लिए। और कहा कि मूल रूप से हमें देना होगा या तो उपयोगकर्ता के लिए अनुमतियाँ, समूह, या दुनिया। अब तक इस पर कोई सवाल? दर्शकों: आप पढ़ कहा कि 4 था? मारिया ZLATKOVA: हाँ। दर्शकों: [अश्राव्य]। हन्ना BLUMBERG: हाँ। दर्शकों: और फिर उन सभी को जोड़कर दूसरों को अपने नंबर का संकेत होता है। मारिया ZLATKOVA: हाँ। हाँ। इन महान सवाल कर रहे हैं। लवली। अगला, हम एचटीएमएल और एक में कूद गए वेब विकास के बारे में थोड़ा और अधिक। तो एचटीएमएल बस का अर्थ हाइपर टेक्स्ट मार्कअप लैंग्वेज। और कहा कि मार्कअप है एक मानक है कि भाषा यह वेब पृष्ठों को बनाने के लिए उपयोग किया जाता है। यह एक मार्कअप भाषा कहा जाता है यह वास्तव में संकलित नहीं है क्योंकि। यह कैसे कुछ कोड होना चाहिए नहीं कहना है निष्पादित या ऐसा कुछ भी हो। यह सिर्फ रूपरेखा बनाती है और कैसे एक वेब का वर्णन पेज की स्थापना की जानी चाहिए इसके तत्वों में से प्रत्येक के साथ और वे उपयोगकर्ता के लिए कैसे देखना चाहिए। एचटीएमएल टैग में से कुछ है कि हम खत्म हो गया था अनुसरण कर रहे हैं। हमारे HTML दस्तावेजों के सभी DOCTYPE HTML के साथ शुरू कर दिया। तो फिर हम हमेशा एचटीएमएल टैग है। हम एक सिर और एक शरीर है। और यह HTML है कि यह महत्वपूर्ण है नेस्टेड संरचना के इस तरह के यह बहुत स्पष्ट है क्योंकि। और फिर यह बहुत ही स्पष्ट हो जाता है जब हम वास्तव में करीब टैग खोलने के लिए और करने की जरूरत है। और हम हमेशा बंद करने की जरूरत हम खोल दिया है कि टैग। और यहाँ हम प्रकार के कुछ है हम चाहते हैं कि आगे चीजों की। तो हमारे पास है, उदाहरण के लिए, CS50 के शीर्षक। और फिर हम वास्तव में एक शैली पत्रक लिंक कर सकते हैं कि हम हमारी वेबसाइट शैली कैसे परिभाषित करता है। यही कारण है कि सीएसएस है। हम में इसे खत्म हो जाना करने के लिए जा रहे हैं के रूप में अच्छी तरह से स्लाइड के अगले दो। शरीर के भीतर, हम सेट कुछ वर्गों और आईडी। और एक चेतावनी के रूप में, फिर से, आईडी के अद्वितीय और कक्षाएं हैं कई मदों को सौंपा जा सकता है। और कहा कि सिर्फ मतलब है कि हम वर्गों और आईडी का उपयोग कर सकते हैं इसलिए अन्य structures-- भीतर, के लिए उदाहरण के लिए, सीएसएस फ़ाइलों या शैली के भीतर विशिष्ट तत्वों का उल्लेख करने के sheets-- और मूल रूप से हम शैली करना चाहते हैं का कहना है कि या कुछ तत्व डिजाइन कुछ खास तरह से। और हम ने उन्हें देखें उनके आईडी और वर्गों। और हम भी उल्लेख कर सकते हैं साथ ही साथ टैग द्वारा अलग अलग चीजें हैं, लेकिन आईडी और कक्षाएं सिर्फ हमें कुछ दे बहुमुखी प्रतिभा और विशेष रूप से क्या हम उल्लेख करने के लिए करना चाहते हैं। तो सिर्फ एक उदाहरण है। हम भीतर फिर से कर सकते हैं, एक सीएसएस फ़ाइल जहां हम कुछ परिभाषित करना चाहते हैं style-- रंग, फ़ॉन्ट तो, और सामान हम कर सकते हैं that-- की तरह एक शरीर के लिए शैली को परिभाषित। तो यह है कि यह परिभाषित करेगा पूरे शरीर टैग के लिए। लेकिन तब हम भी परिभाषित कर सकते हैं एक #title के लिए एक शैली। और फिर, हैशटैग को दर्शाता है हमारी आईडी और डॉट हमारे वर्ग को दर्शाता है। और फिर .info के लिए, हम यह भी कुछ गुण सेट कर सकते हैं। हम वापस जाने के लिए जब और फिर, हम था हमारे कक्षा की जानकारी है और हमारे आईडी शीर्षक बुलाया। और हम हम उल्लेख है कि देख सकते हैं उन्हें #title और .info द्वारा। दर्शकों: आप कहेंगे हैशटैग [? मुझे गोद ले लो? ?] मारिया ZLATKOVA: क्षमा करें? दर्शकों: आप कहेंगे हैशटैग [? मुझे गोद ले लो? ?] मारिया ZLATKOVA: हैशटैग आईडी है, तो इसका मतलब है #title जो कुछ तत्वों को संदर्भित करता है शीर्षक नामक इस आईडी है। और फिर डॉट एक वर्ग को दर्शाता है। तो .info इस तत्व को संदर्भित करता है यह वर्ग जानकारी है क्योंकि। हाँ। दर्शकों: क्यों तुम करते हो एचटीएमएल में उन्हें अलग? क्यों आप कुछ बातें कर रहे हैं कहते हैं आईडी और कुछ बातें वर्ग के हैं? मारिया ZLATKOVA: यह you-- करने के लिए अभी तक है हन्ना BLUMBERG सवाल दोहराएँ। मारिया ZLATKOVA: ओह, माफ करना। हम क्यों कुछ तत्वों भेद है आईडी और वर्गों के रूप में अन्य तत्वों के रूप में? यह इसलिए है क्योंकि यह सिर्फ है वास्तव में अक्सर एक डिजाइन पसंद। यह आप का एक बहुत कुछ देता है होने में बहुमुखी प्रतिभा मैं इस विशेष आइटम चाहता हूँ कहने के लिए सक्षम वे चाहते हैं क्योंकि इस आईडी के लिए है चीजों की एक बहुत कुछ करने की यह, और मैं साथ ही एक शैली को परिभाषित करना चाहते हैं, खास शैली उस आइटम के लिए या रंग जो भी हो। और वैसे भी ऐसा करने के लिए बस इसे एक आईडी दे रही है। और फिर अगर मैं चाहता हूँ के लिए है विभिन्न मदों की एक जोड़ी होने के बजाय, कि जा रहा है और their-- की स्थापना बजाय द्वारा इसे करने का टैग टैग होगा क्योंकि पूरे टैग के लिए सेल सेट हर समय के लिए है कि टैग प्रयोग किया जाता है, आप कई मदों के लिए एक वर्ग सेट कर सकते हैं। और फिर बस उस वर्ग तक पहुंचने के लिए और कहते हैं मैं इस वर्ग तरीका है कि शैली के लिए चाहते हैं। और फिर, वर्ग कर सकते हैं कई विभिन्न मदों होना और आईडी अनूठा हो गया है। महान प्रश्न। कोई ओर प्रश्न? ठीक है, बहुत बढ़िया। फिर, यह कैसे इन चयनकर्ताओं है हैशटैग के साथ, सीएसएस में संदर्भित कर रहे हैं, डॉट के साथ, या के लिए कुछ भी बिना कुछ टैग की शैली बताए, शरीर की तरह। और यहाँ हम सामान्य है यह कैसे किया जाता का सिंटेक्स। कुछ सबसे अच्छा दोहराने के लिए एचटीएमएल और सीएसएस के लिए प्रथाओं, हम करने के लिए, फिर से, करीब सभी की जरूरत है हम है कि खुले हैं एचटीएमएल टैग। और हम आप की सिफारिश की क्या अपने अंतिम परियोजनाओं के लिए करते हैं, के रूप में अच्छी तरह से CS50 वित्त के लिए, के रूप में बनाने के लिए है अपने HTML के सभी पुष्टि की है कि सुनिश्चित करें। और कहा कि W3 सत्यापनकर्ता के साथ किया है। और हमने किया तो क्या और हम क्या कर क्या सलाह देते हैं इसलिए, शैली अलग है मार्कअप HTML से सीएसएस। कैसे से संबंधित है तो कुछ भी अपने पेज नेत्रहीन देखने के लिए जा रहा है और कैसे इसे संशोधित किया जा रहा है एक सीएसएस दस्तावेज़ में जाना चाहिए। और फिर अपने मार्कअप कैसे बातें कह एक दूसरे के संबंध में हैं, एचटीएमएल है और कहा कि अंदर जाना चाहिए अपने HTML दस्तावेजों की। कोई सवाल? Mhm। दर्शकों: क्या वास्तव में जा रहा है पेज सत्यापन के साथ पर हम मान्य कर रहे हैं जब [अश्राव्य] बनाए गए एचटीएमएल? मारिया ZLATKOVA: तो आपको लगता है कि what--। तो क्या वास्तव में जा रहा है पेज सत्यापन के साथ पर और यही कारण है कि हम ऐसा करने की जरूरत है? असल में, हम ऐसा करने की जरूरत क्योंकि समय की एक बहुत कुछ है, अपने ब्राउज़र, आप एक टैग को बंद नहीं करते हैं तो या कुछ इस तरह का, आपके ब्राउज़र अभी भी करने जा रहा है एक पृष्ठ प्रस्तुत करना है और अभी भी काम हो सकता है, लेकिन यह सबसे अच्छा अभ्यास है कि यह सुनिश्चित करना है आप, फिर से, अपने सभी टैग बंद कर दिया है अपने सभी तत्व हैं कि वे किया जाना चाहिए कि जिस तरह से, और इसके द्वारा मूल रूप से कि पूर्व निर्धारित कर रहे हैं कि सम्मेलनों। यह, फिर से, सिर्फ एक बात यह है कि आप चाहिए क्या कर रही हो सीखने हो, होने के लिए विरोध के रूप में लगता है कि जैसे sloppier कोड और सामान। हाँ। मुझे माफ करें। मैं आप अपने हाथ को ऊपर उठाने लगा। दर्शकों: नहीं, मैं सिर्फ [सुनाई] था। मारिया ZLATKOVA: ठीक है। दर्शकों: धन्यवाद। मारिया ZLATKOVA: बेशक, धन्यवाद। तो फिर, कैसे में चल रहा है जानकारी स्थानांतरित कर रहा है और संचार मॉडल जानकारी के हस्तांतरण के लिए। टीसीपी / आईपी। टीसीपी सिर्फ ट्रांसमिशन इसका मतलब कंट्रोल प्रोटोकॉल और आईपी इंटरनेट प्रोटोकॉल को दर्शाता है। और वह बस को संदर्भित करता है जिस तरह से डेटा दिया जाता है। हम कुछ डेटा है, तो उस इसलिए you-- के लिए दिया करने की जरूरत है आप एक निश्चित सर्वर के लिए एक अनुरोध करना। उदाहरण के लिए, जब हम cs50.net का उपयोग करने की कोशिश करते हैं, हम एक अनुरोध करने के लिए बना CS50 सर्वर और हम हम प्राप्त करना चाहते हैं कि वहाँ इस प्रकार की जानकारी। और फिर इस प्रोटोकॉल के आधार पर कर रहे हैं इस जानकारी के वितरण के तरीके के लिए, सर्वर जानकारी देता है हमारे पास वापस, ग्राहक। और फिर हम देखने में सक्षम हो पृष्ठ के लिए जानकारी और फिर इसका इस्तेमाल। तो फिर हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल सिर्फ एक और प्रोटोकॉल या सेट है सम्मेलनों की है कि कैसे परिभाषित करता है वेब ब्राउज़र और वेब सर्वर बातचीत करनी चाहिए। और यह सब डाल एक साथ, HTTP, फिर से, सिर्फ इस हाइपरटेक्स्ट परिभाषित कैसे परिभाषित करता है हम यह काम कर रहा है कि एचटीएमएल से, यह आप के लिए दिया जाना चाहिए कि कैसे और कैसे आप के लिए दिया जाता है कि उस डेटा आप के लिए हो जाता है। तुम लोगों को याद है और वह है, यही कारण है एक वर्ग से, हम अनुरोधों का एक बहुत कुछ था और हम वाक्य रचना का एक बहुत कुछ था हम कर रहे हैं कि इन अनुरोधों के लिए सही अब खत्म हो जाना जा रहा है। तो फिर, हम जब भेजना एक सर्वर के लिए एक अनुरोध है, हम चीजों के एक जोड़े को परिभाषित किया है। इसलिए हम प्रकार खोजने की जरूरत है अनुरोध की हम स्थापित कर रहे हैं कि। और फिर, हम है, उदाहरण के लिए, प्राप्त विधि का एक प्रकार है हम अपने अनुरोध में है। और फिर HTTP / 1.1 है बस हम वर्तमान में उपयोग कर रहे हैं कि प्रोटोकॉल। समय से अधिकांश, कि हो रहा है हम प्रयोग कर रहे है कि प्रोटोकॉल के लिए। आप में एक सवाल है तो अगर अपने प्रश्नोत्तरी पर ऐसे ही। यही कारण है कि सम्मेलनों है कि हम अब तक किया है। Backslash किस तरह करने के लिए संदर्भित करता है बातों का हम अनुरोध कर रहे हैं। फिर, हमारे मेजबान इस में, उदाहरण के लिए, है मामला है, हम google.com पर जाने की कोशिश कर रहे हैं। तो यह एक मेजबान के लिए मूल्य है। इस अनुरोध का एक प्रकार है कि भेजा जा सकता है। प्रतिक्रिया का एक प्रकार है और फिर सकता है कि भेजा, फिर से, इस प्रोटोकॉल के आधार पर किया, फिर से है, HTTP / 1.1। तो यह है कि HTTP संस्करण फिर से है। 200 ठीक अभी स्थिति कोड है। और कहा कि ठीक है बस एक मुहावरा है उस स्थिति कोड के आधार पर। और फिर सामग्री प्रकार टाइप करने के लिए संदर्भित करता है वह यह है कि आप में लौट रहा है कि आप प्राप्त है कि वेब पेज के लिए और अपने ब्राउज़र कि बाद में प्रस्तुत कर सकते हैं। और कहा कि पाठ / html है। दर्शकों: 1.1 क्या मतलब है? मारिया ZLATKOVA: सिर्फ है कि संस्करण of-- ओह, 1.1 क्या मतलब है? यही कारण है कि सिर्फ संस्करण, एचटीटीपी है हम प्रयोग कर रहे हैं कि एक प्रोटोकॉल का संस्करण। बड़ा सवाल है। अन्य सवाल? दर्शकों: आप को योग सका सामग्री प्रकार असली जल्दी? मारिया ZLATKOVA: है कि इतनी क्या सर्वर है। क्या information-- के प्रकार सामग्री प्रकार सवालों का था। तो यह है कि के प्रकार था तुम वापस पाने के लिए है कि जानकारी सर्वर, प्रकार की से डेटा ब्राउज़र तो कर सकते हैं कि आप उपयोग कर रहे हैं कि प्रस्तुत करना। दर्शकों: क्या यह है कि प्रोटोकॉल क्या करने के लिए कह रहा है? मारिया ZLATKOVA: क्षमा करें? दर्शकों: प्रोटोकॉल क्या कहना है? मारिया ZLATKOVA: protocol-- दर्शकों: कौन सा सामग्री प्रकार है या what-- मारिया ZLATKOVA: प्रोटोकॉल आधारित है on-- तुम्हें बता प्रोटोकॉल क्या है? यही कारण है कि अभी जिस तरह से इस जानकारी के कि आप के लिए दिया गया था आधारित प्रोटोकॉल की तरह क्या पर यह जानकारी मिली की गई थी तुम्हें वापस करने के लिए दिया। की कि मतलब तरह करता है? हन्ना BLUMBERG: आप प्रोटोकॉल के बारे में सोच सकते हैं एक-- के रूप में मैं प्रोफेसर लगता है मालन यह वर्णित के रूप में एक तरह से एक-- तरह कक्षा में यह पसंद है मानव handshaking के बराबर है। जैसे, अरे, मैं एक अनुरोध कर रहा हूँ, और मैं संस्करण 1.1 के HTTP संभाल करने के लिए कैसे पता है। और उसके बाद सर्वर का कहना है, ठीक है, ओह, I-- और दोनों मौजूद हैं। मैं भी HTTP / 1.1 के साथ सौदा करने के लिए कैसे पता है। और मैं देने के लिए जा रहा हूँ आप कुछ सामग्री वापस। इस मामले में, यह जा रहा है प्रकार पाठ / HTML का हो। तो यह एक तरह का सिर्फ एक रास्ता है उनमें से communicating-- के लिए मारिया ZLATKOVA: यह बस है आप कर रहे हैं कि इस बात की पुष्टि दोनों एक ही निम्न प्रोटोकॉल और कहा कि दोनों ग्राहक और server-- इसलिए आपके ब्राउज़र और server-- एक तरह से आप क्या कर रहे हैं पता है के बारे में बात कर रही है और डेटा में पारित करने के लिए सम्मेलन। दर्शकों: तो सामग्री प्रकार part-- सामग्री प्रकार पाठ / html-- है कि एक ही संदेश का एक अलग हिस्सा है? या यह 200 से हम कहते हैं का हिस्सा है? 200 उन्हें लगता है कि या है- बता करता है मारिया ZLATKOVA: 200 यह सब ठीक चला गया कहते हैं। और फिर सामग्री प्रकार एक की तरह है एक ही संदेश के अलग-अलग हिस्से, और बात कह रही है कि मैं लौटे पाठ / HTML के इस प्रकार है। यह सिर्फ अधिक जानकारी दे रही है। जोड़ने के लिए कुछ भी है? ठीक है। इस पर कोई अन्य प्रश्न? भयानक। तो कुछ अन्य HTTP स्थितियों कि हम 200 से ठीक करने के लिए इसके अलावा में मिल सकता है हम शायद देखा है कि लोगों को संभवतः एक बहुत 403 और 404 हैं। तो 404, आप करने के लिए कोशिश कर रहे थे मौजूद नहीं है कि पहुँच कुछ। उदाहरण के लिए, तो अपने CS50 वित्त psets, आप quote.html प्रतिपादन किया गया था और आप उस फ़ाइल के लिए नहीं था, लेकिन इसके बजाय आप कि, quote.php था 404 में परिणाम होगा नहीं मिला फ़ाइल मौजूद नहीं हो सकता है। एक 403 के लिए कि, मना किया अनुमतियों को दर्शाता है। कुछ फाइल से नहीं पठनीय है तो अगर दुनिया, आप एक 403 लौटे हो सकता है। कुछ दूसरों कि तुम हो सकता है 301, स्थायी रूप से स्थानांतरित get--; 302, मिला; 304, संशोधित; 400 गलत अनुरोध; और उसके बाद आंतरिक सर्वर त्रुटि 500 और 503, सेवा अनुपलब्ध। हाँ। दर्शकों: क्या हम करने की उम्मीद उन सभी स्थितियों को याद? मारिया ZLATKOVA: मैं होता उन्हें अपने धोखा शीट पर। [हँसी] दर्शकों: हम उम्मीद कर रहे हैं हर एक से चलाता है क्या जानते हो? मारिया ZLATKOVA: वे कर रहे हैं? हन्ना BLUMBERG: हम है कि लोगों के लिए तो सवाल into-- चलाने was-- मारिया ZLATKOVA: वे उम्मीद कर रहे हैं इन स्थिति की क्या हर एक को पता है कोड से चालू किया जा सकता है? हम का उपयोग किया है कि लोगों के लिए तो और में भाग गया, मैं हाँ कहेंगे। तो हम निश्चित रूप से 200 देखा है ठीक है और psets में यह पढ़ाते हैं। हम 404 403 देखा है। अन्य लोगों के लिए? हन्ना BLUMBERG: मैं होता 500 निष्पक्ष खेल लगती है कहना। मारिया ZLATKOVA: 500, हाँ। हन्ना BLUMBERG: हाँ। बस एक सामान्य समझ नहीं है उन कारणों का क्या। और यह भी कि अभी तक इन नाम, आप कर सकते हैं एक तरह से जैसे एक शिक्षित अनुमान के रूप में बनाने क्या वास्तव में उन्हें कारण होता है। उदाहरण के लिए, शायद, स्थायी रूप से ले जाने के लिए फ़ाइल स्थायी रूप से ले जाया गया था। दर्शकों: लेकिन पिछले एक पर परीक्षा, एक तो वहाँ था कैसे आपको लगता है कि जवाब देने के लिए हमें उम्मीद करते हैं? हन्ना BLUMBERG: यह है कि शून्य अंक लायक था। चायदानी पर 418 पर सवाल तकनीकी रूप से एक HTTP स्थिति है लेकिन यह शून्य अंक लायक था। जाहिर है, आप नहीं कर रहे हैं उन्हें पता है की उम्मीद है। दर्शकों: यह एक असली एक है? हन्ना BLUMBERG: यह एक असली है एक है, लेकिन यह कुछ भी मतलब नहीं है। यह सिर्फ एक मजाक है। इंटरनेट लोगों हास्यास्पद हैं। मारिया ZLATKOVA: ग्रेट सवाल, दोस्तों। कोई ओर प्रश्न? दर्शकों: आंतरिक सर्वर त्रुटि क्या है? मारिया ZLATKOVA: आंतरिक सर्वर त्रुटि बस तुम गया है कि इसका मतलब है संवाद करने में असमर्थ किसी कारण के लिए सर्वर के साथ। इसलिए यह जरूरी नहीं है ऐसा करने के लिए है कि कुछ लगता है कि जैसे ग्राहक या कुछ और के साथ। मैं किसी भी विशिष्ट उदाहरण का पता नहीं हम समझाने के लिए पर चला गया है कि, लेकिन हाँ। हन्ना BLUMBERG: यकीन है। तो उदाहरण के लिए, जैसे चलो आप मैशप पर काम कर रहे थे कहना और एक गूगल सर्वर कुछ के लिए नीचे चला गया कारण, एक शक्ति आउटेज, हम कहते हैं। यही कारण है कि एक आंतरिक सर्वर होगा त्रुटि या किसी प्रकार आप की तरह of-- एक प्रतिक्रिया वापस नहीं मिलेगा। मारिया ZLATKOVA: हाँ। आप कर रहे हैं जब यह बस है संवाद करने में असमर्थ किसी कारण के लिए है क्योंकि सर्वर के साथ यह नीचे जा रहा है या किसी अन्य कारण से। तो पीएचपी में कूद। पीएचपी, एचटीएमएल के विपरीत, एक है प्रोग्रामिंग भाषा। और हम यह है, क्योंकि यह प्रयोग शुरू कर दिया वेब विकास के लिए बहुत उपयोगी है। हम पहले CS50 वित्त में इसका इस्तेमाल किया। और यह मूल रूप से हमें लाने में मदद करता है एक साथ इस मार्कअप, डिजाइन, और हम वास्तव में जानकारी का उपयोग कैसे एक वेब पेज पर चीजों को प्रदर्शित करने के लिए। पीएचपी तो खुद को पीएचपी इसका मतलब हाइपरटेक्स्ट पूर्वप्रक्रमक, तो यह अपने आप में एक पुनरावर्ती backnorym है। और पीएचपी के लिए टैग खोलने हम छोड़ दिया प्रश्न चिह्न के साथ और दाएँ तीर और पीएचपी। इसलिए हम पहले से ही इसके बारे में एक गुच्छा देखा है। अब, हम बस पर जाने के लिए जा रहे हैं इसके बारे में बुनियादी बातों में से कुछ हैं। PHP के साथ, चर तो नामों डॉलर के हस्ताक्षर के साथ शुरू करते हैं। हम, फिर से, निर्दिष्ट नहीं करते एक चर अब लिखें। हम सी के साथ किया था, उसी तरह हम ऐसा करने की जरूरत नहीं है। हम अलग अलग की एक गुच्छा कर सकते हैं चर के साथ सामान। हम उन्हें एक साथ रख सकते हैं उन्हें concatenating द्वारा डॉट संकेतन, साथ जो हम फिर से सी में नहीं कर सका। फिर, हम थोड़ा और अधिक बहुमुखी प्रतिभा है चर के मामले में PHP के साथ। फिर, हम एक मुख्य समारोह में नहीं है। और पीएचपी व्याख्या की है संकलित करने के लिए विरोध के रूप में, तो बस हम सी फ़ाइलों के लिए कैसे बना था, हम पीएचपी के लिए ऐसा करने के लिए नहीं है। बल्कि, जिस तरह की भाषा है कि स्वयं के द्वारा चलाया जाता है, यह व्याख्या की है। और फिर शिथिल टाइप किया बस हम मतलब है कि एक चर निर्दिष्ट करने के लिए नहीं है प्रकार और चर प्रकार क्रम में समझ रहे हैं। दर्शकों: लेकिन क्या तुमने किया डॉट कड़ी से क्या मतलब? मारिया ZLATKOVA: यकीन है। हम together-- बातें करना चाहते हैं जब इसलिए यदि हम कुछ चर था कि 3 का मूल्य था और हम एक और था स्ट्रिंग का मूल्य था कि चर, हम एक साथ चर डाल सकता है उन दोनों के बीच में एक बिंदु डालने से और उन्हें concatenating। या फिर हम एक बना सकता है चर बुलाया नाम और द्वारा एक साथ रखा दो तार concatenating। तो अगर हम डबल में एक स्ट्रिंग था उद्धरण और हम इसके बाद एक डॉट डाल और फिर हम, कि एक और स्ट्रिंग था कुल मिलाकर एक स्ट्रिंग पैदा होगा। दर्शकों: ठीक है। मारिया लातविया: स्पष्ट था कि? दर्शकों: हाँ। मारिया ZLATKOVA: ठीक है। हाँ। दर्शकों: जब आप कहते हैं व्याख्या की बजाय संकलित, आप के बारे में बात कर रहे हैं नहीं है जब के रूप में विशिष्ट होने की जरूरत यह सी बनाम PHP के लिए आता है? मारिया ZLATKOVA: जब हम कहते हैं संकलित करने के लिए विरोध के रूप में व्याख्या की है, हम क्या मतलब है? तो यह है कि हम जरूरत नहीं है कि इसका मतलब है निष्पादन योग्य फ़ाइलों पीएचपी चलाने के लिए। यह यह हो जाता है कि यह रन का मतलब है। समझ आया? थोड़ा और अधिक। हन्ना BLUMBERG: तो तुम एक दुभाषिया के बारे में सोच सकते हैं जिम्मेदार है कि एक अन्य कार्यक्रम के रूप में पीएचपी के माध्यम से लाइन से लाइन जाने के लिए विरोध के रूप में है और वास्तव में, इसे क्रियान्वित द्विआधारी करने के लिए नीचे यह सब संकलन करने के लिए। यह वास्तव में कुछ भी मतलब नहीं है हम होने की जरूरत है कि कैसे विशेष के बारे में। हम अभी भी सटीक होने की जरूरत है, और नहीं करना अपने अर्धविराम भूल जाते हैं, और यह सुनिश्चित कर लें यदि आप अपने डॉलर के हस्ताक्षर है और इस तरह की बातें। अच्छा प्रश्न। मारिया ZLATKOVA: हाँ। तो लाइन लाइन द्वारा, के रूप में सी फाइलों के साथ करने का विरोध किया, हम पूरे अंतिम बनाने के लिए है हम वास्तव में इसे चलाने से पहले। यही कारण है कि मुख्य अंतर है। लेकिन फिर, हम नहीं कर सकते वास्तव में कम विशिष्ट हो। तो पीएचपी में सरणियों का प्रतिनिधित्व वास्तव में एक आदेश दिया नक्शा। चाबियाँ करने के लिए सरणियों सहयोगी मूल्यों तो। दो तरीकों से एक घोषित करने के लिए सरणी, इस वाक्य रचना पर आधारित है, हम और अधिक स्पष्ट किया जा सकता है कहने में हम एक सरणी है और हम करने के लिए है कि नक्शे इस key1 है value2 कि नक्शे इस मान 1, Key2। या हम सिर्फ एक सरणी बना सकते हैं मूल्यों है कि अपने आप में शामिल और उसके बाद चाबियाँ हैं एक तरह से समझ में आया। इस पर कोई सवाल? दर्शकों: क्या होगा चाबियाँ दूसरा उदाहरण में हो सकता है? 0, 1, 2, 3? मारिया ZLATKOVA: उदाहरण के लिए, यह सिर्फ है इस में कुंजी जरूरी नहीं है एक फर्क करें। वे सिर्फ कैसे आप कर सकते हैं परिभाषित इसके अंदर मूल्यों का उपयोग करें। तो अगर हम एक foreach था PHP में पाश है कि होगा हमें सभी मूल्यों के माध्यम से जाने के लिए अनुमति देते हैं, हम सभी मूल्यों के माध्यम से जाना जा सकता है, भले ही हम था या परिभाषित नहीं किया था साइट के भीतर एक विशेष कुंजी पिछले वाक्य रचना। तो भी इस तरह के साथ सरणी की, हम अभी भी कर सकता है एक foreach पाश कि प्रत्येक के माध्यम से चला जाता है सरणी में कुंजी में मूल्यों की। एक foreach की वाक्य रचना तो पाश, हम एक सरणी के साथ शुरू करते हैं। इस $ आगमन चर हमारी वास्तविक सरणी है हम पिछली स्लाइड में परिभाषित किया है कि सचमुच चला जाता है कि मूल्य के रूप में मूल्यों में से प्रत्येक के माध्यम से, की परवाह किए बिना कि क्या हम एक महत्वपूर्ण था या नहीं। और फिर हम साथ कुछ कर सकते हैं foreach पाश के अंदर मूल्य। तो फिर, अगर हम एक सरणी था इस यहाँ created-- की तरह इसलिए हम फू और के मूल्य की कुंजी है बार, बाज की चाबी और qux-- का मूल्य हम एक foreach पाश हो सकता है कि कुंजी मान के रूप में सरणी के माध्यम से चला जाता है और फिर कुछ करना कुंजी और / या मूल्य के साथ। लेकिन हम जरूरी हमेशा नहीं करते एक foreach कि छोरों के लिए है मूल्य के लिए महत्वपूर्ण नक्शे के रूप में सरणी के माध्यम से चला जाता है। हम के माध्यम से जा सकते हैं मूल्य के रूप में foreach पाश सरणी। हन्ना BLUMBERG: और मुझे लगता है कि आपके सवाल, है-- क्या था अंतर्निहित सूचकांक है? दर्शकों: थोड़े। मारिया ZLATKOVA: ओह। हन्ना BLUMBERG: हाँ, हाँ। तो बुनियादी तौर पर, आप निर्दिष्ट नहीं करते हैं तो एक चाबी है, यह 01 होने जा रहा है। मारिया ZLATKOVA: हाँ। बस सी के साथ की तरह, यह शून्य है आप एक कुंजी निर्दिष्ट नहीं करते हैं, तो अनुक्रमित। दर्शकों: क्षमा करें। आप बोल कोशिश कर सकते हो एक छोटा सा जोर से? मैं का एक छोटा सा आ रहा है मुसीबत सब कुछ सुनवाई। मारिया ZLATKOVA: मैं बहुत शर्मिंदा हूँ। हाँ बिलकुल। तो क्या आप मुझे करना चाहते हैं फिर इस पर जाने के लिए? या है- है दर्शकों: पिछले slide-- पर अगर तो आप बस एक पल के लिए वापस जा सकते हैं। मारिया ZLATKOVA: बेशक, माफ करना। दर्शकों: तो दूसरी यहां सरणी नहीं करता कुंजी के लिए एक मूल्य है लगता है, की तरह [? करणीय। ?] मारिया ZLATKOVA: ठीक है, ठीक। दर्शकों: तो कैसे काम करता है जब आप कहते हैं कि यह सब या कोई नहीं है। मेरे लिए, कि तरह लग रहा है ए [? foo?] पहले से ही। मारिया ZLATKOVA: हाँ, हाँ। तो फिर, यह एक है इस अर्थ में आदेश दिया नक्शे वहाँ से समझ रहे हैं कि, उदाहरण के लिए, अनुक्रमित यहाँ 0, 1, 2, 3 के रूप में समझा जा सकता है। फिर, उन है कि होने वाला है अनुक्रमित हमारे बराबर है के मूल्यों पर मैप चाबियाँ कर रही है। तो अगर हमारे प्रमुख 0-- माफी चाहता था। हन्ना BLUMBERG: नहीं, वहाँ यहाँ चाक है। यह वास्तव में बहुत अच्छा है। मारिया ZLATKOVA: यह बढ़िया है। ठीक है। तो फिर, $ आगमन 0 होगा मान 1 के लिए कुंजी। 0 मान 1 के लिए महत्वपूर्ण होगा। दर्शकों: मैं माफी चाहता हूँ। यह अदृश्य है। हन्ना BLUMBERG: कोई बात नहीं ठीक है,। चाक एक बुरा विचार था। मैंने इसे वापस ले लिया है। आप कुंजियों के बारे में सोच सकते हैं मान 1 0 नक्शे के रूप में। मारिया ZLATKOVA: हाँ। तो यह शून्य है, यह 1, 2, 3 है। ये अपनी चाबी हो सकता है। आप हाँ as-- उनमें से सोच सकते हैं। तो बजाय होने की स्पष्ट चाबियाँ, वे कर रहे हैं एक तरह से किया जा रहा है के रूप में समझा अनुक्रमित 0 से शुरू। चाक मदद नहीं की। हाँ। दर्शकों: foreach पाश के लिए, हम मूल्य के रूप में देखना चाहते थे, यह 0 से सिर्फ स्वतः सूचकांक होगा? मारिया ZLATKOVA: हाँ। यह मूल्यों से प्रत्येक के माध्यम से जाना होगा। दर्शकों: [अश्राव्य] के रूप में 0 या कि केवल 0 क्या करना होगा? मारिया ZLATKOVA: आप के लिए होता है तो डॉलर के हस्ताक्षर और के रूप में कहने के लिए कुछ चर नाम, मूल्य। दर्शकों: [अश्राव्य]। मारिया ZLATKOVA: क्षमा करें? दर्शकों: माफ करना, मैं कर रहा हूँ बस याद करने की कोशिश कर रहा। आपको लगता है कि आप यह कर सकते हैं करते हैं, तो कैसे स्वचालित रूप से अनुक्रमण केवल 0 की है? मारिया ZLATKOVA: तो आपको लगता है कि कैसे करना होगा आप विशिष्ट कुंजी नाम नहीं था तो क्या होगा? दर्शकों: हाँ। मारिया ZLATKOVA: तुम सिर्फ define-- होगा बस कुछ नाम के रूप में अपने आप को कहते। तो अपने psets में, तुम लोगों को हो सकता है $ पंक्तियों के रूप में foreach $ पंक्ति याद है, हम ourself कह इस $ पंक्ति बनाया हम $ पंक्तियों के रूप में पंक्ति के माध्यम से जाना चाहते हैं। हम नहीं था, भले ही पंक्तियों परिभाषित यह स्पष्ट $, हम बस जाओ और कर सकता है , यह हमारे लिए महत्वपूर्ण हो सकता है कहने और सिर्फ मूल्यों में से प्रत्येक के माध्यम से जाना। दर्शकों: तो मूल्य एक नया चर रहा है हम [सुनाई] स्टोर करने के लिए बना रहे हैं? मारिया ZLATKOVA: तो यह नहीं है स्वाभाविक एक नया चर। यह उल्लेख है कि एक चर है उनमें से प्रत्येक के लिए सरणी के अंदर। हन्ना BLUMBERG: यह एक नया चर नाम। मारिया ZLATKOVA: हाँ, यह एक नया चर नाम है, लेकिन यह हाँ inherently-- नहीं है। यह सिर्फ एक नया चर है आप ऐसा कर सकते हैं। तो बस हम कैसे किया करते हैं $ $ पंक्तियाँ, पंक्तियों के रूप में पंक्ति एक नया चर नाम था कि हम हमारे foreach पाश में बना सकते हैं। ऐसा लगता है कि इससे पहले कि पहिले से होना जरूरी नहीं है। दर्शकों: आप के माध्यम से जाना जा सका वहाँ उदाहरण का उपयोग करते हुए प्रत्येक के लिए तर्क,? मारिया ZLATKOVA: Mhm। मुझे माफ करें। यहाँ उदाहरण है। ज़रूर। के लिए तो हर इसलिए array-- कि इस सरणी के लिए जाने का मतलब कि value-- कुंजी के रूप में हो रहा है इस सरणी के माध्यम से जाने के लिए और सबसे पहले, जाना और फू मिल कुंजी फू और मूल्य बार। और फिर दूसरा पर पाश के लिए चलना, इसके माध्यम से जाने के लिए और ले जा रहा है कुंजी बाज और मूल्य qux। और फिर आप के साथ कुछ कर सकते हैं उनमें से या तो या उन दोनों को। दर्शकों: तो पीछे विचार मूल्य के लिए एक प्रमुख मुद्दा रहा है, आप पहुँचने क्या अंत? मारिया ZLATKOVA: विचार है क्या की एक प्रमुख ओर इशारा करते हुए मूल्य के लिए कर रहे हैं? यह सिर्फ एक और सम्मेलन, दूसरे की सरणी के माध्यम से जाने का रास्ता और सक्षम किया जा रहा है या तो उपयोग करने के लिए कुंजी या मूल्य या दोनों और उन्हें इस्तेमाल करते हैं। दर्शकों: के लिए भूमिका क्या है foreach में चलता है कि आदेश? हम जोड़ने के लिए गए थे तो सरणी के लिए तत्वों बाद में, उन पहले लोगों को होगा foreach सरणी में कहा जाता है, या इसे बाद में हो सकता है? मारिया ZLATKOVA: तो क्या है foreach कि आदेश पाश में एक सरणी के माध्यम से चला जाता है? यह पहली बार के माध्यम से चला जाता है पिछले तत्व को तत्व, पिछले जोड़ा तत्व करने के लिए। आप बाद में तत्वों को जोड़ने, तो वे करेंगे पहला तत्व होता accessed-- किया पहले के रूप में पहुँचा जा सरणी के तत्वों, और फिर आप में से प्रत्येक के माध्यम से जाना था, एक ordered-- की तरह के रूप तत्वों एक आदेश दिया है, लेकिन जिस तरह से है कि नहीं वे सरणी में डाल दिया गया है। दर्शकों: तो नए तत्व पर बाद में जोड़ रहे हैं? तो वे हो जाएगा added-- रहे [में पिछले वाले? चलना। ?] मारिया ZLATKOVA: नई तत्वों can-- मूल रूप से, नए तत्व जोड़ रहे हैं, वे सरणी के अंत करने के लिए जोड़ रहे हैं? दर्शकों: हाँ। मारिया ZLATKOVA: मैं इतना विश्वास है। हाँ। और फिर अपने foreach पाश के साथ आप नए तत्व जोड़ दिया है के बाद और आप उन के माध्यम से जाना है, नए तत्व होगा अगर यह है, नए तत्व accessed-- होना पिछले जोड़ा, यह पिछले पहुँचा दिया जाएगा। दर्शकों: आप सिर्फ एक उदाहरण दे सकते हैं कुछ की है कि होगा [सुनाई] मूल्य के साथ कुछ के साथ [अश्राव्य] या मूल्य की तरह, आपको लगता है कि कैसे को फॉर्मेट था जैसे? मारिया ZLATKOVA: यकीन है। मैं का एक उदाहरण क्या दे सकते हैं हम मूल्य के साथ क्या होगा? तो तुम लोगों के साथ परिचित हो सकता है क्या हम एक सरणी के माध्यम से चला गया है है कि और मूल रूप से मुद्रित तत्वों में से प्रत्येक, उदाहरण के लिए, एक के हिस्से के रूप में आदेश सूची या कि कुछ और। अर्थ है कि या हम चाहते क्या करता है-- दर्शकों: हम इन मूल्यों को मुद्रित कर सकते हैं? मारिया ZLATKOVA: हाँ, हम प्रिंट सकता और फिर मूल रूप से मूल्य $ पर क्योंकि उस विशिष्ट मूल्य, हम होगा इसके अंदर का मूल्य मुद्रण। तो अगर हम अपने पहली यात्रा पर थे और इसके बारे में हम, $ मूल्य मुद्रित हम बार मुद्रण किया जाएगा। दर्शकों: के लिए वहाँ भी कर रहे हैं पीएचपी में छोरों या सिर्फ foreach छोरों? मारिया ZLATKOVA: वहाँ है यह भी पीएचपी में छोरों के लिए। और उनके तर्क ज्यादातर है आप के लिए इस्तेमाल किया गया है के रूप में ही। दर्शकों: अपने मूल्य रिक्त है तो। मारिया ZLATKOVA: यह एक ही तरह है। हाँ। दर्शकों: मैं सिर्फ पूछने के लिए जा रहा हूँ। तो अगर आप एक घोषित सरणी, आप की जरूरत नहीं यह करने के लिए क्या हो रहा है आकार बताने के लिए जिसका मतलब है, हो सकता है कि तुम सिर्फ कर सकते हैं जोड़ने और तत्वों [अश्राव्य] दूर ले। मारिया ZLATKOVA: हाँ। हाँ। बिल्कुल सही। हम एक सरणी की घोषणा करते हैं, हम आकार क्या है कहने की ज़रूरत नहीं है, तो हम सिर्फ तत्व जोड़ सकते हैं बाद में के रूप में अच्छी तरह से इसे पर। अधिक प्रश्न? तो एक साथ PHP और एचटीएमएल लाने, क्या हम अच्छी तरह से seen-- है, उदाहरण के लिए, इस उदाहरण में, हम है एक इनपुट क्षेत्र है कि एक HTML फार्म। और इनपुट क्षेत्र सिर्फ नाम है और फिर इसे एक सबमिट बटन है। जब आप प्रेस और सबमिट करें बटन, हमारे hello.php फाइल में, फार्म के लिए विधि है, क्योंकि मिलता है, हम नाम पर जो कुछ भी उपयोग कर सकते हैं इस से वैश्विक चर मिलता है कि यह $ _GET है के लिए वाक्य रचना है-। और फिर हम जो कुछ भी उपयोग कर सकते हैं नाम के लिए है कि फार्म के अंदर उपयोगकर्ता इनपुट उस क्षेत्र के नाम निर्दिष्ट द्वारा। किसी भी अन्य प्रश्न या किसी इस विशिष्ट उदाहरण पर सवाल? दर्शकों: पीएचपी कहां है? मारिया ZLATKOVA: यहाँ। इसलिए इस पीएचपी के लिए हमारे खोलने टैग है। दर्शकों: ओह, ठीक है। मारिया ZLATKOVA: हाँ। हन्ना BLUMBERG: = आशुलिपि है इस के लिए PHP और सिर्फ गूंज है। दर्शकों: ओह। मारिया ZLATKOVA: हाँ, माफ करना। मुझे लगता है कि स्पष्ट कर दिया है चाहिए। हन्ना BLUMBERG: प्रिंट। मारिया ZLATKOVA: यह सिर्फ समारोह कि हमें कुछ मुद्रित करने के लिए अनुमति देता है। बड़ा सवाल है। तो हाँ going--। दर्शकों: वहाँ काफी होने जा रहा है PHP और एचटीएमएल के हाथ कोडिंग के एक बिट प्रश्नोत्तरी 1 पर? मारिया ZLATKOVA: एक ही हो सकता है व्याख्या का उचित मात्रा में PHP और एचटीएमएल की, जरूरी नहीं कोडिंग की एक बड़ी राशि की तरह, आप एक लिखने के लिए हो सकता है, हालांकि foreach पाश, हालांकि, एक पाश के लिए। छोरों के किसी भी है कि हम निष्पक्ष खेल यहाँ कवर है। और कहा कि ज्यादातर यह बात है। हन्ना BLUMBERG: मैं तैयार किया जाएगा। उसी तरह है कि हम आप के लिए कहा प्रश्नोत्तरी 0 सी कार्यों का एक गुच्छा लिखने, मैं करने के लिए तैयार हो जाएगा पीएचपी और जावास्क्रिप्ट में एक ही। मारिया ZLATKOVA: हाँ। हन्ना BLUMBERG: मैं कहना चाहूँगा हम नहीं कर रहे हैं जैसे एक little-- जा रहा है आप एक विशाल HTML लिखने बनाने के लिए कि एक छोटा सा है, सिर्फ इसलिए कि पेज कठिन है, लेकिन आप कुछ हिस्सों हो सकता है। यही कारण है कि पूरी तरह से निष्पक्ष खेल है। छोटे एचटीएमएल पेज की तरह, पूरी तरह से निष्पक्ष। दर्शकों: ठीक है। कैसे के बारे में जावास्क्रिप्ट में के रूप में अच्छी तरह से? हन्ना BLUMBERG: हाँ। जावास्क्रिप्ट मेले खेल। मारिया ZLATKOVA: हाँ। यही कारण है कि पूरी तरह से निष्पक्ष खेल है। हन्ना BLUMBERG: हम मिलेगा जैसे 10 मिनट में है कि करने के लिए। मारिया ZLATKOVA: एसक्यूएल, फिर से, स्ट्रक्चर्ड क्वेरी लैंग्वेज। यह मूल रूप से हमें डाटा का प्रबंधन करने की अनुमति देता है एक संबंधपरक डेटाबेस प्रबंधन में प्रणाली। यही कारण है कि सिर्फ मूल रूप से इसका मतलब है हम कहीं है कि हम चाहते हैं हो सकता है कि कुछ डेटा स्टोर करने के लिए एक वेबसाइट में या किसी अन्य रूप में इस्तेमाल करते हैं। और फिर हम पाने के लिए प्रश्न है हमारे डेटाबेस से जानकारी, या उन में जानकारी डालने के लिए। आम ones-- अद्यतन का एक बहुत कुछ है, सम्मिलित करें, चयन करें, और हटाएँ। तो अद्यतन के लिए, इस वाक्य रचना है एक डेटाबेस में डेटा को अद्यतन करने के लिए। नामक इस तालिका अद्यतन सेट कह कर मेज, हम सभी में कुछ मूल्यों सेट कर सकते हैं और बराबर कुछ करने के लिए पंक्तियों। तो हम भी कुछ विशिष्ट निर्दिष्ट कर सकते हैं हम संशोधित करना चाहते हैं प्रविष्टियों और वह है, जहां का उपयोग किया जा सकता है। और हम हम ही करना चाहते हैं कि निर्दिष्ट कर सकते हैं कुछ पंक्तियों को संशोधित जहां के लिए घर, हम छात्रों की एक मेज था कि अगर और सभी छात्रों को, घर था इसलिए हम केवल कुछ मूल्यों को संशोधित करेगा एक घर Currier के बराबर होती है, जहां उदाहरण के लिए। डालने के लिए, हम सम्मिलित कर सकते हैं एक तालिका में निश्चित मूल्यों। तो तालिका में डालने, और फिर मूल्यों, और फिर कोष्ठक में, हम निर्दिष्ट जो आप सम्मिलित करना चाहते महत्व देता है। तो मेज, Col1 में डालने और col2, मूल्य VAL1 और val2 है। तो इस में मूल रूप से एक नई पंक्ति सम्मिलित करता है मूल्यों 1 और 2 से युक्त एक मेज कॉलम 1 और 2 के तहत। और फिर हम पर जाने के लिए जा रहे हैं इस कैसे लग रहा है की एक त्वरित उदाहरण एक छोटा सा हमारे डेटाबेस में की तरह। लेकिन इस अंतिम क्वेरी कि मैं हम पर जाने के लिए जा रहे हैं लगता है, चयन करें, यह सिर्फ हमें की अनुमति देता है एक मेज से डेटा का चयन करने के लिए संभवतः इसे बाद में उपयोग करने के लिए। और हम ऐसा करते हैं जिस तरह से हम है बस कुछ चर में यह दुकान। और फिर हम संभवतः इसे फिर से उपयोग कर सकते हैं। इसलिए चयन स्टार सभी का चयन होता है। वह सिर्फ एक आशुलिपि है सभी के चयन के लिए। मेज, जहां से हम देख रहे हैं कुछ विशेष परिस्थितियों के लिए, इसलिए स्तंभ के बराबर होती है, जहां उदाहरण के लिए कुछ है,। हम तो बस करना चाहता था मेज से सभी का चयन करें, यह सिर्फ सभी स्तंभों का चयन करता है और एक मेज से सभी पंक्तियों। और तब तालिका से हटाएं जहां कर्नल कुछ के बराबर होती है, यह सिर्फ कुछ हटाता हमारे टेबल से पंक्ति जहां हम कुछ विशिष्ट स्थिति है। इस मामले में, की स्थिति हैं कॉलम कुछ के बराबर होती है। इस बात का तो सिर्फ एक त्वरित उदाहरण है। हम यहीं है और हम इस तालिका है, तो एक तालिका में डालने, इन मूल्यों, कि एक नई पंक्ति सम्मिलित होगा। हम ऑटो वेतन वृद्धि की थी और अगर यह होता है सिर्फ 2 to 0-1 हमारे आईडी वेतन वृद्धि। हम छात्रों से सभी चयनित हैं, तो यह बस सभी क्षेत्रों और सभी पंक्तियों को लौटाता है। जहां वर्ष अधिक से अधिक है 2016 से अधिक या बराबर है, कि सिर्फ लौटेंगे हन्ना और अपने आप को। और फिर हम सिर्फ अगर चयनित छात्रों से साल आईडी और वर्ष जहां घर काबोट हाउस, वह है, फिर से, हन्ना और अपने आप को वापस कर देगा। तो फिर हम छात्रों से हटा दिया है, तो जहां नाम, रोब के बराबर है कि पूरी पंक्ति को हटाना होगा। और फिर हम निर्धारित करते हैं नाम, अद्यतन छात्रों सेट नाम Daven के बराबर होती है जहां घर के बराबर है काबोट हाउस, कि करने के लिए जाना जा रहा है उन पंक्तियों और फिर नाम अपडेट करें। और फिर कुछ एसक्यूएल डेटा प्रकार हैं चार, varchar, पूर्णांक, और तैरने लगते हैं। ये उचित खेल रहे हैं। मैं फिर से जाना होगा और सुनिश्चित करें कि आप जानते हैं और, अपने धोखा शीट पर उन्हें दिया है क्या उन पात्रों में से प्रत्येक के लिए इस्तेमाल किया गया है, क्या यदि आप अपने psets पर उन्हें इस्तेमाल किया और आप परिचित हैं और सुनिश्चित करें चुनने के लिए होने के साथ आराम अपने pset में विभिन्न प्रकार के डेटा से। हाँ। दर्शकों: उस मेज क्या संग्रहीत किया गया था? हाँ, जहां इस तालिका भंडारित किया जाता है? मारिया ZLATKOVA: ठीक है, फिलहाल, यह नहीं जमा हो रहा है। वैसे भी, जहां इस तालिका भंडारित किया जाता है? लेकिन यह एक एसक्यूएल डाटाबेस में संग्रहित किया जा सकता है। दर्शकों: और जहां एसक्यूएल डाटाबेस है? कंप्यूटर में, ऑनलाइन कहीं न कहीं, सर्वर? मारिया ZLATKOVA: यह एक हो सकता है अलग अलग बातें की संख्या। हन्ना BLUMBERG: हम साथ interfaced किया है ज्यादातर phpMyAdmin के साथ एसक्यूएल टेबल। इसलिए हम एक सर्वर पूछ सकते हैं हमारे लिए उन्हें स्टोर करने के लिए। हम अपने स्वयं के कंप्यूटर पर उन्हें स्टोर सकता है। मारिया ZLATKOVA: यह सिर्फ पर निर्भर करता है कैसे आप इसे खुद के लिए करना चाहते हैं। लेकिन हम भंडारण किया गया है उन्हें, हन्ना उल्लेख किया है, phpMyAdmin, पर जो ऑनलाइन है। और फिर जिस तरह से हम उपयोग PHP और एसक्यूएल, हम इसे स्टोर कुछ चर में क्या हम के लिए पूछे गए हैं। हम सभी को इतिहास से चयन करते हैं तो user_id सत्र आईडी के बराबर होती है, जहां कि सभी पंक्तियों का चयन करेंगे विशिष्ट व्यक्ति के लिए कौन इतिहास से लॉग इन किया है मेज और पंक्तियों में उन्हें तरह। पता करने के लिए एक अच्छी बात है CS50 के प्रश्न समारोह कि एसक्यूएल इंजेक्शन टैग के खिलाफ सुरक्षा करता है। वह सिर्फ यह सुनिश्चित करता है कि इसका मतलब है दर्ज किया जाता है कि इनपुट सही है और कहा कि जो व्यक्ति इनपुट प्रवेश कर रहा है निवेश करने के लिए कोशिश नहीं कर रहा है कुछ दुर्भावनापूर्ण कोड या तो हमारे टेबल ड्रॉप करने के लिए या सब कुछ नष्ट हमारे डाटाबेस के अंदर। की एक त्वरित अवलोकन मॉडल देखें नियंत्रक मॉडल यह आयोजन का सिर्फ एक रास्ता है और कोड के बारे में सोच रही है। यह फिर से एक डिजाइन प्रतिमान है। क्या इसका मतलब है कि हम है can-- और यह अच्छा अभ्यास है अलग-अलग हिस्सों को अलग करने के लिए हमारे कोड और क्या वे की इन तीन मानदंड में नियंत्रित करते हैं। इसलिए हमारे विचार से सबसे अधिक बार है हमारी टेम्पलेट्स, हमारे लेआउट, रास्ता कि हम अपने कोड कैसे दिखता है निर्धारित किया है। यही कारण है कि ज्यादातर हमारे सीएसएस फ़ाइलें और रास्ता है हम अपने कोड के डिजाइन में परिभाषित किया गया है कि, मूल रूप से। हमारे नियंत्रक ज्यादातर क्या है हम PHP फाइलों के साथ कर दिया गया है। तो फिर, के साथ काम करना हमारे पास जानकारी है कि और परिभाषित है कि कैसे जानकारी के लिए किया जाता है और फिर उस जानकारी गुजर या तो दृश्य या मॉडल पर। और मॉडल, हम है कि रास्ता है का उपयोग किया गया, हमारे डाटाबेस किया गया है इसलिए हमारी जानकारी है, जहां यह कहीं न कहीं है तो संग्रहित में रहते हैं, और से किसी को जिस तरह से संबंधित है कि कोड हम जानते हैं कि जानकारी या मिलता है कि हम उस जानकारी को अद्यतन उस तरह। MVC मॉडल में तो, HTTP अनुरोधों एक वेब सर्वर से भेजा जाता है। फिर, नियंत्रक की व्याख्या उपयोगकर्ता से अनुरोध और तब उपयोगकर्ता इनपुट पुष्टि की। यह है कि हम वैकल्पिक है नियंत्रक संवाद एक मॉडल के साथ, कुछ ऐसा हमारे डाटाबेस की तरह या कुछ अन्य कार्यक्षमता जानकारी है कि रिले। और फिर अंत में, नियंत्रक दृश्य पर जानकारी गुजरता इतना है कि यह किया जा सकता है गाया है और यह कर सकते हैं कि किसी भी व्यक्ति को दिखाई देने लगते हैं वेब पेज तक पहुँचने। कोई सवाल? भयानक। तो फिर, मॉडल, अपने कार्य को, फिर से, जानकारी के लगातार भंडारण है, प्रबंध और डेटा के आयोजन। और हम ऐसा क्या देखा है अब तक MySQL डाटाबेस है और किसी भी डेटा फ़ाइलों का उपयोग कर सकते हैं। देखें, जानकारी की प्रस्तुति के लिए उपयोगकर्ता, यूआई, या यूजर इंटरफेस। और इस बात का उदाहरण HTML है। और फिर हम कम से कम पीएचपी हो सकता है। तो एक पाश के लिए कि दोहराता डेटा पर कि बाहर मुद्रित कर रहे हैं देखने के हिस्से के रूप में है नियंत्रक करने का विरोध किया। और हमारे PHP फाइलों की तो एक बहुत नियंत्रक श्रेणी में आते हैं। यह सिर्फ उपयोगकर्ता अनुरोधों को संभालती है और मॉडल से जानकारी हो जाता है। दस्तावेज़ में कूदते ऑब्जेक्ट मॉडल है, यह सिर्फ रास्ते HTML करने के लिए संदर्भित करता है दस्तावेजों का आयोजन कर रहे हैं। और वे एक पेड़ में आयोजित कर रहे हैं एक पदानुक्रम है कि संरचना। हम करने के लिए उपयोग किया है तो अगर [सुनाई] दस्तावेज़ के प्रतिनिधित्व, हम जैसे, दस्तावेज़ के साथ काम कर सकते हैं हम मूल रूप से वस्तुओं में हेरफेर। और यह एक बनाने के लिए थोड़ा सा साफ, जब हम में से एक बहुत कुछ है हमारे अलग टैग प्रतिक्रिया हमारे पेड़ में विभिन्न मार्गों के लिए। और फिर इस उदाहरण के लिए, हम शुरू होने वाले दस्तावेज़ नोड है। हम हैं, तो हमारे एचटीएमएल नोड कि सिर और शरीर में विभाजन। सिर तो शीर्षक और है शीर्षक, हैलो दुनिया में शामिल है। और हमारे शरीर सिर्फ शामिल हैलो, दुनिया के रूप में अच्छी तरह से। में से किसी पर तो किसी भी सवाल हम अब तक कवर किया है कि बातें? और अगर नहीं, हन्ना होगा जावास्क्रिप्ट के साथ ले। भयानक। हन्ना BLUMBERG: ठीक है, शांत। कुछ भी पीएचपी या HTML के साथ आता है, या मारिया कवर सामान के किसी भी, हम हमेशा रोक सकते हैं। बेहतर होगा कि हम पर क्या कर रहे हैं समय फिर से, इतना भयानक। और अभी वापस जाने के लिए वास्तव में जल्दी से इस के लिए, आप हर पर नजर डालें तो पिछले एक साल के परीक्षा, इस either-- यहाँ है ऊपर आता है कुछ HTML, इस चित्र बनाते हैं। या यहाँ इस चित्र है, कुछ करना एचटीएमएल, इतना जरूर है कि अभ्यास। और फिर उस एक गारंटी है अगर आप सही प्राप्त कर सकते हैं सवाल। कूल। तो चलो जावास्क्रिप्ट के बारे में बात करते हैं और यह एक छोटा सा है कैसे PHP और जैसी भाषाओं से अलग सी, हम पहले से देखा दो भाषाओं। तो नंबर एक, यह शिथिल टाइप किया है। यही कारण है कि पीएचपी की तरह है, लेकिन सी के विपरीत यह एक व्याख्या की भाषा है। फिर, ऐसा ही है पीएचपी, सी और इस के विपरीत हमें यह use-- करने के लिए अनुमति देने के लिए जा रहा है वेब पृष्ठों के साथ वास्तव में अच्छी तरह से काम करता है। यह हमें हेरफेर करने के लिए अनुमति देने के लिए जा रहा है सामग्री और कैसे यह लग रहा है और यह क्या करता है। हम अजाक्स का एक छोटा सा देखने के लिए जा रहे हैं। यह हमें संवाद करने की अनुमति देता है asynchronously अलग सर्वरों के साथ और जानकारी मिलती है। और यह बात सच है कि पीएचपी और सी से JavaScript अलग करती है यह क्लाइंट पक्ष है। दोनों PHP और सी हैं आम तौर पर सर्वर साइड। अधिकांश भाग के लिए और लगभग पूरी तरह से क्या हम कम से कम में देखा है, इस वर्ग, जावास्क्रिप्ट जिसका मतलब है, क्लाइंट-साइड पर काम करता है ब्राउज़र है कि वास्तव में इसे चलाने के लिए जिम्मेदार है। और कहा कि हम ऐसा नहीं है कि इसका मतलब है सर्वर के साथ बातचीत करने की जरूरत है। तो यह है कि यह एक बहुत तेजी से हो सकता है इसका मतलब यह वास्तव में है क्योंकि सिर्फ यह, क्रोम है यह यह फ़ायरफ़ॉक्स, है, सफारी है जो कुछ भी आप वास्तव में इस्तेमाल अपने जावास्क्रिप्ट चल रहा है। दर्शकों: अतुल्यकालिक क्या मतलब है? हन्ना BLUMBERG: आह, क्या asynchronously मतलब है? बड़ा सवाल है। Asynchronously means-- अच्छी तरह से, सामग्री जिसमें हम यह ठीक है, उपयोग करें, हम एक वेब पेज पैदा कर रहे हैं और हम कुछ जानकारी प्राप्त करने की जरूरत है। मैशप के उदाहरण के साथ तो, हम चाहते हैं कि हो सकता है कि कुछ जानकारी लेख खिताब है। अब, हम एक ही विकल्प could-- तुल्यकालिक यह करने के लिए है और कहा कि चलो इसका मतलब बंद करो, लेख मिल जाना, तो लेख वापस मिलता है, और प्रस्तुत करना, लेकिन लगता है कि वास्तव में धीमी गति से होगा। यह एक बुरा उपयोगकर्ता अनुभव होगा तुम सिर्फ बैठा होगा क्योंकि कुछ प्रतिक्रिया करने के लिए वहाँ इंतज़ार कर रहे। Asynchronously हम होगी मतलब हमारे व्यापार के बारे में जाने के लिए जारी, पेज प्रतिपादन, और हम एक अनुरोध भेजना बंद कर देंगे उस तरह के लिए जा रहा है पृष्ठभूमि में होती हैं। मुझे लगता है हम उदाहरण में उपयोग लगता है रोब बुला रही है और कह रही है की व्याख्यान, अरे, तुम इस को देख सकते हैं और मेरे लिए मेरे पास वापस पाने के लिए, सिर्फ मेरे लिए विरोध के रूप में फोन पर इंतज़ार कर रहे। तो asynchronously ऐसा होता है इसका मतलब है हम से दूर पृष्ठभूमि में समान्तर में। बड़ा सवाल है। और कुछ? अच्छा है। हम में एक बहुत अधिक कूद जाएगा अजाक्स के साथ अतुल्यकालिक अनुरोध। दर्शकों: करता है, जहां JavaScript-- करता है यह मॉडल देखें नियंत्रक के साथ आते हैं? हन्ना BLUMBERG: बड़ा सवाल है। कहाँ जावास्क्रिप्ट गिरावट करता है मॉडल देखें नियंत्रक के साथ? हम्म। मैं यह fall-- सकते हैं लगता है इसलिए हम आमतौर पर नहीं करना उस में यह तोड़ो पसंद प्रतिमान, लेकिन मुझे लगता है कि मैं कहूँगा कि लगता है, ठीक है, जावास्क्रिप्ट इसलिए वास्तव में अनुमति देने के लिए जा रहा है अमेरिका, डेटा इकट्ठा करने के लिए वास्तव में क्या करना है, डेटा की व्याख्या डेटा के साथ सार्थक बातें। उस रास्ते में, यह बहुत ही नियंत्रण की तरह है। लेकिन यह भी करने के लिए हमें अनुमति देने के लिए जा रहा है बातें और प्रिंट बातें प्रदर्शित करते हैं। उस रास्ते में, यह बहुत ही दृश्य की तरह है। हाँ। तो उस में पीएचपी की तरह की तरह है यह एक तरह से दोनों जहां हो सकता है। अच्छा प्रश्न। और कुछ? ठीक है, बहुत बढ़िया। सही साथ चल रहा है। तो चलो एक उदाहरण देखते हैं हम उपयोग कर सकते हैं कि कैसे की हमारी वेब कार्यक्रमों में से एक में जावास्क्रिप्ट। इसलिए मैं इस पर विचार करेंगे HTML के एक समूह के साथ सूचकांक। और बात यह है कि मैं आप चाहते हैं पर ध्यान केंद्रित करने के लिए इस स्क्रिप्ट टैग है। और यह ठीक है, मैं कुछ चलाना चाहते हैं, कहते हैं, यह रहती है जहां यहां जावास्क्रिप्ट और है। यह hello.js में रहती है। बहुत ज्यादा सीएसएस की तरह है, हम कर सकते थे एचटीएमएल के भीतर जावास्क्रिप्ट डाल दिया। क्यों हम इसे बाहर अलग करने के लिए चाहते हो सकता है? हाँ। दर्शकों: फिर से लिखना आसान? हन्ना BLUMBERG: हाँ। इसे भर में उपयोग करने के लिए आसान है विभिन्न वेब पृष्ठों। यह क्लीनर बातें करती रहती है। यह सिर्फ अच्छा अभ्यास है। भयानक। अच्छा उत्तर। तो अच्छा है, तो यह जा रहा है हमारे सूचकांक होने के लिए। और फिर नीचे हमारे यहाँ है छोटे छोटे जावास्क्रिप्ट फ़ाइल। और यह कहते हैं सब, हैलो दुनिया सतर्क है। तो क्या होता है जब है इस पेज renders-- इसलिए आप जो कुछ भी वेबसाइट पर जाना है, तो यह सब है कि क्या होने जा रहा है- ठीक है, मैं कर रहा हूँ, यह जा रहा है कहने के लिए यह जावा स्क्रिप्ट कोड को चलाने के लिए जा रहा है। और यह जावा स्क्रिप्ट कोड सिर्फ चेतावनी हैलो, दुनिया कहते हैं। इसलिए मैं इसे पाने के लिए जा रहा हूँ दोस्ताना छोटे पॉप-अप। कूल? यही कारण है कि बहुत पहले एक तरह से हमारी तरह है जावास्क्रिप्ट कार्यक्रम, हमारे नमस्ते, दुनिया। के बारे में थोड़ा और अधिक लग रहे हैं क्या जावास्क्रिप्ट का वाक्य रचना की तरह लग रहा है। और विशेष रूप से, के लिए यह तुलना करते हैं हम पहले देखा है जो सी और पीएचपी,। जावास्क्रिप्ट में, हम करने जा रहे हैं वर, चर का नाम है, और फिर इसकी वास्तविक मूल्य। और हम बस, एक प्रकार का उल्लेख नहीं करते पीएचपी में है, लेकिन बहुत सी में विपरीत की तरह हम चाहते थे, उदाहरण के लिए, यदि ऐसा है तो मूल्य 50 स्टोर करने के लिए, सी में, हम कहने के लिए होता है, अरे, सी, मैं एक पूर्णांक चाहते हैं, मैं यह कॉल करने के लिए जा रहा हूँ मैं और इसकी कीमत 50 है। पीएचपी में, यह थोड़ा आसान है। हम अरे, मैं एक चर चाहते हैं, का कहना है मैंने कहा जाता है और इसकी कीमत 50 है। बहुत इसी तरह, जावास्क्रिप्ट में, हम , अरे, मैं एक चर मुझे बुलाया कहना चाहते हैं इसकी कीमत 50 है। मैं का उपयोग करने वाले हर बाद समय मैं, मैं वर लिखने की जरूरत नहीं है। यह सिर्फ मैं उस बिंदु से है। सी, जहां में एक ही रास्ते में हम मैं पूर्णांक कहना है, एक बार हम सिर्फ मैं का उपयोग करें। कूल? ठीक है। छोरों पर चल रहा है, सौभाग्य से, इन लगभग मुझे लगता है वे कर रहे हैं exactly-- देखो क्या बिल्कुल के रूप में एक ही छोरों में की तरह देखने के लिए जा रहे हैं सी की तरह कुछ जहां अपने पाश के लिए तीन किया जा रहा है , एक initialization parts-- एक शर्त है, और एक अद्यतन। एक जबकि पाश, यह ठीक उसी लग रहा है। हम सिर्फ यह एक शर्त दे। और एक करना पाश, जबकि फिर, बिल्कुल वैसा ही। हम इसे एक शर्त दे। चलो मैं over-- पुनरावृति करना चाहता था हम कहते हैं मैं कुछ पांच बार करना चाहता था। सी में, हम लिख सकता है Init के लिए मैं 0 के बराबर होती है। मैं 5 से कम है, मैं ++। फर्क सिर्फ इतना है, जावास्क्रिप्ट में, इसके बजाय मैं 0 के बराबर होती पूर्णांक कह रही है की, हम वर मैं 0 के बराबर होती है कहना। खूबसूरत। यही कारण है कि केवल अंतर है। इस बात का किसी पर कोई सवाल? हाँ। दर्शकों: पीएचपी में तो, यह वैसा ही है बात यह है कि, सिवाय लेकिन एक चर की तरह? या फिर एक वर उदाहरण था? हन्ना BLUMBERG: हाँ। तो पीएचपी में, यह जा रहा है एक डॉलर के हस्ताक्षर होने के लिए। तो यह $ मैं बराबरी करने के लिए जा रहा है 0, $ मैं $ मैं ++, कम से कम 5 है। बड़ा सवाल है। अब के बारे में बात करते हैं समारोह घोषणाओं। सी में, हम घोषित जब एक समारोह है, हम इसे एक नाम दिया और हम इसे कुछ मानकों दे दी है। और शुरुआत में, हम प्रकार लिखा था। जावास्क्रिप्ट में, हम लिखने के लिए क्या करना है कीवर्ड समारोह कि , हे, जावास्क्रिप्ट कहते हैं, मैं एक समारोह को परिभाषित करने के बारे में हूँ। इस मामले में, यह नाम योग है। और यह दो तर्क, एक्स और वाई लेता है। हम परवाह नहीं है कि नोटिस एक्स और वाई के प्रकार के बारे में। और बस सी की तरह, हम है इस कीवर्ड वापसी, इसलिए हम कुछ कर सकते हैं वापसी एक्स और वाई की तरह। और अब एक बार हम यह पहली लिखा है समारोह में, हम कहीं भी राशि का उपयोग कर सकते हैं। और कहा कि पूरी तरह से ठीक है। एक वास्तव में अच्छी बात के बारे में सी के विपरीत बहुत है कि जावास्क्रिप्ट है कार्यों कर सकते हैं कि मूल्यों की तरह व्यवहार किया। इसलिए हम यहां ऐसा कुछ कर सकते हैं मुझे लगता है कि जहां मैं इस up-- कवर मैं वर राशि को कवर part-- और हम सिर्फ इतना कहा समारोह XY वापसी एक्स प्लस y के बराबर होती है। यही कारण है कि बुलाया जाएगा क्या है एक गुमनाम समारोह। यह एक नाम के बिना एक समारोह है। इस समारोह का कहना है जबकि योग, बकवास, बकवास, बकवास, यह सिर्फ समारोह कहेंगे। लेकिन अब मुझे लगता है कि भले ही इस अनाम समारोह, उस समारोह वास्तव में सिर्फ एक मूल्य है। हम एक मूल्य की तरह व्यवहार कर सकते हैं। इसलिए हम एक चर ही में इसे बचाने के लिए कर सकते हैं जिस तरह से हम एक चर में 50 स्टोर सकता है। इसलिए हम ठीक है, मैं एक चाहते हैं, कह सकते हैं चर, यह योग कहा जाता है और यह इस समारोह है। तो इन दो चीजें वास्तव में कर रहे हैं सटीक एक ही बात करने के लिए जा रहा है, लेकिन वाक्य रचना के एक छोटे से है अलग-अलग और एक मजेदार नोट की तरह। हाँ। दर्शकों: आप कह सकते हैं तो एक कह कर गुमनाम था कि समारोह में, योग कोष्ठक 2, 5? हन्ना BLUMBERG: हाँ। आप इस गुमनाम कॉल कर सकते हैं उसी तरह से कार्य करते हैं। आप योग करना होगा (2, 5) ;. यही कारण है कि पूरी तरह से ठीक हो जाएगा। मैं वर राशि के बराबर नहीं किया है समारोह है, मैं बस नष्ट कर दिया है, तो है- मैं इसे अपने हाथ पर पता है, लेकिन मैं तो है- हटाए नाटक उस समारोह तरह की बस चला गया है। तुम फिर से, क्योंकि इसका इस्तेमाल कभी नहीं कर सकते हैं आप इसके लिए एक नाम नहीं है। यह कुछ का उल्लेख करने के लिए मुश्किल है आप क्या फोन करने के लिए पता नहीं है। अच्छा प्रश्न। हाँ। दर्शकों: आप में योग संदर्भित कर सकते हैं एक्स प्लस y के मूल्य के साथ अन्य स्थानों पर? हन्ना BLUMBERG: कर सकते हैं आप अन्य स्थानों में संदर्भ योग मूल्य एक्स प्लस y के साथ? मैं तुम्हें क्या मतलब पूरी तरह यकीन नहीं कर रहा हूँ। दर्शकों: तो अपने अतीत अर्द्ध गुमनाम समारोह राशि इस के बराबर है गुमनाम समारोह है, तो योग है आप can-- कि अब एक चर हन्ना BLUMBERG: ठीक है। इसलिए योग चर रहा है, लेकिन यह actually-- है इतनी राशि जिसका एक चर रहा है मूल्य समारोह है। तो यह एक तरह से है, जो एक समारोह है, एक अजीब बात यह है कि अपने सिर के चारों ओर लपेट के लिए हम साथ खेल रहा हूँ के बाद से सी और तुम सी में ऐसा नहीं कर सकते लेकिन अब हम फोन योग कर सकते हैं हम यहां योग कह सकते हैं एक ही रास्ता है। दर्शकों: ठीक है। हन्ना BLUMBERG: हाँ। अच्छा प्रश्न। हाँ। दर्शकों: तो हम प्रयोग नहीं करते PHP या जावास्क्रिप्ट में प्रोटोटाइप? हन्ना BLUMBERG: नहीं, हम प्रोटोटाइप का उपयोग करने की जरूरत नहीं है, विशेष रूप से जावास्क्रिप्ट में। मैं कर रहा हूँ कि एक तो बुरा व्यवहार बात आप ऐसा नहीं करना चाहिए कि कहने के लिए जा रहा आप वर मैं = 50 लिखने के लिए नहीं है। आप सिर्फ 50 = मैं क्या कर रही शुरू कर सकता है। और अभी मैं एक वैश्विक चर बनाना होगा। यह करने के लिए बहुत बुरा व्यवहार है कभी नहीं स्पष्ट रूप वर मैं कहता हूँ, लेकिन यह कुछ आप कर सकते है। दुभाषिया नहीं है आप पर चिल्लाना जा रहा है। जावास्क्रिप्ट, सुंदर की तरह है आप जो चाहते है वो कर सकते हैं। मुझे माफ करें। दो नहीं है। नारंगी पैंट में। आगे बढ़ें। दर्शकों: नहीं, तुम पहले जाओ। दर्शकों: नहीं, मैं सिर्फ कह रहा था मैं अपने हाथ ऊपर नहीं था। ठीक है। आप कहते थे तो अगर पहली बार है कि, अब, योग हम एक ही तरीका है कि यह फोन, x Y, हर बार की तरह? हन्ना BLUMBERG: हाँ। तो इन दो अनिवार्य वहीं काम करें। दर्शकों: और क्या फायदा है एक या अन्य का उपयोग करने का? हन्ना BLUMBERG: कोई लाभ एक या अन्य का उपयोग करने का। मैं तो बस आप दो दिखाना चाहता था वाक्य रचना के विभिन्न टुकड़ों। समय की एक बहुत जहां गुमनाम कार्यों एक उद्देश्य है अगर किसी अन्य के लिए तर्क समारोह में एक समारोह होना चाहिए। और हम में देखेंगे कि अजाक्स के साथ बस एक पल। कि कोई मतलब नहीं था तो, अगर अपने सिर के पीछे में यह दुकान। यही कारण है कि जहां एक गुमनाम है समारोह उपयोगी हो सकता है यह वास्तव में इसके लायक नहीं है क्योंकि हम सिर्फ रहे हैं के बाद इसे एक नाम दे रही है एक बार इसका इस्तेमाल करने जा रही है। हाँ। दर्शकों: यदि एक्स और वाई परिवर्तन बाद में पर, के रूप में अच्छी तरह से बदल योग होगा? हन्ना BLUMBERG: यदि एक्स और वाई परिवर्तन पर बाद में, के रूप में अच्छी तरह से बदल योग होगा? तो यह है कि मैं वास्तव में है , कुछ है कि लगता है फिर, यह सिर्फ बहुत अलग लगता है सी से यह कोई मूल्य नहीं है। यह 5 नहीं है। यह सिर्फ समारोह में ही है। इसलिए जैसे ही आप इसे मापदंडों देने के रूप में, तो आप वास्तव में एक मूल्य की गणना करेंगे। मारिया ZLATKOVA: और फिर आप समारोह कॉल कर सकते हैं और कुछ मूल्य पाने के लिए इसका इस्तेमाल करते हैं। हन्ना BLUMBERG: ठीक है। बिल्कुल सही। हाँ। दर्शकों: अगर तुम तो बस चर में स्टोर, वर एक्स की तरह दो values-- के योग के बराबर होती है हन्ना BLUMBERG: हाँ। तो तुम सिर्फ वर योग कर सकता है दो मूल्यों की राशि के बराबर होती है। हाँ। कोई ओर प्रश्न? हाँ। दर्शकों: लेकिन होता है कि योग और योग को भ्रमित? आप अपने चर राशि फोन की तरह, अगर आप समारोह योग कहोगे? हन्ना BLUMBERG: मिमी। मिमी। आप कुछ किया तो जैसे, योग योग 2, 5 के बराबर होती है? दर्शकों: हाँ। हन्ना BLUMBERG: मुझे विश्वास है कि राशि के मूल्य के ऊपर लिख होगा। तो एक और दिलचस्प जावास्क्रिप्ट के बारे में बात एक एकल चर ले जा सकते हैं विभिन्न प्रकार की एक गुच्छा पर। बुरा व्यवहार। तुम कुछ भी नहीं करना चाहिए जैसे आप अभी क्या कहा। लेकिन सी में, मैं सेट है, तो एक पूर्णांक के बराबर है, हम यह कभी नहीं पता है कि एक स्ट्रिंग बनने जा रहा। यह जावास्क्रिप्ट में ऐसा नहीं है। हाँ, अच्छा सवाल है। और कुछ? ठीक है। समय पर सब ठीक कर रहा है। जारी रखें। ठीक है। हम एक सरणी पर नजर डालें तो जावास्क्रिप्ट में, यहाँ है तारों की एक सरणी की एक त्वरित उदाहरण है। और सारणियों गतिशील विकसित कर सकते हैं। वे एक के लिए नहीं है उसी तरह से निश्चित आकार वे सी में है कि हम उपयोग कर सकते हैं सिर्फ वर्ग कोष्ठक के साथ तत्वों। यही कारण है कि PHP और एक बहुत की तरह एक बहुत लग रहा है हम इस मामले में कह सकते हैं, जहां सी, जैसे, मैं शब्द जावास्क्रिप्ट चाहता था, तो मैं करूंगा एक 0, 1, 2 के साथ वर्ग कोष्ठक आगमन है। जब हम और फिर तुम सी में याद करता है, तो एक सरणी की लंबाई प्राप्त करना चाहता था, यह वास्तव में गुस्सा आ रहा था। लेकिन जावास्क्रिप्ट में, सुपर आसान। हम सब करते हैं, .length। यह लंबाई देता है। बस। दर्शकों: इतना आसान है। हन्ना BLUMBERG: हाँ, बनाता है अपने जीवन बहुत आसान। ठीक है, वहाँ नहीं object--। जावास्क्रिप्ट महसूस में वस्तुओं सी में structs की तरह एक बहुत और पीएचपी में साहचर्य arrays। तो हम क्या देखा है एक की बहुत JSON, जो है जावास्क्रिप्ट वस्तु संकेतन के लिए खड़ा है। और यह मूल रूप से एक रास्ता है के बारे में हमारी डेटा संरचना। तो चलो एक उदाहरण देखते हैं, शायद सबसे आसान। तो यहाँ एक वस्तु का एक उदाहरण है कि CS50, वर्ग की दुकानों। मैं क्लास का कहना है कि, जब मैं, ज़ाहिर है इसका मतलब नहीं, हाँ CS50 पाठ्यक्रम like--। और आप देखेंगे कि वस्तु में सब कुछ समाहित किया जा रहा है घुंघराले ब्रेसिज़ में। और हम क्षेत्र के नाम संबद्ध करने के लिए शुरू या विभिन्न मूल्यों के साथ चाबियाँ। तो आप कैसे इस तरह के देखने के लिए शुरू कर सकते हैं PHP में एक साहचर्य सरणी की तरह लगता है। इसलिए हम क्षेत्र संबद्ध करने के लिए जा रहे हैं या कुंजी का नाम, पाठ्यक्रम, तार के साथ, CS50। हम एक प्रशिक्षक के लिए जा रहे हैं। हम TFS लिए जा रहे हैं। हम psets की संख्या के लिए जा रहे हैं और हम दर्ज की गई है करने के लिए जा रहे हैं। और टिप्पणी करने के लिए एक अच्छी बात की है सब इन बातों को विभिन्न प्रकार है, और कहा कि पूरी तरह से ठीक है। यह वास्तव में एक वस्तु के लिए ठीक है यह शायद एक वस्तु के लिए उम्मीद है तार का एक संयोजन है और संख्या और Booleans और सरणियों और जो कुछ भी आप कर सकते हैं अपने उद्देश्य के अंदर करना चाहते हैं। और इन होने जा रहे हैं कि ध्यान दें नाम या चाबियाँ, और फिर हम सिर्फ एक छोटे से पेट के साथ इसे बराबर निर्धारित किया है। दर्शकों: क्या वास्तव में JSON क्या मतलब है? हन्ना BLUMBERG: क्या वास्तव में JSON मतलब है? JSON बस के लिए खड़ा है जावास्क्रिप्ट वस्तु संकेतन। यह स्वरूपण का सिर्फ एक रास्ता है। हाँ। यह हमारे डेटा स्वरूपण का एक तरीका है। सी में, यह structs है। पीएचपी में, यह साहचर्य arrays है। जावास्क्रिप्ट में, हम वस्तुओं है। दर्शकों: तो CS50 एक वस्तु है? हन्ना BLUMBERG: CS50 है इस मामले में वस्तु। अब, हम वास्तव में कैसे पहुंच करना उन क्षेत्रों के उन क्षेत्रों में परिवर्तन या। उदाहरण के लिए, हम फैसला किया है कि लगता है आप एक कम pset इस सेमेस्टर चाहता था। इसके बजाय नौ वर्ष की है, हम कर रहे हैं सिर्फ आठ लिए किया जा रहा। हम यह कैसे बदल जाएगा? ओह, गलत तरीका है। हम ऐसा कर सकते हैं कि दो तरीके हैं। नंबर एक बिंदी के साथ है संकेतन और नंबर दो वर्ग कोष्ठक अंकन के साथ है। तो, उदाहरण के लिए, मैं अगर बदलने के लिए या उपयोग करना चाहता था हमारे CS50 वस्तु में psets क्षेत्र, मुझे क्या करना होगा CS50.psets है, इसलिए वस्तु डॉट के नाम क्षेत्र या कुंजी का नाम है। बहुत इसी तरह, यह ठीक है बराबर तो CS50 करते हैं, और करने के लिए वर्ग ब्रेसिज़ में, psets। कूल? हाँ। दर्शकों: तो JSON है अभी भी तकनीकी जावास्क्रिप्ट, भले ही psets में हम [अश्राव्य] यह अलग? हन्ना BLUMBERG: यकीन है। सवाल यह है तो, कर रहे हैं जावास्क्रिप्ट और JSON बराबर? तो JSON के नोटेशन मूल रूप से है हम बाहर लिखने कि रास्ता जावास्क्रिप्ट से एक वस्तु। इसलिए वे वास्तव में एक ही नहीं कर रहे हैं। मैं वहाँ, जावास्क्रिप्ट कहेंगे जावास्क्रिप्ट में वस्तुओं रहे हैं। JSON के उन वस्तुओं लेता है और उन्हें प्रिंट और उन्हें प्रदर्शित करता है या एक अच्छा तरीका में उन्हें संग्रहीत करता है। तो JSON एक प्रोग्रामिंग नहीं है भाषा जावास्क्रिप्ट है कि जिस तरह से। इसके लिए सिर्फ संकेतन है जावास्क्रिप्ट में हमारे वस्तुओं। हाँ। दर्शकों: तो क्या वास्तव में [अश्राव्य] को पूरा? हन्ना BLUMBERG: यकीन है। तो यह वास्तव में कुछ भी नहीं है। इस का उपयोग करने के लिए सिर्फ एक ही रास्ता है। तो चलो हम बदलना चाहते थे, हम कहते हैं समस्या सेट की संख्या 9-8। हम क्या कुछ करना है CS50.psets = 8 ;. की तरह हाँ, बड़ा सवाल है। यह सिर्फ आप वाक्य रचना दिखाने के लिए है। वास्तव में उपयोगी कुछ भी नहीं है। कोई सवाल? सही साथ चल रहा है। तो चलो कैसे की एक त्वरित उदाहरण देखो मैं आपको यह बताया था क्योंकि जावास्क्रिप्ट काम करता है करता है इन सब शांत बातें और हमें वेब पृष्ठों को संशोधित करने के लिए अनुमति देता है। वास्तव में यह कार्रवाई में देखते हैं। तो, उदाहरण के लिए, इस HTML फाइल ले। और मैं तुम पर ध्यान केंद्रित करना चाहते बात है एक बटन है, जो इस विशेष टैग, आईडी search_button साथ। यह केवल पृष्ठ पर है। तो अब चलो देखते हैं क्या हम वास्तव में क्या कर सकते हैं। खैर, जब लगता है आपको लगता है कि बटन पर क्लिक करें हम एक alert-- बनाना चाहते आप बटन क्लिक किया। हम ऐसा कर सकते हैं कि कैसे देखते हैं। तो यह कुछ नहीं है window.onload-- कि आप इसलिए, कक्षा में देखा है प्रश्नोत्तरी के लिए यह पता करने की जरूरत नहीं होगी। लेकिन यह मूल रूप से ठीक है, कॉल कहते हैं, इस समारोह में जब खिड़की भार। तो यह है कि बस की तरह सेटअप कोड की है। उस बारे में इतनी चिंता मत करो। क्या मैं तुम पर ध्यान केंद्रित करना चाहते हैं यहाँ है। हम वर searchButton के बराबर होती है कहना document.getElementById search_button। आप अनुमान लगा सकते हैं तो, यह क्या करता है, यह कहते है ठीक है, तत्व मिल जाते हैं आईडी search_button साथ। और अब हम उस राशि और मैं कर रहा हूँ वास्तविक तत्व एक में यह स्टोर करने के लिए जा रहा चर searchButton। और अब हम वास्तव में उस तत्व का उपयोग कर सकते हैं और इसे बदलने के लिए, या अपने मूल्यों का उपयोग, इस तरह बातें। हम वास्तव में करने के लिए शुरू कर सकते हैं वेब पेज के साथ व्यस्त हैं। तो यहाँ मैं अब मुझे लगता है कि, ठीक है, का कहना है यह क्लिक किया जाता है कि जब बटन, इस अनाम समारोह कहते हैं। इसलिए इस जहां गुमनाम है कार्यों उपयोगी हो जाते हैं। और समारोह क्या करता है? खैर, यह सिर्फ इस कॉल चेतावनी समारोह और यह कहते हैं, आप खोज बटन क्लिक किया। मैं जहाँ भी जाते हैं, तो तो क्या होगा इस HTML रहता है और मैं बटन पर क्लिक करें मैं एक फैंसी थोड़ा सतर्क मिलेगा कि आप बटन क्लिक किया कहते हैं। इसलिए चीजों पर ध्यान केंद्रित करने के लिए here-- document.getElementById एक विशेष एचटीएमएल हो जाता है दिए गए आईडी के साथ तत्व। और अब हम सेट कर सकते हैं जब क्या होना चाहिए उस विशेष तत्व क्लिक किया जाता है। दर्शकों: हम में है कि सभी डाल दिया है? हन्ना BLUMBERG: क्षमा करें? दर्शकों: हम करने के लिए है शारीरिक रूप से है कि सभी कोड? हन्ना BLUMBERG: हम करने के लिए है शारीरिक रूप से है कि सभी कोड? हाँ। कष्टप्रद के इस तरह नहीं है? इस कोड का एक बहुत कुछ है। दर्शकों: आप कुछ आयात कर सकता है। हन्ना BLUMBERG: ठीक है। हम कुछ का उपयोग कर सकता है। और particular-- में ओह, यह मुझे बता रहा है कि मैं धारा को पढ़ाने के लिए है। विशेष रूप से, चलो jQuery पुस्तकालय का उपयोग करें, कि वास्तव में था क्योंकि लंबी और वास्तव में गुस्सा और मैं इसे आसान बनाने के लिए सक्षम होना चाहता हूँ और यह छोटे और लिखने के लिए आसान बनाते हैं। तो jQuery के एक जावास्क्रिप्ट पुस्तकालय है। इसलिए जावास्क्रिप्ट प्रोग्रामिंग है भाषा; jQuery के एक पुस्तकालय है। और यह आसान चीजों की एक गुच्छा बना देता है। यह बदल रहा है और पार जा बनाता है एक HTML दस्तावेज़ बहुत आसान है। इसे संभालने की घटनाओं को आसान बनाता है। यह आसान एनीमेशन बनाता है और यह आसान अजाक्स बनाता है। तो चलो में से दो में कूद जाने ठीक है अब उन चीजों। मुझे माफ करें। हम ऐसा करने से पहले, कुछ बुनियादी सिंटेक्स। यह सबसे करने के लिए कहता है jQuery पुस्तकालय की तरह देखो। हम इस डॉलर का उपयोग sign-- पीएचपी से कोई संबंध नहीं हस्ताक्षर, सिर्फ एक का नाम inconvenient-- चयनकर्ता, बिंदी, और फिर एक कार्रवाई। तो चलो कुछ देखते हैं इस बात का ठोस उदाहरण। तो यह वास्तव में एक ही है घटना स्लाइड से कोड। तो यह लंबे समय तक, बदसूरत बात बन जाती है इस बहुत अच्छे, छोटी बात है। तो चलो इस नीचे तोड़ने की कोशिश करते हैं। यह ठीक है, jQuery-- यह डॉलर का कहना है, jQuery के sign-- मुझे खिड़की लगता है। तो यह है कि चयनकर्ता है। जब यह भार, इस समारोह में कहते हैं। तो यह है कि सब कुछ अंदर है। ठीक है। अब तक सब ठीक है? ठीक है। अब, jQuery के, मुझे मिल आईडी search_button साथ बात। और यह क्या क्लिक किया जाता है, इस समारोह में कहते हैं। और फिर इस समारोह के बिल्कुल वैसा ही। बस चेतावनी का एक छोटा सा है, आप खोज बटन क्लिक किया। तो यह वास्तव में अच्छा है। यह वास्तव में संघनित और हमारे कोड को सरल। मैं नहीं जानता था कि कैसे यह आईडी search_button है और वर्ग search_button पसंद नहीं? दर्शकों: हैशटैग? हन्ना BLUMBERG: हाँ। इस हैश प्रतीक है, यह सिर्फ सीएसएस की तरह है। , जब हम तो सीएसएस के साथ, याद आईडी के आधार पर कुछ का चयन करना चाहता था, हम पाउंड चिह्न का इस्तेमाल किया। और हम का चयन करना चाहता था जब वर्ग द्वारा कुछ, हम डॉट का उपयोग करें। अच्छा है। सही बात? तो jQuery के लिए माना जाता है सिर्फ हमारे जीवन को आसान बनाते हैं। हाँ। दर्शकों: तो मैं के रूप में एक छोटी सी उलझन में हूँ गुमनाम समारोह कैसे काम करता है। आप इस anonymouse नाम नहीं समारोह, समारोह? इसे क्या कह कर पुकारते हैं? हन्ना BLUMBERG: यकीन है। तो समारोह सिर्फ एक कीवर्ड है कि मैं एक समारोह को परिभाषित करने के बारे में हूँ, कहते हैं। दर्शकों: ठीक है, ओह। हन्ना BLUMBERG: ठीक है? और फिर हम एक के रूप में इसे पारित तर्क के लिए ले जाने है-- क्लिक समारोह को यह भीतरी one--। तो हाँ, उस समारोह तो, इस अनाम समारोह, एक वास्तविक तर्क हो जाता है। तो, जावास्क्रिप्ट में याद है हम मूल्यों के रूप में कार्य करता है इलाज कर सकते हैं। दर्शकों: ठीक है, ओह। हन्ना BLUMBERG: हाँ। मुझे पसंद है कि "ओह।" अच्छा लगा। अन्य सवाल? T.I.M.E? मारिया ZLATKOVA: अच्छा। अच्छा। हन्ना BLUMBERG: बहुत बढ़िया। कुछ जल्दी उपयोगी है jQuery। मैं जाने के लिए नहीं जा रहा हूँ इन सब के माध्यम से। ये स्लाइड होगी ऑनलाइन एक छोटा सा बाद में, तो आप देख सकते हैं एक छोटा सा बाद में इसे बाहर। लेकिन मूल रूप से, सामान्य हम कहते हैं जहां पैटर्न, रखती है अरे, ठीक है, jQuery के, यहाँ है मेरी तो यहाँ चयनकर्ता और एक कार्रवाई है। और आप पहुंच की तरह बातें कर सकते हैं एक फार्म के मूल्य, कुछ HTML का उपयोग जब उपयोगकर्ता क्या होता है नियंत्रण एक रूप है, इस तरह बातें प्रस्तुत करें। हाँ। दर्शकों: में तो परीक्षा, हम जरूरत के लिए जा रहे हैं से काफी एक बहुत कुछ पता करने के लिए प्रलेखन। तो हम jQuery कॉपी / पेस्ट दिया है कि हमारे पत्रक धोखा करने के लिए दस्तावेज, जहां लाइन तैयार की है? जैसा कि कितने हम पता करने की जरूरत है? हन्ना BLUMBERG: बड़ा सवाल है। सवाल यह है की अनिवार्य रूप से आप यह देखते हुए कि jQuery के प्रलेखन का उपयोग नहीं कर सकते परीक्षण के दौरान, आप कितना होना चाहिए पता है? हम आपको आने की उम्मीद नहीं होता कुछ बेतरतीब समारोह के साथ हम गूगल को आप उम्मीद करेंगे कि। उचित खेल रहे हैं कि चीजें मैं होता हैं , सामान्य वाक्य रचना की तरह बस का कहना है आईडी के आधार पर चयन करने में सक्षम किया जा रहा है और तो बस सीएसएस तरह class-- द्वारा। और फिर वास्तविक कार्यों themself, हम संभावना आपको बता दूँगा। हाँ। दर्शकों: तो आप चयन करते हैं वर्ग द्वारा डॉट मतलब होगा। हन्ना BLUMBERG: हाँ, बिल्कुल। अच्छा। आप वर्ग द्वारा चयन करते हैं, यह जा रहा है बजाय पाउंड चिह्न के डॉट किया जाना है। हाँ। दर्शकों: क्या आप चाहेंगे अंतर खत्म हो जाना आईडी के आधार पर और वर्ग से चयन करने के बीच? हन्ना BLUMBERG: यकीन है। चयन के बीच का अंतर वर्ग द्वारा आईडी और चयन। मारिया ने कहा कि इतनी के रूप में एक छोटा सा पहले, वहाँ केवल एक HTML तत्व हो सकता है एक दिया आईडी के साथ, वर्ग, जबकि यह समूह एक गुच्छा करने के लिए हमें की अनुमति देता है एक साथ के विभिन्न तत्वों, इसलिए संबंधित हैं कि बातें, लेकिन नहीं बिल्कुल वैसा ही। उस सवाल का जवाब है? भयानक। हाँ। दर्शकों: आप कई है तो क्या होगा एक ही कक्षा में कर रहे हैं कि बातें? हन्ना BLUMBERG: क्या होता है अगर आप कई चीजें है कि अगर एक ही वर्ग के हैं? तो, उदाहरण के लिए, हम कर रहे हैं बस, शुद्ध जावास्क्रिप्ट का उपयोग हम कुछ करना होगा document.getElementsByClass। और कहा कि वास्तव में होता तो क्या रिटर्न तत्वों की एक सरणी है। और तुम पर पुनरावृति करने के लिए या तो है उन्हें आप चाहते हैं जो एक पाते हैं या। इसे देने के लिए नहीं जा रहा है आप एक ही तत्व। यह तुम्हें देने के लिए जा रहा है तत्वों की एक सरणी। बड़ा सवाल है। और कुछ? भयानक। इसलिए मुझे लगता है कि आप के साथ परिचित हैं, तो लगता है किसी भी jQuery के तुम, pset में देखा था आप जाने के लिए तैयार हैं। प्रश्न? अरे नहीं। मैं वास्तव में सिखाने के लिए है। आराम करें। यह ठीक हो जाएगा। मैं वहाँ मिल जाएगा। के अजाक्स के बारे में बात करते हैं। तो अजाक्स एक-- अच्छी तरह से होने जा रहा है, इसके लिए क्या खड़ा के साथ शुरू करते हैं। यह एक परिचित करा रहा है। यह अतुल्यकालिक के लिए खड़ा है जावास्क्रिप्ट और XML। और एक्सएमएल मूल रूप से होने जा रहा है है [अश्राव्य] हमारे डेटा का एक प्रकार से। लेकिन हम वास्तव में एक्सएमएल इस्तेमाल नहीं किया है। इसके बजाय, हम सिर्फ JSON का उपयोग करें। तो बुनियादी तौर पर, यह कुछ data-- है अतुल्यकालिक, जावास्क्रिप्ट, और डेटा, इस मामले में, JSON में। और हमारे लक्ष्य हम उल्लेख किया है, के रूप में एक छोटा सा पहले, एक बनाने के लिए सक्षम होने के लिए है अनुरोध है कि, अनुरोध करते हैं में अपनी बात पृष्ठभूमि, लेकिन जारी रखने के लिए हम ऐसा करने की इच्छुक थे जो कुछ भी करते हैं। और उस जानकारी है तो जब तैयार है, तो हम इसे शामिल करेंगे। तो यह क्या देखते हैं वास्तव में की तरह लग रहा है। और यह, आप होना चाहिए परिचित एक छोटा सा pset8 से, एक तुम्हारे बस में बदल गया। तो यहाँ एक वैध jQuery के समारोह है कि हम हो सकता है इस डॉलर के हस्ताक्षर about-- जानना चाहते हैं। तो यह jQuery समारोह, .getJson कहते हैं। और क्या इस कार्य करता है यह है एक यूआरएल और कुछ parameters-- लेता है इसलिए मैं इस मामले में लगता है pset8 की, यह की तरह था यूआरएल articles.php था और मापदंडों के = कुछ डाक कोड जाना था। और यह ठीक है, के लिए एक अनुरोध करना कहते हैं, दिए गए मापदंडों के साथ इस यूआरएल। और कहा कि सिर्फ होता है। यह पूरा होने पर, यह या तो सफलतापूर्वक पूरा करने के लिए जा रहा या इसे विफल करने के लिए जा रहा है। इसलिए इस कॉल के बराबर है रोब और कुछ करने के लिए उसे पूछने के लिए। वह वापस बुलाता है और फिर, जब वह या तो मैं कर रहा हूँ या मैं असफल कहने जा रहा। आप कर रहे हैं, जहां मामले में तो किया, आप ठीक है, मैं कर रहा हूँ, कहते हैं। और फिर आप इस समारोह में कहते हैं। इस मामले में, यह एक होने जा रहा है कुछ जानकारी लेता है कि समारोह। हम आम तौर पर देखभाल के बारे में एक, डेटा है हम वास्तव में लौट रहे थे कि डेटा .getJSON बुला का एक परिणाम के रूप में। और अगर आप इसके साथ कुछ कर सकते हैं। Pset8 के मामले में तो, हम एक सूची के रूप में यह प्रदर्शित होता है। असफल एक समारोह होने जा रहा है अनुरोध विफल रहता है कि कहा जाता है कारण जो भी हों। और pset8 के मामले में, हम सिर्फ यह console.log। उस पर कोई सवाल? हाँ। दर्शकों: हम सिर्फ समारोह थीटा उपयोग कर सकते हैं बजाय समारोह की, textStatus, jqHXR। हन्ना BLUMBERG: यकीन है। तो हाँ, मैं pset में लगता है, हम सिर्फ समारोह डेटा को देखा। तो यह सिर्फ ठीक है, हाँ the-- है। यही कारण है कि हम pset में क्या देखा है। यही कारण है कि पूरी तरह से ठीक है। अगर तुम चाहते थे ये तो बस कर रहे हैं अधिक जानकारी के बाहर खींचने के लिए, ये बातें कर रहे हैं कि आप .getJSON से मिल सकता है। अच्छा प्रश्न। और कुछ? हाँ। दर्शकों: तो .getJSON अजाक्स है? हन्ना BLUMBERG: ठीक है। तो यह मुश्किल हिस्सा की तरह है। यह अनुमति देता है कि एक jQuery समारोह है आप अतुल्यकालिक कॉल करने के लिए। और उन अतुल्यकालिक कॉल, कि क्या हम अजाक्स के रूप में करने के लिए बात कर रहा है। हाँ। यही कारण है कि मुझे एक बहुत लंबे समय ले लिया मैं एक छात्र था जब अलग खींच। दर्शकों: तुम फिर से कह सकते हैं? हन्ना BLUMBERG: हाँ। मैं फिर से कहना है कि कर सकते हैं? इस .getJSON समारोह, यह एक jQuery समारोह है। और इसे बनाने के लिए जा रहा है एक अतुल्यकालिक कॉल। और इन अतुल्यकालिक कॉल, हम है अजाक्स के रूप में उन लोगों के लिए चर्चा करते हुए किया गया है। कोई ओर प्रश्न? हम छोड़ दिया है, बस एक दो मिनट है। और मारिया के लिए जा रहा सुरक्षा के साथ लपेट और फिर हम जा रहे हैं बस के बारे में किया जाना है। मारिया ZLATKOVA: बहुत बढ़िया, ठीक है। तो यह सिर्फ एक जोड़े को ले है- सेकंड की इस पर देखने के लिए। और यह वास्तव में बहुत कुछ नहीं है। और यही कारण है कि कोई मुझे बता सकते हैं? क्या foo में चल रहा है और हो सकता है, कर सकता है संभवतः कुछ बुरा परिणाम में, और कि क्या कहा जाता है? हाँ। दर्शकों: तो है कि तर्क 12 से अधिक वर्ण में पारित कर दिया, यह अतिप्रवाह हो सकता है। मारिया ZLATKOVA: ठीक है। बिल्कुल सही। इसे क्या कहते है? तुम सिर्फ यह उल्लेख किया है। दर्शकों: बफर अतिप्रवाह। मारिया ZLATKOVA: हाँ, अतिप्रवाह बफर। तो यह कुछ है कि हम बफर अतिप्रवाह के रूप में देखें। और हम, foo की कि अंदर देखना हम अपने बफर, ग से परिभाषित किया है 12 के एक आकार के साथ। हालांकि, मुख्य रूप से, हम नहीं करते सब पर किसी भी तरह की जांच चाहे वह इतना है कि argv1-- दूसरा तर्क था। हम या नहीं यह जांच नहीं करते इसका आकार उचित है। तो अगर हम एक था विशेष रूप से दुर्भावनापूर्ण उपयोगकर्ता था कि कुछ तर्क में डाल दिया है जो 12 से अधिक समय है, और फिर संभावित कि की सीमा से परे तर्क, कुछ निष्पादन योग्य कोड था वह कुछ बुरा करने की कोशिश कर रहा था कि इसके साथ; तो यह क्या होगा वापसी से ऊपर होंगे foo समारोह का पता, जब समारोह के कारण कि कोड को निष्पादित करने के लिए लौटने। और फिर बुरी बातें हो सकता है। यह हर किसी के लिए समझ पड़ता है? और हम इस के खिलाफ कैसे बचा सकते हैं? कोई सुझाव? असल में, के अंदर संभवतः Foo, कैसे हम यह सुनिश्चित करने के लिए जाँच कर सकते हैं कि कि ऐसा नहीं हो सकता? दर्शकों: आकार 12 से अधिक हो गई है, तो आप अतिरिक्त स्मृति आवंटित करेगी? मारिया ZLATKOVA: सुझाव है, आवंटित आकार के अतिरिक्त स्मृति पार हो गई। दरअसल, हम कुछ कर सकती के रूप में अच्छी तरह से है कि तुलना में आसान बहुत। हम सिर्फ स्ट्रिंग लंबाई प्राप्त कर सकते हैं दर्ज किया जाता है कि तर्क की, कि कम है तो जाँच से या 12-- के बराबर हम यह चाहते हैं क्या है जो हम नहीं चाहते क्योंकि होना करने के लिए यह हमारे बफर की सीमा पार करने के लिए। और यह नहीं है तो, तो हम तर्क के साथ काम कर सकते हैं। अगर यह होता है और फिर, हम वास्तव में चाहते हैं उपयोगकर्ता पर संभावित Yello के लिए। लेकिन इस हम ऐसा कैसे होता है। हाँ। दर्शकों: तुम सकता है memcpy असली जल्दी समझा? मारिया ZLATKOVA: ओह, माफ करना। हाँ। Memcpy ठीक है, जो कुछ है- खेद लेता है। Memcpy है जो कुछ भी लेता है बार में, जो कुछ भी पारित हो जाता है कमांड लाइन तर्क के रूप में foo पर। तो यह argv1 ले जा रहा है। Argv1 यहां बार कहा जाता है। तो यह पट्टी ले जा रहा है और यह सी में कॉपी करने के लिए जा रहा है। दर्शकों: ठीक है। मारिया ZLATKOVA: और यह जा रहा है तीसरा तर्क सिर्फ संदर्भित copy-- कितना करने के लिए इसे ग में कॉपी करने के लिए जा रहा है। दर्शकों: आह। तो यह एक नकल के तो यह सब। मारिया ZLATKOVA: हाँ, यह यह सब को कॉपी है। हाँ। सबसे पहले, हम बार नहीं है सुनिश्चित करें यह एक सूचक है, क्योंकि बराबर अशक्त करने के लिए। तो फिर हम बार की स्ट्रिंग लंबाई मिलता है। हम यह सुनिश्चित कर लें कि कम से कम या 12 के बराबर है। और फिर हम है क्योंकि सुनिश्चित कर दिया है, हम वास्तव में कर सकते हैं memcpy और वह ठीक है कि यह सुनिश्चित हो। कोई सवाल? अच्छा है। मैं दो सही है या गलत सवाल है। किसी को भी सही दूर मुझे बता सकते हैं इन सही है या गलत कर रहे हैं तो क्या होगा? हाँ, यह गलत है। बिल्कुल सही। उन दोनों ने झूठे हैं। एक ही पासवर्ड का उपयोग कर तो वास्तव में कभी अच्छा विचार है किसी को जानता है, क्योंकि अगर अपना पासवर्ड, वे सिर्फ कर सकते हैं अपने सभी अन्य खातों का उपयोग। और फिर माउस को कुछ भी नहीं है सुरक्षा सुनिश्चित करने के लिए। हम आम तौर पर HTTPS के लिए दिखना चाहिए बजाय HTTP और यूआरएल की। और कुछ अन्य प्रकार हम उल्लेख किया है कि हमलों, डेविड में उल्लेख किया गया है कि , एसक्यूएल इंजेक्शन हमलों व्याख्यान। हम पहले से ही देखा था कि हम don't-- यदि CS50 क्वेरी समारोह यकीन है कि एसक्यूएल बनाता है इंजेक्शन हमले होते नहीं कर सकते। लेकिन हम CS50 का उपयोग नहीं कर रहे थे, बोली, गंदें शब्द बोलना "क्वेरी में," हम यह सुनिश्चित करना होगा कि उपयोगकर्ता इनपुट वास्तव में कुछ एसक्यूएल नहीं है सब का कारण होगा कि क्वेरी हमारे टेबल जा गिरा या कुछ बुरा हमारे डाटाबेस के साथ होता है। सत्र अपहरण है हमले का एक और प्रकार कि जब कुछ बुरा होता है व्यक्ति कुछ पीड़ित के सत्र का उपयोग करता है आईडी लॉगिन जानकारी का उपयोग करने के लिए। इसलिए इस बात का एक बहुत ही तुच्छ उदाहरण है जैसे हम एक सार्वजनिक कंप्यूटर है, तो बुरे व्यक्ति में और फिर लॉग करता है वे बच रहे हैं कि कुकीज़ है। और कुकी सत्र के लिए बदल नहीं है। तो फिर हम शिकार में जाना है और फिर वेबसाइट में लॉग इन करें। कुकीज़ बदल नहीं है एक निश्चित सत्र के लिए। और फिर शिकार में लॉग तो वेबसाइट और छोड़ देता है। और फिर जो व्यक्ति वापस चला जाता है तो अभी भी अपने सत्र आईडी का उपयोग कर सकते हैं उनकी जानकारी का उपयोग करने के लिए। इसलिए इस बात का एक उदाहरण है हो सकता है कि कैसे। और फिर मैं बहुत ज्यादा चिंता नहीं होगी विशिष्ट कोड या कुछ के बारे में इस कारण सकता है कि इस तरह, लेकिन इस विचार से किसी प्रकार का कर क्या इस में शामिल चर रहे हैं। और फिर हेडर जोड़ तोड़ डेटा हमले का एक और प्रकार है कि दाऊद के बारे में बात की है की है। और यह सिर्फ करने के लिए संदर्भित करता है जब क्या हो सकता है प्रतिक्रिया, एचटीटीपी हमारे हेडर के अंदर प्रतिक्रिया ठीक से साफ नहीं किया गया है। और उदाहरण के लिए fields-- के किसी भी, किसी हेडर से एक लिख देगा यदि मूल्यों से अधिक कुछ भी शामिल करने के लिए क्या वे contain-- चाहिए और वास्तव में एक 200 उदाहरण के लिए, होते हैं ठीक स्थिति कोड, वे तो संभावित दुर्भावनापूर्ण कर सकता है चीजों को वे नहीं कर रहे हैं। लेकिन मैं भी चिंता नहीं होगी विशिष्ट कोड के बारे में ज्यादा कि, इस कारण बन सकता है समझ के बस की तरह लगता है कि जैसे उच्च स्तरीय बातें। मैं यह सब लगता है हम कवर करने के लिए किया है। कमाल है। किसी को भी किसी पर कोई सवाल है, हम कवर किया है कि चीजों की? हाँ। दर्शकों: तो एक तरह का अधिक साजो सवाल। सामग्री मुख्य रूप से ध्यान केंद्रित किया है प्रश्नोत्तरी 1 के बाद चीजों पर? मारिया ZLATKOVA: तो सवाल यह है कि सामग्री है प्रश्नोत्तरी 1 के बाद चीजों पर मुख्य रूप से ध्यान केंद्रित? तो ध्यान के बाद पर है अपवाद के साथ प्रश्नोत्तरी 1, हम में चीजों पर ध्यान केंद्रित करने की जरूरत है कि pset5 और डेटा संरचनाओं का एक बहुत हम कवर किया है कि। और हम नहीं कह सकते कि हम पहले कुछ भी अनदेखा कर सकते हैं यह रूप में अच्छी तरह से यह पर बनाता है क्योंकि कि। तो उस पर ध्यान केंद्रित, प्लस pset5 सामग्री लिंक सूचियों, ढेर सहित जैसे, कतार, और सब कुछ हन्ना खत्म हो गया है। हन्ना BLUMBERG: ठीक है। हाँ, हम सब सी सामान खत्म हो गया था पर बहुत बहुत जल्दी शुरुआत। लेकिन उस की समीक्षा करने के लिए सुनिश्चित करें। वापस जाओ और प्रश्नोत्तरी 0 समीक्षा देखो। एक जोड़े को और अधिक साजो नोट्स, बस, जबकि हम आपका ध्यान है। हम कार्यालय समय के लिए जा रहे हैं दोनों सोमवार और मंगलवार की रात को। वे एमडी 119 में होने जा रहे हैं। यह इसलिए, सभी वेबसाइट पर है आप इसे, कोई चिंता नहीं सुन नहीं है। मारिया ZLATKOVA: 8:30-11:00। हन्ना BLUMBERG: हाँ, 8:30-11:00। हम वहां होंगे। हम सवालों के जवाब देने वहाँ हो जाएगा। यह बहुत ठंड है और मजेदार है। आप लोग किसी भी सवाल पूछ सकते हैं आप प्रश्नोत्तरी 1 पर है। और प्रश्नोत्तरी 1 पर है बुधवार, इतनी अच्छी किस्मत। आप हो सकता है, किसी भी प्रश्न हैं यहां पर एक-एक हमसे बात आते हैं। कूल। बहुत - बहुत धन्यवाद। मारिया ZLATKOVA: बहुत बहुत धन्यवाद, दोस्तों। दर्शकों: याय। [वाहवाही]