डेविड मालन: सब ठीक है. इस CS50 है, और यह है सप्ताह नौ के अंत. इस पर एक बवंडर हो गया है पिछले कुछ दिनों से. आप घुटने रहे हैं और अगर समस्या, सात सेट यह गहरे में, काफी नहीं है एहसास नया सा है कि वहाँ में है. लेकिन हम टुकड़ा नहीं कर सकते, तो चलो देखते हैं सब कुछ एक साथ यहां संक्षेप में पहले तो अभी तक में बंद खड़ा एक और दिशा और देखकर और जहां हम जा सकते हैं. तो इस प्रकार अब तक, हम HTML के बारे में बात की है. हम सीएसएस के बारे में बात की है. हम PHP के बारे में बात की है. आप SQL का अनुभव करना शुरू कर दिया है. आज, हम एक बिट बात करेंगे जावास्क्रिप्ट के बारे में. लेकिन कैसे इन असमान के सभी करते हैं भाषा एक साथ फिट? इसलिए हम के बारे में पिछले सप्ताह बात की एक सर्वर होने की धारणा. तो चलो बस इस आयत आकर्षित यहाँ एक वेब सर्वर के रूप में. और एक वेब सर्वर निश्चित रूप से फ़ाइलों में कार्य करता है. और उन फ़ाइलों में से कुछ HTML फ़ाइलें हो सकता है. इसलिए चीजों में से एक है कि एक वेब सर्वर थूक कर सकते हैं एक फाइल किया जा सकता है हम सिर्फ इस तरह आकर्षित करेंगे कुछ HTML युक्त. तो आम आदमी की दृष्टि में, क्या एचटीएमएल आप करते हैं करता है? दर्शक: खोजः अच्छा. डेविड मालन: ठीक है, एक पेज अच्छी लग रही है, मुझे लगता है मैं साबित कर दिया है लगता है, हालांकि कि अन्यथा. तो एचटीएमएल आप पृष्ठों बाहर रखना है Structurally, और यह आप के लिए अनुमति देता है प्रकार के सौंदर्य की दृष्टि से एक पेज को चिह्नित, स्थैतिक सामग्री को चिह्नित, इतना है कि आप फिर एक वेब ब्राउज़र के साथ देख सकते हैं. लेकिन यह महत्वपूर्ण है. यह स्थैतिक सामग्री है. आप इसे लिखते हैं, आप इसे बचाने के लिए, और फिर आप यह जहाज. और वेब सर्वर फिर से कार्य करता है यह अपने दर्शकों के लिए ऊपर. लेकिन हम एक अलग का उपयोग कर बातें stylize कुल मिलाकर भाषा. हम एक शैली विशेषता का उपयोग करना शुरू कर दिया कुछ टैग पर. और शैली गुण हमें सेट करते हैं फ़ॉन्ट आकार और रंग की तरह बातें. और तुम शायद खोजने के लिए शुरू कर दिया है, या आप जल्दी ही फाइनल के लिए होगा संभावित परियोजनाओं, अभी तक अन्य आप सीएसएस में उपयोग कर सकते हैं कि गुण. और तो आम आदमी की दृष्टि में, क्या सच तो सीएसएस क्या करता है? उन उसके सिर्फ उदाहरण हैं. क्या यह आप करते हैं करता है कि एचटीएमएल क्या से प्रतीत नहीं होता हम इस प्रकार अब तक देखा है? दर्शक: अपने आप से शैलियों को परिभाषित करें. डेविड मालन: शैली को परिभाषित अपने आप से. तो आप के रूप में वर्गों की तरह चीजों को परिभाषित विशिष्ट रूप का सामना करना पड़ा, या हो सकता है एक दस्तावेज़ में नोड्स की पहचान तो आप उन्हें stylize कर सकते हैं. लेकिन अधिक विशेष रूप से, मुझे लगता है कि सीएसएस कहूँगा वास्तव में आप चीजों को लेने की सुविधा देता है पिछले मील और आप ज्यादा निर्दिष्ट करने के लिए अनुमति देता है ज्यादा ठीक सौंदर्यशास्त्र, अधिकांश भाग के लिए HTML की सुविधा देता है, जबकि आप अपने पृष्ठों की संरचना करें. और कुछ चूक कर रहे हैं, भले ही जैसे हम के लिए टैग देखा मोटे तौर पर बोल, जो एक शीर्षक टैग, बातें बड़ी और बोल्ड कर दिया. यह एक बहुत सामान्य परिभाषा है टैग की - बड़ा और बोल्ड. कि क्या फ़ॉन्ट आकार है? कि क्या रंग है? कि कैसे बोल्ड है? और सीएसएस अधिक सूक्ष्मता आप की सुविधा देता है उस तरह धुन बातें. और साथ ही लेआउट, कुछ के रूप में की आप को देखा है. और सच कहूँ तो, सीएसएस एक सा है एक गंदा भाषा की. यह आप कर सकते हैं कि में बहुत शक्तिशाली है आप है कि सचमुच किसी भी वेबसाइट इसके साथ आज वेब पर देखा है, लेकिन यह गर्दन में दर्द की तरह है. और आप में से कुछ अपने सिर पर टक्कर लगी है पहले से ही बस करने के लिए दीवारों के खिलाफ केंद्र एक मेनू पर की तरह बेवकूफ कुछ आप को मिल गया है, तो समस्या सात सेट पहले से ही उस बिंदु. लेकिन, उन चीजों का एहसास समय के साथ आसान हो. आप पैटर्न नोटिस शुरू. और फिर, गूगल अपने दोस्त हो जाएगा आप कर सकते हैं जो विभिन्न तरीकों के लिए समस्याओं के इन प्रकार का समाधान. और मैं सीएसएस के साथ कहने की हिम्मत है, और एचटीएमएल अधिक आम तौर पर, आप में समस्याओं को हल कर सकते हैं कई तरीके, जो सभी के लिए बहुत हो सकता है आप अच्छी तरह से कर सकता है, की तुलना में सही हो सी की तरह कुछ में, यहां तक ​​कि अब पीएचपी, या जावास्क्रिप्ट. विभिन्न अभी कई हैं चीजों को बाहर रखना करने के तरीके. लेकिन इस पाने के लिए शुरू कर दिया गन्दा, हमने कहा. बस की तरह अपने HTML commingling और शैली विशेषता के साथ अपने सीएसएस था एक छोटे से मैला. और इसलिए हम बजाय एक तरह से कहा, सूक्ष्म रूप में बोल रहा है, तो आप चाहिए कि कम से कम कारक के लिए शुरू शायद अपने सीएसएस बाहर. नहीं अपनी शैली विशेषताओं, लेकिन कम से कम क्या अंदर शैली टैग का उपयोग वेब पेज का हिस्सा है? दर्शक: सिर. डेविड मालन: सिर में. अब तक, हम केवल शीर्षक था वहाँ, लेकिन आप भी एक शैली जोड़ सकते हैं टैग, और आप मोटे तौर पर अपने सीएसएस डाल सकते हैं पृष्ठ के शीर्ष की ओर से बोल रहा हूँ. लेकिन तब हम एक कदम आगे बातें लिया और हम अधिक से बाहर है कि सकारात्मक असर एक अलग फाइल में. और इसलिए इन दो फाइलें थे किसी भी तरह अब जुड़ा हुआ है. और वास्तव में यह था कि था कि टैग. और क्या व्यापक में से एक था हमारे सीएसएस बाहर फैक्टरिंग के लिए की मंशा सभी को और अधिक? दर्शक: Reusability. डेविड मालन: Reusability. है ना? आप में देखा है सकते P-सेट पहले से ही सात कि पृष्ठों की एक बहुत, खरीद पृष्ठ, बिक्री पृष्ठ, पोर्टफोलियो पृष्ठ, शायद रहे हैं कुछ हद तक इसी संरचित. शीर्ष पर एक CS50 वित्त लोगो नहीं है आप इसे बदलने का फैसला किया है जब तक. पर एक पाद लेख नहीं है पन्ने के नीचे. और सीएसएस आप तो यह बाहर कारक करने के लिए अनुमति देता है यह एक अलग फ़ाइल में इतनी है कि अगर आप विश्व स्तर पर कुछ परिवर्तन करना चाहते हैं अपने पूरे साइट भर में, आप कर सकते हैं वास्तव में सिर्फ एक जगह में बदल जाते हैं. लेकिन आप संभवतः भुगतान एक कीमत होती है बाहर सकारात्मक असर होने से एक अलग में अपने HTML फ़ाइल से सीएसएस साथ यह संदर्भित फ़ाइल हम सोमवार को देखा जो टैग,. नकारात्मक पक्ष यह इस बात का क्या हो सकता है? हम कर रहे हैं जब तक एक सप्ताह पहले वापस सोच HTTP और टीसीपी / आईपी के बारे में और कैसे बात कर इंटरनेट काम करता है. यहां पर कुछ? दर्शक: यह अधिक समय लेता है. डेविड मालन: यह अधिक समय लेता है. क्यों? दर्शक: [सुनाई]. डेविड मालन: हाँ. तो यह यकीनन थोड़ा और अधिक समय लगता है. एक, सीएसएस जाहिर है क्योंकि नहीं एक ही फाइल में. तो अब तुम नहीं करना है एक, लेकिन दो अनुरोधों. और उन अनुरोधों में से प्रत्येक हम में देखा तथाकथित निरीक्षक में क्रोम, और हम एक, नेटवर्क टैब में देखा उन फ़ाइलों में से एक HTTP आवश्यकता हमने देखा अनुरोध है, जो लेता है समय के कुछ राशि. अब, शायद यह एक बहुत नहीं है. हो सकता है कि यह केवल 20 मिसे है. शायद यह 200 मिसे है. लेकिन, फेसबुक की तरह एक पृष्ठ के बारे में सोचना ज्यादा कर रहे हैं जो या सीएनएन, या गूगल, हम है उदाहरणों से बड़ा इस प्रकार अब तक देखा. उन पृष्ठों फ़ाइलों के दर्जनों हो सकता है, जिनमें से प्रत्येक एक आवश्यकता हो सकती है एक फ़ाइल की डाउनलोड करें. तो बातें संभवतः कर सकते हैं धीमा करने के लिए शुरू करते हैं. और विशेष रूप से इन दिनों जब हम सब हमारी जेब में मोबाइल फोन है और धीमी इंटरनेट कनेक्शन, के लिए होने कुछ और मिसे, कुछ इंतजार अतिरिक्त के लिए अधिक मिसे फ़ाइलें वास्तव में धीमी गति से किया जा सकता है. लेटेंसी का वर्णन करता है कि शब्द है तरह का है कि आप इंतजार कर आपको लगता है कि के लिए प्रतीक्षा करते समय अनुभव जानकारी के कुछ टुकड़े. लेकिन एक ऊपर है. तो यह एक के सभी तरह नहीं है - यह वास्तव में यहाँ एक झूला का एक सा है. अब नकारात्मक पहलू है, लेकिन क्या ब्राउज़रों कर सकते हैं वे बचने के लिए चालाक हो एक ही styles.css अनुरोध करने के लिए हो रही है फ़ाइल को फिर से क्या करना है हो सकता है? यह कैश. तो कैशिंग - सी ए सी एच ई - आम तौर पर बस को बचाने के लिए यहां का मतलब फ़ाइल आप पहली बार अनुरोध किया, और तो इसके लिए अपने कैश की जाँच करें. आप भंडारण कंटेनर की तरह कर रहे हैं की जाँच करें, और यदि आपके पास पहले एक styles.css की प्रतिलिपि, भले ही कुछ अन्य पी सेट, या किसी भी वेबसाइट में पृष्ठ, फिर यह अनुरोध करता है, बस देने के लिए उपयोगकर्ता है कि एक ही कैश्ड प्रति. यह अनुरोध परेशान मत करो. आप में से कुछ के रूप में, हालांकि, वहाँ नकारात्मक पी सेट में पर फिसल गया है. आप सर्वर पर एक परिवर्तन बनाने के लिए और अगर आप ब्राउज़र में वापस जाने के लिए और आप कभी कभी ब्राउज़र करता है, फिर से लोड आप पर एक एहसान और परेशान नहीं करता अपने styles.css फिर से फाइल को डाउनलोड पर आते हैं, क्योंकि, क्या हालात हैं कि फेसबुक का उपयोग करता है कि इन शैलियों घंटे या घंटे बदलने जा रहे हैं दिन पर दिन? यह बहुत कम है. वे समय के साथ बदलने के लिए, लेकिन नहीं हो सकता है मिनट से या घंटे के हिसाब से. तो एक चाल, बस FYI कर जब वेब विकास, अक्सर नीचे पकड़ रहा है उदाहरण के लिए महत्वपूर्ण पारी और फिर क्लिक करें उस वसीयत अपने ब्राउज़र में फिर से लोड, और आमतौर पर ब्राउज़र पुनः लोड बता आप पहले से ही है, भले ही सब कुछ, यह कैश में. तो फिर, upsides और downsides, लेकिन उन सभी को अंतत: निर्णय लेने के लिए डिजाइन. तो अब, हम सिर्फ किया नहीं यहाँ कहानी खत्म. मैं अब वापस और वापस और वापस जाने के लिए और अगर वापस, हम न सिर्फ परिचय शुरू एचटीएमएल, लेकिन PHP. तो आम आदमी की दृष्टि में, क्या PHP हमें करते हैं करता है? दर्शक: [सुनाई]. डेविड मालन: वह क्या है? दर्शक: तर्क का परिचय कोड में. डेविड मालन: हाँ, परिचय अपने कोड में तर्क. तो यह एक सच है प्रोग्रामिंग भाषा है छोरों, और चर, और साथ काम करता है, और शर्तों, और सभी की हम वापस रास्ते का उपयोग किया गया बातें जब खरोंच के बाद से. और पीएचपी, हमने देखा है, इस्तेमाल किया जा सकता है तो कमांड लाइन पर - यह कोई लेना देना जरूरी नहीं है वेब के साथ, कि भले ही है वास्तव में अपने मूल और क्या यह आदत पर अच्छा और के लिए अनुकूल होने के लिए - लेकिन आप केवल स्वभाव से PHP का उपयोग कर सकते हैं यह (एक प्रिंट है कि इस तथ्य का) समारोह, और एक printf () समारोह, या एक गूंज () समारोह. तरीकों के गुच्छों आप नहीं है PHP के साथ पाठ मुद्रित कर सकते हैं. इसलिए, अगर आप इस प्रोग्रामिंग का उपयोग कर सकते हैं भाषा उत्पादन करने के लिए वास्तव में हम पहले के बारे में बात कर रहे थे. आप गतिशील उत्पन्न कर सकते हैं अपने एचटीएमएल. इसके बारे में शायद सब नहीं. जैसे हो सकता है कि आप हार्ड कोड बातें, शीर्ष लेख, और पाद लेख, और लोगो, और अपने स्टाइल शीट, और यह सब कुछ. लेकिन पी सेट सात तरह कुछ के लिए, आप शेयरों में जोड़ तोड़ कर रहे हैं और जहां है, जो उपयोगकर्ता के पोर्टफोलियो दिखा आप गतिशील रूप से परिवर्तित करने के लिए कर सकता है जा रहा निश्चित रूप से PHP और यह देता तर्क का उपयोग एक प्रोग्रामिंग भाषा के रूप में आप उत्पादन गतिशील रूप कैंपेन्स पेज का. तो आप गतिशील वेबसाइटों के बारे में बात करते हैं, या वेब प्रोग्रामिंग, कि तुम सच के बारे में बात कर रहे हैं. एक PHP की तरह भाषा, या चीजों का उपयोग पायथन, या रूबी, या जावा, या बुलाया एक डेटाबेस क्वेरी के लिए अभी तक अन्य भाषाओं, अक्सर, या किसी अन्य सर्वर, और तब गतिशील HTML के बाहर थूक. अब अंतिम परिणाम एक अलग रूप में, है कि सबसे वेबसाइटों के HTML, आपके पी सेट सात, शायद है सहित एक बड़ी गड़बड़ यदि होने जा रहा आप स्रोत पर देखो एक ब्राउज़र में कोड. यह एक बड़ा सौदा नहीं है. इस बिंदु पर, जब हम देखभाल के बारे में शैली, हम देखभाल के बारे में आप लिखते हैं कि सामान. हम सामान के बारे में परवाह नहीं करेंगे कि क्या आपके कोड outputs. तो खरोज के बारे में चिंता मत करो यह है PHP अगर यहां कहा कि वास्तव में सामान outputting. सब के बाद, ब्राउज़र परवाह नहीं करेंगे, और एक मानव नहीं लग रही होगी वैसे भी स्रोत पर. हम कर्मचारियों, उदाहरण के लिए, होगा अपने PHP में लग जाना. तो मुझे एक त्वरित उदाहरण अब दे और क्यों की यह उपयोगी हो सकता है. तो सच में, मैं पिछले याद नहीं कर सकते मैं में एक समस्या को हल करने के लिए सी का इस्तेमाल किया समय असली दुनिया. यह स्नातक स्कूल में शायद था जब मैं एक भाषा का उपयोग करने के लिए आवश्यक है कि काफी कम स्तर पर था और मुझे दिया बहुत अधिक कुछ करने के लिए अवसर वास्तव में के रूप में कई सीपीयू को बचाने के लिए प्रदर्शन चक्र में मैं कर सकता के रूप में, बड़े हिस्से में मैं बहुत बड़ा डेटा सेट का उपयोग किया गया था, क्योंकि और हर CPU चक्र की गिनती की. और सच में, यहां तक ​​कि फोन की तरह बातों में इन दिनों और अन्य उपकरणों आप काफी के रूप में ज्यादा नहीं है, जहां स्मृति और आप के रूप में काफी नहीं है ज्यादा सीपीयू, तेजी भाषाओं का उपयोग अभी भी अपील कर रही है. लेकिन असली दुनिया में, जब आप बस करने के लिए एक साथ कुछ प्रोग्राम फेंक करना चाहते हैं कुछ डेटा का विश्लेषण, या आप एकत्र किया है के लिए पंजीकरण की एक पूरी गुच्छा कुछ छात्र समूह और आप को बहुत चाहते हैं जल्दी से ईमेल भेजने को स्वचालित उन में से हर एक को एक के बाद एक कुलसचिव, आप के लिए तक पहुँचने के लिए जा रहे हैं एक उच्च स्तर की भाषा से सी तो बात करो. PHP या पायथन, या रूबी की तरह कुछ, या कि मौजूद एक आधा दर्जन अन्य लोगों इन दिनों. लेकिन उन तीन शायद रहे हैं अभी सबसे फैशनेबल. और क्या इसका मतलब यह है कि आप खोल सकते हैं एक पाठ जीएडिट तरह संपादक या ऊपर बस शुरू तो और और सबसे कुछ चिंता करने के लिए बिना कोड लिखने करने के लिए बिना, संकलन के बारे में वास्तव में स्मृति प्रबंधन के बारे में चिंता, हालांकि ध्यान में रखते हुए कि एक छोटे से गंदापन अंत में वापस आ जाएगा डेटा सेट हो जाता है अगर आप काटने के लिए बड़ा या समस्या बड़ा हो जाता है. लेकिन क्या इस के लिए इसका मतलब हमें निम्नलिखित है. मुझे आगे जाना है और स्पेलर चलाते हैं से समस्या छह सेट. तो यह मेरा Trie आधारित कार्यान्वयन है मैं बड़ा पर इस्तेमाल किया है कि मैं इतनी अच्छी तरह से नहीं प्रदर्शन किया जहां बोर्ड. हम एक सप्ताह के समय में वापस आते हैं और करेंगे ऊपर खत्म किया जो लोग फिर से आना हमारे पिछले व्याख्यान में बड़े बोर्ड. लेकिन अब के लिए, मुझे आगे और अभी चलते हैं पाठ में अपने हल चलाने के लिए, और हम क्या करेंगे राजा जेम्स बाइबिल, और यहाँ हम चले. तो उन माना जाता है के सभी कर रहे हैं के बाहर गलत वर्तनी शब्दों राजा जेम्स बाइबिल. और मेरी कार्यान्वयन ले लिया कुल में एक दूसरी छमाही. इस पर तो बहुत बुरा नहीं विशेष कंप्यूटर. लेकिन कितना के बारे में सोच कोड मैं लिखना था. आप लिखना था कितना कोड सोचो. आप में खर्च कितने घंटे सोचो डी हॉल या अपने छात्रावास या जहाँ भी वास्तव में उस समाधान को कोडिंग. खैर, मैं वास्तव में एक उच्च स्तर की है PHP जैसे भाषा, नोट के ले मैं यहाँ क्या कर सकते हैं. सबसे पहले, यह बजाय है कि लगता है अपने वितरण कोड. इस स्पेलर नामक एक फाइल है. यह आज के भाग के रूप में उपलब्ध है वितरण कोड. और मैं सबसे पर मेरे हाथ लहर करने के लिए जा रहा हूँ विवरण, लेकिन यह वास्तव में है की कैसे का एक दिलचस्प उदाहरण आप बंदरगाह एक भाषा might PHP के लिए खत्म सी की तरह. मैं सचमुच दो पाठ खिड़कियां खोल दिया, speller.c की मेरी सी संस्करण के साथ एक, और मैं बस में अनुवाद शुरू कर दिया मेरे PHP के लिए सिर का उपयोग करने और इसे टाइप बाहर निकटतम समकक्ष कार्य करता है. इसलिए इन बातों में से कुछ अलग हैं. हम PHP का उपयोग नहीं करता है कि पिछली बार देखा था काफी उसी तरह से शामिल हैं. यह हालांकि, आम तौर पर की आवश्यकता का उपयोग करता है शामिल अस्तित्व है. परिभाषित करें से थोड़ा अलग है # सी में परिभाषित है, लेकिन है कि हम एक स्थिर बना कैसे. $, यह PHP में मौजूद है पता चला है argc इसलिए हम पहले देखा है. ये सिर्फ चर, सभी के हैं जो डॉलर के संकेत के साथ शुरू करते हैं. ये सिर्फ एक गुच्छा रहे हैं याद के अंक चल. , आप का स्वागत है इसलिए लंबी कहानी को कम कर रहे हैं इस के माध्यम से फ्लिप उत्सुक हैं, यह है लगभग एक लाइन के लिए लाइन रूपांतरण PHP में speller.c की सी संस्करण. और आप के लिए फिर से यह कर सकता है आधा दर्जन अन्य भाषाओं. लेकिन क्या दिलचस्प है कि यह है. या फिर क्या सच में बेहद निराशाजनक है इस है. मुझे आगे जाना है और के बारे में टाइप करते मैं कर रहा हूँ कि dictionary.php, और दावा आगे जाना है और फिर से लागू करने के लिए जा रहा समस्या यहां छह सेट. तो चलो इस में पहला प्रस्ताव है कि चलो में लागू किया जाएगा जो फ़ाइल, पीएचपी, इसलिए मुझे लगता है कि जैसे मेरे टैग खोलते हैं. मुझे अपने आप को एक वैश्विक दे दो. चर, $ आकार शून्य हो जाता है. और मैं देने जा रहा हूँ अपने आप को एक हैश तालिका. मैं इस बात के लिए एक हैश तालिका का उपयोग करेंगे. कैसे मैं PHP में एक हैश तालिका घोषणा है? डन. ठीक है. इतना खुला कोष्ठक बंद कोष्ठक का प्रतिनिधित्व करता है हमने देखा है के रूप में PHP में क्या? एक सरणी, लेकिन सकता है कि एक सरणी एक साहचर्य सरणी हो. एक साहचर्य सरणी है एक आंकड़ा संरचना है कि मूल्यों के साथ चाबियाँ एकत्रित करती है. अब संख्यानुसार अनुक्रमित सरलतम में सरणी, उन कुंजी क्या कर रहे हैं? शून्य, एक, दो, तीन, है ना? ओल्ड स्कूल वापस सी. से सामान लेकिन यह कर सकते हैं भी foo, और बार की तरह तार हो, या मैक्सवेल, या ऐसे किसी स्ट्रिंग. इसलिए मुझे लगता है कि उत्तोलन कर सकते हैं बस एक पल में. मुझे आगे जाना है और यह घोषणा करते हैं एक समारोह की तरह - की पहली लोड () करते हैं. तो समारोह लोड (). और पीएचपी कि में थोड़ी अलग है आप सचमुच तुम समारोह टाइप करें, लेकिन एक वापसी प्रकार प्रकार नहीं है. मुझे आगे जाना है और कहने जा रहा हूँ कि लोड () समारोह में लेना चाहिए तर्क $ शब्दकोश, बस जैसे सी संस्करण था. मैं स्मृति से कर रहा हूँ कि. और मुझे लगता है मैं कर रहा हूँ कि प्रस्ताव यह करने के लिए जा रहा है. मैं बस foreach क्या करने जा रहा हूँ. मैं एक समारोह कॉल करने के लिए जा रहा हूँ उस के नाम से गुजर फाइल () चर रहा है, जो फाइल $ शब्द के रूप में $ शब्दकोश. और फिर मेरे यहां पाश के लिए, मैं कर रहा हूँ के अंदर आगे बढ़ो और में संग्रहीत करने के लिए जा रहा मेरा $ शब्द सच हो जाता है कि $ तालिका. डन. ओह, रुको. डन. ठीक है. लोड () समारोह है PHP में कहते हैं. अब, यही कारण है कि काम करता है? और मैं एक तरह से यहाँ धोखा दे रहा हूँ. तो, एक, हमने देखा foreach संक्षेप में पिछले समय. यह सिर्फ आप पर पुनरावृति कर सकते हैं इसका मतलब है कि मैं के साथ परेशान कर के बिना एक सरणी और एन और प्लस प्लस, और यह सब कुछ. शब्दकोश, बेशक फ़ाइल का नाम है बड़े या छोटे तरह कुछ, दो हम पिछली बार इस्तेमाल शब्दकोशों. फाइल पाठ को खोलता है कि एक समारोह है फ़ाइल, लाइन से लाइन में इसे पढ़ता है, और आप एक विशाल सरणी वापस हाथ, जिसका तत्वों में से प्रत्येक एक है उस फ़ाइल से लाइन. इसलिए कि fopen के संयोजन है, और fread, और पाश, और fclose जबकि, और यह सब कुछ. शब्द सिर्फ मतलब है के रूप में अंत में, कि है चर मैं करने के लिए उपयोग किया जा रहा हूँ इस पाश में हर यात्रा पर. तो संक्षेप में, यहाँ इस एक लाइनर का मतलब जिसका नाम है फ़ाइल को खोलने शब्दकोश, चर, पर पुनरावृति यह लाइन से लाइन, और आप हर बार एक चर बुलाया शब्द में एक लाइन, दुकान, और फिर शब्द के साथ कुछ करो. मुझे क्या करना चाहते हैं? मैं अपने हैश तालिका में शब्द डाल करना चाहते हैं. खैर, मैं में कुछ डाल सकते हैं मेरे बस सी में जैसे तालिका हैश वर्ग कोष्ठक का उपयोग कर. यह मेरा हैश तालिका के लिए नाम है. मुझे लगता है कि हैश में सूचकांक के लिए जा रहा हूँ इस स्थान पर तालिका. तो शून्य कोष्ठक नहीं, एक कोष्ठक नहीं. ब्रैकेट बोली गंदें शब्द बोलना कुछ, जो कुछ भी है कि शब्द है. और बस की तरह आप में हो सकता है आपका हैश तालिका काम Trie, आप सिर्फ दुकान प्रभावी रूप से एक बूलियन, उलझाव या स्पष्ट रूप से. डन. मैं मान सच भंडारण कर रहा हूँ. अब चीजों की एक जोड़ी है मैं यहाँ पर कोनों में कटौती कर रहा हूँ. तकनीकी तौर पर, एक होने जा रहा है के अंत में कष्टप्रद नई लाइन, / n, इन शब्दों के प्रत्येक. तो मैं शायद एक PHP समारोह को बुलाना चाहिए कहा जाता काटना (), जो होगा काफी का शाब्दिक है कि बंद काट लें. और मैं वास्तव में करने की जरूरत है एक अन्य बात करते हैं. मैं शायद प्रत्येक पर आकार बढ़त चाहिए चलना है, तो मैं ट्रैक रख रहा हूँ विश्व स्तर पर यह क्या है की. और सच में, और इस में से एक है अगर आप PHP के stupider पहलुओं, एक वैश्विक चर का उपयोग कर, आप की जरूरत स्पष्ट रूप से आप कर रहे हैं कि कहने के लिए. इसलिए मैं वास्तव में वैश्विक में टाइप करने के लिए जा रहा हूँ अब $ आकार, वैश्विक $ तालिका, और मेरे समारोह पूरा हो गया है. तो काफी पहले के रूप में सरल है, लेकिन नहीं शायद सी से भी कम समय लगा संस्करण हो सकता है? ठीक है. तो अब चेक () समारोह में करते हैं. यह कम से कम ले लिया है देखते हैं यह सी. तो में हमें ले लिया है कि अंत पर घंटे मुझे आगे जाना है और यह घोषणा करते हैं एक समारोह के रूप में की जाँच करें. है, जो तर्क शब्द में ले जाता है स्पेलर से आ जा. और मैं बस की जांच करने के लिए जा रहा हूँ अगर निम्न चर isset, मेज शब्द के ब्रैकेट strtolower - चलो मेरे कोष्ठकों के सभी शेष हैं - तो सच वापसी. वरना - कि वास्तव में मुश्किल था इस कार्यक्रम का हिस्सा. वरना, झूठी वापसी. डन. यही) (चेक है. अब, क्यों यह काम करता है? खैर, एक मैं, एक शब्द में पारित जो एक स्ट्रिंग है. दो, मैं हैश के अंदर जाँच कर रहा हूँ $ तालिका कहा जाता है, जो मेज,. मैं फोन करके लोअरकेस करने के लिए मजबूर कर रहा हूँ में () tolower काफी समान एक समारोह सी, लेकिन इस पूरे शब्द करता है, नहीं एक ही चरित्र. और कहा कि वहाँ दूसरे शब्दों में, सेट है एक मूल्य दूसरे शब्दों में, सेट किया जाता है, अगर यह सच है, तो हाँ, इस एक शब्द है. मैं भार के साथ वहाँ रखा क्योंकि (). और अगर नहीं, मैं झूठी वापस जाने के लिए जा रहा हूँ. अब दूसरों के लिए आसान कर रहे हैं. समारोह आकार (), मैं ऐसा कैसे कर सकता हूं? मैं अनिवार्य रूप से $ आकार लौट सकता हूँ. लेकिन मैं तकनीकी रूप से करने की जरूरत है इस कष्टप्रद बात करते हैं. और वास्तव में सुन अप, मैं काट रहा था एक भी कई कोने. मैं वास्तव में वैश्विक $ तालिका करने की ज़रूरत है. लेकिन कहा जा रहा है,) अनलोड कि. अनलोड () अद्भुत है. समारोह उतारना (). कैसे मैं) (उतारना लागू करना चाहते हैं? डन. ठीक है. तो (), स्मृति प्रबंधन है अनलोड पूरी तरह से आप के लिए ध्यान रखा PHP और एक बहुत की तरह कुछ उच्च स्तर की भाषा का. इसलिए यह आश्चर्यजनक है. आखिर हम अतीत बिताया था क्यों पसंद सी लेखन पर आठ प्लस सप्ताह जाहिरा तौर पर बहुत धीमी गति से, वास्तव में समय घंटे के दसियों के साथ लेने वाली समस्याओं के हमारे बेल्ट के नीचे काम करते हो? वैसे, एक बात के लिए, यह काम कर सकते हैं छोटे कार्यक्रमों के लिए ठीक है. यह निश्चित रूप से ऊपर निकल मेरी विकास के समय. लेकिन चलो देखते हैं क्या होता असली दुनिया में. मुझे इस निर्देशिका में चलते हैं टर्मिनल विंडो में. स्पेलर है. और एक अलग रूप में सूचना, और तुम हो सकता है सेट समस्या में इस का सामना करना पड़ा छह या समस्या सात सेट. तुम सख्ती की जरूरत नहीं है . PHP के साथ PHP फाइलों खत्म होता है. आप पर है कि पहले की तरह एक लाइन में कहें तो बहुत ऊपर है, कि एक विशेष रेखा है वाक्य रचना की है कि अनिवार्य रूप से लगता है इसका मतलब PHP बुलाया और इसका इस्तेमाल करने के कार्यक्रम इस फाइल की व्याख्या. इसलिए अब कोई भी वास्तव में जानता है कि मैं एक PHP कार्यक्रम चल रहा हूँ. मैं यह रूप में हालांकि अभी इसे चला सकते हैं कुछ सी में संकलित किया गया लेकिन यहाँ बात है. दरअसल, चलो फिर से यह करते हैं. Dropbox/pset6 /. स्पेलर है. ठीक है, 0.44 सेकंड. यह तेजी इस समय मिल गया. अब के PHP संस्करण में चलते हैं. अच्छा स्पर्श. लेकिन अभी कितना समय लगता है मैं कार्यालय समय में बचाया. ठीक है. तो 3.59 सेकंड, जो वास्तव में या तो सही बात नहीं करता है. लेकिन वह लंबी कहानी को कम इसलिए है क्योंकि तुम एक बड़ी रकम बाहर मुद्रण कर रहे हैं जब सामान की स्क्रीन के लिए, कि खुद बातें धीमा. यह वास्तव में सीपीयू क्या लिया उपकरण 3.59 सेकंड में था 0.44 लिया जो सी के विपरीत सेकंड सबसे हाल ही में. वह सही मायने में एक आदेश है विभिन्न परिमाण. तो कहाँ है कि कीमत से आ रहा है? क्यों यह इतना धीमी है? क्यों PHP इतनी खराब प्रदर्शन करता है? डेनिएल? दर्शक: तुमने सच में नहीं एक हैश तालिका का उपयोग करें. डेविड मालन: मैं वास्तव में नहीं था एक हैश तालिका का उपयोग करें. तो मैं एक तरह से किया था. तो यह एक साहचर्य सरणी है. सबसे अधिक संभावना है PHP में लोग कर रहे हैं वास्तव में स्मार्ट, वे नीचे का इस्तेमाल किया कार्यान्वित हुड एक वास्तविक हैश तालिका सी या सी + + की तरह कुछ में. लेकिन. हाँ. दर्शक: [सुनाई]. डेविड मालन: हाँ. इसलिए मैं अब लिखा कार्यों में से प्रत्येक - वास्तव में, आप कह सकते हैं कि एक बार फिर एक थोड़ा जोर से? दर्शक: कार्यों में से प्रत्येक कि आप भी शामिल है एक बहुत अधिक पूर्ण क्षमता से - डेविड मालन: तो यह बिल्कुल सच है. हम कर रहे हैं कि एक बहुत अधिक भूमि के ऊपर नहीं है वास्तव में केवल पर ध्यान केंद्रित करके नहीं देख मैं सिर्फ लिखा था जो dictionary.php,. इसके विपरीत, एक पूरी दुभाषिया नहीं है पृष्ठभूमि में चल रहा है. दरअसल, मैं इस कार्यक्रम में भाग गया है, यह संकलित शून्य और लोगों नहीं चल रहा था मेरे इंटेल सीपीयू के लिए बनाया गया है. दरअसल, यह लाइन से लाइन चल रहा था वास्तव में लग रहा है कि PHP कोड जैसे हम इसे टाइप. और तो आप एक का उपयोग जब भी व्याख्या की भाषा, तुम वास्तव में यह कीमत चुकानी है. यह पढ़ने के लिए कुछ समय ले जा रहा है नीचे करने के लिए अपनी फ़ाइल शीर्ष करने के लिए छोड़ दिया सही है, और तब प्रत्येक निष्पादित लाइन बार - बार. अब हकीकत में, विशेष रूप से वेब पर, आप वास्तव में इस प्रक्रिया को तेज कर सकते हैं के परिणाम कैशिंग द्वारा PHP कोड व्याख्या की जा रही. और वह है, वेब पर समझ में आता है क्योंकि आप एक उपयोगकर्ता की तरह नहीं है, तो मुझे यहाँ, लेकिन 1,000 या 10,000 उपयोगकर्ताओं, तो फ़ाइल है कि शायद पहली बार पहुँचा यह उसके बाद धीमी है, लेकिन यह बहुत तेजी से है. लेकिन यह भी, फिर से, एक व्यापार बंद है. और एक अनुसंधान डेटा की तरह कुछ के लिए सेट, या यहाँ तक कि जैसे बड़े कुछ यह अपने उपयोगकर्ताओं को अंततः होगा कि मंदी महसूस करने लगते हैं. तो संक्षेप में, भाषाएं हैं व्याख्या , बहुत प्रचलित बहुत लोकप्रिय है, और स्पष्ट भाषा तुम शायद रहे हैं समस्याओं को हल करने के लिए जब तक पहुँचना चाहिए CS50 के लिए बाद में. लेकिन वास्तव में आप कितना एहसास हुड के नीचे के लिए दी लेने हैश में वास्तव में उन पिछले कई हफ्तों टेबल, और पेड़, और कोशिश करता है, अंततः करने के लिए वास्तव में इस्तेमाल कर रहे हैं जो खुले कोष्ठक की तरह चीजों को लागू करने, वर्ग कोष्ठक, जो हम अब कर सकते हैं प्रदान के लिए कृतज्ञता ले. तो चलो अब एक नजर डालते हैं इस वेब संदर्भ में. और मुझे लगता है कि वहाँ पिछली बार उल्लेख किया PHP में superglobals का एक गुच्छा है कि वास्तव में प्रासंगिक नहीं हैं कमांड लाइन पर. वे संदर्भ में और अधिक प्रासंगिक हो की एक वेब संदर्भ में PHP का उपयोग कर. तो क्रम में एक वेब सर्वर पर PHP चल HTML की तरह सामान उत्पन्न करने के लिए. और हम $ _GET और $ _POST पर नजर है, और कि जहां स्वतः उपयोगकर्ताओं 'है आप एक जमा करते हैं, इनपुट बस समाप्त होता है में समाप्त होने वाले किसी फ़ाइल के रूप में. एक वेब पर PHP उपकरण की तरह सर्वर. लेकिन हम संक्षेप में $ _COOKIE और $ देखना. आम आदमी की दृष्टि में, एक कुकी के रूप में क्या है आप संदर्भ के में यह समझते हैं वेब का उपयोग कर? दर्शक: कंप्यूटर पर फ़ाइल. डेविड मालन: हाँ. यह उपयोगकर्ता के कंप्यूटर पर एक फ़ाइल है कोई भी वेबसाइट द्वारा लगाए आप यात्रा करने के लिए होता है. तो क्या आप जब तुम जाओ फेसबुक, जब जाना जब तुम जाओ bankofamerica.com, करने के लिए google.com पर, आप लगभग किसी भी करने के लिए जाओ दुनिया में वेबसाइट इन दिनों, cs50.net सहित, एक कुकी बोया जाता है अपने कंप्यूटर पर, जो है में रैम में संग्रहित एक मूल्य या तो अपने अपने ब्राउज़र की स्मृति, या में कंप्यूटर कभी कभी वास्तव में एक फाइल जमा अपनी हार्ड ड्राइव पर. और आम तौर पर उस फ़ाइल में क्या संग्रहित है आपके उपयोगकर्ता नाम, न अपनी नहीं है पासवर्ड, आम तौर पर कुछ नहीं संवेदनशील वेबसाइट तो नहीं है, जब तक उनकी सुरक्षा के साथ अच्छा है, बल्कि यह एक बड़ा अद्वितीय पहचानकर्ता के बीच है अन्य बातों के. उस पर लगाए एक बड़ा यादृच्छिक संख्या है आपकी कंप्यूटर लेकिन आप के रूप में के बारे में सोच सकते हैं से तरह तरह की एक आभासी हाथ के टिकट एक क्लब या कुछ मनोरंजन पार्क है कि अनुमति देता स्टाफ, उस के मालिकों सेवा तुम कौन हो, याद करने के लिए. बड़ा यादृच्छिक संख्या की तरह है तो अगर 12345678, जाहिर है कि हालांकि के रूप में इस बात का भी यादृच्छिक नहीं लगता है, हाथ स्टाम्प कि जब तुम यात्रा facebook.com पहली बार के लिए, वे अपने हाथ पर उस नंबर स्टाम्प. और फिर तुम HTTP बात है क्योंकि एक ब्राउज़र जा रहा है, और क्योंकि फेसबुक जाहिर है एक वेब के रूप में ही बोलता है सर्वर, प्रोटोकॉल HTTP का कहना है कि किसी भी समय आप बाद में यात्रा facebook.com, चाहे वह एक दूसरे बाद में, एक घंटे बाद, यहां तक ​​कि अगले दिन, तो जब तक आप स्पष्ट रूप से नहीं किया है लॉग आउट, जो प्रभावी रूप से अपने हाथ धोने की तरह है. HTTP आप मौजूद होना चाहिए कहते हैं आपके हाथ स्टाम्प हर बार जब आप उस वेबसाइट पर लौटें. फेसबुक तो वे क्या करता है कि हाथ के टिकट पर देखने के लिए और वे 123456789, ओह, का कहना है. मैं पहली नज़र में पता नहीं है कि इस डेविड Malan, कैम्ब्रिज में है मैसाचुसेट्स, लेकिन वे जांच कर सकते हैं उनकी डेटाबेस और कहते हैं, ओह, व्यक्ति जिसका कंप्यूटर हम 123456789 लगाए पर डेविड Malan, कैम्ब्रिज से है मैसाचुसेट्स. उसकी प्रोफाइल तो उस उपयोगकर्ता दिखाओ पेज या अपने समाचार फ़ीड. लेकिन एक समस्या यहाँ नहीं है अगर यह वेब वास्तव में कैसे काम करता है. चलो एक त्वरित उदाहरण पर एक नज़र रखना. वास्तव facebook.com कहना चलें. हम वहाँ जा सकते हैं लेकिन इससे पहले, चलो मुझे आगे जाना है और क्रोम के ऊपर खुला यहाँ इंस्पेक्टर नीचे. मुझे नेटवर्क टैब में देखें. और अब आगे बढ़ो और टाइप करते https://facebook.com में. हम नहीं दिख रहा है और इतना है कि मैं क्या कर रही हूँ उन रीडायरेक्ट और कचरे के सभी समय उन के माध्यम से देख रहे हैं. मुझे हिट दर्ज करते हैं. ठीक है. हम अनुरोध की एक पूरी गुच्छा देखते हैं. फेसबुक आता है. फ़ाइलों की एक पूरी गुच्छा है. और यहाँ है, मेरे उल्लेख की प्रति विलंबता पिछली बार, कि HTTP अनुरोधों का एक बहुत. लेकिन पहले एक शायद है सबसे दिलचस्प. तो चलो यहाँ नीचे स्क्रॉल करते हैं, और मैं एक दूसरे में में ज़ूम करेंगे. इस तरह का होने जा रहा है एक गड़बड़, लेकिन चलो देखते हैं. फेसबुक हमें एक भेज रहा है सामान की पूरी गुच्छा. लेकिन वाह, दिलचस्प. वे एक नहीं बल्कि चार रोपण कर रहे हैं यहाँ मेरे हाथ पर हाथ टिकटों. सेट कुकी, सेट कुकी, सेट कुकी, सेट कुकी. और कुछ सुविधाओं को यहाँ कर रहे हैं. वे सब के सब कुछ उल्लेख समय समाप्ति की तरह. फेसबुक उम्मीद कर रहा है और ऐसा लगता है 2015 तक मुझे याद है. इसलिए कि संभवतः समय आ गया है जिसके द्वारा मैं बाहर लॉग इन करना होगा या वे बस हूँ स्वचालित रूप से मैं कर रहा हूँ मान वापस नहीं आ रही. तो यह है कि वास्तव में एक अच्छा है समय की राशि है. और कुछ अन्य कर रहे हैं बातें यहाँ पर जा रहा. यह कुकी जबरन प्रतीत होता है यह 1970 में समाप्त हो गई कह कर नष्ट कर दिया कुकीज़ अस्तित्व में पहले. तो ब्राउज़र बस जा रहा है ठीक ग्रहण करने के लिए, उस तरह है हाथ स्टाम्प धोने. लेकिन अब अपने ब्राउज़र में आता है जब बाद में एक अनुरोध - मुझे आगे जाना है और यह करते हैं फिर और लोड करें. अब मेरे पास वापस स्क्रॉल शीर्ष अनुरोध और नीचे जाना यहाँ, हेडर अनुरोध करता हूँ. इस पर ध्यान दें. तो अब मैं नहीं प्रतिक्रिया हेडर के तहत कर रहा हूँ, लेकिन यह अनुरोध हेडर कहते हैं नोटिस. और नोटिस कि के हिस्से के रूप में अपने ब्राउज़र पुनः लोड से टकराने के बाद उसके अनुरोध किया है निम्नलिखित कम से कम भेजा जानकारी. नहीं सेट कुकी, लेकिन कुकी. इसलिए इस लाइन है, HTTP हेडर तो अपने ब्राउज़र प्रकार का है जहां, बात करने के लिए की मेरी यह पेश जानने के बिना मेरे फेसबुक के निरीक्षण के लिए हाथ. तो इन कुकीज़ हो सकता है क्या के लिए तो इस्तेमाल किया? तुम कौन हो, याद है या याद करने के लिए कैसे कई बार आप कुछ किया गया है, या वास्तव में कुछ भी. तो यहाँ counter.php है. और मुझे फॉन्ट पर ज़ूम करते हैं. और मैं इस पृष्ठ, नोटिस पुनः लोड हर बार यह याद है कि कितनी बार मैं वहाँ गया है. वैसे, यह सब है कि प्रभावशाली नहीं है. , चलो बस उस टैब को बंद करने दें और अब के लिए वापस जाओ http://localhost/counter.php. ओह, यह दिलचस्प है. यह अभी भी याद मैं टैब बंद है. और सच कहूँ तो, मैं ब्राउज़र बंद करते हैं, सही तरीके से लागू करते हैं, तो मैं अभी भी इस उपयोगकर्ता है कि याद कर सकता वह या वह जो पहली बार था, और केवल एक बार मैं क्रोम के मेनू में जाना है, जो यहाँ पर यहाँ है, और करने के लिए जाना इतिहास, और ब्राउज़िंग डेटा साफ़ करें क्लिक करें, आप में से कुछ में हो सकता है के रूप में अतीत, उसके बाद ही होगा अपने कुकीज़ वास्तव में वेब के दौरान हटा दिया विकास. तो, हम चले हैं - चलो यहाँ जीएडिट को बंद करते हैं. और हम इस फाइल को अब जाना है. मुझे में चलते हैं हमारे vhosts / लोकलहोस्ट / सार्वजनिक, और मुझे करने दो. counter.php. यह एक बहुत है कि नोटिस सरल कार्यक्रम. यह एक बहुत ही सरल वेबसाइट है. इसलिए फाइल के ऊपर सिर्फ टिप्पणी है. लेकिन यहाँ आप कर सकते हैं कि एक नई लाइन है पी सेट सात में पहले से ही देखा है session_start (). इस PHP कोड की एक पंक्ति है कि अनिवार्य रूप से, वेब सर्वर बनाने बताता है हाथ टिकट और बनाने के लिए सुनिश्चित करें हाथ टिकटों की जांच कर लें. यही सब है कि रेखा करता है, और यह हमारे लिए उस प्रक्रिया के सभी करता है. तो मैं बस मिल गया नोटिस यहां दो शाखाएं हैं. यदि इस के अंदर काउंटर कुंजी नामक विशेष वैश्विक चर $ देखना सेट है - दूसरे शब्दों में, कुछ मूल्य अगर वहाँ - चलो यह मिलता है और यह एक स्थानीय में स्टोर चर $ काउंटर कहा जाता है. वरना, डॉलर काउंटर आवंटित डिफ़ॉल्ट मान 0. अब यहाँ है कि PHP का एक पहलू है एक आशीर्वाद और एक अभिशाप दोनों. PHP एक छोटे से मैला है. तो, जबकि सी में, क्या होगा काउंटर के दायरे में किया गया है या तो यहाँ या यहाँ? यह सीमित कर दिया गया होता उन घुंघराले ब्रेसिज़ के लिए. लगता है क्या? PHP में, यह भी उन के बाहर मौजूद है घुंघराले ब्रेसिज़, यहां, और यहां, और यहां, और यहां, और और भी नीचे. इसलिए मैं इस अर्थ में एक आशीर्वाद है कहना आप के रूप में सोचने की जरूरत नहीं है कि हम सप्ताह पहले किया था के रूप में मुश्किल. लेकिन यह भी है कि एक अभिशाप की एक सा है आप में एक चर का उपयोग जहां कोई बात नहीं पीएचपी, इस तरह एक कार्यक्रम में कम से कम, इसके लिए विश्व स्तर पर सुलभ है बेहतर या बदतर के लिए. तो आप अब कि मन में रखने के लिए है अपने चर अपरिभाषित नहीं किया जा सकता है. तुम उन्हें कहीं परिभाषित हो सकता है. लेकिन क्या मैं अंत में क्या करने जा रहा हूँ? मुझे लगता है कि वैश्विक के अंदर स्टोर करने के लिए जा रहा हूँ के एक मूल्य के रूप में चर काउंटर परिणाम की कुंजी काउंटर प्लस 1 कर. तो यह सिर्फ गणित है ऐसा ही करता है कि काउंटर के incrementation. और मैं भंडारण कर रहा हूँ कि तथ्य यह है कि यहाँ वापस में मूल्य है का मतलब अनिवार्य रूप से करने के लिए डेटाबेस अद्यतन उपयोगकर्ता 123456789 किया गया है कि याद यहां दो बार. और मैं अगली बार इसे फिर से करना है जब मैं पृष्ठ पुनः लोड, यह जाँच करने के लिए जा रहा है मेरे हाथ स्टाम्प और ओह, कहते हैं, उपयोगकर्ता 123456789 अब है तीन बार यहाँ किया गया. और तो क्या PHP और इसी तरह की भाषा हमारे लिए क्या कर रहे हैं वे ढूँढ़ रहे है बाहर कैसे और कहाँ और कितनी देर इस विशेष में मूल्यों की दुकान superglobal. और यह अगले समय superglobal मैं पृष्ठ पर जाएँ तरह की जादुई है पूर्व में आबादी, मूल्यों से भरा है कि वहाँ आप पिछली बार थे, कि, एक दूसरे एक हफ्ते पहले था कि क्या पहले, या 2013 में और अब हम बात कर रहे हैं 2015 के बारे में. PHP और वेब सर्वर ले देखभाल इस बात का आप सभी के लिए की. दर्शक: [सुनाई]. डेविड मालन: PHP में चर रहे हैं आप जब तक अनिवार्य रूप से हमेशा वैश्विक एक समारोह के अंदर उन्हें घोषित, और फिर वे के लिए स्थानीय कर रहे हैं केवल समारोह. लेकिन मैं किसी भी नहीं लिखा गया है क्योंकि कार्यों, वे अब प्रभावी रूप से कर रहे हैं यहाँ मेरी पूरी फाइल भर में वैश्विक. दर्शक: एक रास्ता है उन्हें स्थानीय बनाने के लिए? डेविड मालन: कोई है उन्हें स्थानीय बनाने के लिए रास्ता? केवल कार्यों में उन्हें लपेटकर द्वारा. जो के नवीनतम संस्करण में पीएचपी, आप के साथ ऐसा कर सकते हैं एक गुमनाम समारोह. लेकिन में उस पर और अधिक जावास्क्रिप्ट के संदर्भ. लेकिन संक्षिप्त जवाब नहीं है. एक लंबे समय तक इसका जवाब हां में है. नाइस. अच्छा प्रश्नोत्तरी प्रश्न. ठीक है. तो अंत में, पृष्ठ ही है वास्तव में बहुत आसान. सूचना है कि मैं PHP मोड, याद से बाहर निकलने के लिए एक बार कि नीचे यह सब के सब नीचे बस थूक होने वाली है ब्राउज़र को कच्चे बाहर. मैं भेजना चाहते हैं क्योंकि, जो ठीक है उपयोगकर्ता कुछ HTML, लेकिन मैं चाहता हूँ गतिशील रूप से HTML कि अद्यतन करने के लिए. और मैं यह कर सकता है एक तरह से सॉर्ट करने के लिए है की बहुत जल्दी PHP में वापस ड्रॉप मोड, का उपयोग खुला ब्रैकेट सवालिया निशान बराबर चिह्न, और फिर उत्पादन मूल्य काउंटर की. या यह इस एक छोटे से गुप्त लग रहा है बराबर चिह्न बस कुछ वास्तव में है इस के लिए वाक्यात्मक चीनी printf ($ काउंटर). लेकिन सच कहूँ तो, कि सिर्फ एक छोटे से बदसूरत है और कष्टप्रद एक छोटे से टाइप करने के लिए. इसलिए PHP बहुत अच्छी तरह से इस सुविधा प्रदान करता है आप बस अधिक यह कह सकते हैं जहां संक्षेप में एक ही तरीके से. तो क्या नीचे चल रहा है हुड? चलो जल्दी से नेटवर्क पर देखें यहाँ counter.php के लिए टैब. और मुझे आगे और पहले चलते हैं चलो अपने कुकीज़ साफ़ करते हैं. चलो स्पष्ट ब्राउज़िंग डेटा के बाद से समय की शुरुआत. अब यहाँ पर वापस चलते हैं. अब के पृष्ठ को फिर से लोड करते हैं. और मैं वापस शून्य पर हूँ. मेरे हाथ स्टाम्प धोया गया है, मैं अब एक नया कुकी मिलता है. मैं नेटवर्क टैब पर देखने के लिए और यदि वास्तव में प्रतिक्रिया हेडर, नोटिस पर देखने के लिए उपकरण मुझे भेज रहा है जिसका नाम कुछ हद तक एक कुकी मनमाने ढंग से, लेकिन एक तरह से यथोचित, PHPSESSID. और यह वास्तव में मुझे इस भेज रहा है बड़ा यादृच्छिक संख्या. यह संख्या काफी नहीं है. यह काफी हेक्साडेसिमल नहीं है. यह अल्फ़ान्यूमेरिक स्ट्रिंग किसी तरह का है, लेकिन शायद यह यादृच्छिक है. और वह हाथ स्टाम्प है तो मैं बात कर रहा हूँ कि बात. इस बीच मैं तो पुनः लोड क्लिक करें और अगर मेरी दूसरी के लिए यह दूसरी लाइन पर देखने के लिए अब अनुरोध, नोटिस कि मेरे अनुरोध हेडर PHPSESSID इस समानता के आधार पर शामिल हैं, कुकी सेट, लेकिन अभी कुकी नहीं. और कहा कि मेरी ब्राउज़र की प्रस्तुति है मेरे हाथ स्टाम्प की. तो अब एक नमूना के रूप में है, और हम अधिक बात करेंगे एक सप्ताह में या तो इस, लेकिन के बारे में किस तरह से यह आपके पड़ता है कमजोर, अपने फेसबुक अकाउंट कमजोर, और अन्य ऐसे कमजोर खाते? दर्शक: किसी को अपने कुकी दिया है. डेविड मालन: हाँ, अगर किसी को अपने कुकी है. मैं बहुत आप में से कुछ की तरह, वास्तव में मतलब एक क्लब या एक तरह से करने की कोशिश की है हो सकता है मनोरंजन पार्क, आपको कुछ करने की कोशिश अगर इस तरह, यद्यपि स्टाम्प कॉपी करने के लिए पीछे की ओर एक और व्यक्ति के हाथ पर, और फिर वह या वह के रूप में इसे प्रस्तुत करता है अपने ही, यह वास्तव में दिखता है अगर समान, 123456789, तो वेब सर्वर जाहिरा तौर पर अभी तक चल रहा है कि उपयोगकर्ता तुम है कि विश्वास है. और यह वास्तव में एक मौलिक है खतरे आप कुकीज़ का उपयोग किसी भी समय क्योंकि कोई बस को इसलिए पैरोडी अगर आपके कुकी बात, क्या यह बाहर के आंकड़े सही मायने में यह कॉपी करके या तो है अपने कंप्यूटर पर देख कर और ठीक है, की तरह किया जा रहा है. दाऊद की कुकी, बहुत आगे JJ3JIK है और और फिर वे जानना काफी समझदार हो कैसे की तरह मैन्युअल रूप से भेजने के लिए कि एक ब्राउज़र से या एक से कुकी वे लिखते कार्यक्रम, वे पूरी तरह से कर सकता है आप के रूप में एक वेबसाइट में लॉग इन करें. यह होने का नाटक करने के लिए है कि मुश्किल नहीं है किसी और हम पी सेट फिर से आना जब तक दो, जो क्या शुरू की? दर्शक: क्रिप्टोग्राफी. डेविड मालन: एक छोटी सी क्रिप्टोग्राफी का सा. सरल क्रिप्टोग्राफी, कम से कम में मानक संस्करण, लेकिन क्रिप्टो फिर भी. कम. आप सभी को एनक्रिप्ट तो अगर यह पता चला है कि आप कुछ का उपयोग कर इन हेडर अब, एसएसएल के रूप में अधिक परिचित जानते हो सकता है सिक्योर सॉकेट लेयर, या https:// यूआरएल, तो इन सब बातों का हम किया गया है पर glancing वास्तव में एन्क्रिप्टेड रहे हैं, जो यह आप की तरह है कि इसका मतलब है हाथ स्टाम्प नहीं पढ़ सकते हैं. केवल facebook.com कर सकते हैं, या google.com, या इस मामले में, उपकरण कर सकते हैं कि हाथ स्टाम्प पढ़ा. दुर्भाग्य से, हालांकि, और फिर, यह है एनएसए सामान के साथ सब भी उपयुक्त देर से, यहां तक ​​कि एसएसएल नाज़ुक है. और यह मुश्किल है कि वास्तव में नहीं है यहां तक ​​कि एन्क्रिप्शन दरार करने के लिए. इसलिए एन्क्रिप्शन खुर से ज्यादा, नहीं लेकिन चकरा देनेवाला द्वारा decrypting में ब्राउज़र डेटा को समय से पहले. लेकिन फिर, हम आपको तंग करेंगे उस के साथ लंबे समय से पहले. अभी के लिए, बस डर हो. यह दुखद अंत एक तरह से सच है. ठीक है. तो, जहां यह अब हमें छोड़ करता है? खैर, चलो यह करते हैं. आगे जाने के लिए और एक त्वरित लेते हैं हम एक ब्रेक लेने के चिढ़ाने से पहले. और मुझे लगता है कि हम एक लंबा सा भटकती हूँ लगता है आज, लेकिन हम में गोता लगाने के लिए जा रहे हैं कुछ नया और सेक्सी, जो होगा और भी अधिक के लिए अपनी भूख. तो यह है कि नमूना है. तो एसक्यूएल, हम के बारे में बात कर शुरू किया कभी तो संक्षेप में पिछले समय. तुम सच में अपने हाथ गंदे मिलेगा पी सेट सात में से कुछ के साथ. और आम आदमी की दृष्टि में, क्या एसक्यूएल करता है - एस क्यू एल - तुम्हारे लिए क्या? यह क्या है? हाँ. दर्शक: मान लीजिए कि आप डेटा का उपयोग करते हैं. डेविड मालन: हाँ. यह आप का उपयोग डेटा चलो एक डेटाबेस में. संरचित क्वेरी भाषा. और यह अनिवार्य है एक प्रोग्रामिंग भाषा. यह की विशेषताएं हैं कि हम भी कक्षा में उपयोग नहीं करेगा. लेकिन आप को प्रभावी ढंग से कर सकते हैं कार्यों को परिभाषित. वे जमा कर रहे हैं बुलाया एसक्यूएल में प्रक्रियाओं. लेकिन हम काफी सरल है और अभी यह रखेंगे कुछ बुनियादी कार्यों के लिए इसका इस्तेमाल करते हैं ,, डेटा का चयन डेटा डालने की तरह डेटा को अद्यतन करने, और डेटा को हटाने. और अगर आप वास्तव में एक डेटाबेस के बारे में सोच सकते हैं, एक SQL डेटाबेस की तरह, बस के रूप में माइक्रोसॉफ्ट एक्सेल जा रहा है. एसक्यूएल रिलेशनल को संदर्भित करता है क्योंकि डेटाबेस, जहां रिश्ता सिर्फ तालिकाओं का मतलब है. पंक्तियाँ और स्तंभ. तो कुछ भी आप एक स्प्रेडशीट में डाल सकते हैं इस या गूगल डॉक्स की तरह, आप किसी SQL डेटाबेस में डाल सकता है एक टेबल घोषित करने से. अब, आप वास्तव में कैसे उपयोग करते हैं जानकारी है कि? खैर, आदेशों के साथ या इस तरह प्रश्नों. का चयन करें, सम्मिलित करें, अद्यतन, और DELETE. अधिकांश भाग के लिए, उन हैं आप की आवश्यकता होगी चार केवल सामग्री काफी शक्तिशाली कुछ करना समस्या में सात सेट. अब दिन में वापस, आप वास्तव में होगा एक में एक डेटाबेस के साथ बातचीत काले और सफेद टर्मिनल विंडो इस तरह से एक पलक शीघ्र. और हम पर चल रहे डेटाबेस उपकरण है, जो MySQL कहा जाता है स्वतंत्र और खुला स्रोत डेटाबेस इंजन. यदि आप गूगल और विकिपीडिया पढ़ा है लेख, आप नाम है कि पता चल जाएगा कुछ के लिए संक्रमण का एक सा लिनक्स के संस्करणों. मारिया डेटाबेस वास्तव में है एक MySQL की बात करने के लिए तो कांटा. लंबी कहानी संक्षेप में, ओरेकल MySQL खरीदा. ओरेकल एक बड़ी कंपनी है. लोगों को यह चिंता है कि कर दिया गया है अब और नहीं, काफी के रूप में खुला स्रोत बने हुए हैं तो यह है कि MySQL के सिर्फ एक प्रति है , अभी भी मुक्त अभी भी खुला स्रोत, और डिफ़ॉल्ट रूप से फेडोरा लिनक्स में स्थापित. लेकिन इस में एक दर्द की तरह है एक से परिचित हो गर्दन डेटाबेस इस तरह से. इसलिए हम CS50 उपकरण में शामिल कहा जाता है एक मुक्त खुला स्रोत उपकरण phpMyAdmin. सिर्फ एक संयोग है कि यह PHP में लिखा है. कोई मौलिक नहीं है यहां PHP के लिए की जरूरत है. लेकिन यह सिर्फ एक वेब आधारित उपकरण है कि हम में स्थापित, मुफ्त में डाउनलोड हमें करने की अनुमति देता है कि उपकरण, एक ग्राफिकल यूजर इंटरफेस के साथ जो पी सेट सात डेटाबेस के साथ पता लगाने के लिए जो नए डेटाबेस बनाने के लिए, अपने खुद के अंतिम परियोजना के लिए कहते हैं आप चाहें तो जैसे, और अंततः बनाने CS50 वित्त की तरह गतिशील वेबसाइटों आप डेटा क्वेरी करने के लिए अनुमति देते हैं और उस गतिशील रूप से डेटा अद्यतन करें. आप का उपयोग करने के लिए नहीं जा रहे हैं बस एक साधारण पाठ फ़ाइल या सीएसवी. आप वास्तव में एक स्मार्ट डेटाबेस का उपयोग कर सकते हैं आप अधिक निष्पादित कर सकते हैं कार्यक्रम इतना है कि सिर्फ पढ़ने से परिष्कृत प्रश्नों रैखिक सब कुछ के माध्यम से. तो उदाहरण के लिए, यह है कि हम क्या दे रहा है पी सेट सात के लिए बॉक्स से बाहर. यह जाहिरा तौर पर कम से कम के साथ एक मेज है जिनमें से एक तीन कॉलम, यूजर का नाम, जिनमें से एक, हैश है और अन्य जो की आईडी है. लेकिन दिलचस्प बात यह है, और अभी तक यहाँ एक सोचा बाहर तंग, उपयोगकर्ता नाम ठीक है, शायद पहले से ही अनूठा है? मेरा मतलब है, सबसे अधिक किसी भी वेबसाइट, अगर तुम वहाँ, एक उपयोगकर्ता नाम है दो कैसर नहीं किया जा सकता. दो Malans नहीं हो सकता. दो jharvards नहीं हो सकता. अपनी अनूठी. अन्यथा, वे नहीं जानते कि जो jharvard यह वास्तव में है. तो क्या यह भी के लिए प्रेरणा हो सकती है बाईं तरफ एक तिहाई स्तंभ होने एक तरह लग रहा है जो वहाँ बुलाया आईडी, इसी अनूठा है कि संख्या? यह थोड़ा निरर्थक लगता है पहली नज़र में मेरे लिए. क्यों यह है करने के लिए मजबूर हो सकता है न केवल अद्वितीय उपयोगकर्ता नाम, अद्वितीय संख्या है, लेकिन यह भी? दर्शक: वे हो सकता था एक ही पासवर्ड का. डेविड मालन: लोगों को हो सकता है एक ही पासवर्ड, सुनिश्चित करें. यह बिल्कुल हो सकता है. लेकिन वे इस अद्वितीय उपयोगकर्ता नाम है, तो मैं कि सच नहीं है कि बहस होगी क्या बात है, क्योंकि वे में टाइप करें, तो उनके यूजर का नाम, मैं केवल जांच की जरूरत है उनके पासवर्ड, जिनमें उनके हैश. और क्यों? दर्शक: तेजी से खोज. डेविड मालन: तेजी से खोज. क्यों? दर्शक: आईडी सिर्फ एक है. डेविड मालन: आईडी सिर्फ एक चरित्र है, या अधिक सटीक होना, यह एक संख्या है, तो यह शायद 32 बिट है या ऐसा कुछ. जबकि यूजर का नाम, जाहिरा तौर पर जेसन Hirschhorn के ऊपर की तरह है हास्यास्पद लंबे, और यह जा रहा है स्ट्रिंग के लिए मुझे बहुत अधिक समय लगेगा शायद एच आई आर एस सी एच एच ओ आर एन तुलना, और आदेश में इस तरह से एक / 0 या कुछ और, विरोध के रूप में, जेसन को देखने के लिए बस मुझे कह उपयोगकर्ता नंबर दो दे. यही कारण है कि 32 बिट है. यह एक एकल INT है कि आप की तुलना करने के लिए है. और वास्तव में, यह ठीक है क्यों डेटाबेस करने के लिए अद्वितीय आईडी आवंटित करने के लिए करते हैं उन में पंक्तियों. अब अन्य डेटा प्रकार क्या कर रहे हैं वहाँ जाहिरा तौर पर int और इसके अलावा इस तरह तार? खैर, अधिक उचित हो सकता है, जैसे SQL डेटाबेस, MySQL, चार क्षेत्रों है. और गुमराह एक छोटे से चार एक भी चार नहीं है. एक डाटाबेस में एक चार क्षेत्र है एक या एक से अधिक वर्ण, लेकिन यह एक है पात्रों की निश्चित संख्या. तो उदाहरण के लिए, मैं पर जाने के लिए अगर आप पहले से ही है, या हो सकता है phpMyAdmin के रूप में जल्द ही एक समस्या सात सेट, और मुझे जाना होगा अपने डेटाबेस के लिए, और सिर्फ मनोरंजन के लिए, के नाम से एक नया टेबल बना सकते हैं सिर्फ दो स्तंभों के साथ परीक्षण. मैं तब जाएँ क्लिक करेंगे. और यह काफी परिचित हो जाएगा, आप टिंकर खासकर के रूप में चारों ओर अपने दम पर. यहाँ मैं बनाने के लिए आईडी टाइप हो सकता है प्रकार int की एक नई तालिका. लेकिन यहाँ मैं के लिए उपयोगकर्ता नाम टाइप हो सकता है कि पहले तालिका बहलाना. और मैं एक पूरी गुच्छा है नोटिस से चुनने के लिए प्रकार की. और यह भी है क्यों phpMyAdmin एक तरह से अच्छा है. ऐसा लगता है कि आप में आत्म - शिक्षण की तरह है बस तरह की बात है, और क्लिक करें, और कर सकते हैं लटकती मेनू को देखो, और से अनुमान कि क्या शक्तियों एसक्यूएल आपको देता है. और वास्तव में, मैं चार चुनते हैं, मैं तो लंबाई, या कैसे निर्दिष्ट करने के लिए है कई मूल्यों, कितने घर का काम. तो बहुत आम मूल्यों की तरह बातें कर रहे हैं 255 है, लेकिन लगता है कि थोड़ा लंबा है. आमतौर पर एक उपयोगकर्ता नाम के लिए आठ है. लेकिन इन दिनों है कि एक छोटे से छोटा है. तो यह एक डिजाइन निर्णय है. यह 8 वर्ण अधिकतम है 32, 255, 1000? यह आप पर निर्भर सच है. लेकिन एक चार क्षेत्र एक निश्चित संख्या है. तो भी कुछ चुनते हैं और आप की तरह कर रहे हैं आप एक लंबे समय तक उपयोगकर्ता नाम चाहते हैं तो खराब कर दिया है. चुनें भी कई और क्या है नकारात्मक पक्ष यह है? दर्शक: [सुनाई]. डेविड मालन: यह बेकार है. बस सी में की तरह, आप एक बड़ा है अगर स्मृति का हिस्सा आप की जरूरत है, की तुलना में आप कर रहे हैं सिर्फ समय बर्बाद कर और अंतरिक्ष बर्बाद. तो एक विकल्प के रूप में, वहाँ मौजूद है द्वारा इस समस्या का हल जो VARCHAR, एक निश्चित लंबाई के रूप में लंबाई नहीं इलाज लेकिन एक अधिकतम लंबाई, और एक का उपयोग कर के रूप में चर घर का काम की संख्या, जो तब आप के रूप में ही रूप में कई घर का काम का उपयोग करने के लिए जाता वास्तव में जरूरत है. यह एकदम सही लगता है. क्यों हम से छुटकारा नहीं मिलता चार डेटा तब लिखें? क्या नकारात्मक पक्ष का हो सकता है लगता है जो varchars, का उपयोग जैसे कि यह एक अच्छा जीत है? हाँ? दर्शक: [सुनाई]. डेविड मालन: ठीक है, अच्छा है. इसलिए अपने डेटा के सभी एक ही है अगर लंबाई, चिंता का विषय क्या है? दर्शक: तुम बर्बाद कर रहे हैं क्योंकि उन सब को बता कर डेटा. डेविड मालन: तो अपने डेटा के सभी है अगर एक ही लंबाई, हालांकि, मैं तर्क होता है कि एक अधिकतम लंबाई को निर्दिष्ट VARCHAR पर से अलग नहीं है चार पर एक निश्चित लंबाई को निर्दिष्ट अगर यदि आप पहले से उस नंबर पता है. लेकिन वहाँ वास्तव में है, और मैं की तरह हूँ उस जवाब से वास्तविकता निकालने एक अधिकतम अभी भी वहाँ है कि, जो कर सकते थे विशेष रूप से अगर आप परेशान हो है कि किसी व्यक्ति का नाम मुठभेड़ तुम नहीं किया है कि असामान्य रूप से लंबे समय तक आशा. और यह भी एक छोटे से कम कुशल है वास्तव में varchars पर खोज करने के लिए , खोज घर का काम करने का विरोध किया है, खासकर बहुत सारे है और है कि लंबे समय सारणी के लिए डेटा की बहुत सारी. तो यहाँ भी, विषयगत फिर से है कोई स्पष्ट विकल्प. तो बस आप अन्य का भाव देने के लिए ब्याज की हो सकती है कि डेटा प्रकार या तो के लिए P-सेट सात या में भविष्य, INT नहीं है. BIGINT, वहाँ जो लंबे की तरह है. यह 64 बिट हो जाता है. आप में देखेंगे जो दशमलव, वहाँ एक बहुत है जो समस्या सेट, समस्याओं का क्लीनर जवाब हम नाव और चल साथ सामना करना पड़ा अस्पष्टता इशारा करते हैं. और फिर DATETIME नहीं है. है कि एक डेटा प्रकार सचमुच नहीं है एक साल की तरह देखने के लिए, एक माह, एक दिन, और एक घंटे, मिनट, और सेकंड. लेकिन SQL डेटाबेस भी है बातें हम अनुक्रमित फोन करता हूँ. और एक सूचकांक है कि आप कुछ है तालिका को बनाते समय निर्दिष्ट खोजों और अन्य संचालन करना अधिक कुशल. विशेष रूप से, कहा जाता है कि वहाँ कुछ तुम सकता है कि प्राथमिक सूचकांक इस प्रकार के रूप में घोषित. हम साथ आप के लिए ऐसा किया उपयोगकर्ताओं को तालिका हम आपको दे. मैं स्वयं पुनः बनाने थे लेकिन अगर नोटिस यहाँ देने के उपयोगकर्ताओं को तालिका यह उपयोगकर्ताओं का एक नाम. मैं पहले से ही आईडी निर्दिष्ट. मैं int निर्दिष्ट. मैं के साथ उपयोगकर्ता नाम निर्दिष्ट अधिकतम 32 वर्ण. लेकिन हम रखने के लिए काफी है इस में स्क्रॉल विस्तृत खिड़की, नोटिस वहाँ एक है मैं निर्दिष्ट कर सकते हैं अन्य बातों का गुच्छा. एक, मैं गुण निर्दिष्ट कर सकते हैं जैसे, आप क्या, यह पता है INT अहस्ताक्षरित होना चाहिए. मैं नकारात्मक संख्या नहीं करना चाहती, तो चलो यह अहस्ताक्षरित बनाते हैं. अशक्त यहाँ प्रासंगिक नहीं है क्योंकि मैं करने के लिए प्रत्येक उपयोगकर्ता चाहते हैं एक अद्वितीय संख्या है. मैं यह शून्य होने के लिए नहीं करना चाहती. लेकिन यह दिलचस्प है. मैं आईडी या तो है कि निर्दिष्ट कर सकते हैं प्राथमिक इस डेटाबेस की कुंजी है, या यह है अद्वितीय, या यह अनुक्रमित, या पूरा पाठ है. इसलिए आज के प्रयोजनों के लिए, लंबी कहानी संक्षेप में, प्राथमिक मतलब है कि इस करेगा दोनों धारणा और तकनीकी रूप से हो हम विशिष्ट करने के लिए उपयोग किए जाने वाले क्षेत्र उपयोगकर्ता की पहचान. हम उपयोगकर्ताओं को देख तो, जब इस प्रकार है ज्यादातर द्वारा उन्हें देखने के लिए एक वादा के कि अद्वितीय पहचानकर्ता. और डेटाबेस सुनिश्चित करेगा कि आप अगर एक उपयोगकर्ता संख्या 3 है, तुम नहीं कर सकते शारीरिक रूप से किसी अन्य उपयोगकर्ता डालने कि एक ही नंबर 3 के साथ. डेटाबेस सिर्फ इनकार कर देगा अपने परिवर्तनों को बचाने के लिए. आप कर सकते हैं, क्योंकि एक अच्छी बात कौन सी है अपने आप से अपने आप को बचाने. स्वयं वैकल्पिक रूप से, उपयोगकर्ता नाम के लिए. तो दूसरी पंक्ति, याद है, यूजर का नाम क्षेत्र है. यहाँ तो दूसरी पंक्ति यूजर का नाम है, हम अब तक वहां छोड़ दिया पर किया था. तो और क्या मैं निर्दिष्ट करने के लिए चाहते हो सकता है? मैं एसक्यूएल के अनुसार, अनुमति नहीं हूँ दो प्राथमिक कुंजी निर्दिष्ट करने के लिए. आप जहां आप एक संयुक्त कुंजी निर्दिष्ट कर सकते हैं दोनों क्षेत्रों में लग रहे हैं, लेकिन वे नहीं कर सकते व्यक्तिगत रूप से प्राथमिक कुंजी हो. तो उस सवाल से बाहर है. इसलिए मैं जो चुनने के लिए चाहते हो सकता है? खैर, एक अद्वितीय भावना में समान है आप यह निर्दिष्ट जहां प्राथमिक कुंजी क्षेत्र अनूठा हो जाएगा, लेकिन यह बात है एक होने जा रहा नहीं मैं हर समय का उपयोग करें. और हम सब यह एक का उपयोग करने के लिए नहीं जा रहे हैं फिर क्या कारण के लिए समय है? अगर यह संभवतः धीमी है यह एक लंबे समय तक यूजर का नाम है. यह सिर्फ समय की बर्बादी है. सूचकांक, इस बीच, यह है कि निर्दिष्ट करता है अद्वितीय होने जा रहा है, लेकिन मैं चाहूँगा नहीं आप नीचे अपने जादू का काम यह तेजी से करने के लिए मेरे लिए बनाने के लिए हुड इस मैदान पर खोज करते हैं. तो यह शायद यहाँ प्रासंगिक नहीं है. उपयोगकर्ता नाम के लिए, मैं तर्क होता है कि अद्वितीय एक अच्छा जवाब है. लेकिन हम और अधिक उपयोगकर्ताओं को बना दिया है कि लगता है सिर्फ उपयोगकर्ता नाम से दिलचस्प, हैश को, और आईडी नंबर. क्या हम लोग पूरा नाम दे दिया तो क्या होगा? हम उन पतों को दे दिया तो क्या होगा और उनके बारे में अन्य डेटा? खैर, अगर आप निर्दिष्ट में एक कॉलम डेटाबेस अनुक्रमित है, इसका मतलब है कि MySQL, या ओरेकल, या जो कुछ भी डेटाबेस आप अपने जादू काम करना चाहिए, का उपयोग कर रहे हैं और फैंसी डेटा किसी तरह का उपयोग एक पेड़, या एक Trie, या एक तरह की संरचना हैश तालिका, या गारंटी करने के लिए कुछ कि आप का उपयोग कर डेटा के लिए खोज करने पर उस विशेष क्षेत्र पर चयन - जैसे मुझे सब लोग बताते हैं कि ऑक्सफोर्ड स्ट्रीट पर रहता है. इस तरह एक क्वेरी. यदि आप पहले से निर्दिष्ट किया है कि आपको लगता है कि मैदान पर एक सूचकांक चाहते हैं, खोजों बहुत तेजी से, बहुत हो जाएगा. आप एक सूचकांक, सर्वश्रेष्ठ निर्दिष्ट नहीं करते हैं आप कर सकते हैं एक रेखीय खोज अगर है इसे हल नहीं है. लेकिन आप सूचकांक, स्मार्ट निर्दिष्ट अगर डेटाबेस बनाया है जो लोगों को - अब पेड़ जो जानते हैं कि आप जैसे लोग और कोशिश करता है और हैश तालिकाओं - स्वचालित रूप से इस तरह के एक डेटा का निर्माण होगा सुनिश्चित करें कि राम में संरचना उन खोजों बहुत तेजी से कर रहे हैं. पूर्णपाठ इस बीच, भावना में समान है लेकिन आप वाइल्डकार्ड करने की अनुमति देता खोजों, जैसे मुझे सब लोग बताते हैं कि के साथ शुरू है कि सड़कों पर जीवन जो भी कारण के लिए पत्र हे. आप वाइल्डकार्ड खोज कर सकते हैं ऐसे ही. या, शो की तरह अधिक सम्मोहक बातें मुझे शब्द है जो कोई - मुझे जिसका नाम शुरू होता है सभी को दिखाने एक विशेष पत्र के साथ. आप कीवर्ड के लिए खोज कर सकते हैं इस तरह से. ठीक है. तो, डिजाइन के अवसर वहाँ संभवतः. दूसरों रहे हैं कि मैं हूँ पर मेरे हाथ की लहर. यह तुम हो सकता है पता चला है कि विभिन्न भंडारण इंजन. और यह हम आवश्यकता से अधिक रहस्यमय है निश्चित रूप से समस्या के लिए सात सेट. डिफ़ॉल्ट रूप से, तुम लोग प्रयोग कर रहे हैं InnoDB बुलाया कुछ. आप में यह कहीं का उल्लेख देखेंगे phpMyAdmin के इंटरफेस सबसे अधिक संभावना है. लेकिन अन्य डिजाइन जानते हैं कि वहाँ संभावित की हैं कि निर्णयों ब्याज अंतिम परियोजनाओं आते हैं आप वेब आधारित कुछ करो. लेकिन चलो यह करते हैं. के आगे जाना है और इस पर डाल दो. एक कहानी के लिए एक नमूना के रूप में स्क्रीन आप को शामिल, एक रूममेट, और एक गिलास दूध. चलो एक दो मिनट का समय निकाल दो. या तो यहां टूट गया. आप के आसपास छड़ी कर सकते हैं, के आ जाने पीठ, एसक्यूएल पर थोड़ा और अधिक लग रही है, और फिर साथ जावास्क्रिप्ट का एक सा पी सेट मन में आठ. ठीक है. तो, आप एक के बारे में सोच रही हो जाओ बहुत आसानी से पैदा कर सकते हैं कि कोने मामला एक डेटाबेस का उपयोग कर, या के संदर्भ में सच कहूँ तो, यहां तक ​​कि वास्तविक दुनिया चीजों का उपयोग एटीएम पैसा प्राप्त करना. तो यहाँ एक रेफ्रिजरेटर है. आप में भी एक मिल गया है अपने छात्रावास या अपने घर. और अगर आप एक रूममेट, और दोनों के लिए मिल गया है आप वास्तव में उदाहरण के लिए दूध की तरह. तो आप एक दिन क्लास से घर आते हैं. वह या वह अभी तक वापस नहीं है. आप फ्रिज खुला. आप वास्तव में दूध का एक बड़ा गिलास चाहते हैं. कोई दूध नहीं है. तो तुम क्या करते हो? आप फ्रिज बंद करें. आप अपनी चाबी ले लो. आप वर्ग के लिए बाहर जाना. और अगर आप उन पर सीवीएस में लाइन में मिलता है स्वयं चेकआउट बातें, जो हमेशा अब वास्तव में से ले कैशियर कर रही है. किसी भी तरह. तो फिर, इस बीच, डॉट डॉट डॉट अपने रूममेट घर आता है और वह या वह इसी प्रकार एक उत्कंठा है कुछ दूध के लिए. तो वह या वह, फ्रिज खुलती अंदर लग रहा है, और ओह, लानत. कोई दूध. तो वह या वह बाहर सिर, जाने के लिए होता है केवल था जो अन्य सीवीएस, एक किसी कारण के लिए दूर ब्लॉक, और वह या वह कुछ दूध खरीदने के लिए लाइन में हो जाता है. इस बीच, आप वह घर आते हैं, या वह घर आता है, और क्या करते हैं आप अंततः है? दो बार के रूप में ज्यादा दूध. लेकिन क्या तुम सच में पसंद नहीं है दूध ज्यादा है. तो अब आप कि अब इतना दूध उनमें से एक बस खट्टा जाना जा रहा है अंततः. तो यह एक बहुत बुरा समस्या है. है ना? तो क्या हुआ? तो मौलिक रूप से, इस तरह है एक हास्यास्पद उदाहरण के. लेकिन हुड के नीचे, क्या हमें मिला है यहाँ होने तुम दोनों की जाँच की है के कुछ टुकड़े के राज्य स्मृति, फ्रिज. तुम दोनों राज्य की जाँच कुछ चर की. आप दोनों एक निष्कर्ष आकर्षित किया आप तो पर काम किया. लेकिन दुर्भाग्य से, जबकि अपने रूममेट दुकान पर था, उस के राज्य चर बदल गया है, वह या वह वापस आया और अब राज्य बदलना चाहता है, लेकिन यह पहले से ही बदल गया है उसे या उसके पर. और जाहिर है, वह या वह नहीं होता उन्हें पता था कि अगर दुकान के लिए चला गया आप अपने रास्ते पर पहले से ही थे. तो असली दुनिया में, कैसे तुम सकता है आप मान लें कि इस समस्या से बचने एक फ्रिज, आप एक रूममेट है, और आप वास्तव में दूध पसंद है? दर्शक: संचार. डेविड मालन: संचार. ठीक है. लेकिन आप कैसे संवाद सकता है? दर्शक: एक नोट छोड़ दें. डेविड मालन: ठीक है, एक नोट छोड़ दें? हमेशा के लिए एक नोट छोड़ शो के प्रशंसकों. ठीक है, तो हमेशा एक नोट छोड़ दें, या एक ताला या कुछ और की तरह सही मायने में डाल आपके रहता है कि रेफ्रिजरेटर पर राज्य के निरीक्षण से रूममेट कि चर. अब, क्यों यह करने के लिए सार्थक हो सकता है समस्या सात, या एटीएम के लिए निर्धारित किया है. खैर, एक एटीएम में एक दुनिया की कल्पना जहां आप एक एटीएम तक जाने के लिए सक्षम हो सकता है यहां मशीन, और यहाँ एक और एटीएम. और यह काफी अक्सर होता है. और, यदि आप दो एटीएम कार्ड था लगता है जो प्राप्त करना संभव है. और तुम दोनों मशीनों में लॉग इन करें प्रभावी रूप से एक साथ, उम्मीद है कोई नहीं देख रहा है. और फिर आप अपना पिन में टाइप करें मोटे तौर पर एक साथ. और फिर आप एक संतुलन क्वेरी करना आपके पास कितनी नकदी को देखने के लिए. और आप $ 100 है हम कहते हैं अपने खाते में छोड़ दिया. तो अनिवार्य रूप से एक साथ, आप दर्ज, एक, शून्य, शून्य का कहना है. और उम्मीद है कि आप कुछ पैसे वापस मिल. लेकिन आप कितना पैसा वापस मिल सकता है? अब दिन के अंत में कंप्यूटर, वे करने के लिए बात कर रहे हैं, खासकर अगर सर्वर, जरूरी बातें नहीं करते आदेश में कहा कि उम्मीद है. इसलिए की वजह से होता है, क्या लगता है वहाँ जो कुछ भी नेटवर्क की गति मुद्दों कर रहे हैं, या CPU मुद्दे हैं, या ऐसा कुछ भी, लगता है कि पहला एटीएम अपने संतुलन और चेक ओह, यह व्यक्ति $ 100 है, देखता है. लेकिन फिर विचलित हो जाता है क्योंकि हो सकता है एक बैकअप हो रहा है और इसलिए यह है धीमा. या हो सकता है, नेटवर्क की जाँच करते समय कनेक्शन थोड़ी धीमी क्योंकि मिला यह सिर्फ होता है. वे भौतिक उपकरणों रहे हैं. तो इस बीच, दूसरी एटीएम है एक ही सवाल पूछ रहे हैं. डेविड कितना पैसा है? $ 100 का जवाब है. लेकिन पहले एटीएम नहीं अभी बाकी है क्योंकि संदेश दोनों $ 100 घटाना भेजा एटीएम बैंक की तिजोरी का निरीक्षण किया है, अब वहाँ 100 $ वहाँ है, और देखकर दोनों मशीनों संभावित हैं एक जवाब थूक जा रहा है. अब, यह कुछ समझ में आप के लिए अच्छा है बैंक अंततः क्या करता है अगर द्वारा शून्य से 100 के लिए राशि परिवर्तन है चर बराबर की स्थापना अपने विरोध के रूप में बैंक, 0 के बराबर खाते 100 शून्य से कर रही है. अब बैंक के लिए सबसे खराब स्थिति में - या बैंक के लिए सबसे अच्छा में है, इस बीच, वे आप $ 200 दे, और आपके बैंक खाते अब नकारात्मक दिखाता है सच नहीं है जो $ 100, सभी में आपको फायदा होगा. लेकिन मुद्दा यह है कि इस दौड़ हो रही दो ही कमरे में रहते के लिए शर्त दूध, या नकदी पाने के लिए कोशिश कर दो एटीएम के लिए और एक तिजोरी की स्थिति परिवर्तित एक ही समय में मौजूद किसी भी आप एक डेटाबेस है समय. अब समस्या में इस समस्या को सात सेट समझ में उठता है कि आप एक खरीदते हैं फेसबुक शेयर की हिस्सेदारी, और उसके बाद के लिए आप में से एक दूसरे में हिस्सेदारी खरीदने के उदाहरण फेसबुक स्टॉक, आप बनाने की जरूरत प्रोग्रामर के रूप में एक निर्णय. अद्यतन करने के लिए कैसे तय करने के लिए आदेश में डेटाबेस, बाधाओं आप जा रहे हैं एक कि शेयर के लिए पंक्ति, और यह है इसे लागू करने के लिए एक ही रास्ता है. और तुम में से एक हिस्सा है के लिए जा रहे उनके स्टॉक टिकर प्रतीक है जो अमेरिकन प्लान, इस उपयोगकर्ता नाम, या यह उपयोगकर्ता के लिए आईडी, अद्वितीय पहचानकर्ता. लेकिन एक ही कहानी यहां भी हो सकता है. जैसा कि आप देखेंगे कि आप, एसक्यूएल में एक का चयन कैसे करते हैं समस्या में जब आप देखते हैं सात सेट, ओह, डेविड एक हिस्सा है फेसबुक शेयर की. मुझे अब यह दो शेयरों होने के लिए बदल लेते हैं, वह खरीदना चाहता है क्योंकि एक दूसरा हिस्सा. लेकिन दाऊद वास्तव में दो था लगता है ब्राउज़र विंडो खोलने, या लगता है कि यह दो पत्नियों के साथ एक संयुक्त खाता है, और उन दोनों को प्रदर्शन करने की कोशिश कर रहे हैं एक ही आपरेशन, वहाँ भी है, संभावित होने के लिए एक निर्णय के लिए मौजूद है पिछले के आधार पर बनाया दुनिया की राज्य - खाते में एक हिस्सा है - अब और दोनों लोगों को, या दोनों सर्वर, दो शेयरों के लिए यह वेतन वृद्धि कहने के लिए प्रयास करें. लेकिन इस मामले में, आप चार्ज हो सकता है मुझे दोनों के शेयरों के लिए पैसा है, लेकिन सिर्फ इतना है कि एक बार incremented. तो संक्षेप में, मौलिक समस्या यहाँ, मजाक के साथ के रूप में एक छोड़ने के बारे में ध्यान दें, या उस पर एक ताला डाल है अगर दो लोग, या दो सूत्र - पीठ खरोंच करने लगता है - कुछ चर के राज्य निरीक्षण कर सकते हैं और फिर उस चर बदलने की कोशिश, लेकिन उन दो बातों पर नहीं हुआ है एक ही समय पर बाधित प्राप्त कर सकते हैं डेटा कर सकते हैं, हो अन्य बातों के द्वारा एक बहुत ही अजीब स्थिति में मिलता है. और आप लाभ उठा सकते हैं या आप ग्रस्त कर सकते हैं पैसे उदाहरण के अर्थ में. इसलिए इस समस्या में सात सेट, हम आपको दे कोड के इस एक लाइन, लंबे जो कहानी कम, इस हल करती है MySQL में समस्या. नहीं करता है कि यह बहुत लंबे अनुदेश यहां तक ​​कि पर एक लाइन पर फिट यहाँ स्क्रीन सुनिश्चित करता है कि आपके ऑपरेशन परमाणु कहा जाता है क्या है. यह सब एक ही बार में होता है, या यह बिल्कुल नहीं होता है. यह बहुत लंबे वाक्यांश नहीं कर सकते आंशिक रूप से बाधित हो. और यह क्या करता सचमुच है यह क्या कहते हैं. कुछ तालिका में निम्नलिखित डालें तीन क्षेत्रों उन विशिष्ट मूल्यों, लेकिन नकली चाबी पर, एक डालने नहीं करते. एक अद्यतन करने. तो यह एक का चयन करें और एक कर की तरह है एक ही समय में बात करने के लिए इतना डालें. और शायद यह है कि कुंजी क्या है यहाँ करने के लिए भेजा जा रहा है? यह पता चला है, और आप में यह देखेंगे समस्या, सात की कल्पना सेट क्योंकि हम एक अद्वितीय कुंजी हो वहाँ घोषित कर दिया है यह विशेष रूप से मेज पर ऐसा है कि आप कई पंक्तियाँ नहीं हो सकता साथ ही उपयोगकर्ता के लिए वही पैसा शेयर प्रतीक - इस उदाहरण में, DVN.V है एक मूर्खतापूर्ण पैसा शेयर कि हम कल्पना में उल्लेख करने के लिए. , हम यह अनूठा घोषित किया गया है क्योंकि क्या इसका मतलब यह है कि आप अगर एक नकली पंक्ति सम्मिलित करने का प्रयास, आप कर रहे हैं बजाय बिना यह अद्यतन करने के लिए जा रहा किसी और को बदलने के लिए एक मौका रहा या तो दुनिया का राज्य. तो संक्षेप में, यह सुनिश्चित करता है बातें परमाणु कर रहे हैं. अधिक आम तौर पर हालांकि, डेटाबेस MySQL तरह - और आप के लिए इस सुविधा की जरूरत नहीं है सात पी सेट, लेकिन के लिए इसे ध्यान में रखना भविष्य - लेनदेन क्या कहा जाता है का समर्थन है, आप कह सकते हैं, जहां सचमुच लेनदेन शुरू. तुम तो लागू कर सकते हैं दो एसक्यूएल बयान. जैसा कि आप देखेंगे और किसी SQL कथन, पी सेट सात, थोड़ा सा दिखता में कुछ इस तरह. एक मेज बुलाया खाता अपडेट. जो कुछ भी करने के लिए बराबर संतुलन स्तंभ सेट करें शेष राशि स्तंभ वर्तमान में है 1,000 माइनस जहां संख्या, उपयोगकर्ता आईडी की तरह खाता संख्या,, 2 के बराबर होती है, और उसके बाद अद्यतन खाता डॉट डॉट डॉट. तो आम आदमी की दृष्टि में, क्या करना है इन दो प्रश्नों में कर लग रहे हो बैंकिंग की असली दुनिया भावना? दर्शक: बचत करने के लिए स्थानांतरित. डेविड मालन: बिल्कुल. एक से धन हस्तांतरण दूसरे के खाते. और यह एक और उदाहरण है जहां आप वास्तव में इन दो बातें होती करना चाहते हैं या ऐसा नहीं हो. आप कुछ में मिल नहीं करना चाहती उनमें से मध्य और संभावित पंगा गणित, या गंदगी को कितना आपके पास पैसा है, या कितना पैसे बैंक है. तो क्या लेनदेन के बारे में वास्तव में अच्छा है MySQL में है, और अधिक आम तौर पर डेटाबेस, है कि वे और क्रियान्वित किया है, जो स्मार्ट लोग इन सुविधाओं को बनाने के लिए कैसे समझ से बाहर उन चीजों में से दोनों हो यह सुनिश्चित करें कि या बिल्कुल नहीं. और तुम सच में करने के लिए इच्छुक रहे हैं लोगों पर द्वारा प्रयोग किया जाता है कि एक वेबसाइट परिसर, असली दुनिया में लोगों को, कर स्टार्टअप समझ में कुछ, इन प्रकार के होते हैं डिजाइन निर्णय है कि कभी इतना महत्वपूर्ण हो गया है. अन्यथा, आप खो, डेटा खोने के लिए शुरू उपयोगकर्ताओं को, या के रूप में सबसे खराब स्थिति में हम संभावित, यहाँ देखा है पैसे खो देते हैं. तो फिर, उस पर और अधिक समस्या में सेट सात, साथ ही शायद कुछ लोगों के लिए अंतिम परियोजनाओं में आप. तो चलिए हम था कि तस्वीर बदल सकते हैं सिर्फ एक और तरीका में पहले एक पल. तो मैं कर सकता हूँ अगर मुझे वास्तव में देखते हैं - नहीं, कि चला गया है. वहाँ यह है. हम पिछली बार छोड़ दिया, जहां तो यह है. और यह हम टॉस करने के लिए जा रहे हैं पता चला है यहाँ मिश्रण में एक और बात - जावास्क्रिप्ट नामक एक भाषा. तो कृपया जावास्क्रिप्ट वास्तव में फिट बैठता है इस टुकड़े में - और मैं काफी पर्याप्त जगह नहीं छोड़ा था, इसलिए इस पैमाने को अब नहीं है. ठीक है, यह वास्तव में दयनीय है. ठीक है, इसलिए कि जावास्क्रिप्ट है. ठीक है. मैं वास्तव में यह एक धर्म का निर्वाह नहीं कर रहा हूँ. ठीक है. तो कृपया जावास्क्रिप्ट एक और प्रोग्रामिंग है भाषा, और हमारे पिछले है, कि अगर मदद वहाँ बहुत अधिक नहीं है कि आश्वस्त यहां आग hydrants की. तो कृपया जावास्क्रिप्ट भी एक व्याख्या है आप नहीं है इसका मतलब है जो भाषा, शून्य और लोगों में संकलन. तुम बस इसे चलाते हैं. लेकिन क्या साथ मौलिक अलग है जावास्क्रिप्ट आमतौर पर है कि आप उस कृपया अपने वेब सर्वर पर नहीं चला है. यह में चला नहीं मिलता उपकरण से प्रति. दरअसल, यह एक उपयोगकर्ता द्वारा डाउनलोड हो जाता है अपने ब्राउजर में HTTP के माध्यम से - क्रोम, सफारी, इंटरनेट एक्सप्लोरर, फ़ायरफ़ॉक्स, जो कुछ - और यह इस निष्पादित करता है कि ब्राउज़र है विशेष प्रोग्रामिंग भाषा. तो स्पष्ट होना, पीएचपी इस प्रकार अब तक किया गया है में कमांड लाइन पर या तो मार डाला एक सर्वर पर हमारे काले और सफेद खिड़की, उपकरण, एक कंप्यूटर की तरह उपकरण की तरह है, या यह हो गया है एक वेब सर्वर द्वारा निष्पादित एक कंप्यूटर पर चल रहा है. लेकिन यहाँ विषय इस प्रकार अब तक कि PHP है सर्वर साइड मार डाला, तो कर दिया गया है उपयोगकर्ता और उपयोगकर्ता के ब्राउज़र PHP कोड की एक पंक्ति कभी नहीं देखता. वास्तव में, आप हमेशा के लिए एक ब्राउज़र खुला अपनी वेबसाइट या किसी अन्य और आप वास्तव में अपनी खिड़की में PHP कोड देख, किसी को खराब कर दिया गया है. यह होने का मतलब नहीं है क्योंकि सीधे एक ब्राउज़र के लिए भेजा. यह मार डाला और चालू होना चाहिए HTML की तरह कुछ में. लेकिन जावास्क्रिप्ट अनिवार्य है विपरीत. यह आमतौर पर अंदर चलने के लिए होती है एक उपयोगकर्ता के ब्राउज़र विंडो की. और वेबसाइटों का किस प्रकार उपयोग जावास्क्रिप्ट तो इन दिनों? सचमुच हर लोकप्रिय वेबसाइट की तरह. हर वेबसाइट है कि तुम लोग शायद के लिए जावास्क्रिप्ट का उपयोग दैनिक उपयोग सरल और भी कामुक सुविधाओं. तो फेसबुक जैसी कुछ आप उसका इस्तेमाल अगर चैट. कैसे है कि वास्तव में काम करता है? वैसे इस प्रकार अब तक, सामग्री के सभी हम है एचटीएमएल के साथ किया और पीएचपी मानता है कि , आप एक यूआरएल खींच, और आप हिट दर्ज और आप कुछ HTML सामग्री देखते हैं. और आप परिवर्तन है कि लिंक, क्लिक करें यूआरएल, पेज बदलता है, और पुनः लोड कुछ नई सामग्री. एक और यूआरएल पर क्लिक करें या यदि आप एक फार्म जमा एक पृष्ठ पर whisked और मिल आप कुछ नई सामग्री को देखने. लेकिन फेसबुक चैट की तरह कुछ का उपयोग कर, या Gchat, या गूगल मैप्स, शायद ही कभी पूरे पृष्ठ है कि इस तरह को ताज़ा करता है आप क्षण भर के एक सफेद स्क्रीन देखते हैं और फिर नई सामग्री. बल्कि, वेब पृष्ठों को आज गतिशील रूप से कर रहे हैं फिर से अद्यतन और हो रही है फिर से और फिर से सभी प्रकार के परदे के पीछे. और यह पता चला है कि आप के लिए जाना है, जब फेसबुक, या Gchat तरह कुछ, या जीमेल, और पृष्ठ अपडेट स्वचालित रूप से पुन: लोड के बिना पूरे स्क्रीन, क्या हुआ है कि है अपने ब्राउज़र की तरह चुपके से बनाया गया है अतिरिक्त HTTP अनुरोध - नहीं पूरे वेब पृष्ठों के लिए, लेकिन बस के लिए जैसे डेटा की छोटी मात्रा, त्वरित संदेश है कि अपने दोस्त बस आप, या स्थिति अपडेट भेजा किसी को सिर्फ तुम, या कलरव भेजा किसी को सिर्फ भेजा. यह बस के लिए थोड़ा अनुरोधों बना रहा है डेटा, और फिर जावास्क्रिप्ट, इस का उपयोग प्रोग्रामिंग भाषा, क्या बदलने के लिए वेब पेज के बिना की तरह दिखता है सर्वर सर्वर के बिना, की मदद कि एचटीएमएल सृजन. तो संक्षेप में, जावास्क्रिप्ट फिर से इस्तेमाल किया जा सकता है से नया डेटा लाने के लिए न केवल एक पूरी reloading बिना सर्वर पेज या एक फार्म जमा. यह भी परिवर्तन करने के लिए इस्तेमाल किया जा सकता है तथाकथित डोम - दस्तावेज़ ऑब्जेक्ट मॉडल - जिसके लिए सिर्फ अच्छा तरीका है HTML के पेड़ कह हम पिछली बार देखा था. तो आश्वस्त करने के लिए, जावास्क्रिप्ट है वाक्य रचना इतनी सी करने के लिए इसी तरह के रूप में अच्छी तरह से. कोई मुख्य समारोह नहीं है. तुम सिर्फ कोड लिखना शुरू और इसे क्रियान्वित, या हो जाएगी अधिक ठीक से व्याख्या की. स्थितियां इस तरह दिखेगा. कोई सी से अलग या उस बात के लिए PHP. बूलियन अभिव्यक्ति या एड एक साथ इस तरह दिखेगा. एक साथ anded इस तरह दिखेगा. स्विच इस तरह दिखेगा. छोरों इस तरह दिखेगा के लिए. छोरों इस तरह से देखना होगा. छोरों इस तरह दिखेगा, जबकि करो. यह नया है. तो कृपया जावास्क्रिप्ट एक foreach नहीं है दर असल निर्माण, लेकिन इस निर्माण के लिए इस में चर सरणी में मैं, और मैं मामला एक सूचकांक मूल्य हो जाता है. तो यह है कि एक छोटे से अलग है foreach, यद्यपि के नए संस्करण जावास्क्रिप्ट हर समय बाहर आ रहे हैं, इसलिए भी इन भाषा सुविधाओं विकसित हो रहे हैं. और एक तरफ, जावास्क्रिप्ट इन दिनों के रूप में यह भी बस की तरह एक सर्वर पर इस्तेमाल किया जा सकता है PHP Node.js. नामक ढांचे का उपयोग CS50 के TFS, केविन से एक, एक का नेतृत्व किया है में उपलब्ध है कि Node.js पर संगोष्ठी cs50.net/seminars. आप उत्सुक हैं यदि हां, तो आप जानते हैं कि सर्वर साइड पर के रूप में इस का उपयोग कर सकते हैं ठीक है, लेकिन है कि एक काफी हाल की प्रवृत्ति है लेकिन उस पर एक शक्तिशाली एक. यह थोड़ा अलग है. यह जावास्क्रिप्ट में एक सरणी है. और क्या अलग रूप में आप हमलों सी या PHP बनाम? कुछ जल्दी कहानियाँ हैं हम यहां बता सकते हैं. क्या PHP बनाम याद आ रही है? दर्शक: [सुनाई]. डेविड मालन: हाँ? क्षमा करें, फिर कहते हो? दर्शक: घोषणा नहीं चर का प्रकार. डेविड मालन: हम की घोषणा नहीं कर रहे हैं चर का प्रकार. तो वास्तव में काफी PHP की तरह, हम नहीं कर रहे हैं इस चर के प्रकार को निर्दिष्ट. बल्कि, हम और अधिक सामान्य रूप से कर रहे हैं चर के लिए कह वर. हम में से है PHP बाधा नहीं है डॉलर के हस्ताक्षर, जो कठिन जबकि प्रकार, अधिक स्पष्ट करना है कि कुछ एक चर है. यहाँ जबकि, हम की तरह वापस करने के लिए कर रहे हैं बस फोन करके सी का दृष्टिकोण एक हम चाहते हैं कि नाम से चर नंबर की तरह, यह देने के लिए. और भी PHP की तरह, हम हैं के लिए वर्ग कोष्ठक उस सरणी के अंदर मूल्यों. जावास्क्रिप्ट में तो चर भी इस तरह लग सकता है. इस एस नामक एक स्ट्रिंग है यहाँ ध्यान दें, लेकिन इसी तरह हम निर्दिष्ट नहीं किया है यह एक स्ट्रिंग है कि. यहाँ हालांकि नहीं है एक सुविधा है PHP में ठीक उसी तरह से मौजूद हैं, लेकिन थोड़ा इसी. यह जावास्क्रिप्ट में एक वस्तु है. और वस्तुओं की तरह स्विस आर्मी हैं कि आप में एक आंकड़ा संरचना का चाकू चीजों के किसी भी संख्या के लिए उन्हें इस्तेमाल कर सकते हैं. यहाँ, उदाहरण के लिए, हम घोषणा कर रहे हैं एक चर भाव कहा जाता है. उस चर के प्रकार एक वस्तु है. आप एक सी संरचना के रूप में इस के बारे में सोच सकते हैं उस कुंजी और मूल्यों है. प्रतीक एक कुंजी है. अमेरिकन प्लान जाहिर है, एक मूल्य है एक स्टॉक प्रतीक. कॉमा. मूल्य एक और महत्वपूर्ण है, और इसकी कीमत है जाहिरा तौर पर एक चल बिन्दु, या एक अधिक आम तौर पर में संख्या $ 49.26 के लिए JavaScript,. इसलिए PHP नहीं है - हम काफी PHP वस्तुओं में नहीं देखा है इस तरह से, लेकिन हम एक एनालॉग देखा क्या जो था? दर्शक: [सुनाई]. डेविड मालन: साहचर्य arrays. PHP साहचर्य arrays है जबकि तो जिसका वाक्यविन्यास कभी थोड़ा तो है अलग - हम वर्ग कोष्ठक देखा. हम अजीब तीर प्रतीकों को देखा. जावास्क्रिप्ट वस्तुओं है, लेकिन यह है ज्यादातर एक अर्थ अंतर और एक अब के लिए अलग पर्याय. हालांकि, एक अलग रूप में, पीएचपी भी है एक तरह से वस्तुओं है कि जावा और अन्य भाषाओं में वस्तुओं ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग. लेकिन हम अभी इन का उपयोग करेंगे अब के लिए डेटा प्रकार के लिए. वस्तुओं और साहचर्य arrays. यह एक ऐसा कर सकता है एक छोटे से अधिक स्पष्ट. एक वस्तु उपयोगी है यहाँ क्यों है. यदि आप एक छात्र की घोषणा करना चाहते हैं, Zamyla की तरह, हम वास्तव में कर सकते हैं इसलिए कि अंदर की बात करने के लिए encapsulate बस की तरह घुंघराले कोष्ठक का उपयोग आपत्ति चाबियों का एक पूरी गुच्छा से पहले और यहाँ में मान. हम एक आईडी, एक घर, और के लिए एक नाम है के रूप में एक अर्धविराम द्वारा पीछा Zamyla, अंत में हमेशा की तरह. यहाँ नीचे भी, यह थोड़ा है अलग, लेकिन यह भी बहुत शक्तिशाली इन दिनों. यहाँ एक सरणी है, और मुझे पता है कि क्योंकि एक वर्ग ब्रैकेट ऊपर नहीं है शीर्ष और एक वर्ग कोष्ठक तल पर. और ये क्या डेटा की एक सरणी है जावास्क्रिप्ट में जाहिरा तौर पर लिखें? यह ऐसा लगता है की एक सरणी है तीन वस्तुओं की तरह. और मुझे लगता है कि यह केवल एक वस्तु का पता घुंघराले ब्रेसिज़ की वजह से. और, खुला घुंघराले ब्रेस वहाँ नोटिस कुछ सामान, करीब घुंघराले गले लगा, अल्पविराम, फिर कुछ और, अल्पविराम, और फिर कुछ और. तो यह है कि तीन तर्क है दो अल्पविराम के द्वारा अलग. तो यह तीन वस्तुओं की एक सरणी है. और उन वस्तुओं में से प्रत्येक प्रतीत होता है कुछ का एक छात्र या स्टाफ के सदस्य एक आईडी के साथ प्रकार, प्रत्येक, घर, और नाम. लेकिन मैं यह कुछ बुलाया है JSON कहा जाता है - जावास्क्रिप्ट वस्तु संकेतन. और यह एक डाटा प्रारूप है कि वास्तव में इसलिए बहुत लोकप्रिय और में है प्रचलन इन दिनों है कि आप एक लिखने फेसबुक का उपयोग करता है कि आवेदन एपीआई, ट्विटर एपीआई, वास्तव में लगभग वहाँ से बाहर किसी भी एपीआई इन दिनों, CS50 के खुद के कुछ सहित तुम वापस पाने के डेटा में नहीं है पुराने स्कूल सीएसवी प्रारूप. याद है कि क्योंकि सीएसवी सुपर सरल है. यह सिर्फ स्तंभों अलग कर दिया है अल्पविराम के द्वारा. JSON डेटा आप अधिक मेटाडाटा देता है. यह हर मूल्य के साथ एक प्रमुख सहयोगियों तो वे सिर्फ कल्पना करने की जरूरत नहीं है कि zeroth स्तंभ एक मूल्य, स्तंभ है एक स्तंभ दो अन्य है, एक और है. यहाँ एक JSON वस्तु में सब कुछ प्रकार है का स्वयं का वर्णन, क्योंकि हर इस फाइल में नामों में से एक सचमुच है एक के रूप में इसे के सामने का नाम उद्धृत स्ट्रिंग. तो चलो एक पर एक नज़र रखना यहां उदाहरण के जोड़े. मुझे उपकरण में चलते हैं. और मुझे अपने vhost में जाने जनता में निर्देशिका. और मुझे में चलते हैं जावास्क्रिप्ट निर्देशिका. और आगे जाने के लिए और खोल देना डोम बस का अर्थ है जहाँ डोम 0.html, दस्तावेज़ ऑब्जेक्ट मॉडल. यह जो करने के लिए पेड़ सामान जैसा कि मैंने पहले भेजा. और मुझे निम्नलिखित प्रस्ताव करते हैं. यहाँ जिसका एक वेब पेज है शरीर में बहुत आसान है. तो यहाँ नीचे तल पर, मैं एक रूप है नोटिस. हम पहले उन लोगों को देखा है. यह एक है, जिनमें से एक दो जानकारी है, नाम की आईडी, जिनमें से एक एक प्रकार का है प्रस्तुत है, और पहले एक प्रकार पाठ है. तो यह वास्तव में बहुत आसान लगता है. चलो यहाँ चलते हैं. चलो यहाँ इस पृष्ठ पर वापस चलते हैं. के लोकलहोस्ट में चलते हैं, और में जाने हमारे जावास्क्रिप्ट निर्देशिका, और करने के लिए जाना यहां डोम -0, और हम इस फार्म का है. तो यह है कि जाहिरा तौर पर है सभी इस पेज करता है. साथ यह एक नाम क्षेत्र है एक बटन सबमिट करें. लेकिन मैं यहाँ PHP का उपयोग करने के लिए नहीं जा रहा हूँ. मैं सब कुछ ग्राहक की ओर नहीं जा रहा हूँ इस प्रकार के रूप इतना जावास्क्रिप्ट में बात करने के लिए. मैं वास्तव में नाम दिया गया है कि नोटिस इस निवेश के क्षेत्र में एक अनूठी पहचानकर्ता, जो होगा वास्तव में एक क्षण में मुझे कुछ समय बचा. और मैं एक और टैग पेश किया नोटिस अपने वेब पेज के सिर में  टैग. तो यह जावास्क्रिप्ट है कि इस अर्थ में है एक क्लाइंट साइड प्रोग्रामिंग भाषा. इस मामले में, बस सीएसएस की तरह, मैं डाल दिया है यह सीधे अपने HTML के अंदर. लेकिन मैं एक समारोह की घोषणा की है नोटिस कि एक छोटे से PHP की तरह दिखता है वाक्य रचना है, लेकिन यह वास्तव में है जावास्क्रिप्ट, क्योंकि फिर, यह है ब्राउज़र में क्लाइंट साइड. और यह करने के लिए क्या हो रहा है एक अनुमान ले करते हैं, भले ही वाक्य रचना के कुछ यहाँ नया है. दर्शक: जो कोई भी हैलो कहो. डेविड मालन: यह हैलो कहने के लिए जा रहा है जो कोई भी इस पेज का दौरा किया. तो कैसे? तो यह जावास्क्रिप्ट में पता चला है, नोटिस एक चेतावनी () समारोह है. यह एक बहुत तरह की दुखद समारोह है कि वास्तव में सिर्फ उपयोगकर्ताओं को परेशान करने के लिए जाता है. यह आप वास्तव में उपयोग करना चाहिए नहीं है आम तौर पर, लेकिन यह एक त्वरित और गंदा है जिस तरह से कुछ वैसा ही मुद्रण एक ग्राफिकल यूजर को एक ब्राउज़र की तरह, इंटरफ़ेस. मुझे मिल गया है कि यहां नोटिस एकल उद्धरण में स्ट्रिंग. यह पता चला है कि सी, जावास्क्रिप्ट के विपरीत वास्तव में आप एक का उपयोग कर सकते हैं उद्धरण, और स्पष्ट रूप से यह बस की तरह है बीच शैलीगत सम्मेलन की जावास्क्रिप्ट प्रोग्रामर एक उद्धरण का उपयोग करें. पीएचपी, वे वास्तव में थोड़ा है अलग अर्थ. लेकिन अब के लिए, सिर्फ इतना पता है कि कि एक ही कारण है. जावास्क्रिप्ट में कन्वेंशन अक्सर करने के लिए है एक उद्धरण का उपयोग करें, लेकिन हम इस्तेमाल कर सकते हैं डबल दोनों स्थानों में उद्धरण के रूप में अच्छी तरह से. तो यह दिलचस्प है. हम चाहते हैं कि था कि पिछली बार याद एक पेड़ आकर्षित किया है कि स्क्रीन पर चित्र आप HTML नोड था, और जहां नोड, और शरीर नोड सिर, और फिर कुछ पाठ. लेकिन कम से एक विशेष नोड वहाँ था मैं दस्तावेज़ में कहा जाता है कि बहुत ऊपर. खैर, यह किसी भी जावास्क्रिप्ट में पता चला है आप जावास्क्रिप्ट में एक प्रोग्राम लिखने के समय एक ब्राउज़र में, आप के लिए उपयोग किया एक विशेष वैश्विक चर. PHP के superglobals को आत्मा में इसी प्रकार इस एक में कहा जाता है सभी लोअरकेस दस्तावेज़. यह एक संरचना की तरह है, लेकिन इस संरचना इसके अंदर कार्य किया है. तो एक सी संरचना सिर्फ आम तौर पर डेटा है. लेकिन इस के रूप में एक जावास्क्रिप्ट वस्तु तकनीकी तौर पर, कार्य किया भी है अन्यथा तरीके के रूप में जाना जाता है, इसके अंदर. और आप के अंदर एक समारोह कॉल कर सकते हैं इस वस्तु को काफी सचमुच अपने कर नाम, डॉट, और का तो नाम समारोह, या फिर विधि. यह वास्तव में, सिर्फ एक पर्याय है. और इस समारोह में क्या करता है? आप की तरह अपने नाम से अनुमान लगा सकते हैं. आईडी के आधार पर तत्व करें. इसलिए इस वेब पेज खोज करने के लिए जा रहा है, के लिए देख रहे हैं, उस पेड़ खोज , उर्फ ​​तत्व, एक है जो कुछ नोड बोली गंदें शब्द बोलना नाम का अनूठा आईडी. और फिर मैं क्या करने जा रहा हूँ? मैं के अंदर मूल्य प्राप्त करने के लिए जा रहा हूँ उस पेड़ में नोड, और मैं जा रहा हूँ किसी भी तरह कि नाम को नमस्ते कहने के लिए. इसलिए हम नहीं करने के बावजूद एक अनुमान ले अभी तक यह देखा, क्या करना प्लस प्रतीकों यहाँ और यहाँ शायद मतलब है? दर्शक: जुटना. डेविड मालन: जुटना. ठीक है, और इन बस तरह के निर्णयों डिजाइन लोग साल पहले बनाया. PHP में, आप जोड़ना डॉट्स के साथ बातें. सी में, आप कई हुप्स के माध्यम से कूद और strcopy की तरह कार्य करता है () या फोन strcat () या अन्य ऐसे कार्य करता है. लेकिन जावास्क्रिप्ट में, आप के चाहता है का उपयोग करें. तो यह सिर्फ concatenating है तीन तार - नमस्कार, एक नाम, और उसके बाद एक विस्मयादिबोधक बिंदु. तो कब और क्यों इस समारोह है हालांकि कहा जाता है? खैर, से एक अनुमान ले तल पर एचटीएमएल. क्यों कहा जाता है () को बधाई, या कब है? जाहिर है, सबसे अच्छा के रूप में मैं पर, बता सकते हैं इस फार्म प्रस्तुत है, जमा मैं जो कुछ भी है क्या करने जा रहा हूँ इन उद्धरणों के अंदर. और विशेष रूप से, मैं फोन करने के लिए जा रहा हूँ बधाई () और फिर वापसी झूठी. ठीक है, चलो क्या नेट देखते हैं प्रभाव यहाँ पहली बार है. तो मुझे आगे जाना है और टाइप करते कहते हैं, लोरेन, जमा, में. लोरेन नमस्कार. शायद यह सिर्फ था चलो देखते हैं अगर एक भाग्यशाली कार्यान्वयन. नहींं. तो इसे बाहर टाइपिंग है जो कुछ भी मैं वास्तव में वहाँ डाल दिया नाम है. लेकिन बदलते नहीं है क्या सूचना है. यूआरएल अभी भी डोम 0.html है. कोई register.php है. कोई दूसरा फ़ाइल नहीं है. कोई कार्रवाई नहीं की विशेषता है. तो क्या यह वापसी झूठी है संभवतः कर रही है? क्यों मैं तो बधाई बुला () और कर रहा हूँ शायद झूठी लौटने? जब आप क्लिक करें क्या सामान्य रूप से होता है यहां तक ​​कि हमारे पास एक फार्म पर जमा करें पिछले सप्ताह में देखा है? दर्शक: [सुनाई]. डेविड मालन: यह सही, कहीं चला जाता है? यह कुछ गंतव्य यूआरएल के लिए चला जाता है. लेकिन मुझे लगता है कि यहाँ नहीं होने देना चाहती है. मैं अपने वेब पेज पूरी तरह बनना चाहता हूँ एक बार आप कर रहे हैं जहां जीमेल, जैसे गतिशील , आप वहाँ रहना. यूआरएल एक तरीका है कि में परिवर्तन नहीं करता पूरे पृष्ठ reloading है इंगित करता है. बल्कि, मैं सिर्फ कुछ बदलना चाहते हैं कुछ बाहर मुद्रण की तरह यहाँ स्क्रीन पर. वैसे मुझे यह साफ करते हैं ऊपर एक छोटा सा. मुझे नहीं डोम -0 खोल दो, लेकिन मुझे डोम -2 खोल देना. अभी तो तुम यहाँ कुछ वाक्यविन्यास देखा है. यह पता चला है कि क्या हम सिर्फ कच्चे जावास्क्रिप्ट का उपयोग कर रहा था. तो यह वास्तव में एक भाषा है जावास्क्रिप्ट. आप में से कुछ के बारे में पता हो सकता है jQuery नामक एक पुस्तकालय. तो jQuery में ही नहीं है जावास्क्रिप्ट के रूप में बात. ऐसा लगता है कि एक बहुत चालाक सिर्फ एक पुस्तकालय है लड़के ने लिखा है और लोकप्रिय ऐसे अब दुनिया में है कि लगभग हर कोई जावास्क्रिप्ट का उपयोग करते समय jQuery का उपयोग करता है. और पहली नज़र में, ईमानदारी से, यह एक छोटे से अधिक गूढ़ लग रहा है. लेकिन तुम जाओ, खासकर अगर मिल जाएगा वहाँ वेब के साथ अपने अंतिम परियोजना के लिए विकास, आप मिल जाएगा कि इस चीजों को साफ और आप काफी बचत होती है कोड की कुछ लाइनों. तो चलो पर बस नज़र जाने कैसे इस फार्म के काम कर रहा है. मैं जाहिरा तौर पर क्या दूर किया नोटिस मेरी HTML से? प्रस्तुत हैंडलर नहीं यह नहीं है इतनी बात करने के लिए. कोई विशेषता नहीं है. क्योंकि तुम्हें पता है, क्या मैं वास्तव में पसंद नहीं किया था? हम गिर रहे थे मुझे लगा जैसे वहाँ पुराने वाला में. यह मैला महसूस करने के लिए शुरू किया गया वैसे ही जैसे साथ दोनों सीएसएस मिलाना करने के लिए एचटीएमएल, आप की तरह फेंक रहे हैं क्योंकि सब से अधिक विभिन्न भाषाओं जगह, इसी यह महसूस करना शुरू किया नीचे जाने के लिए एक बुरी रोड की तरह जहां मैं के अंदर जावास्क्रिप्ट कोड डाल रहा हूँ मेरी एचटीएमएल के बजाय इसे बाहर फैक्टरिंग. इसलिए कि यहां सबक है. डोम-2.html में, मैं इसे बाहर फैक्टरिंग रहा हूँ. और मैं थोड़ा बातें कर रहा हूँ अलग ढंग से. अभी के लिए, मैं अपने हाथ की लहर के लिए जा रहा हूँ यह वास्तव में क्या करता है पर हुड के नीचे. लेकिन अभी के लिए मान लेते हैं कि वह पहले इस पुस्तकालय में कोड की लाइन jQuery के बस का मतलब है जब कहा जाता है दस्तावेज को निम्नलिखित करना, तैयार है. वेब पृष्ठों को ले जा सकते हैं क्योंकि लोड करने के लिए कुछ समय है. यदि आप एक धीमी इंटरनेट पर हो सकता है कनेक्शन, और यह कताई किया जा सकता है और कताई, और अंत में यह भरा हुआ है. कोड की है कि लाइन बस इंतजार जब तक कहते हैं पूरे पृष्ठ, दस्तावेज़ तैयार है इस कोड को क्रियान्वित करने से पहले, तैयार है. और अब नोटिस, यह शायद है पहले सबसे उपयोगी दूर jQuery से ले. यहां इस लाइन भावना में बहुत समान है यहाँ यह बहुत लंबे समय तक लाइन के लिए. कच्चे जावास्क्रिप्ट कोड में, वहाँ जबकि एक दस्तावेज़ वैश्विक वस्तु मौजूद है कि ,) (GetElementByID नामक एक समारोह है जो लिखा लोग jQuery सिर्फ इतना कहना है कि सरलीकृत डॉलर के हस्ताक्षर, और उसके बाद के अंदर कोष्ठकों तो दो उद्धरण दिया, और इसके बाद हैश प्रतीक डाल आप हथियाना चाहते अद्वितीय आईडी. तो क्या इस के बराबर है document.getElementById. इस बीच,. बस पर इसका मतलब प्रस्तुत आप कर रहे हैं जो भी फार्म जमा बाईं तरफ की चर्चा करते हुए जाना आगे और इस पर अमल. लेकिन यह भी अब उत्सुकता है. के बारे में अजीब बात यह है कि क्या मैं यहाँ पर प्रकाश डाला है? इतना ही नहीं यह किस तरह का वाक्य रचना है नया, कुछ कमी भी नहीं है. दर्शक: यह सिर्फ समारोह कहा जाता है? यह चेतावनी नहीं कहा जाता है? डेविड मालन: हाँ. खैर, इतना चेतावनी () नीचे है यहाँ, निष्पक्ष होना. लेकिन एक का कोई जिक्र नहीं है तुम्हें पता है की तरह, नाम, foo या यहाँ कुछ. और वास्तव में, इस विशेषताओं में से एक है काफी है कि जावास्क्रिप्ट का शक्तिशाली, लेकिन यह भी काफी नया है. और पीएचपी वास्तव में के रूप में अच्छी तरह से यह किया है. मुझे आगे जाना है और करते हैं असली जल्दी कुछ. मुझे आगे जाना है और यहां इस बाहर डाल दिया. मुझे इस करते हैं. समारोह. ) के (इस हैंडलर फोन करते हैं. हैंडलर समारोह तो बात करो. कुछ आपरेशन संभालती है कुछ. मुझे मेरे खरोज को साफ करते हैं. और यहाँ यह डाल दिया. और यहाँ कि डाल दिया. हां. ठीक है. तो अब मैं एक समारोह है मैं सच में नहीं पता कि हैंडलर () यह अभी तक क्या करती है. यह बस अभी भी है कि सामान है. वूप्स. बहुत ज्यादा लग गए. चलो यह करते हैं. ठीक है. माफ़ कीजिए. ठीक है. मुझे इस करते हैं. ठीक है. यह अच्छा और सीधे लग रहा है अब आगे. मुझे इस करते हैं. यह मत करो. और ठीक. तो अब, चलो यहाँ पर इस डाल दिया. मक्खी पर कोई और प्रोग्रामिंग. ठीक है. तो अब, के लिए वापस जाओ जहां कहानी शुरू हुई. इससे पहले, मैंने कहा कि यहां इस लाइन दस्तावेज़ तैयार है जब इसका मतलब है, जाओ आगे और यह करते हैं. मुझे क्या करना चाहते हैं? खैर विशेष रूप से, मैं जाना चाहता हूँ आगे और निम्नलिखित है. तो कोड की इस पंक्ति निष्पादित, और क्या मैं तुम्हें क्या करना चाहते हैं यह कहते है जब फार्म प्रस्तुत है कार्य करते हैं. अब यह दिलचस्प है कि क्या है. यह एक समारोह ही नहीं है. मैं कोष्ठकों नहीं डाल रहा हूँ नोटिस यहां सामान्य तरीके से. मैं सचमुच नामक एक समारोह गुजर रहा हूँ अन्य समारोह के लिए हैंडलर () के रूप में एक तर्क के रूप में () प्रस्तुत बुलाया यह एक चर की तरह है, हालांकि. और इस की सुविधाओं में से एक है जावास्क्रिप्ट, खुद कार्यों है वास्तव में सिर्फ वस्तुओं रहे हैं. वास्तव में, वे वास्तव में सिर्फ रहे हैं किसी प्रकार के चर. और समारोह का नाम है अगर हैंडलर (), मैं नहीं कर सकता कोई कारण नहीं है यहाँ एक तर्क के रूप में यह गुजरती हैं. और इस रूप का मतलब प्रदर्शन की आईडी है साथ प्रस्तुत है, इस समारोह को बुलाओ. लेकिन अब मैं इस सब पूर्ववत अगर यही कारण है तो मैं शायद क्या किया इस एक पल पहले? खैर, यह एक गुमनाम समारोह है. स्पष्ट रूप से, क्योंकि मैं कर रहा हूँ क्यों, मुझे एहसास हुआ घोषणा के समय बर्बाद करने के लिए परेशान एक समारोह में कहा हैंडलर () केवल कॉल करने के लिए एक और केवल एक ही स्थान पर यह? मैं नाम की जरूरत नहीं है, और मैं नहीं है एक से अधिक जगह यह फोन करने की जरूरत, चलो बस समारोह को लागू करते हैं सही मैं कहाँ की जरूरत है. और तो जावास्क्रिप्ट और PHP का समर्थन क्या गुमनाम कार्यों कहा जाता है कि मुझे वास्तव में लगता है कि यहाँ क्या करने की अनुमति देते हैं. लेकिन हम सिर्फ सतह scratching रहे हैं. चलो बस एक जोड़े के साथ तंग यहाँ अंतिम उदाहरण हैं. मैं quote.php में जाओ. यह वास्तव में एक PHP है कि नोटिस मैंने लिखा था कि समारोह, एक PHP कार्यक्रम, उम्मीद है कि कहा जाता है एक HTTP पैरामीटर प्रतीक, और मैं में पारित कर सकते हैं अमेरिकन प्लान की तरह एक मूल्य. और हम वास्तव में स्रोत पर लगता है कि कोड, यह एक मुफ्त वेबसाइट क्वैरी है बस पी सेट की तरह, याहू वित्त बुलाया सात, और यह मेरे लिए लौट रहा है जाहिरा तौर में कुछ जाना जाता प्रारूप JSON है - जावास्क्रिप्ट वस्तु संकेतन. यह सिर्फ एक वस्तु है. घुंघराले ब्रेसिज़ सूचना, उद्धरण, पेट के, और अल्पविराम. अब इस बीच, यह बहुत अच्छा है. मैं शायद एक प्रोग्रामिंग का उपयोग कर सकते हैं क्योंकि यूआरएल उत्पन्न करने के लिए भाषा कि, गतिशील रूप से इस तरह दिखेगा सही? मैं गूगल के लिए इसे बदल सकते हैं और गूगल के वापस मिल $ 1,017.55 के शेयर की कीमत. तो अब हम इस का उपयोग नहीं कर सकते, तो चलो देखते हैं. मुझे, यहाँ अजाक्स -0 के लिए चलते हैं जो निम्नलिखित की तरह लग रहा है. यह है कि सिर्फ एक वेबसाइट है एक बटन के साथ एक रूप है. मुझे यहाँ YHOO में आगे जाना है और टाइप करते याहू के शेयर प्रतीक के लिए, जाओ क्लिक करें भाव, और अब मैं डाल दिया है नोटिस 32.86 के साथ एक चेतावनी. मुझे वास्तव में एक शौक़ीन संस्करण के लिए चलते हैं इस पेज, संस्करण दो, और माइक्रोसॉफ्ट, MSFT हम कहते हैं में लिखें. भाव करें. और अब, कोई चेतावनी नोटिस. सूचना है कि यह कीमत जहां कहते हैं निर्धारित करने के लिए? उदाहरण के सरल नहीं है कि क्या Gchat पर संकेत, और Facebook चैट, और जीमेल, और अन्य ऐसे वेबसाइटों द्वारा वास्तव में क्या कर रहे हैं वेब पेज बदल रहा है. इस पर ध्यान दें. मुझे पृष्ठ को फिर से लोड करते हैं. मुझे क्रोम के इंस्पेक्टर खोल दें. मुझे तत्वों को जाने दो. यहाँ नीचे टैब. अब मैं यहाँ नीचे में ज़ूम अगर सूचना और इस खोलो, यह है कि सूचना के मेरे HTML डोम - मेरे दस्तावेज़ ऑब्जेक्ट मॉडल. यह मेरी HTML है. लेकिन अब यह हो रहा है, भले ही नोटिस दोनों में यह देखने के लिए थोड़ा मुश्किल होने के लिए एक ही बार में स्थानों, मैं अमेरिकन प्लान में टाइप यहाँ ऊपर, नीचे घड़ी स्क्रीन के केवल. यह वास्तव में बदल रहा है मक्खी पर मेरे एचटीएमएल. और यह काफी बस यह कर रहा है कुछ इस तरह कर रही द्वारा. मैं Ajax-2 ऊपर खुला, नोटिस को लागू जितनी सेक्सी कुछ , यह बहुत बदसूरत है कि, भले ही लेकिन उस के रूप में परिष्कृत कार्यात्मक, यह कुछ है तल पर एचटीएमएल. लेकिन मैं टैग करने के लिए इस्तेमाल किया नोटिस. हम पहले यह आदत नहीं है, लेकिन यह है की तरह एक है, लेकिन इसे लागू नहीं करता है एक नई लाइन पर सब कुछ. यह सिर्फ एक आयताकार क्षेत्र में आता है एक ही लाइन पर अनिवार्य रूप से. मैं यह कीमत का एक पहचान पत्र दिया नोटिस. और यह उसी का उपयोग करके पता चला है जावास्क्रिप्ट पुस्तकालय, मैं एक समारोह है कहा जाता भाव () कि जब भी कहा जाता है फार्म प्रस्तुत है. और क्या मैं कर रहा हूँ यह है. मैं जावास्क्रिप्ट में एक चर घोषणा कर रहा हूँ मूल्य बचत, यूआरएल बुलाया quote.php? प्रतीक =. दूसरे शब्दों में, मैं अपने आप को शुरू कर रहा हूँ फिर एक HTTP अनुरोध को तैयार है, और करने के लिए मैं एक प्लस के साथ उस पर concatenating हूँ पहचान पत्र के साथ जो कुछ तत्व का प्रतीक है जो नोटिस, है पाठ क्षेत्र ठीक नीचे यहाँ. तो बस हम अतीत में रूपों था पसंद है. आप तो यह jQuery में पता चला है कहते हैं. एक वैल की कॉल कि वैल (), समारोह, एक मूल्य समारोह, कि हो जाता है उपयोगकर्ता अंदर टाइप किया गया है जो कुछ भी और फिर नेटवर्क यातायात के सभी कि यह है क्या होता है. $. GetJSON. और एक अलग रूप में, डॉलर के हस्ताक्षर है सिर्फ एक आशुलिपि संकेतन. यह वास्तव में jQuery.getJSON है. इस URL से JSON मुझे मिलता है, और जब अनुरोध वापस आता है, इस कॉल समारोह और तर्क के रूप में पारित जो कुछ भी वापस सर्वर से आया था. दूसरे शब्दों में, तो मैं करने के लिए वापस जाओ ब्राउज़र, और मैं quote.php के लिए वापस जाओ, क्या अपने ब्राउज़र कर रही है हो रही है आंकड़ों के इस टुकड़ा. और मैं यहाँ इस वेब पेज के लिए जाना है, हम बजाय नेटवर्क के लिए जाना अगर नोटिस टैब और यह स्पष्ट है, और उसके बाद में टाइप करें गूगल के लिए GOOG की तरह कुछ और करें भाव, पेज बदलाव नहीं किया नोटिस. लेकिन एक HTTP अनुरोध किया, और क्या था हम पर नजर डालें तो यहाँ वापस आया प्रतिक्रिया JSON की एक पूरी गुच्छा है हम साथ अंत में पहुँचा कि यहाँ इस सरल रेखा. डाटा मिल गया था क्या है सर्वर से. मूल्य का नाम है मैं देखभाल के बारे कुंजी. तो data.price मुझे कि देता है. अब इस बीच, और इस पिछले उदाहरण है. आप पृष्ठ के साथ अभी तक अधिक हो सकती है. एक वास्तव में, दो अच्छी तरह से. हम वापस ला सकता है आपको यह याद रखना अगर, टैग. जावास्क्रिप्ट है. हम ऐसा कर सकते हैं. बहुत रोमांचक है. हम एक cliffhanger के रूप में छोड़ दूँगा. लेकिन अधिक Excitingly, आप कर सकते हैं इस तरह बातें करते हैं. मैं जियोलोकेशन-1 के लिए जाना है, यह पता चला क्रोम हम पर जानता है कि कि अक्षांश देशांतर 42.37. -71.10. इसलिए भी अधिक है वहाँ अपने निपटान में. लेकिन यह है कि अगले सप्ताह पर अधिक. सोमवार मिलते हैं.