[Powered by Google Translate] [9 सप्ताह] [डेविड जे Malan हार्वर्ड विश्वविद्यालय] [यह CS50 है. - CS50.TV] सही सभी. वापस स्वागत है. इस CS50 है, और यह 9 सप्ताह की शुरुआत है. आज हम डिजाइन, अब नहीं है पर सी के संदर्भ में विशेष रूप से ध्यान केंद्रित लेकिन PHP के संदर्भ और SQL का एक सा और जावास्क्रिप्ट के एक बिट में, विशेष रूप से दोनों 7 pset के अंत की ओर है और यह भी अपने अंतिम परियोजना. वास्तव में, यदि आप अपने अंतिम परियोजना में उस बिंदु पर कर रहे हैं जहां संभवतः या तो एक घंटे पहले आप के रूप में कम से कम करने के लिए कुछ सोचा देना शुरू कर दिया अपने अंतिम परियोजना के लिए और आप सोच रहे हैं आप 1 या 2 सहपाठियों के साथ सहयोग करना चाहते हैं, अगर आप परेशानी हो रही है के साथ जोड़ने के सहपाठियों ने कहा, बाहर cs50.net/partners/form पर फार्म भरने के लिए स्वतंत्र महसूस हो रहा है. यह सिर्फ आपसे पूछता है कि आप कौन हैं, परियोजना की तरह क्या आप के बारे में सोच रहे हैं, जहां आप साजो कारणों के लिए रहते हैं. और फिर अगर आप पर अगले सप्ताह या तो स्प्रेडशीट वहाँ यूआरएल पर नजर रखना चाहते हैं, आप तो गूगल डॉक्टर के एक संस्करण केवल पढ़ने के लिए देख सकते हैं जिसमें हम उस जानकारी एकत्रित कर रहे हैं. तो अगर आप किसी के साथ काम करना चाहते हैं, हर तरह से लोगों तक पहुंचने के लिए स्वतंत्र महसूस उस तंत्र के माध्यम से. लेकिन लोगों के बहुमत एकल काम करते हैं. यह पूरी तरह से ठीक है. ऐसा नहीं लगता कि यह किसी भी अनिवार्य रास्ते में है. शुक्रवार को यह सिर्फ मेरे और यहाँ में एक टीम के कुछ, अधिकांश भाग के लिए खाली थिएटर. वहाँ 3 पर्यटकों को वहाँ बैठे थे, इसलिए, कि थोड़ा अजीब था. बारे में हम बात क्या डेटाबेस था और हम pset 7 एक थोड़ा के बारे में बात की थी. और अगर आप वीडियो पर कि बस अभी तक पकड़ नहीं हुआ, वह ठीक है. मैं किसी भी दृष्टि को परिभाषित करने की कोशिश है कि हम अन्यथा के लिए दी ले जाएगा शुक्रवार व्याख्यान के आधार पर. लेकिन आज हम करने के लिए आप बात करने के लिए प्राप्त करने की कोशिश करने के लिए जा रहे हैं सिर्फ 7 pset की तरह कुछ करने में सक्षम नहीं किया जा रहा लेकिन वास्तव में समझ क्या हुड के नीचे जा रहा है, विशेष रूप से कुछ चीजें है कि हम functions.php फ़ाइल में जगह में डाल के अपने जीवन को थोड़ा आसान बनाने के लिए, लेकिन इतना है कि आप अंततः समझ इतना है कि जब कुछ ही हफ्तों में प्रशिक्षण के पहियों से आते हैं आप अभी भी जीवित रह सकते हैं और असली दुनिया में आप नीचे किसी भी CS50 ढांचे के बिना यह सब करने. आप में से जो लोग परिचित हैं के लिए यह देखना $ या जो पहले से ही शुक्रवार को वीडियो पकड़ा, सत्र क्या करते हैं कि हमें क्या एक PHP आधारित वेब आवेदन में? Superglobal चर, जिसका मतलब है कि यह भावना में समान है और पोस्ट और कुछ अन्य लोगों, लेकिन क्या इस बात के लिए उपयोगी है? सत्र के लिए प्रयोग किया जाता है? हाँ. [छात्र] अंदर लॉगिंग क्षमा करें? [छात्र] अंदर लॉगिंग अंदर दरअसल लॉगिंग. 7 pset में हम इस सत्र superglobal उसमें लॉग इन करने की सुविधा का उपयोग कर रहे हैं और क्या इस superglobal के बारे में अच्छी बात यह है कि यह एक साहचर्य सरणी है. एक साहचर्य सरणी, याद है, बस एक सरणी है, लेकिन इंडेक्स जिसका नहीं रह नंबर होना चाहिए 012 की तरह. वे संख्या हो या वे भी तार हो सकता है कर सकते हैं. और यदि ऐसा है तो आप 7 pset में डुबकी लगाई है अभी तक, आप याद कर सकते हैं कि हम एक कुंजी बुलाया आईडी भंडारण कर रहे हैं जिसका मूल्य 123 की तरह कुछ है इस साहचर्य सरणी के अंदर - वर्तमान में उपयोगकर्ता आईडी में लॉग इन किया है जो कुछ भी. इस के लिए प्रेरणा है कि बाद भी उपयोगकर्ता लोकलहोस्ट का दौरा किया है या मेरी वेबसाइट और आम तौर पर और फिर वे में लॉग इन किया है, भले ही वे एक लिंक क्लिक करें या 5 मिनट के लिए मेरी वेबसाइट पर लौटने या भी एक घंटे या एक दिन भी, लेकिन वे अपने ब्राउज़र विंडो को खुला छोड़ दें, मैं इस superglobal के माध्यम से याद है कि वे लॉग इन कर सकते हैं दूसरे शब्दों में, यह मुझे थोड़ा लंबी अवधि के कुछ भी मैं एक उपयोगकर्ता के बारे में चाहते हैं स्टोर करने के लिए अनुमति देता है. और आप इसे एक शॉपिंग कार्ट के अवतार के रूप में वास्तव में सोच सकते हैं. अमेज़न जैसी जगहों पर स्पष्ट रूप से जाने के लिए आप खरीदारी की टोकरी में बातें करना, लेकिन HTTP प्रोटोकॉल है कि वेब शक्तियों, राज्यविहीन है इस अर्थ में है कि, जब आप एक वेबसाइट पर जाएँ अधिकांश भाग के लिए आप कुछ निरंतर नेटवर्क कनेक्शन नहीं है अपने ब्राउज़र और सर्वर के बीच. जैसे ही आप HTML और JPEGs और GIFs डाउनलोड किया है और कहा कि सभी, कनेक्शन दूर हो जाता है और तुम सिर्फ सर्वर से HTML और whatnot की एक प्रति है. लेकिन अगर सर्वर आप के बारे में कुछ याद करना चाहता है, वास्तव में उस जानकारी को रिकॉर्ड करने के लिए सर्वर पर बोझ है. और इसलिए आप प्रोग्रामर जो सर्वर पर नियंत्रण सबसे कुछ भी आप चाहते हैं इस superglobal साहचर्य सरणी के अंदर डाल सकते हैं और यह वहाँ अगली बार जब उपयोगकर्ता वापस आता होगा, चाहे वह मिनट या दिनों के बाद, जब तक वे अपने ब्राउज़र विंडो बंद, जो बिंदु पर सत्र गायब हो जाता है. तो यह अल्पकालिक भंडारण है, यह गैर लगातार है, और इसे दूर जाने का मतलब है के रूप में जल्द ही के रूप में उपयोगकर्ता उनके ब्राउज़र बंद कर देता है - टैब, बस नहीं है कि अक्सर पूरे ब्राउज़र, इस तरह प्रभावी उपयोगकर्ता लॉग आउट. तो कैसे इस बात को वास्तव में लागू किया जाता है? चलो एक सरल उदाहरण हम शुक्रवार को देखा पर एक त्वरित देखो ले. अपरिचित उन लोगों के लिए, यह के रूप में इस रूप में सरल था. यह एक वेब पेज जिनका एकमात्र उद्देश्य जीवन में मुझे बताओ कितनी बार मैं इस पृष्ठ का दौरा किया. यह सोमवार को पहली बार यहाँ है कि मैं यह दौरा किया है, तो यह 0 बार कहते हैं. लेकिन अगर मैं इस पृष्ठ reloading शुरू, यह समय 1, 2, 3, 4, 5 कहते हैं, और यह अंततः बस गिनती पर रखना होगा, ऊपर, ऊपर, ऊपर, ऊपर हर बार के लिए मैं वास्तव में इस पर लोड करें क्लिक करें. तो यह कैसे काम कर रहा है? मुझे इस counter.php नामक एक फाइल के अंदर जाना. यह के शीर्ष भाग में सभी नीले टिप्पणी है, लेकिन यहाँ दिलचस्प हिस्सा है. 13 लाइन पर हम इस समारोह session_start कहते हैं, और कहा कि सचमुच यह है कि तुम सब करने की जरूरत है अगर आप उपयोग करना चाहते हैं इस विशेष superglobal $ देखना बुलाया. कि यह सब संभव बनाता है, और हम सब कैसे है कि संभव है एक पल में देखेंगे. लाइन 16 नोटिस मैं क्या कर रहा हूँ. अगर दूसरे शब्दों में, मूल्य सूचकांक - "काउंटर" कुंजी, काउंटर बुलाया इस सरणी के अंदर मौजूद सत्र कहा जाता है, तो क्या मैं लाइन में हूँ इसके साथ नीचे कर रही है? 18 लाइन क्या कर रही है? [अश्राव्य छात्र प्रतिक्रिया] वह क्या है? [छात्र] मूल्य भंडारण. अच्छा है. यह मूल्य है कि सत्र में भंडारण एक नए स्थानीय अस्थायी चर में अब ठीक है, सभी लोअरकेस में काउंटर $. सूचना है कि PHP पहले से ही एक छोटे से आलसी यहाँ किया जा रहा है. सूचना हम int या नाव या स्ट्रिंग या की तरह कुछ भी किसी भी उल्लेख नहीं है कि क्योंकि PHP कमजोर टाइप किया जाता है, तो आप एक चर के प्रकार को निर्दिष्ट जिससे नहीं है, और इस मामले में मैं भी यह अभी तक घोषित नहीं किया है. मैं यह घोषणा कर रहा हूँ इन घुंघराले ब्रेसिज़ के अंदर और सी के विपरीत, यह वास्तव में ठीक है. कोई बात नहीं कितना गहरा एक चर घोषणा नेस्टेड PHP में है - धनु धनुकोष्ठक, धनु धनुकोष्ठक और इस तरह के अंदर के अंदर यह उस पल में कार्यक्रम के शेष के लिए समय में मौजूद होगा, बेहतर या बदतर के लिए. तो इसे तुरंत वैश्विक हो जाता है जैसे ही आप इसे परिभाषित के रूप में हम यहाँ क्या कर रहे हैं. अन्यथा, अगर मैं नहीं मिल रहा है कि वहाँ सत्र superglobal में कुछ भी है, जाहिरा तौर पर मैं हूँ 0 से इस चर काउंटर आरंभ, जिससे बस मान उपयोगकर्ता यहाँ पहले कभी नहीं किया गया है. और जाहिर है यह तो कैसे काउंटर incrementing है? मैं इस साहचर्य सरणी के मूल्य कि अंदर अद्यतन कर रहा हूँ यह काउंटर जो कुछ भी वर्तमान में 1 + बराबर की स्थापना से. अगर मैं नीचे स्क्रॉल पृष्ठ के HTML के लिए यहाँ है, यह वास्तव में बहुत आसान है. मैं इस पृष्ठ के शरीर में है, "तुम इतना और इतनी बार इस साइट का दौरा किया." और यह एक PHP का निर्माण है. यदि आप <=, यह क्या कार्य करने के लिए प्रभावी ढंग से बराबर है? यह वास्तव में printf की तरह कुछ है, जो हम सी में कई बार देखा है करने के लिए बराबर है, के रूप में आप पहले से ही सात pset में कल्पना से पता कर सकते हैं, हालांकि, प्रिंट भी एक समारोह में कहा कि अभी कुछ प्रिंट बाहर है, यह वास्तव में प्रारूप कोड का उपयोग नहीं करता है, और आप वास्तव में गूंज के रूप में अच्छी तरह से कह सकते हैं. वे सभी कर रहे हैं कभी तो थोड़ा अलग भले ही शुद्ध प्रभाव अंततः एक ही है. के इस प्रयोग के हस्ताक्षर के बराबर होती है तो इसे करने का एक सुंदर तरीका सिर्फ तरह है अधिक से अधिक succinctly आप अन्यथा करने में सक्षम हो सकता है. तो यह है कि यह सभी साइट करता है. यह काउंटर के मूल्य प्रिंट. यह सब कैसे वास्तव में हो रहा है? आप एक सप्ताह को याद कर सकते हैं, या तो पहले हम हुड के नीचे देख शुरू पर कैसे एक वेब पेज इस इंस्पेक्टर टैब का उपयोग करके काम करता है. क्रोम मैक संस्करण, Windows संस्करण, और यहां तक ​​कि Linux के संस्करण में यह दोनों है, और फ़ायरफ़ॉक्स और IE इसी तरह के तंत्र है जिससे आप इस डिबगर में निर्मित है अंदर ब्राउज़र. चलो निम्नलिखित पर एक नज़र रखना. हम टैब्स की एक पूरी गुच्छा मिला है यहाँ है, और याद है कि leftmost एक तत्व है, और कोई फर्क नहीं पड़ता कि कैसे godawful HTML और जावास्क्रिप्ट एक पृष्ठ में है, याद करते हैं कि तत्वों टैब के साथ आप वास्तव में HTML पदानुक्रम नेविगेट कर सकते हैं और अच्छा है और बड़े करीने से. तो अगर आप गूगल या फेसबुक जैसी वेबसाइट से सीखने की कोशिश कर रहे हैं या वास्तव में किसी भी वेबसाइट का एहसास है कि आप शायद बेहतर बंद स्रोत कोड में इस तरह के कच्चे स्रोत को देखने के लिए विरोध के रूप में देख रहे हैं, जो एक गड़बड़ हो सकता है, जैसा कि हम विशेष रूप से गूगल की साइट पर देखा है. तो अगर मैं बजाय नेटवर्क टैब पर क्लिक करें, चलो देखते हैं कि क्या हो रहा है जब मैं इस पृष्ठ पर जाएँ. पहले मुझे अपने कैश साफ. मैं क्रोम में सेटिंग्स में जाना और फिर इतिहास जाना जा रहा हूँ और फिर सभी ब्राउज़िंग डेटा साफ़ करें. आप अन्य प्रयोजनों के लिए ऐसा करने के लिए इस्तेमाल किया जा सकता है, [हँसी] लेकिन जब यह वेबसाइटों के विकास के लिए आता है, यह वास्तव में उपयोगी है - अगर आप हँस रहे हैं आप जानते हैं. [हँसी] यह वास्तव में बहुत उपयोगी है जब वेबसाइटों को विकसित क्योंकि वास्तविकता यह है और कुकीज़ कैश्ड HTML फ़ाइलों, कैश्ड जावास्क्रिप्ट फाइलों की तरह चीजों की तरह बातें वास्तव में एक बड़ा सिरदर्द बन सकता है, क्योंकि अगर जो भी कारण के लिए ब्राउज़र के लिए कुछ फ़ाइल कैश का फैसला किया है और अभी तक आप उस फाइल करने के लिए सर्वर पर परिवर्तन कर दिया है लेकिन ब्राउज़र वास्तव में है कि फ़ाइल बदल गया है एहसास नहीं है और इसलिए वास्तव में नहीं करता है फिर से इसे डाउनलोड यहां तक ​​कि जब आप पुनः लोड बटन पर क्लिक करें, एक सबसे अचूक तरीके सिर्फ यकीन है कि गलती अपने कोड के साथ नहीं है, यह ब्राउज़र के व्यवहार के साथ है, अपने ब्राउज़र में यहाँ में जाना है और सिर्फ पूरे इतिहास साफ इतना है कि वहाँ कोई भ्रम नहीं है. और फिर अगर तुम सच में पागल होना चाहते हैं, ब्राउज़र छोड़ने, इसे पुनः आरंभ और तब यह सुनिश्चित करें कि सभी काम कर रहा है के रूप में की उम्मीद कर सकते हैं. तो संक्षेप में, समाशोधन कैश अच्छा है जब विकास कर रही है. तो यहाँ हम नेटवर्क टैब है. मैं पहले साइट 9 बार दौरा किया था, लेकिन अब मुझे आगे जाना है और लोड करें क्लिक करें. और मैं वापस नीचे 0 करने के लिए कर रहा हूँ. चलो वास्तव में देखने के लिए कैसे यह है कि इस सत्र superglobal कार्यान्वित किया जा रहा है. मैं 1 HTTP अनुरोध किया गया था कि पर क्लिक करने के लिए जा रहा हूँ, और इस डिबगिंग विंडो की मदद से मुझे उस के अंदर देखो. यहाँ मैं सिर्फ सर्वर है, जो दिलचस्प नहीं है से प्रतिक्रिया देखते हैं. मैं किसी भी तरीके की संख्या में यह देखा है. लेकिन क्या तकनीकी दिलचस्प है हेडर हैं. अगर मैं यहाँ नीचे स्क्रॉल करें और अनुरोध हेडर पर ध्यान केंद्रित करने और देखने के स्रोत क्लिक करें, मैं देखने के लिए जा रहा हूँ क्या सचमुच HTTP अनुरोध कि सिर्फ अपने ब्राउज़र से सर्वर के लिए चला गया, ऑपरेटिव शब्द जा रहा है और फिर / फ़ाइल नाम किया जा रहा है counter.php, HTTP/1.1 सिर्फ HTTP के संस्करण किया जा रहा है कि मेरी ब्राउज़र का उपयोग कर रहा है. यहाँ यह लाइन ब्राउज़र से सर्वर के लिए एक छोटे से अनुस्मारक सर्वर का नाम क्या है कि यह बात करने के लिए करना चाहता है. और फिर इस के बाकी कभी कभी दिलचस्प है, लेकिन प्रासंगिक नहीं अब ठीक है. यह सिर्फ एक जिज्ञासा की तरह है. क्रिप्टिक हालांकि इस स्ट्रिंग है, किसी भी समय अपने ब्राउज़र एक वेबसाइट का दौरा यह सर्वर बताए है क्या आप ब्राउज़र का उपयोग कर रहे हैं और क्या आप ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं और क्या उसके संस्करण. तो अगर तुम कभी सीएनएन और whatnot की तरह कैसे वेबसाइटों आश्चर्य है पता है कि प्रतिशत क्या वेब, पीसी उपयोगकर्ताओं पर मैक उपयोगकर्ताओं के हैं, IE उपयोगकर्ताओं, क्रोम उपयोगकर्ताओं और इस तरह, यह है क्योंकि हमारे सभी ब्राउज़रों के हर एक वेबसाइट वहाँ से बाहर कह रही है कि हम क्या कर रहे हैं. यह जरूरी व्यक्तिगत रूप से पहचान योग्य जानकारी शामिल नहीं है, लेकिन यह सर्वर बताने के लिए अपने आईपी पता क्या है और क्या आप ब्राउज़र और OS का उपयोग कर रहे हैं. इतना है कि जहां इस जानकारी है. लेकिन क्या अब और अधिक दिलचस्प है जब यह इन सत्रों के लिए आता प्रतिक्रिया हेडर है. मुझे प्रतिक्रिया करने के लिए अगले स्रोत देखने के लिए क्लिक. दिलचस्प यहाँ क्या कुछ चीजें है. 1, हम 200 की एक स्थिति कोड वापस मिल गया. हम देखते हैं, क्योंकि इसका मतलब है कि सब कुछ ठीक है यह स्थिति कोड नहीं है. यह सचमुच कुछ और करने के लिए विपरीत ठीक मतलब है. कभी कभी हम देखते हैं कि बुरा है एक संख्या क्या है? 404 [] छात्र. 404 फ़ाइल नहीं मिला, आप 403 पर पहले से ही ठोकरें खाते हुए चल सकता है, जो मना किया है, जिसका अर्थ है आप chmod सबसे अधिक संभावना है, कुछ भूल गया. और दूसरों की एक गुच्छा है. यहाँ नीचे, यह एक छोटे से पागल है. मैं वास्तव में सिर्फ यह जीएडिट में चिपकाने के द्वारा इस फाइल के कुछ ही मिनट पहले लिखा था. इस पेज को 1981 में समय सीमा समाप्त हो क्यों था कि पहले वहाँ वास्तव में एक वेब था? वहाँ क्या हो रहा है? [अश्राव्य छात्र प्रतिक्रिया] समय स्टाम्प. लेकिन क्यों? यह कुछ मनमाना है, लेकिन यह वास्तव में उपयोगी है. क्या यह अपने ब्राउज़र के लिए कह रही है इस PHP फ़ाइल तुम सिर्फ पहले ही समाप्त हो गया है. वास्तव में, यह 30 साल पहले समाप्त हो गई है. लेकिन यह है कि क्या वास्तव में क्या मतलब है? यह सिर्फ अगली बार जब उपयोगकर्ता इस पृष्ठ का दौरा मतलब है, चाहे reloading या टाइपिंग पता पट्टी में URL, यकीन है कि तुम जाओ और इसके बारे में एक नई प्रतिलिपि लाने. इस कैश को ख़त्म करने का एक उदाहरण की तरह है, एक बेवकूफ शब्द है कि बस ब्राउज़रों को हतोत्साहित करने की कोशिश का मतलब वास्तव में कैशिंग HTML से है कि एक सर्वर से भेजा गया है ताकि आप गलती से पुनः लोड नहीं मारा करते हैं और फिर फ़ाइल का एक ही संस्करण देख. आप वास्तव में एक नई प्रतिलिपि भेजने के लिए सर्वर चाहते हैं. तो तथ्य यह है कि यह 1981 है सिर्फ मतलब है कि कि क्या उपकरण चुनने है अतीत में एक मनमाना तारीख के रूप में. लेकिन असली रसदार लाइन अब यह एक है. 50 से पहले भी तो आप शायद थोड़ा कुकीज़ के साथ परिचित है. जैसा की अभी, विशेष रूप से कम आराम से या बीच में उन लोगों के बीच, क्या अपने को समझने में एक कुकी अब ठीक है भले ही हम अपनी समझ को और अधिक तकनीकी के बारे में कर रहे हैं? एक कुकी क्या है? हाँ. [छात्र] उपयोगकर्ता के बारे में जानकारी, जैसे अगर वे अपने उपयोगकर्ता नाम या कुछ लिखा है. अच्छा है. यह उपयोगकर्ता के बारे में जानकारी है, चाहे वे अपने उपयोगकर्ता नाम में टाइप किया है पहले से ही है. कूकिज एक तरीका है जिससे सर्वर एक उपयोगकर्ता के बारे में कुछ याद कर सकते हैं कर रहे हैं. और एक कुकी वास्तव में है क्या एक पाठ फ़ाइल या बाइट्स के कुछ दृश्य कि अपने ब्राउज़र के अंदर सर्वर द्वारा लगाया है, और पहचानकर्ता के अंदर है कि फ़ाइल या उन बाइट्स के बीच किसी तरह का है. शायद यह सचमुच अपने उपयोगकर्ता नाम है, लेकिन अधिक बार यह गुप्त दिखने कुछ है bo8dal3ct और बहुत आगे है - यह वास्तव में बड़ा अल्फ़ान्यूमेरिक स्ट्रिंग यहाँ इस बात की तरह कि वास्तव में सिर्फ है आप के लिए एक अद्वितीय पहचानकर्ता होने का मतलब. या आप इसे एक आभासी हाथ स्टांप की तरह के रूप में सोच सकते हैं. यदि आप कुछ क्लब या एक मनोरंजन पार्क करने के लिए जाना है, याद रखें कि आप वास्तव में भुगतान किया है और में चला गया है, वे किसी तरह की अपने हाथ पर एक छोटे से लाल स्टीकर डाल, और कि काउंटर है कि आप पहले से ही भुगतान किया है पर लोगों को याद दिलाता है और आप के आने और जाने के रूप में आप कृपया कर सकते हैं. कुकीज़ एक छोटे से आत्मा में है कि इसी तरह से कर रहे हैं. पहली बार मैं इस वेबसाइट का दौरा किया है, के रूप में मैं सिर्फ अपने कैश को साफ़ करने के बाद किया था, वेब सर्वर, इस मामले में उपकरण, मेरे हाथ पर एक मोहर लगा जिसका नाम है PHPSESSID, सत्र आईडी, जिसका मूल्य यह वास्तव में लंबे समय अल्फ़ान्यूमेरिक स्ट्रिंग है. तो यह है कि अब मेरे हाथ पर emblazoned की तरह है ताकि अगली बार जब मैं हिट पुनः लोड या मैन्युअल रूप से एक ब्राउज़र में इस URL पर जाएँ, परिभाषा HTTP के द्वारा अपने ब्राउज़र हाथ स्टांप उपस्थित जा रहा है फिर से और फिर से. तो भले ही सर्वर जरूरी नहीं कि मैं कौन हूँ पता नहीं है, वे कम से कम पता है कि मैं एक ही उपयोगकर्ता या कम से कम, और अधिक विशेष रूप से, एक ही ब्राउज़र हूँ. और इसलिए यह अंततः कैसे सत्र superglobal कार्यान्वित किया जाता है. सर्वर में कोई विचार है कि आप जो कर रहे हैं जब आप दूसरे के लिए एक वेबसाइट या तीसरी बार फिर से आना है जब तक आप इस हाथ टिकट प्रस्तुत करते हैं. और जैसे ही आप कि हाथ टिकट उपस्थित, वेब सर्वर अनिवार्य रूप से अपनी खुद की एक छोटे से डेटाबेस में चला जाता है और चेक, ठीक है, मैं सिर्फ उपयोगकर्ता bo8dal3ct के हाथ स्टांप देखा है और बहुत आगे है. मुझे देखने के लिए क्या जानकारी प्रोग्रामर संग्रहित है इस उपयोगकर्ता के बारे में superglobal के अंदर, और तो मुझे यकीन है कि उस डेटा फिर से superglobal सत्र के अंदर है इतना है कि प्रोग्रामर है कि डेटा फिर से उपयोग कर सकते हैं यहां तक ​​कि अगर यह कुछ मिनट या घंटे पहले स्थापित किया गया था. तो दूसरे शब्दों में, कुकीज़, जो कुछ समय के लिए एक बुरा आवाज मिल ब्राउज़रों में असुरक्षा की वजह से है और वे वास्तव में हमारी गोपनीयता का उल्लंघन कर सकते हैं और यह सब, वे वास्तव में उन्हें क्योंकि बिना बड़ी उपयोगिता है आप लगातार हर Facebook पृष्ठ आप यात्रा करने में लॉग इन होना या हर Gmail ईमेल पढ़ने के लिए अगर ब्राउज़र को याद करने का कोई रास्ता नहीं था है कि आप पहले से ही प्रमाणीकृत है. तो इस तरह से कुकीज़ को आगे और पीछे की तार के पार भेजा जाता है. कुकीज़ के बारे में एक और जिज्ञासा, विशेष रूप से यहाँ है, कि इस cleartext में पूरी तरह से है. वहाँ कोई एन्क्रिप्शन यहाँ पर जो भी जा रहा है, और वास्तव में मैं पल में HTTP का उपयोग कर रहा हूँ. CS50 में हमारे पसंदीदा क्षणों में से एक है, जो अब 2 साल पहले, समय के आसपास एक Firesheep नामक उपकरण बाहर आया था. इस सॉफ्टवेयर के एक मुक्त टुकड़ा था कि एक सुरक्षा शोधकर्ता द्वारा बनाया गया था समुदाय के लिए एक जगा फोन के रूप में कहने के लिए बस कैसे atrociously कार्यान्वित वेब पर कुछ प्रमाणीकरण तंत्र थे. इसलिए कुछ समय के लिए, Facebook HTTP, HTTPS पर लगभग पूरी तरह से था. और यहां तक ​​कि अगर आप कोई विचार कैसे क्रिप्टो काम करता है, एस सुरक्षित है तो यह मतलब है कि कम से कम कुछ एन्क्रिप्शन शामिल है. उपयोगकर्ता नाम और पासवर्ड एन्क्रिप्ट करने के लिए इस्तेमाल किया है, लेकिन जैसे ही आप अपने को देखा pokes या अपने संदेश या अपने समाचार फ़ीड, कि के सभी unencrypted किया गया था. सिर्फ एक या 2 साल पहले तक तो जीमेल था. किसी भी समय आप में लॉग इन, हाँ, वे सुरक्षित एन्क्रिप्शन का इस्तेमाल किया है, लेकिन उसके बाद वे नहीं किया. और क्यों है कि हो सकता है? क्यों क्रिप्टोग्राफी नहीं बस इस तरह से उपयोग के मामलों में समय के सभी का उपयोग करें? वह क्या है? मुझे लगता है कि मैंने कुछ सुना है. [छात्र] स्पीड. गति, है ना? वहाँ इस आस तरीके हैं. लेकिन अगर आप बस की तरह इसके बारे में तार्किक लगता है, अगर आप कुछ एन्क्रिप्ट आप कम से कम एक छोटे से अधिक काम करना है. 2 pset में, जब आप सीज़र या Vigenere लागू या यहां तक ​​कि क्रैक सिर्फ एक स्ट्रिंग मुद्रण अपेक्षाकृत आसान है. और फिर एक स्ट्रिंग Encrypting न्यूनतम मुद्रण थोड़ा और अधिक काम की आवश्यकता है.  गूगल और फेसबुक जैसी सुपर लोकप्रिय वेबसाइटों के लिए, अगर आप प्रत्येक उपयोगकर्ता के लिए हर एक वेब पेज वे यात्रा के लिए और अधिक काम करना है, कि सिर्फ अधिक CPU समय लेता है. और अगर आप ज्यादा CPU समय की जरूरत है, तो आप अधिक सर्वर की आवश्यकता हो सकती है, जिसका मतलब है कि आप अधिक पैसे की जरूरत हो सकती है. और इतने सालों के लिए यह सिर्फ सच में सबसे अच्छा अभ्यास नहीं था. लोग केवल जब वे जरूरत SSL एन्क्रिप्शन का प्रयोग करेंगे. लेकिन यह पता चला है, और सुपर Firesheep साथ इस साथी के रूप में स्पष्ट कर दिया है, जब आप लोग जो फेसबुक पर वर्तमान में सही अब कर रहे हैं - बाहर जिज्ञासा का, चलो देखते हैं अगर आप fess हूँ. यदि आप फेसबुक पर अभी कुछ टैब में कर रहे हैं, तो भी यह नहीं foregrounded है, आपके यूआरएल HTTP या HTTPS है? [कई छात्रों] एस एस? [हँसी] ठीक है. किसी HTTP? बस 1? ठीक है. तो हम सब उस आदमी फेसबुक खाते सही अब हैक कर सकते हैं. अधिकांश भाग के लिए बन गया है डिफ़ॉल्ट रूप से चालू है, कम से कम कुछ वेबसाइटों में. और लंबी कहानी संक्षेप में, अगर अपने वेब यातायात एन्क्रिप्टेड नहीं है, न केवल HTML unencrypted WiFis भर में आगे और पीछे जाने के लिए, इसलिए कुकीज़ की तरह बातें हवा भर में आगे और पीछे जाने एन्क्रिप्शन के बिना किसी भी रूप में. तो अगर तुम सिर्फ प्रोग्रामिंग प्रेमी की एक बिट या कौशल Googling के एक बिट मुक्त सॉफ्टवेयर है कि इस करता मिल जाए, सब तुम्हें क्या करना है स्टारबक्स में बैठने या एक हवाई अड्डे में बैठने के लिए जहां आम तौर पर वाईफ़ाई unencrypted या PHPSESSID: और सिर्फ सेट कुकी जैसे खोजशब्दों के लिए घड़ी क्योंकि यदि आप तकनीकी प्रेमी है बस वाईफ़ाई देखने के लिए इस पद्धति के लिए हवा भर प्रवाह कि बिट्स के सभी के लिए, तुम तो कह है कि आदमी PHPSESSID और इतना आगे bo8dal होना होता कर सकते हैं. और फिर अगर आप पर्याप्त तकनीकी प्रेमी हो या सही उपकरण है, तुम तो बस reconfigure अपने ब्राउज़र कि हाथ टिकट पेश कर सकते हैं शुरू करने के लिए Facebook.com, और फेसबुक सिर्फ लगता है कि आपको लगता है कि आदमी जा रहा है क्योंकि वे जानते हैं कि आप जो कर रहे हैं, लेकिन यह है कि आप इस अद्वितीय पहचानकर्ता नहीं है. तो अगर आपको लगता है कि अद्वितीय पहचानकर्ता चोरी और अपने खुद के रूप में वेब सर्वर के लिए मौजूद है, वे सिर्फ आप उस व्यक्ति समाचार फ़ीड दिखाने जा रहे हैं या उस व्यक्ति संदेश या pokes. और अब मैं कैसे गूगल के लिए Facebook HTTPS को सक्रिय करने के लिए शायद होगा. लेकिन यह सच है कि जितना सरल है. और इसलिए फेसबुक और गूगल और इस तरह इस पर वास्तव में अच्छा मिल गया है, लेकिन किसी भी वेबसाइटों आप यात्रा है कि HTTP का उपयोग नहीं करते के लिए सभी को और अधिक बाहर एक नज़र रखना और संवेदनशील जानकारी के उन पर किसी तरह का है, चाहे वह वित्तीय या व्यक्तिगत है या पसंद है. यदि वे इस का उपयोग नहीं कर रहे हैं, काफी संभवतः इस तरह कुकीज़ चोरी हो बहुत आसानी से किया जा सकता है और फिर जाली, और कहा कि वास्तव में Firesheep क्या किया है. आप एक प्रोग्रामर होने के लिए नहीं था. तुम सब करना पड़ा था एक इंटरनेट कनेक्शन, यह मुफ़्त उपकरण डाउनलोड, और यह क्या करना होगा है कि आप में लॉग इन करने के लिए और फिर यह आप फेसबुक नाम दिखा सकते हैं सैंडर्स में हर कोई इस विशेष प्रदर्शन में आप के आसपास, और तुम सब करना पड़ा था उनके नाम पर क्लिक करें और सॉफ्टवेयर प्रक्रिया स्वचालित कि कुकी सूँघने, फेसबुक के लिए यह अपने खुद के रूप में पेश किया, और, voila, तुम अंदर लॉग इन कर रहे हैं तो यह उन लोगों में से एक और एक है आधिकारिक "यह मत करो." यदि आप अपने घर नेटवर्क है और आप टिंकर करने के लिए चाहते हैं, हर तरह से, पता नहीं लेकिन यह एक विश्वविद्यालय के माहौल पर रेखा को पार करता है. लेकिन यहाँ लक्ष्य वास्तव में जोर नहीं कि यह कैसे करना है लेकिन कैसे चीजों के इन प्रकार के खिलाफ की रक्षा करने के लिए. और तुच्छ यहाँ के समाधान है, भले ही यह ही त्रुटिपूर्ण है, वास्तव में किसी भी साइटों है कि HTTPS का लगातार उपयोग नहीं कर रहे हैं के उपयोग को कम करने के लिए है. तो फेसबुक और गूगल जैसी साइटों तेजी जांचपेटी को है आप में जहां इस तरह की बात करने के लिए चुन सकते हैं, बैंकों और इसी तरह के कारणों के लिए साल के लिए यह किया है. तो सिर्फ एक डर है कि अगर हम यह कर सकते हैं कारक का एक छोटा सा. लेकिन यह है कि यह एक संक्षेप में है. यही कारण है कि कैसे एक सर्वर को याद है कि आप कौन हैं. और जैसे ही वे याद कर सकते हैं कि आप कौन हैं, वे तुम्हारे बारे में कुछ भी याद कर सकते हैं कि प्रोग्रामर के अंदर इस विशेष $ बुलाया देखना superglobal संग्रहीत किया गया है. और के लिए 7 pset हम प्रयोग कर रहे हैं तुच्छता सिर्फ एक int को याद करने के लिए, अर्थात् जो उपयोगकर्ता में लॉग इन किया है की अद्वितीय ID, इतना है कि हम जानते हैं कि वे वहाँ से पहले किया गया है. सत्र या कुकीज़ या पसंद पर तो कोई सवाल? Firesheep के रूप में अच्छी तरह से काम नहीं करता है, और आप के लिए एक विशेष सिद्धांतशून्य मोड में आपके कंप्यूटर में डाल दिया है तो आप वास्तव में अपने आप के अलावा यातायात के लिए सुन रहे हैं. तो अगर आप वर्तमान Firesheep डाउनलोड कर रहे हैं, यह काफी के रूप में आसान नहीं पता है के रूप में इसे एक बार प्रदर्शित करने के लिए किया गया था. सही सभी. और यह सैंडर्स में नहीं करते. इसे घर पर करो. डेटाबेस. बातें हम 7 pset में बहुत जान - बूझकर किया हम आपको उपयोगकर्ताओं है कि कुछ उपयोगकर्ता IDs के लिए एक नमूना डेटाबेस तालिका दे, कुछ उपयोगकर्ता नाम, और उसमें कुछ एन्क्रिप्टेड पासवर्ड. और जैसा कि आप देखेंगे, अगर आप पहले से ही नहीं है, तो आप करने के लिए तालिका में एक छोटा सा बदल जा रहे हैं. आप करने के लिए कि तालिका में उपयोगकर्ताओं में से प्रत्येक के लिए कुछ कैश जोड़ने के लिए जा रहे हैं, और आप करने के लिए एक और इतिहास मेज, एक विभागों तालिका जोड़ने के लिए जा रहे हैं, या शायद यह कुछ और कहते हैं. लेकिन यह कैसे करना है के बारे में सोच के मामले में, चलो इस उपकरण खोलने जो हम शुक्रवार को प्रयोग किया जाता है, लेकिन अगर अपरिचित, उपकरण एक उपकरण के साथ आता है phpMyAdmin है जो संयोग से PHP में लिखा है, कहा जाता है, लेकिन जीवन में अपने उद्देश्य, यहाँ मैं jharvard रूप में क्रिमसन साथ लॉग इन करने के बाद, मुझे देखने और बदलने के अपने डेटाबेस की एक उपयोगकर्ता के अनुकूल तरीके से दे रहा है. डेटाबेस है कि मैं उपकरण पर चल रहा हूँ MySQL कहा जाता है. यह बहुत लोकप्रिय है, और यह एक मुक्त खुला स्रोत डेटाबेस है कि शानदार उपयोग करने के लिए आसान है, विशेष रूप से सामने इस तरह से समाप्त होता है. इस उपकरण के लिए मुझे क्या करने की अनुमति देता है, उदाहरण के लिए, टेबल के आसपास प्रहार है. मुझे आगे जाना है और यह नहीं है. शुक्रवार को हम एक तालिका छात्रों कि सुपर सरल था बुलाया बनाया. आईडी, नाम, और ईमेल - यह 3 कॉलम था और मैं स्वयं पंक्तियों की एक जोड़ी डाला इस विशिष्ट उदाहरण में दाऊद और माइक की तरह. चलो यह एक थोड़ा आगे ले, और चलो मान लेते हैं कि हम और अधिक याद रखना चाहते हैं की तुलना में सिर्फ एक उपयोगकर्ता के बारे में नाम, ईमेल. मुझे संरचना क्लिक करें शीर्ष पर यहाँ. और फिर, pset आप अपेक्षित यहाँ कदम के माध्यम से चलता है, यदि ऐसा है तो इस में से कुछ एक बिट जल्दी है चिंता मत करो. तो मैं यहाँ पर क्लिक करने के लिए जा रहा हूँ. मैं ईमेल के बाद स्तंभों की कुछ संख्या जोड़ने के लिए जा रहा हूँ क्योंकि मैं करने के लिए घर की तरह कुछ जोड़ना चाहते हैं. मैं एक छात्र के घर को रिकॉर्ड करने के लिए भूल गया. मुझे जाएँ क्लिक करें, और अब हम इस फार्म का है कि दुर्भाग्य से बाएँ से सही करने के लिए एक छोटे से विस्तृत है, लेकिन मैं इस क्षेत्र के घर के नाम कॉल करने के लिए जा रहा हूँ, और फिर प्रकार मैं अब चुनना है. तो चलो MySQL में विभिन्न प्रकार के बारे में एक संक्षिप्त बातचीत क्योंकि जबकि PHP कमजोर टाइप किया जाता है और यह की तरह तेजी से और प्रकार के साथ ढीला निभाता है, एक डेटाबेस में विशेष रूप से यह सुपर महत्वपूर्ण है वास्तव में अपने लाभ के लिए टाइपिंग का उपयोग क्योंकि बातें MySQL और अन्य डेटाबेस इंजन के एक तुम्हारे लिए क्या कर सकते हैं सुनिश्चित करें कि आप फर्जी डेटा अपने डेटाबेस में डाल नहीं है. यह आप के लिए उपलब्ध त्रुटि जाँच की तरह है. हम घर के लिए स्पष्ट रूप से यह एक int, जो MySQL में एक 32-bit मूल्य होने के लिए नहीं करना चाहती. हम शुक्रवार को संक्षेप में varchar, जो चर चार लंबाई के लिए खड़ा है के बारे में बात किया. यह क्या है? यह आपको यह निर्दिष्ट करने की अनुमति देता है कि आप यह किसी प्रकार की एक स्ट्रिंग होना चाहता हूँ. तुम सच कितना समय है अग्रिम में पता नहीं है, तो हम मनमाने ढंग से कहते हैं कि एक घर का नाम 255 वर्ण हो सकते हैं, लेकिन आप 32, 64 के साथ जा सकते हैं - किसी भी संख्या वास्तव में. लेकिन एक चार नामक क्षेत्र पर एक varchar का उपयोग करने के लाभ क्या है? बस intuitively अगर मैं यहाँ नीचे स्क्रॉल नोटिस, वहाँ चार है और वहाँ varchar है. Varchar चर चार लंबाई है, चार एक निश्चित चार लंबाई है. तो उस परिभाषा पर ही आधारित है, या इनमें से प्रत्येक के लाभ और नुकसान क्या है? दूसरे शब्दों में, जो अंतर के बारे में परवाह है, या तुम क्यों परवाह करूँ? हाँ. [छात्र] varchar अधिक लचीलापन है, लेकिन और अधिक स्मृति लेता है. अच्छा है. VARCHAR ऊपर लेता है - चलो देखते हैं. मुझे यकीन है कि अगर मुझे लगता है कि सही सुना नहीं कर रहा हूँ. आप कह सकते हैं कि एक बार और अधिक? [छात्र] मैंने कहा varchar शायद और अधिक लचीलापन है, लेकिन इसे और अधिक स्मृति लेता है. दिलचस्प है. ठीक है. VARCHAR शायद आप अधिक लचीलापन देता है, लेकिन और अधिक स्मृति लेता है. बाद जरूरी सच नहीं है. यह संदर्भ पर निर्भर करता है, लेकिन है कि वापस आने के. [अश्राव्य छात्र प्रतिक्रिया] बिल्कुल सही. यह वास्तव में मामला है कि चार आमतौर पर अधिक स्मृति का उपयोग करेगा क्योंकि एक चार, सी में की तरह, एक स्ट्रिंग की तरह है, यह वर्णों की एक सरणी है. तो अगर आप 255 लंबाई के चार क्षेत्र कहते हैं, डेटाबेस सचमुच आप 255 अक्षर दे रहा है. और अगर घर में समाप्त होता है माथर और 6 वर्ण कुल किया जा रहा है, आप 200 अक्षरों से अधिक बर्बाद कर रहे हैं. तो एक प्रभावी varchar केवल कई पात्रों के रूप में उपयोग करता है के रूप में आवश्यक है एक अधिकतम राशि है. लेकिन कीमत है जो आप भुगतान वास्तव में संभावित प्रदर्शन,. यदि आप पहले से जानते हैं कि अपने तार के सभी 8 वर्ण होने जा रहे हैं - उदाहरण के लिए, मान लीजिए कि आप 8 लंबाई के पासवर्ड की आवश्यकता होती है - इस अवसर पर एक चार क्षेत्र का उपयोग हालांकि अक्सर नहीं, उल्टा, एक पासवर्ड की तरह कुछ के लिए एक निश्चित लंबाई निर्दिष्ट क्योंकि अब डेटाबेस भी चालाक हो सकता है. यदि यह है कि हर चार क्षेत्र जानता है, एक स्तंभ में हर स्ट्रिंग एक ही लंबाई है, तुम वापस यादृच्छिक अभिगम की सुविधा मिलती है. आप के चारों ओर चार विभिन्न क्षेत्रों में अपने डेटाबेस तालिका में कूद कर सकते हैं क्योंकि पंक्तियों और स्तंभों के रूप में एक डेटाबेस के बारे में सोचना. तो अगर तारों में से हर एक को एक ही लंबाई है, आप जानते हैं कि पहले एक 0 बाइट पर है, अगले एक 8 बाइट और फिर 16 और फिर 24 और बहुत आगे है. तो अगर सभी एक ही लंबाई के तार कर रहे हैं, आप के आसपास और अधिक कुशलता से कूद कर सकते हैं. तो यह है कि प्रदर्शन के मामले में एक लाभ हो सकता है, लेकिन आम तौर पर आप अग्रिम में जानने के लक्जरी नहीं है, तो एक varchar जाने के लिए रास्ता है. यहाँ एक और विस्तार है कि यहां तक ​​कि फेसबुक अंततः में भाग गया है. Ints महान हैं, और हम तरह से उन्हें डिफ़ॉल्ट रूप से किसी भी समय हम एक नंबर का उपयोग, लेकिन यह केवल 32 बिट है. और भले ही फेसबुक काफी 4 अरब उपयोगकर्ताओं नहीं है अब, वहाँ निश्चित रूप से कई खातों के साथ कुछ लोगों को वहाँ से बाहर है या खातों कि खोला गया है और फिर बंद कर दिया है, और इतना ही Facebook मेरा मानना ​​है कि कुछ साल पहले int से संक्रमण के लिए किया था , के रूप में जिसे उपयुक्त कहा जाता है, bigint, जो सिर्फ 64 बिट के बजाय है. तो यह भी एक डिजाइन निर्णय है. तुम बहुत भाग्यशाली हो सकता है अगर अपने अंतिम परियोजना स्टार्टअप बदल जाता है, 4 अरब डॉलर और 1 उपयोगकर्ताओं, दे या ले, जो मामले में ints का उपयोग करते हुए एक छोटे से अदूरदर्शा हो सकता है. लेकिन वास्तविकता में, अपने उपयोगकर्ताओं को तालिका शायद ints के साथ ठीक है. लेकिन 7 pset की तरह कुछ के लिए, अपने इतिहास की मेज की तरह, आप हजारों, लाखों उपयोगकर्ताओं के अगर आप etrade.com में विकसित हो सकता है. जबकि आप 4 अरब से अधिक उपयोगकर्ताओं नहीं हो सकता है, उन उपयोगकर्ताओं तुम है समय के साथ अधिक से अधिक 4 अरब लेनदेन हो सकता है - खरीदता है और बेचता है और अपने इतिहास में बातें. तो अगर आप आशा करते हैं - फिर, ये अच्छा है अगर आप इतना डेटा समस्याएं हैं - अगर आप एक int के आकार से अधिक डेटा की आशा करते हैं, bigint की तरह कुछ के साथ जाने के लिए एक दिशा डिजाइनरों द्वारा अक्सर पर्याप्त नहीं अपनाया है क्योंकि लोगों आंकड़ा है कि एक समस्या हो नहीं जा रहा है, लेकिन यह आसान है उस से भी बड़ा कुछ का चयन. दशमलव हम pset 7, जो निश्चित परिशुद्धता निर्दिष्ट में प्रयोग कर रहे हैं तो आप मंगाई और युगल और reals और इस तरह से जुड़े मुद्दों से बचने के लिए कर सकते हैं. और फिर वहाँ कुछ अन्य क्षेत्रों यहाँ है. हम उन पर कुछ हद तक हमारे हाथ लहर हूँ. लेकिन दिनांक, समय सभी MySQL में एक निर्धारित प्रारूप है, और तिथियाँ और varchars नहीं के रूप में भंडारण दिनांक का लाभ मतलब यह है कि डेटाबेस वास्तव में उन्हें विभिन्न स्वरूपों में पुन: स्वरूपित कर सकते हैं, कि एक अमेरिकी प्रारूप या यूरोपीय प्रारूप या तरह - लेकिन आप यह चाहते हैं - और अधिक कुशलता से अगर यह सिर्फ कुछ सामान्य varchar थे. और फिर वहाँ कुछ अन्य बाइनरी, varbinary, blobs है. इन द्विआधारी बड़ी वस्तुओं रहे हैं, और आप भी बाइनरी डेटा स्टोर कर सकते हैं के रूप में अच्छी तरह से एक डेटाबेस में ज्यामितीय डेटा के रूप में. लेकिन हमारे लिए हम आम तौर पर ints और varchars है और इस तरह के बारे में ध्यान देंगे. चलो घर के साथ इस उदाहरण खत्म. हाउस मैं मनमाने ढंग से कहने जा रहा हूँ 255 वर्ण हो जाएगा. फिर डिफ़ॉल्ट मान हम यह कर सकते हैं. हम मैथर सदन में डिफ़ॉल्ट रूप से हर कोई डाल सकता है, उदाहरण के लिए. यही कारण है कि हम कैसे निर्दिष्ट कर सकता है कि डेटाबेस सुनिश्चित करें कि किसी को हमेशा एक मूल्य है. लेकिन मैं चलता हूँ कि हो. वास्तव में, जो लोग परिसर से दूर रहते हैं और एक घर में नहीं के लिए, हो सकता है कि मैं वास्तव में यह निर्दिष्ट करने के लिए चाहते हैं कि घर के लिए डिफ़ॉल्ट मान रिक्त है, और फिर मैं इस बॉक्स को चेक और डेटाबेस यह ठीक है अगर उपयोगकर्ता के घर रिक्त है बताने की जरूरत है. फिर, यह एक सुरक्षा तंत्र तुम जगह में डाल सकते हैं तो आप भी अपने PHP कोड में डाल यह जरूरी नहीं है. डेटाबेस यह सुनिश्चित करेंगे कि बातें कर रहे हैं या रिक्त नहीं हैं. और फिर अंत में, गुण. इनमें से कोई भी वास्तव में प्रासंगिक हैं. द्विचर, अहस्ताक्षरित उन में से कोई एक varchar के लिए प्रासंगिक हैं. सूचकांक. क्या किसी को पता है या याद करने के लिए या एक सूचकांक क्या है के रूप में एक अनुमान है घर की तरह कुछ के लिए? यह भी वास्तव में एक महत्वपूर्ण और अपेक्षाकृत आसान डिजाइन निर्णय है. जो लोग अभी तक इसे नहीं देखा है, शुक्रवार को हम प्राथमिक कुंजी के बारे में संक्षेप में बात की. एक डेटाबेस तालिका में एक प्राथमिक कुंजी क्षेत्र या स्तंभ है कि विशिष्ट तालिका में पंक्तियों को पहचानती है. तो वर्तमान तालिका हम आईडी है, हम नाम और ईमेल है. उन में से जो सबसे अच्छा उम्मीदवार के लिए एक प्राथमिक कुंजी है, जिसका भूमिका के लिए विशिष्ट पंक्तियों की पहचान है? शायद आईडी. बेशक, हालांकि हम भी क्या इस्तेमाल कर सकते हैं? शायद आपको ईमेल का उपयोग करें, क्योंकि सिद्धांत रूप में यह अद्वितीय है हो सकता है जब तक लोगों को ईमेल खातों को साझा कर रहे हैं. लेकिन वास्तविकता यह है कि यदि आप 1234 की तरह एक संख्यात्मक आईडी का उपयोग कर रहे हैं, है कि केवल 32 बिट, जबकि एक ईमेल पते यह कई बाइट्स या यह कई बाइट्स हो सकता है. तो अनन्य पहचानकर्ता के लिए दक्षता के मामले में, यह सिर्फ एक int का उपयोग करने के लिए अच्छा अभ्यास हो जाता है यहां तक ​​कि अगर आप कुछ स्ट्रिंग उम्मीदवार है कि आप यकीनन इस्तेमाल कर सकते हैं. घर की तरह कुछ के लिए, यह एक प्राथमिक कुंजी नहीं होना चाहिए क्योंकि तब केवल 1 व्यक्ति माथर में रहते हैं और Currier और ऐसे में एक व्यक्ति को हो सकता है. इसी तरह, यह अनूठा नहीं होना चाहिए. प्राथमिक और अद्वितीय के बीच अंतर कि हमारे वर्तमान तालिका के मामले में है, आईडी प्राथमिक हो सकता है, लेकिन ईमेल प्राथमिक कारण है कि हम अभी उल्लेख किया है के लिए नहीं है - प्रदर्शन है, लेकिन यह अभी भी अद्वितीय होना चाहिए. तो आप अभी भी दावा कर रही है बिना विशिष्टता को लागू कर सकते हैं कि यह एक सुपर महत्वपूर्ण प्राथमिक क्षेत्र है. लेकिन यह एक काफी उपयोगी है: सूचकांक. यदि आप अपने अंतिम परियोजना के लिए अग्रिम में 7 pset के लिए, या सामान्य में पता है,, है कि इस क्षेत्र के घर के लिए कुछ है आप एक बहुत पर खोज होने जा रहा है चयन खोजशब्द या कुछ और का प्रयोग, तो आप preemptively डेटाबेस बताने के लिए अपने जादू काम कर सकते हैं और यकीन है कि यह स्मृति में किसी भी फैंसी डेटा संरचनाओं बनाता आवश्यक घर पर आधारित खोजों में तेजी लाने के लिए. शायद यह एक हैश तालिका का उपयोग करेगा, शायद यह एक लिंक सूची का प्रयोग करेंगे. वास्तव में, यह एक पेड़ का उपयोग करने के लिए जाता है, अक्सर एक संरचना एक बी पेड़ कहा जाता है - बाइनरी नहीं लेकिन एक एक बी पेड़ के पेड़ - जो एक बहुत व्यापक पेड़ है है कि आप एक वर्ग में CS124, डाटा संरचनाओं वर्ग की तरह देख सकते हैं. लेकिन संक्षेप में, आप कि जब स्मार्ट डेटाबेस सॉफ्टवेयर का उपयोग कर के बारे में चिंता करने की ज़रूरत नहीं है. आप सिर्फ यह बताओ, "सूचकांक इस क्षेत्र तो मैं उस पर और अधिक कुशलता से खोज कर सकते हैं." कर सकते हैं यदि आप इस छोड़ना और आप जो डेटाबेस माथर में रहती में हर किसी के लिए खोज करने की कोशिश यह रैखिक खोज में उतरना होगा. और अगर आप 6000 undergrads मिल गया है कुछ घर में सभी जीवित, आप संपूर्ण तालिका खोज करने के Matherites मिल जा रहे हैं, जबकि अगर आप कहते हैं कि सूचकांक, उम्मीद है कि यह एक लघुगणकीय खोज करने के लिए कुछ बंद हो जाएगा उन के प्रकार छात्रों को मिल. यह सिर्फ एक मुफ्त सुविधा है पर बारी, भले ही यह अंतरिक्ष की कुछ राशि की एक कीमत पर आता है. अन्त में, ऑटो वेतन वृद्धि, इस ऐ क्षेत्र, जो सिर्फ मतलब है कि अगर यह एक int है और आप करने के लिए यह अपने आप को वेतन वृद्धि की परवाह नहीं करना चाहती हर बार जब वहाँ एक नया उपयोगकर्ता है, कि जांच, और प्रत्येक उपयोगकर्ता है कि डाला जाता है स्वचालित रूप से एक नई पहचान मिल जाएगा. चलो सहेजें क्लिक करें, और अब हम इस डिजाइन के साथ गलती खोजने के लिए. यदि मैं ब्राउज़, सूचना है कि दोनों माइक और मेरे घर के नल है में जाना. मैं phpMyAdmin का उपयोग करने के लिए इस मैन्युअल रूप से संपादित कर सकते हैं. मैं यहाँ में और प्रकार माथर में जा सकते हैं और फिर हिट दर्ज करें, और अब नोटिस तालिका अलग है. नोटिस लेकिन मैं कुछ और के रूप में अच्छी तरह से कर सकता है. डेविड आईडी है 1 है तो, फिर सिर्फ एक प्रशासनिक उपकरण है phpMyAdmin; यह कुछ अपने उपयोगकर्ताओं को कभी देखने के लिए जा रहे हैं नहीं है. तो अगर मैं बजाय ऊपर शीर्ष SQL टैब पर क्लिक करें - और फिर, 7 pset आप इन प्रश्नों को लागू करेगा - मैं स्वयं SQL संरचित क्वेरी भाषा आदेश पर अमल कर सकते हैं अद्यतन उपयोगकर्ताओं घर = जहां आईडी = 1 'Pfoho' निर्धारित किया है. इन एसक्यूएल प्रश्नों हैं, अच्छी तरह से करने के लिए पर्याप्त है, बहुत से सही करने के लिए छोड़ दिया पठनीय. उपयोगकर्ताओं को तालिका अद्यतन, Pfoho घर बुलाया क्षेत्र सेट जहाँ उपयोगकर्ता आईडी 1 है. या मैं भी कर सकता है जहां ईमेल = 'malan@harvard.edu'. इतने लंबे समय के रूप में है कि विशिष्ट मुझे पहचानती है, उस के रूप में अच्छी तरह से काम करेगा. लेकिन आईडी के लिए उच्च प्रदर्शन हो जाता है, तो चलो कि करना. चलो जाएँ क्लिक करें. ठीक है, lecture.users मौजूद नहीं है. मेरी गलती क्या है? वास्तव में यहाँ बुलाया तालिका क्या है? यह छात्रों को कहा जाता है, सिर्फ इसलिए कि हम क्या ऊपर छोड़ दिया पर यहाँ था. यह छात्रों, उपयोगकर्ताओं को नहीं कहा जाता है. तो अब जाएँ क्लिक करें. 1 पंक्ति प्रभावित. प्रश्न 0.01 सेकंड लिया. यदि मैं अब ब्राउज़ करें, अब क्लिक करें Malan जीवन में Pfoho. तो यह है कि SQL का एक और स्वाद है, लेकिन pset आप एक सा है कि अधिक के माध्यम से चलना होगा. वहाँ एक बेवकूफ निर्णय है मैं पहले से ही यहाँ बनाया है. मैं तर्क होता है कि यह डेटाबेस डिजाइन अक्षम है क्योंकि अधिक लोगों मैं छात्रों की मेज को जोड़ने, हम में से अधिक मैं जोड़ने, TFS मैं जोड़ने शुरू की अधिक शुरू, हम देखने के लिए क्या इस तालिका में redundancies शुरू करने के लिए जा रहे हैं? हाँ. [छात्र] देख रहा है कि यह छात्रों में है, हम एक ही प्रयोग कर रहे हैं [अश्राव्य] एक ही है - ठीक है, बिल्कुल. तो अगर 400 लोगों माथर में रहते हैं, दे या ले, अंततः इस तालिका के लिए 400 पंक्तियों है कि "Mather," "माथर का कहना है, किया जा रहा है" "Mather," "Mather," "माथर." हम इन सभी बाइट्स की बर्बाद कर रहे हैं, और वहाँ takeaways के एक जोड़े वहाँ है. 1, वहाँ पागल कोने मामला है जहां अगर किसी को पैसे की एक बहुत कुछ देता है और renames माथर, हम अब हमारे पूरे डेटाबेस तालिका को बदलने की है. यह अक्सर होता नहीं जा रहा है, हालांकि Pfoho एक बार उत्तर हाउस 15 साल पहले कहा था, तो यह होता है. लेकिन यह है कि है कि सभी बाध्यकारी नहीं है. अधिक की तरह है कि थोक में डेटा को अद्यतन करने के लिए की जरूरत के एक कोने मामले से सम्मोहक एक डेटाबेस के लिए क्यों कर रहे हैं आप माथर फिर से और फिर भंडारण और फिर? वह घर का काम, 6 chars की एक बहुत कुछ है. नहीं, हम Pforzheimer के लिए विशेष रूप से, उससे भी बेहतर कर सकते हैं? निश्चित रूप से हम कि कई पात्रों की तुलना में बेहतर कर सकते हैं. क्यों हर घर के साथ एक अद्वितीय पहचानकर्ता संबद्ध नहीं और प्रत्येक उपयोगकर्ता के लिए है कि दुकान? तो चलो इस प्रयास करें. बल्कि सिर्फ छात्रों की मेज का उपयोग करें, मुझे मेरे व्याख्यान डेटाबेस के लिए ऊपर छोड़ दिया पर यहाँ जाना. यहाँ सूचना यह कहते हैं तालिका बनाएँ. मुझे एक नए घरों बुलाया तालिका बनाने के. स्तंभों की संख्या 2 हो जा रहा है. दर्ज करें. अब मैं 2 क्षेत्रों है. मैं नाम इस फोन करने के लिए जा रहा हूँ, और यह 255 लंबाई की एक varchar होने जा रहा है, लेकिन वह काफी मनमाना है. मुझे यह नीचे सम्मेलन द्वारा यहाँ डाल. यहाँ तो एक आईडी डाल दिया. हर घर में एक अद्वितीय पहचानकर्ता दे. हर घर में एक नाम दे दो. चलो निर्दिष्ट है कि पहचानकर्ता सम्मेलन द्वारा अहस्ताक्षरित होने के लिए केवल सकारात्मक संख्या का उपयोग करेगा. चलो आगे जाना है और अब के लिए यह एक ऑटो वेतन वृद्धि क्षेत्र दे. और क्या हम कुछ और की जरूरत है? चलो आगे जाना है और सहेजें क्लिक करें. अब मैं एक दूसरी तालिका है. सूचना एक अलग रूप में इस थोड़ा गुप्त SQL आदेश कि आप स्वयं टाइप अगर phpMyAdmin की तरह एक प्रशासनिक उपकरण का उपयोग नहीं करना पड़ता था. तो एक और कारण है कि हम इसे उपयोग. Pedagogically के शानदार उपयोगी प्रकार है क्योंकि आप चारों ओर क्लिक कर सकते हैं और बाहर आंकड़ा कैसे चीजें सिर्फ नकल और चिपकाने phpMyAdmin क्या किया काम. लेकिन टेबल बनाएं आदेश है कि क्या सिर्फ मार डाला गया था, और यहाँ मेरी मेज है. चलो अब मुझे आगे जाना है और सम्मिलित करें टैब पर क्लिक करके कच्चे बजाय SQL oversimplify. मुझे घरों में सम्मिलित करते हैं, और मैं कहना है कि घर के नाम के 'माथर' एक मूल्य है जा रहा है के लिए जा रहा हूँ. बस. इस वाक्य रचना थोड़ा और अधिक एक गुप्त है. यह खेतों हम सम्मिलित करना चाहते हैं के नाम है. मानों हम उन क्षेत्रों में सम्मिलित करना चाहते हैं. मुझे जाएँ क्लिक करें. 1 डाला पंक्ति 0.02 सेकंड लिया. मुझे अब ब्राउज़ करें क्लिक करें. सूचना अगर मैं ब्राउज़ करें क्लिक करें, माथर, जिसका आईडी स्वचालन द्वारा नंबर 1 है. मुझे एक दूसरे के कार्य. मुझे SQL टैब में जाने. घरों में डालने. घर के नाम Pfoho के एक मूल्य किया जा रहा है और बहुत आगे है. जाओ. और मैं यह फिर से और फिर कर रख सकते हैं. या यदि आप phpMyAdmin का उपयोग कर ऊब मिलता है, तो आप सिर्फ सम्मिलित करें टैब का उपयोग कर सकते हैं और नहीं कच्चे एसक्यूएल लिखें. तुम बस इसे धमाके के टाइपिंग से बाहर कर सकते हैं और अधिक जल्दी से, उदाहरण के लिए, Currier दर्ज, और अब अगर हम ब्राउज़ करें क्लिक करें, 3 के एक आईडी के साथ Currier है. तो यह है कि हम क्या ऑटो वेतन वृद्धि से मतलब है. लेकिन अब हम करने के लिए छात्रों में कुछ तय है. घर के क्षेत्र के छात्रों में डेटा प्रकार अब क्या होना चाहिए? यह एक int होना चाहिए, सही? तो यहाँ लक्ष्य के लिए बाहर कारक है, अन्यथा मानक के अनुसार के रूप में जाना जाता है, तालिकाओं इतना है कि हम जानकारी के किसी भी मेरी मेज में प्रचुरता से नहीं स्टोर करते हैं. और फिर, हम यहाँ पर थे पथ Mather, माथर कहने जा रहा है, माथर, माथर Pfoho, Pfoho, Pfoho, Pfoho, जो बहुत बेमानी है वर्ण की अपव्ययिता के मामले में. तो मुझे आगे जाना है और क्लिक संरचना द्वारा इस परिवर्तन, और मुझे आगे जाना है और घर क्षेत्र, बदलें क्लिक करें, और अब मैं इसे बदलने के लिए एक int होने जा रहा हूँ. 255 नहीं रह गया है प्रासंगिक है. मुझे आगे जाना है और कहना है कि ठीक है अगर यह अभी भी रिक्त है. सहेजें. अब तालिका छात्रों को सफलतापूर्वक बदल दिया गया है, और फिर नोटिस घर एक int है. एक अलग रूप में, कोष्ठक में संख्या की अनदेखी जब यह ints करने के लिए आता है. यह विरासत कारणों के लिए है. दिन में वापस जब आप GUIs नहीं था, आप के बजाय एक कमांड लाइन वातावरण था, क्रमश: 10 और 11 निर्दिष्ट कितने वर्ण दिखाना चाहिए टर्मिनल विंडो में वास्तव में फ़ील्ड प्रदर्शित करने के लिए. यह वास्तविक क्षेत्र के बिट लंबाई के साथ कुछ नहीं करना है, इसलिए हम अभी के लिए कि उपेक्षा करेंगे. अब मैं इस तालिका में जाने की है. और अगर दाऊद माथर में रहता है, घर नहीं 0 होना चाहिए, जो एक डिफ़ॉल्ट int नल निकटतम मूल्य है. वह एक घर में रहना चाहिए. चलो मनमाने ढंग से कहना है कि माइक Pfoho में रहता है, तो घर संख्या 2. अब मेरी मेज थोड़ा और अधिक एक गुप्त लग रहा है. लेकिन दक्षता पर विचार करें. अब मैं केवल 32 बिट का उपयोग कर रहा हूँ करने के लिए घर की पहचान करने के लिए, जिसका अर्थ है वहाँ केवल 1 मेरे घर माथर और Pfoho विहित परिभाषा और कि घरों तालिका में है. तो अगर मैं अब इन तालिकाओं को फिर से जोड़ना चाहते हैं, यह इस तरह के बारे में सोचना है. यहाँ मैं अपने छात्रों की मेज है, और दाएँ हाथ की ओर इन नंबरों, 1 और 2. माथर है 1, 2 Pfoho है. हम इस अन्य तालिका में उन एक ही नंबर है, जो घरों कहा जाता है, 1 और 2 और 3 उन 3 घरों के लिए. अब हम क्या करना चाहते हैं कोड, PHP और SQL में क्षमता है, की तरह इन तालिकाओं को फिर से जोड़ना है, जहां अगर इन छात्रों को कर रहे हैं और इन घरों रहे हैं, हम किसी भी तरह उन्हें एक साथ इतनी है कि 1 लाइनों को गठबंधन करना चाहते हैं, 2 के साथ 2 लाइनों, और इसलिए है कि हम समझ सकते हैं जहां दाऊद और जहां माइक और जहां हर किसी के रहता है. ऐसा करने के लिए हम निम्नलिखित की तरह एक एसक्यूएल क्वेरी को निष्पादित कर सकते हैं. छात्रों पर घरों में शामिल SELECT * FROM - और अब क्षेत्रों क्या हम पर शामिल होने के लिए चाहते हो? Students.house = houses.id तो. एक छोटी सी गुप्त, लेकिन इस भाग का मतलब सचमुच एक नया अस्थायी तालिका बनाने कि छात्रों और घरों में शामिल होने का नतीजा है. और आप अपनी उंगलियों के सुझावों यहाँ गठबंधन कैसे करना चाहते हैं? छात्रों ID फ़ील्ड घर घरों के बराबर क्षेत्र सेट. और अगर मैं अब जाएँ क्लिक करें, मैं वापस मिलता है कि क्या वास्तव में मैं आशा व्यक्त की. दाऊद माथर में है, माइक Pfoho में है, और मैं भी अद्वितीय पहचानकर्ता देखने. लेकिन बात अब मैं एक पूर्ण तालिका है. और इसलिए यहाँ 7 pset लिए takeaway या वास्तव में अंतिम परियोजना के लिए: यदि आपको लगता है कि आप जानकारी के किसी भी टुकड़ा redundantly भंडारण कर रहे हैं, चाहे वह एक घर है, शायद यह एक शहर, राज्य, और ज़िप जहां ज़िप लेकिन आमतौर पर नहीं हमेशा एक अद्वितीय पहचानकर्ता के रूप में इस्तेमाल किया जा सकता है, व्यायाम के माध्यम से phpMyAdmin की तरह कुछ के साथ मानसिक रूप से और फिर जाना कि आम डेटा बाहर फैक्टरिंग है क्योंकि खासकर के रूप में अपनी वेबसाइट और अधिक अच्छी तरह से इस्तेमाल हो जाता है और अधिक लोकप्रिय, यह है कि आप यकीन है कि सब कुछ सुपर फास्ट है, विशिष्टता के रूप में संभव के रूप में कई संकेत के रूप में डेटाबेस देकर. यह एक बहुत कुछ था. कोई सवाल? सही सभी. चलो एक 5 मिनट का ब्रेक लेने के लिए और फिर से संगठित. सही सभी. निम्नलिखित एक उदाहरण है कि कुछ साल पहले इस्तेमाल किया गया था जब मैं CS161 ले लिया है, जो कॉलेज में ऑपरेटिंग सिस्टम वर्ग है जो अद्भुत होने के लिए जाना जाता है लेकिन काम की एक पागल राशि, और यह वास्तव में है कि ऑपरेटिंग सिस्टम में उत्पन्न कम स्तर की समस्याओं में से कुछ पर ध्यान केंद्रित और भी डेटाबेस की दुनिया में भी. कहानी है कि मेरे प्रोफेसर, जर्मनी का रासायनिक जल मार्गो, बताया गया था कि वर्ष के रूप में इस प्रकार है. मान लीजिए कि आप आप और अपने रूममेट के लिए एक छोटे से छात्रावास फ्रिज और तुम दोनों वास्तव में दूध की तरह. तो आप एक दिन क्लास से घर आते हैं, अपनी रूममेट अभी तक वहाँ नहीं है, आप फ्रिज खोलते हैं, और तुम्हें पता है, "ओह, लानत, हम दूध से बाहर रहे हैं." तो आप फ्रिज बंद करते हैं, तो आप सीवीएस के लिए सड़क के पार चलना और तेजी से लंबी लाइनों में CVS में कुछ दूध खरीदते हैं. इस बीच, अपने रूममेट अपने या उसे कक्षा से घर आता है, कमरे में आता है, वास्तव में कुछ दूध चाहते फ्रिज खोलता है, फ्रिज खोलता है और, "अरे, दूध नहीं है." तो वह या वह फ्रिज बंद कर देता है, दरवाजे से बाहर चलता है, और ABP जाता है या कहीं CVS जहां आप एक दूसरे में टक्कर के लिए नहीं जा रहे हैं के अलावा अन्य कुछ दूध मिल जाना. बेशक कुछ ही मिनट बाद, तुम दोनों घर वापस पाने के और अब आप दो बार के रूप में ज्यादा दूध के रूप में आप वास्तव में चाहता था. और दूध किया जा रहा है, अब यह बुरा जाना जा रहा है क्योंकि आप दूध की तरह लेकिन क्या तुम सच में दूध की तरह नहीं करते हैं, तो अब आप बहुत ज्यादा दूध है, तो यह खट्टे करने के लिए जा रहा है. यह एक भयानक, भयानक स्थिति है. इस दुर्दशा का हल क्या हो सकता है अगर आप पहली रूममेट घर थे? हां. [छात्र] आप एक नोट छोड़ दिया जाना चाहिए. [हँसी] अच्छा है. आप एक नोट छोड़ दिया जाना चाहिए. आप कह रही है, जैसे एक नोट पोस्ट या रखा जाना चाहिए "दूध के लिए चला गया है," और फिर अपने रूममेट धारणात्मक कि वास्तव में कर के किया गया है बाहर बंद कर दिया. या फिर आप एक कदम आगे जा सकते हैं. तुम सचमुच ताला के कुछ प्रकार के साथ रेफ्रिजरेटर ताला सकता है, और अब अपने रूममेट सचमुच फ्रिज के बाहर होगी बंद किया जा. यदि हम प्रोग्रामिंग करने के लिए वापस सामान्यीकरण, आप लगभग चर के कुछ प्रकार या एक struct के रूप में फ्रिज के बारे में सोच सकते हैं, जानकारी के लिए कंटेनर के कुछ प्रकार. मौलिक समस्या यहाँ है कि आप दोनों के निरीक्षण करने के लिए अनुमति दी गई है या इस डेटा संरचना के राज्य पढ़ा, लेकिन आप इसे अलग अलग समय पर देखा और अभी तक तुम दोनों एक निर्णय लिया समय में उन विभिन्न क्षणों में दुनिया की स्थिति पर आधारित है. तो आप रेफ्रिजरेटर बंद किया था, आप कम से कम अपने रूममेट से बचा होगा से करने के लिए दुनिया की स्थिति का निरीक्षण करने में सक्षम किया गया है, तो वह या वह है कि एक ही निर्णय नहीं किया जा सका है. डेटाबेस तो, के रूप में यह पता चला है, इस समस्या लगातार है. चलो देखते हैं अगर हम एक परिदृश्य का निर्माण कर सकते हैं. मान लीजिए कि आप एक बुरा आदमी की तरह कर रहे हैं और आप बैंक ऑफ अमेरिका के लिए जाना या उस तरफ से एक जोड़ी एटीएम पक्ष वर्ग में अन्य स्थानों में से एक, और किसी भी तरह से आप पता लगा कि कैसे एक एटीएम कार्ड की नकल करने के लिए है कि सभी मुश्किल नहीं है. यह सिर्फ एक चुंबकीय पट्टी है. और इसलिए आप करने की कोशिश करना चाहते हैं क्या है इस खेल को खेलने जिससे आप 1 मशीन में 1 कार्ड डाला, अन्य मशीन में एक और कार्ड, और आप अनिवार्य रूप से करने के लिए पैसे वापस लेने का एक साथ करने की कोशिश करना चाहते हैं, क्योंकि कल्पना है कि कहानी इस प्रकार के रूप में चला जाता है. बाईं तरफ मशीन आपके कार्ड और अपना पिन लेता है, और फिर आप कहते हैं, "मुझे 100 डॉलर दे." एटीएम के लिए 1 अपने डेटाबेस या समकक्ष पर एक का चयन करने के लिए क्रमादेशित है - डेटाबेस जो कुछ भी यह का उपयोग कर रहा है - देखने के लिए इस उपयोगकर्ता करता है उसके खाते में कम से कम 100 डॉलर है? यदि हां, तो बाहर $ 100 थूक और उनके संतुलन से $ 100 घटाना. लेकिन निश्चित रूप से अगर वहाँ कई मशीनों यहाँ है या निरीक्षण के कई तरीके कि दुनिया के राज्य, बैंक की तिजोरी देखने के लिए, आप कितना पैसा है, बाईं तरफ मशीन मौका है कि बस लगता है और सही दोनों समय में लगभग एक ही पल में यह सवाल पूछते हैं. और यह निश्चित रूप से हो सकता है. एटीएम कंप्यूटर रहे हैं इन दिनों. तो अगर बाईं तरफ मशीन कहते हैं, "हाँ, आप कम से कम 100 डॉलर है," इस बीच सही पर मशीन का कहना है, "हाँ, आप कम से कम 100 डॉलर है," फिर उन दोनों के लिए अपने कार्यक्रमों को समाप्त करने के लिए आगे बढ़ना है और वास्तव में बाहर $ 100 थूक और कहते हैं, "पहले आप $ 200 था." "मुझे चर का अद्यतन करने के लिए अब 100 डॉलर खाते में छोड़ दिया हो." लेकिन अगर उन दोनों को अपने खाते की शेष राशि की जाँच की है और पाया है कि यह 200 डॉलर है 100, और उन दोनों को फिर गणित और कहना 200 मशीनों संभावित थूक प्रत्येक मशीन में दो $ 100 के बिल, लेकिन वे केवल अपने राशि खाते की शेष राशि को नवीनीकृत किया है $ 100 होना. दूसरे शब्दों में, आप $ 200 कर लिया है, लेकिन क्योंकि वे दुनिया की स्थिति का निरीक्षण किया एक साथ और फिर एक है कि मूल्य के आधार पर निर्णय लिया, वे गणित अंततः सही ढंग से नहीं हो सकता है. तो एक बैंक की स्थिति में भी आप वास्तव में तालाबंदी के कुछ प्रकार है चाहता हूँ इतना है कि जैसे ही आप कुछ चर की स्थिति की जाँच की है अपने खाते की शेष राशि की तरह है कि वास्तव में महत्वपूर्ण है, चलो किसी और उस पर आधारित निर्णय कर जब तक आप अपनी बात कर किया जाता है नहीं, जहां इस मामले में आप बाईं तरफ एटीएम हैं. हर किसी के बाहर ताला. आप वास्तव में अलग अलग तरीकों की एक जोड़ी में इस प्रभाव को प्राप्त कर सकते हैं. MySQL में सरल तरीका एसक्यूएल की एक पंक्ति है कि हम तुम्हें दे दिया है समस्या सेट विनिर्देश है कि वास्तव में इस तरह दिखता है. जो कुछ भी यह कहा जाता है - एक आईडी, एक प्रतीक है, और एक शेयर, शेयरों की संख्या तालिका में सम्मिलित करें निम्न मानों में, उदाहरण के लिए. यदि आप कल्पना अभी तक पढ़ा नहीं है, यह एक उदाहरण आप कैसे जाने के बारे में शामिल है राष्ट्रपति Skroob के लिए यह पैसा शेयर के 10 शेयरों को खरीदने, जिसका उपयोगकर्ता आईडी नंबर 7 होता है? यह कहते हैं निम्नलिखित आईडी, प्रतीक, और शेयरों की संख्या तालिका में सम्मिलित 7 की, 'DVN.V', और 10. लेकिन - लेकिन, लेकिन, लेकिन दूसरी पंक्ति महत्वपूर्ण एक है. नकली चाबी अद्यतन शेयरों पर = के शेयरों + मान (शेयर). पहली नज़र में तो पूरी तरह से गुप्त देख रहे हैं. लेकिन तथ्य यह है कि इस एसक्यूएल क्वेरी, भले ही यह 2 लाइन पर wraps, 1 लंबा प्रश्न है, इसका मतलब यह परमाणु है इस अर्थ में है कि इस क्वेरी या तो सभी एक साथ या नहीं मार डाला जाएगा सब पर. और MySQL की परिभाषा से, है कि कैसे वे इस प्रश्न लागू. यह मैनुअल में सभी में एक बार या नहीं निष्पादित की गारंटी में परिभाषा के द्वारा है. इस के लिए प्रेरणा के रूप में इस प्रकार है. अगर इस मामले में आप स्टॉक के 10 शेयरों को खरीदने की कोशिश कर रहे हैं, यह दूध के रूप में एक ही कहानी की तरह है, यह एटीएम के रूप में एक ही कहानी की तरह है. यदि आप की गलती का उपयोग नहीं इस वाक्यविन्यास लेकिन बजाय डेटाबेस से चयन को देखने के लिए यह पैसा शेयर के कितने शेयर करता राष्ट्रपति Skroob है, और लगता है कि वह 10 शेयर हैं, और फिर कुछ दूसरे विभाजन के बाद तुम तो एक अद्यतन बयान करते हैं, जो एसक्यूएल में एक बयान दिया था कि कहते हैं, आगे जाना है और 10 से अधिक के शेयरों जोड़ने अपने वर्तमान 10 से इतना है कि आदर्श कुल 20 है, समस्या आज डेटाबेस सिस्टम में क्योंकि और क्योंकि आज के कंप्यूटर में आप कई प्रोसेसर, कई कोर - दूसरे शब्दों में, कंप्यूटर सचमुच एक बार में कई बातें कर रही हो - वहाँ कोई गारंटी नहीं है कि आपका चयन करें और इस मामले में अपने अद्यतन वापस होने के लिए वापस जा रहे हैं. तो एक बुरा परिदृश्य होगा SELECT करना देखने के लिए कितने इस पैसा शेयर के शेयरों Skroob है, और फिर बस मौका द्वारा एक और डेटाबेस क्वेरी मार डाला है - शायद अन्य ब्राउज़र विंडो में अपने Skroob 10 के शेयरों को खरीदने की कोशिश कर रहा कुल मिलाकर, एक अन्य विंडो में ज्यादा एटीएम की तरह - और लगता है कि एक अन्य प्रश्न चुनें और अपडेट के बीच में हो जाता है. यह मामला हो सकता है कि Skroob अब शेयरों की कुछ संख्या खो देता क्योंकि किसी अन्य प्रक्रिया उसकी दुनिया की स्थिति का निरीक्षण कर रहा है, या वह और अधिक के शेयरों की तुलना में वह होना चाहिए हो जाता है. हम क्या वास्तव में उन विशेष कहानी लाइनों होगा के ब्यौरे में नहीं जाना होगा, लेकिन मुद्दा यह है कि अगर आप एक चर मूल्य की जाँच करें और फिर एक निर्णय करना है, , अगर वहाँ किसी और उन 2 बयानों के बीच में कुछ करने का एक खतरा है के रूप में बहु प्रणालियों में multicore प्रणाली में, हो सकता है, करने के लिए एक ही बार में कई चीजों को करने की क्षमता के साथ कंप्यूटर, बुरी बातें होती हैं कर सकते हैं बैंक खातों की तरह गलत नामे लिखा गया जा रहा है, दो बार के रूप में ज्यादा दूध खरीद, इस मामले में या शेयरों के गलत नंबर. लेकिन इस बारे में सोचने के लिए एक आसान तरीका है. यह पता चला है कि SQL का भी समर्थन करता है, अगर आप अपनी टेबल को ठीक से विन्यस्त, लेनदेन बुलाया कुछ है, जो मैं तर्क होता है वास्तव में है भी समझने में अधिक आसान इस से है, लेकिन यह एक 1-लाइनर, नहीं है तो यह वास्तव में एक सा है और अधिक शामिल है. वहाँ का शाब्दिक एसक्यूएल में एक बयान START TRANSACTION बुलाया है. जैसे वहाँ का चयन करें, अद्यतन, INSERT, हटाने और JOIN है और दूसरों की एक गुच्छा, वहाँ स्टार्ट लेनदेन जैसे खोजशब्दों हैं. और तुम क्या तो 7 pset के संदर्भ में करते हैं - आप 7 pset के लिए यह नहीं करना है, यह स्पष्ट रूप से आवश्यक के रूप में नहीं disclaimed है, लेकिन अंतिम परियोजनाओं के लिए यह उपयोगी हो सकता है - अगर आप स्टार्ट लेनदेन के एक क्वेरी और फिर एक अन्य प्रश्न फोन और फिर एक और क्वेरी और फिर एक, एक और, और एक अन्य, उन प्रश्नों को वास्तव में नहीं हो सकता है जब तक आप कॉल SQL कथन COMMIT निष्पादित किया जाएगा, जो बिंदु पर, चाहे वह 2 बयान या 20 बयान है, वे सभी एक ही बार में मार डाला जाएगा, जिसका मतलब है कि कोई और नहीं एक गलती से भी ज्यादा दूध या बहुत ज्यादा पैसे डेबिट खरीद सकते हैं या भी कई शेयरों को खरीदने की वजह से अपने प्रश्नों के सभी पर अमल करेंगे वापस करने के लिए वापस वापस वापस करने के लिए. और यह सुपर महत्वपूर्ण है, खासकर जब आप कुछ इस तरह कर रहे हैं. यह एक मनमाना उदाहरण है कि का कहना है कि हम बैंक खाते को अपडेट द्वारा $ 1000 जहां खाता संख्या 2 है - एक संतुलन के लिए बराबर संतुलन स्थापित. और फिर दूसरा बयान अब है कि 1000 डॉलर जमा में किसी और बैंक खाता जिनकी संख्या 1 है. दूसरे शब्दों में, इस का एक आदर्श उदाहरण है जहां आप यह सुनिश्चित करना चाहते हैं कि इन बयानों के दोनों हो या बिल्कुल नहीं क्योंकि अन्यथा ग्राहक के लिए दबाव डाला जा रहा है और आप अपने पैसे लेने के लिए जा रहा है और कहीं यह जमा नहीं कर रहे हैं, या बैंक के लिए दबाव डाला जा रहा है जहाँ आप के लिए पैसे जमा करने के लिए जा रहे हैं लेकिन यह वास्तव में उपयोगकर्ता के खाते से घटाना नहीं. तो तुम उन दोनों को एक साथ निष्पादित करने के लिए करना चाहते हैं. इस तरह दुनिया के लेनदेन में प्रवेश करती है. तो यह है कि अपने मन की पीठ में रखने के लिए कुछ है, सिर्फ एक अंतिम परियोजना के उद्देश्यों के लिए इतना काफी नहीं है, लेकिन अगर आप अपने अंतिम परियोजना को कहीं ले जाना चाहता हूँ, अगर आप को चारों ओर कुछ कंपनी शुरू करना चाहते हैं, अगर आप परिसर में कुछ छात्र समूह की समस्या को हल करना चाहते हैं और वास्तव में एक जीवित, सक्रिय वेबसाइट है, इन सूक्ष्म कीड़े है कि पैदा कर सकते हैं की तरह कर रहे हैं अगर आप काफी के माध्यम से नहीं लगता है कि क्या हो सकता है अगर 2 लोगों सचमुच समय में एक ही पल में अपनी वेबसाइट का उपयोग करने की कोशिश कर रहा है, अपने प्रश्नों interwoven जिससे अन्यथा हो सकता है. कुछ जावास्क्रिप्ट, उसके चिढ़ाने के लिए तैयार है? यह हमारे सेमेस्टर के लिए अंतिम भाषा है. सही सभी. शुक्र है, जावास्क्रिप्ट बहुत, बहुत, बहुत 2 भाषाओं, सी और PHP के लिए समान दिखता है, हम इस प्रकार दूर किया है. वहाँ 7 pset में कोई जावास्क्रिप्ट है, लेकिन यह एक अविश्वसनीय रूप से उपयोगी उपकरण जब यह वेब आधारित अंतिम परियोजनाओं कर रहे हैं या वास्तव में सिर्फ वेब प्रोग्रामिंग आम तौर पर और अधिक करने के लिए आता है. तो डोम बुलाया कुछ की एक त्वरित अवलोकन. यहाँ एक सुपर सरल वेब पेज है कि वास्तव में सिर्फ नमस्ते, दुनिया का कहना है दोनों शीर्षक और शरीर में. के रूप में कुछ समय के लिए खरोज सुझाव दे गया है, वहाँ वास्तव में वेब पृष्ठों को एक पदानुक्रम है. मैं एक पेड़ के रूप में HTML के इस एक ही टुकड़ा आकर्षित कर सकता है, सी में हमारे डेटा संरचनाओं की चर्चा करने के लिए वापस सोच है, के रूप में इस प्रकार है. मैं कुछ विशेष रूट नोड दस्तावेज नोड बुलाया है, और हम बस एक पल में जावास्क्रिप्ट में इस के अनुरूप देखेंगे. पहली बार जा रहा है और इस मामले में उस के ही बच्चे बच्चे HTML टैग है. Doctype का कोई सीधा मानचित्रण है. यह एक विशेष बात है, तो हम इसे अनदेखा चाहिए जब यह इस डोम करने के लिए आता है, इस दस्तावेज़ ऑब्जेक्ट मॉडल पेड़. सूचना है कि HTML टैग, जो मैं मनमाने ढंग से एक आयत के रूप में दर्शाया गया है, : 2 बच्चों के सिर और शरीर है. इसी तरह उन आयतों के रूप में तैयार कर रहे हैं. यह सार्थक pictorially है कि सिर शरीर के बाईं ओर है. निहितार्थ यह है कि सिर पेड़ में पहले आता है. तो वहाँ वास्तव में एक पेड़ के लिए आदेश देने जब आप इसे इस तरह से आकर्षित है, भले ही आकार और whatnot मनमाने ढंग से कर रहे हैं. प्रमुख इस बीच एक एकल खिताब नामक बच्चा है, और शीर्षक वास्तव में अपने खुद के बच्चे है, जो "नमस्ते, दुनिया" है, जो मैं जानबूझ यहाँ एक अंडाकार यह आयत से थोड़ा अलग बनाने के रूप में आकर्षित किया. इन आयतों तत्व हैं, जबकि नमस्ते, दुनिया वास्तव में एक पाठ नोड है. तो यह पेड़ में एक नोड है, लेकिन यह नोड के एक अलग प्रकार है इसलिए मैं यह मनमाने ढंग से अलग तरीके से आकर्षित किया. इसी तरह शरीर के एक बच्चे को बुलाया हैलो, के रूप में अच्छी तरह से दुनिया है, इतना अलग नोड भले ही वे संयोग से एक ही पाठ कर रहे हैं, लेकिन मैं इसे तैयार किया है एक ही आकार का उपयोग. तो कौन परवाह करता है? खैर, क्या HTML के बारे में अच्छी बात यह है कि यह इस पदानुक्रमित प्रकृति है. और क्या जावास्क्रिप्ट और विशेष रूप से पुस्तकालयों है कि स्वतंत्र रूप से उपलब्ध हैं के बारे में अच्छा है और jQuery की तरह लोकप्रिय, आप तो आश्चर्यजनक आसान पेड़ संरचना नेविगेट कर सकते हैं. सामान हम संकेत और traversing के पेड़ के साथ सी में किया था की किसी भी और नोड्स पर recursing सही बच्चे को छोड़ दिया बच्चे, अचानक हम की तरह कर सकते हैं लेने के लिए दी आश्चर्यजनक शिक्षाप्रद किया जा रहा है अगर निराशा होती है एक सा नहीं के रूप में लेकिन एक कुशल प्रोग्रामिंग के बारे में जाने के लिए रास्ता लगभग नहीं है. और इसलिए इन जावास्क्रिप्ट की तरह उच्च स्तरीय भाषाओं के साथ हम इस पेड़ और अधिक intuitively नेविगेट करने में सक्षम हो जाएगा. और वास्तव में वाक्यविन्यास काफी परिचित होने जा रहा है. यदि आप JavaScript पहले कभी नहीं देखा है, यह एक बहुत अच्छा संदर्भ है मोज़िला लोगों से, जो लोग फ़ायरफ़ॉक्स बनाने के लिए, इतना कि अपनी सुविधानुसार ब्राउज़ मुक्त महसूस करते हैं. तुम क्या मिल जाएगा और इन स्लाइड क्या हम दूसरे दिन इस्तेमाल करने के लिए समान हैं - इसी तरह, मुख्य चला गया है. तो जब आप जावास्क्रिप्ट में एक प्रोग्राम लिखने, वहाँ कोई मुख्य कार्य है. तुम सिर्फ कोड लिखने शुरू करते हैं. लेकिन जावास्क्रिप्ट और सी और PHP के बीच एक महत्वपूर्ण अंतर यह है कि सी और PHP जबकि इस प्रकार अब तक सर्वर साइड क्रियान्वित किया गया है इस मामले में उपकरण द्वारा या अधिक आम तौर पर एक सर्वर से, डिजाइन द्वारा जावास्क्रिप्ट आमतौर पर एक ब्राउज़र द्वारा मार डाला है. दूसरे शब्दों में, आप जावास्क्रिप्ट कोड लिखने के लिए, के रूप में हम कर रहे हैं के बारे में हो सकता है, उपकरण में एक सर्वर है, लेकिन आप इसे अपने HTML के बीच अपने सीएसएस के बीच, शामिल हैं पर, अपने GIFs और PNGs और अपने JPEGs के बीच इतना है कि जब उपयोगकर्ता अपने वेब पेज का दौरा किया है, अगर आप JavaScript का उपयोग कर रहे हैं, कि जावास्क्रिप्ट कोड सर्वर से ब्राउज़र के लिए आता है, और यह ब्राउज़र है कि वास्तव में इसे कार्यान्वित है. तो यह भी बौद्धिक संपदा के लिए सार्थक प्रभाव पड़ता है. यह मूर्ख की तरह भी अपने आईपी की रक्षा के बारे में लगता है कि जब यह जावास्क्रिप्ट कोड के लिए आता है क्योंकि भाषा की प्रकृति से यह आमतौर पर ब्राउज़र पक्ष मार डाला जाता है. आप यह अंधेरा करना, जिसका मतलब है कि आप कर सकते हैं यह पागल और बदसूरत लग सकते हैं कोई रहितसफेद के साथ भयानक चर नाम, यह मुश्किल के लिए लोगों को अपने आईपी चोरी करने के लिए, लेकिन महत्वपूर्ण यह है कि यह ब्राउज़र पक्ष मार डाला है. हालांकि एक अलग जावास्क्रिप्ट इस्तेमाल किया जा सकता है सर्वर साइड के रूप में, सबसे आम उपयोग के मामले में सही अब ब्राउज़र पर अब भी है. और यहाँ है क्या यह जैसा दिखता है. यहाँ एक है कि अगर और अगर और सी की तरह सिर्फ बस PHP तरह, निर्माण. यहाँ एक बूलियन अभिव्यक्ति है जब आप "या" 2 बातें एक साथ. जब "और" आप एक साथ 2 बातें. यहाँ एक स्विच बयान है, जो PHP के लिए इसी तरह की है में है कि आप मूल्यों के विभिन्न प्रकार पर स्विच कर सकते हैं. Loops इसी तरह loops के लिए यहाँ है, जो हूबहू हम पहले क्या देखा है के लिए संरचित कर रहे हैं. जबकि loops, हम loops जबकि मिला है. चर, कभी तो थोड़ा अलग है. आप चर घोषणा करते हैं जैसे आप PHP और सी में, लेकिन इसी तरह जावास्क्रिप्ट दुर्बलता से लिखा गया है. आप int या नाव या स्ट्रिंग या आमतौर पर उस तरह कुछ भी निर्दिष्ट नहीं है. आप var निर्दिष्ट कर सकते हैं. आप के लिए var निर्दिष्ट नहीं है, लेकिन यह प्रभाव पड़ता है अगर तुम नहीं करते. आमतौर पर अगर आप var छोड़ देते हैं, तो आप गलती से स्थानीय के बजाय एक वैश्विक चर बना सकते हैं. तो मुझे प्रस्ताव है कि आप लगभग हमेशा सिर्फ var कहते हैं और फिर चर के नाम. यह एक प्रकार की नहीं है, यह सिर्फ चर के लिए var है. यह एक उदाहरण हो सकता है, होगा कि क्या यह 123 या "हैलो दुनिया," है. Arrays वर्तमान और वाक्य रचना PHP के लिए समान हैं. मैं var संख्या कहना है और फिर मैं फिर से वर्ग कोष्ठक का उपयोग करने के लिए एक चर घोषित जिसका प्रकार सरणी में इन विशेष संख्या अल्पविराम के द्वारा अलग किया गया है. और फिर अंत में, यह केवल एक है कि वास्तव में अलग लग रहा है. स्मरण करो कि हम PHP में एक छात्र के लिए एक साहचर्य सरणी लागू होगा Zamyla जैसे कि इस तरह लग सकता है, जहां चर छात्र कहा जाता है. वर्ग कोष्ठक का मतलब है यहाँ एक सरणी आता है. तथ्य यह है कि मैं संख्यात्मक सूचकांक लेकिन तार नहीं कर रहा हूँ - आईडी, घर, और नाम - मतलब यह है कि यह एक साहचर्य सरणी है, और साथ इन तीरों पर हस्ताक्षर और angled कोष्ठक के बराबर मतलब है कि कुंजी "आईडी" है, मान 1 है; कुंजी "घर" है, मूल्य Winthrop हाउस है; कुंजी "नाम" है, मूल्य Zamyla चान है. तो वहाँ इस साहचर्य सरणी है, जिनमें से प्रत्येक का अपना महत्व है के अंदर 3 कुंजी है. हम जानते हैं कि 7 pset, या आप में जल्द ही, जावास्क्रिप्ट एक ही विचार में देखा है, लेकिन यह इस तरह लग रहा है. तो var छात्र - कोई डॉलर के हस्ताक्षर और प्रकार का कोई जिक्र नहीं है, लेकिन अभी भी var - बराबर है और फिर घुंघराले ब्रेसिज़ खोलने है क्योंकि जावास्क्रिप्ट में जब आप महत्वपूर्ण मूल्य जोड़े हैं, आप वास्तव में कुछ एक वस्तु बुलाया का उपयोग करें. और आप में से जो APCs ले गए थे या जैसे जावा से वस्तुओं को याद हो सकता है या इसी तरह की भाषा. जावास्क्रिप्ट जावा, सब से पहले नहीं है. यह एक जानबूझकर डिजाइन निर्णय साल पहले किया गया था के लिए रवाना कुछ और है कि लोकप्रिय था दस्तक, उसका नाम है, भले ही यह कोई मौलिक ही जावा संबंध है. जावास्क्रिप्ट वस्तुओं है, और आप उन्हें धनु धनुकोष्ठक अंकन के रास्ते बनाने के द्वारा. जावास्क्रिप्ट में वस्तुओं को बहुत ज्यादा PHP में साहचर्य arrays के बराबर हैं जब यह उन के अंदर भंडारण डेटा के लिए आता है. लेकिन इससे भी ज्यादा शक्तिशाली जावास्क्रिप्ट में आप बहुत आसानी से कार्य संबद्ध कर सकते हैं एक वस्तु के अंदर, और हालांकि आप अन्य भाषाओं में यह कर सकते हैं, यह काफी एक आम प्रतिमान है, जैसा कि हम देखेंगे. संक्षेप में, यह वस्तु एक छात्र का प्रतिनिधित्व करता है, जो विशेष रूप से Zamyla है, और यह इसी तरह की धारणात्मक है, बस के वाक्य रचना में इस से अलग है. चलो वास्तव में एक फ़ाइल में जावास्क्रिप्ट का उपयोग. यह जाता है वहाँ एक स्क्रिप्ट टैग है. हम एक शैली टैग देखा है और हम अन्य HTML टैग देखा है. स्क्रिप्ट टैग वास्तव में कुछ जावास्क्रिप्ट कोड शामिल होंगे. मुझे उपकरण में जाने के लिए जहां हम कुछ स्रोत कोड पूर्व बनाया है. मैं इसे अभी तक तैनात नहीं है वेबसाइट पर है, लेकिन मैं कक्षा के बाद ऐसा करेंगे. चलो यह एक खुला, blink.html. 1990 के दशक में वापस, वहाँ सचमुच एक HTML टैग झपकी टैग कहा था, और यह इंटरनेट पर एक सबसे शानदार overused टैग जिससे आप 1990 के दशक के कुछ शैली वेब पेज पर जाएँ और पाठ देखकर आप इस तरह चमकती शुरू चाहते हैं, marquis टैग का परिणाम है, जो पाठ इस तरह से जा रहा था. एक कुछ समय जहां दुनिया वास्तव में एक वेब मानक पर सहमत हो गया है, बोर्ड भर में सभी झपकी टैग कुछ साल पहले मार डाला. लेकिन हम शक्ति आपके पास के एक प्रदर्शन के रूप में जावास्क्रिप्ट के साथ इसे जीवित कर सकते हैं जब आप एक वेब पेज के अंदर एक प्रोग्राम लिख सकते हैं. पहले नए सामान पर छोड़ और पुराने पर ही ध्यान केंद्रित करने के लिए. यहाँ इस उदाहरण में पुराने सामान है. मैं एक HTML टैग, एक सिर टैग, और एक शीर्षक टैग है. तो मैं एक div के साथ एक शरीर टैग यहाँ है, याद है जो सिर्फ पृष्ठ का एक आयताकार विभाजन कि मैं मनमाने ढंग से करने के लिए "ग्रीटिंग" की एक अद्वितीय आईडी दिया है, अभी तो मैं विशिष्ट यह जिक्र करने का एक तरीका है, जो कुछ बहुत ही सरल पाठ है: हैलो, दुनिया. अब मुझे इस फाइल के शीर्ष पर स्क्रॉल करें और देखें कि क्या नया है. पहली बात यह है कि नए शीर्ष स्क्रिप्ट टैग है, और स्क्रिप्ट टैग नोटिस के अंदर मैं एक समारोह की घोषणा की है. जावास्क्रिप्ट में एक समारोह, सुंदर PHP के लिए समान घोषित आप सचमुच समारोह तो समारोह के नाम, कोष्ठक लिखते हैं, और शायद कुछ तर्क है अगर यह किसी भी लेता है. तब मैं अपने सामान्य रूप से धनु धनुकोष्ठक मिल गया है, और अब हम कुछ थोड़ा नया कोड है, लेकिन हम देखते हैं यह क्या मतलब है. Var div तो, यह सिर्फ मुझे एक चर बुलाया div देने का मतलब है. मैं इसे foo बुलाया हो सकता है, लेकिन मैं यह div कहा जा चाहता था के लिए कारण है कि एक दूसरे में स्पष्ट हो जाएगा. तो यह पता चला है जावास्क्रिप्ट में - और यह अपने वेब पेज में जावास्क्रिप्ट एम्बेड कोड है - दस्तावेज़ बुलाया प्रकार के एक विशेष वैश्विक चर है. जावास्क्रिप्ट वास्तव में एक वस्तु उन्मुख भाषा है. हम विस्तार में कि क्या मतलब है के रूप में 50 में नहीं जाना होगा, लेकिन अब पता चला है कि एक वस्तु एक struct की तरह बहुत ज्यादा है. जैसे हम जिस तरह से वापस देखा जब में जल्द से जल्द समस्या का सेट जहां हम एक struct में जानकारी का एक बहुत डाल दिया, इसी तरह एक विशेष struct दस्तावेज़ है कि ब्राउज़र के साथ आता है, किसी भी वेब पेज के साथ आता है. यह कुछ मैंने बनाया नहीं है. इस दस्तावेज़ की संरचना के अंदर, हालांकि, आप न केवल डेटा है लेकिन आप भी कार्य किया है. और किसी भी समय आप एक संरचना के अंदर एक वस्तु के अंदर एक समारोह है, यह एक विधि कहा जाता है. लेकिन यह एक ही बात है. एक विधि एक समारोह में कहा कि ऐसा करने के लिए कुछ और के अंदर होना होता है. तो इसका मतलब है कि इस विशेष वैश्विक चर दस्तावेज़ बुलाया एक समारोह getElementById कि सचमुच यह नहीं है कि कहा जाता है. यह आप डोम, दस्तावेज़ ऑब्जेक्ट मॉडल पेड़ से एक तत्व मिल जाएगा, जिसका आईडी इस मामले में ग्रीटिंग में है. दूसरे शब्दों में, कि हर बार हम डेटा संरचनाओं पर खर्च यहाँ खेलने में आता है. एक डोम की यह तस्वीर है कि हम एक पल पहले था, भले ही पृष्ठ के एक छोटे से अलग है, अगर मैं इस तस्वीर में एक div था, मेरे लिए क्या document.getElementById लौटेंगे प्रभावी रूप से एक सूचक होगा पेड़, पेड़ में आयत के लिए एक संदर्भ में आयत. तो है कि क्या यह वास्तव में उन कार्यों में से एक कॉल का मतलब है. इस मामले में फिर से यह एक div है. यह एक शरीर या एक शीर्षक नहीं है. तो चलो देखते हैं कि क्या मैं तो इस div के साथ अब है कि मैं इसे इस चर नामक div के अंदर है. यह जावास्क्रिप्ट के साथ बाहर निकलता है आप अपने पृष्ठ के सीएसएस गतिशील tweak करने की क्षमता है. अब तक, सीएसएस हम किया है, सीमित यद्यपि, के सभी शैली विशेषताओं में है, या किसी और जहाँ हम सीएसएस डाल दिया है? मैं खराब कर दिया है कि एक की तरह. फ़ाइल के शीर्ष पर शैली टैग में. या तीसरे स्थान पर किया गया है? एक बाहरी फ़ाइल, कुछ सीएसएस. तो उन 3 स्थानों पर हम सीएसएस इस प्रकार दूर किया है, लेकिन पकड़ है हम कड़ी मेहनत से यह सब कोडित है. आप का फैसला किया है के रूप में आप 7 pset में कबूतर, हमने फैसला किया कि पहले व्याख्यान हमारे सीएसएस क्या होगा. लेकिन अगर आप अपने सीएसएस बदलना चाहते हैं, तो आप वास्तव में है कि कर सकते हैं एक बार आप एक वास्तविक प्रोग्रामिंग भाषा है. सीएसएस, HTML नहीं प्रोग्रामिंग भाषाओं. जावास्क्रिप्ट है. तो यह पता चला है कि जैसे ही आप पेड़ से उन आयतों डोम कहा जाता है, यह अपने आप के अंदर कुछ डेटा है. तो div है कि मैं सिर्फ पेड़ से पकड़ा है कि क्या हम इसे के अंदर एक संपत्ति को बुलाता हूँ शैली कहा जाता है, और शैली संपत्ति ही बुलाया संपत्ति दृश्यता है. मैं एक सीएसएस उपयोगकर्ता पुस्तिका देख ही यह पता होगा. यह जाता है वहाँ दृश्यता सीएसएस संपत्ति है कि यह क्या कहता है. यह कुछ दृश्य या नहीं, या नहीं दिखाई पड़ता. और कैसे आपको लगता है कि यह है. मैं प्रोग्राम पूछ रहा हूँ अगर इस div की दृश्यता छिपा हुआ है, क्या मैं इसे बदलने के लिए है? दिखाई देता है. और अगर इस पृष्ठ की दृश्यता छिपा नहीं है, तार्किक मैं यह छिपा नहीं है. मैं पता नहीं क्यों यह दिखाई देता है और छिपा हुआ है और दिखाई नहीं है और अदृश्य है. यह जिस तरह से साथ एक गरीब डिजाइन का फैसला किया गया था. लेकिन वे वास्तव में कर रहे हैं: सीएसएस में विपरीत दिखाई और छिपा. यह सब करता है यह मतलब है कि मेरी फाइल के सीएसएस बदलने पर और बंद है, पर और बंद है कि विशेष रूप से div के लिए. लेकिन फिर, यह एक झपकी समारोह बुलाया है. जब पलक समारोह में कहा जाता है? यह पता चला है कि वहाँ एक और विशेष वैश्विक चर बुलाया खिड़की है, दस्तावेज़ के लिए भावना में समान है, लेकिन जबकि दस्तावेज़ अपने वेब पेज के लिए संदर्भित करता है, डोम वृक्ष की तरह, आप HTML सर्वर से भेजा, खिड़की इसे चारों ओर क्रोम, पता बार, शीर्षक पट्टी करने के लिए संदर्भित करता है, और अपने वेब पेज के आसपास है कि सामान की सभी. और यह पता चला है कि खिड़की वस्तु की एक विशेष समारोह के अंदर setInterval कहा जाता है कि यह क्या कहता है. यह एक अंतराल सेट होगा - इस मामले में हर 500 मिसे - और, एक अनुमान ले, यह क्या करने के लिए हर 500 मिसे जा रहा है? यह है कि समारोह में पलक पर अमल हो रहा है. और अच्छा यहाँ क्या है कि हम सी में यह किया जा सकता है भले ही हम कभी नहीं किया था. सी समारोह संकेत कहा जाता है जहाँ आप कुछ कार्यों के आसपास पारित कर सकते हैं तर्क के रूप में. इसी तरह जावास्क्रिप्ट में आप एक अन्य समारोह में एक समारोह का नाम दे सकते हैं. सूचना और मैं क्या कर रहा हूँ. मैं यह नहीं कर रहा हूँ. यदि मैं झपकी के बाद कोष्ठकों डाल दिया, कि झपकी समारोह कॉल का मतलब होगा. अगर मैं उन्हें छोड़ देते हैं, इसका मतलब है कि यहाँ झपकी समारोह है इसलिए कि setInterval यह हर 500 मिसे कॉल कर सकते हैं. तो अंत परिणाम नृशंस हालांकि यह है, कि अगर मैं लोकलहोस्ट में जाने और blink.html के लिए जाना है, मैं अब यह हो रहा है फिर से और फिर है. और अगर मैं वास्तव में तत्व का निरीक्षण, चलो देखते हैं अगर हम यह देख सकते हैं. मुझे तत्व का निरीक्षण, मुझे नीचे बस एक छोटा सा, मुझे यहाँ पर तत्वों का चयन करने के लिए, और क्रोम निरीक्षक डोम के अंदर नोटिस. यह सचमुच आगे और पीछे हर 500 मिसे बदल रहा है. यदि हम हमारे दोस्त नैट जाना, अगर तुम कभी एक अंतराल के साथ कैसे काम कर रहा है, इसी तरह के विचार की सोच रहा था, लेकिन नैट वास्तव में इस विशेष मामले में रंग का बहुत प्रभावी उपयोग कर रहा है. अधिक तो क्या हम वास्तव में इस के साथ कर सकते हैं? चलो एक और उदाहरण खोलने के लिए और कुछ करने की कोशिश कि प्रोग्राम भी अधिक बातें झपकी बनाने से अधिक उपयोगी है. मुझे आज हमारे रूपों निर्देशिका में जाना और form0 में जाने. यह ugliest संभव रूप है कि मैं के साथ आ सकता था, और मुझे सिर्फ तुम्हें दिखाने यह क्या एक ब्राउज़र में की तरह लग रहा है. चलो मुझे लोकलहोस्ट / रूपों में जाना है, और इस form0 है. यह एक सुपर बदसूरत HTML फार्म है कि ईमेल के लिए कुछ क्षेत्रों पासवर्ड के लिए है, पासवर्ड, और फिर एक छोटा चेकबॉक्स कुछ नियम और शर्तों से सहमत. पकड़ है अगर मैं इस प्रपत्र पर जाएँ और मैं आप अपने ईमेल पते नहीं देना चाहती है, मैं करने के लिए नियम और शर्तों से शायद सहमत नहीं करना चाहता, मैं रजिस्टर पर क्लिक कर सकते हैं और यह मुझे वैसे भी देता है के माध्यम से. यह एक बेवकूफ PHP dump.php नामक एक फाइल करने के लिए प्रस्तुत करने के लिए होता है. यह सब होता है नैदानिक ​​प्रयोजनों के लिए सिर्फ $ _GET की सामग्री मुद्रित. यह था कि उपयोगकर्ता द्वारा प्रस्तुत किया गया था अभी. लगता है लेकिन हम वास्तव में मान्य उपयोगकर्ता के फार्म जमा करना चाहते हैं. मुझे 1 संस्करण में जाना. यह form1.html है. यह aesthetically बस के रूप में बुरा लग रहा है, लेकिन नोटिस फैंसी यह कैसे होता है. अगर मैं सहयोग के बिना रजिस्टर क्लिक करें, मैं पर चिल्लाया मिलता है. "आप अपने ईमेल पते को प्रदान करनी चाहिए." सही सभी. तो मुझे की कोशिश है कि. Malan@harvard.edu तो. मैं एक पासवर्ड की जरूरत नहीं है. रजिस्टर. "आप एक पासवर्ड प्रदान करना चाहिए." सही सभी. तो मैं क्रिमसन के एक पासवर्ड प्रदान करेगा. रजिस्टर. "पासवर्ड मेल नहीं खाते" मैं अब यहाँ गहरा लाल में टाइप है. मैं गलती से जाँच की. रजिस्टर. "आप नियमों और शर्तों के लिए सहमत होना होगा." सही सभी. वहाँ सहमत हूँ. रजिस्टर. और अब यह मुझे वहाँ पर नैदानिक ​​उत्पादन से पता चलता है. तो क्या हुआ? हम इस फार्म प्रस्तुतियाँ को मान्य करने की क्षमता है. वास्तव में, यदि आप 7 pset में गोता किया है, वहाँ एक माफी माँगता हूँ समारोह कि यह बहुत आसान करने के लिए स्क्रीन पर एक संदेश के साथ उपयोगकर्ता पर चिल्लाना बनाता है. मैं एक से थोड़ा अलग तंत्र, चेतावनी समारोह का उपयोग कर रहा हूँ, जो कि एक समारोह पर मेहरबान है, क्योंकि यह बहुत बदसूरत उपयोगकर्ता संदेश बनाता है नहीं है. लेकिन मैं यहाँ क्या कर रहा हूँ. यह form1.html है, और लगता है कि मैं कुछ बहुत परिचित वाक्यविन्यास है: शरीर टैग, फार्म टैग, कार्रवाई विशेषता, विधि विशेषता. नोटिस लेकिन मैं अपने फार्म की सुविधा के लिए एक अद्वितीय ID दिया है. तो मैं एक ईमेल फ़ील्ड प्रकार जिसका पाठ है मिल गया है, एक पासवर्ड क्षेत्र प्रकार जिसका पासवर्ड, पुष्टि फ़ील्ड प्रकार जिसका पासवर्ड है, और फिर एक चेकबॉक्स जिसका नाम यहाँ पर समझौता है, प्रकार चेकबॉक्स है. और फिर मैं एक बटन सबमिट मिल गया है. लेकिन शीर्ष पर नोटिस क्या मैं. सबसे पहले, वहाँ स्क्रिप्ट टैग का एक और उपयोग है. यदि आप किसी अन्य फ़ाइल में सीएसएस के साथ की तरह कुछ जावास्क्रिप्ट कोड है, तो आप इसे शामिल कर सकते हैं. और आप स्क्रिप्ट स्रोत के साथ करते हैं कि, और फिर मैं जाहिरा तौर पर जोड़ने हूँ नोटिस एक बहुत लंबा रास्ता googleapis.com लेकिन जिसका फ़ाइल नाम jquery.min में समाप्त होता है न्यूनतम के लिए जे एस. jQuery जावास्क्रिप्ट के लिए एक सुपर लोकप्रिय पुस्तकालय है कि सिर्फ जावास्क्रिप्ट बनाता है सभी को और अधिक उपयोग करने के लिए उपयोगकर्ता के अनुकूल है. यह प्रभावी रूप से एक वास्तविक मानक बन गया है. तो भले ही आप क्या कर रहे हैं के बारे में देखने के शुद्ध जावास्क्रिप्ट प्रति से नहीं है, यह CS50 पुस्तकालय की तरह बहुत जावास्क्रिप्ट के शीर्ष पर एक पुस्तकालय एक परत है कम स्तर सी कोड के शीर्ष पर, वास्तविकता यह है कि इंटरनेट पर लगभग हर कोई इसे का उपयोग करता है. तो इन प्रशिक्षण पहिये नहीं कर रहे हैं. यह बस इन दिनों अभ्यास. अब नीचे नोटिस कि मेरी खुद की स्क्रिप्ट टैग है, और नोटिस मैं यहाँ क्या किया है. यह पता चला है कि jQuery के एक छोटे से कल्पना कुछ भी करता है. जावास्क्रिप्ट डॉलर के संकेत है, लेकिन वे व्यर्थ कर रहे हैं. वे पत्र ए या बी या सी की तरह हैं jQuery बस तथ्य यह है या रखी दावे की सम्मेलन तरह अपनाया कि उनके विशेष प्रतीक होगा. इसलिए जैसे ही आप इस वैश्विक जावास्क्रिप्ट फ़ाइल लोड स्क्रिप्ट टैग के साथ यहाँ, तुम कि $ कहा जाता है एक विशेष वैश्विक चर का उपयोग कर सकते है. यह अधिक ठीक jQuery कहा जाता है, लेकिन है कि लगभग रूप में डॉलर के रूप में सेक्सी नहीं लगती है. लेकिन कोई विशेष अर्थ नहीं है. PHP में यह विशेष अर्थ था. आप इसे एक चर के सामने किया था. यह सिर्फ एक सेक्सी बात यह है कि वे पर ले लिया है. यहाँ पर क्या हो रहा है? मैं jQuery समारोह के लिए अपने वैश्विक चर दस्तावेज़ गुजर रहा हूँ और फिर मैं बुला रहा हूँ. तैयार है. क्या jQuery अनिवार्य है यह आप कुछ वेनिला जावास्क्रिप्ट चीजें लेने के लिए अनुमति देता है दस्तावेज़ वस्तु की तरह, खिड़की वस्तु, और यदि आप इसे jQuery समारोह में पारित करने के लिए - और फिर स्पष्ट हो, यह एक jQuery समारोह बुलाया है - यह क्या करता है यह आप के लिए दस्तावेज़ के एक विशेष संस्करण देता है कि अधिक कार्यक्षमता के साथ जुड़े है. तो कच्चे जावास्क्रिप्ट में कोई तैयार समारोह है, लेकिन अगर आप jQuery समारोह के लिए दस्तावेज़ 1 गुजरती हैं, यह आप के लिए दस्तावेज़ ऑब्जेक्ट का एक विशेष संस्करण रिटर्न अधिक फैंसी सुविधाओं है. और यही कारण है कि लोगों को यह पसंद है. यह सिर्फ बातें करने के लिए आसान बनाता है, के रूप में हम को देखने के बारे में कर रहे हैं. तो कोड की इस पंक्ति का क्या मतलब है? कोड की इस पंक्ति यहाँ मतलब है जब दस्तावेज़ तैयार है - दूसरे शब्दों में, एक बार ब्राउज़र इस फ़ाइल को ऊपर से नीचे पढ़ने किया जाता है - आगे जाना है और निम्न कार्य निष्पादित. क्या वास्तव में जावास्क्रिप्ट में दिलचस्प है और PHP के रूप में अच्छी तरह से है - गुमनाम कार्यों है. जावास्क्रिप्ट में कार्य करता है कि कोई नाम नहीं है, लेकिन वे एक शरीर है की घोषणा कर सकते हैं. सूचना है कि यहां क्या हो रहा है. यह एक समारोह तैयार कहा जाता है, और यह सिर्फ निम्नलिखित करने का अर्थ जब पूरे वेब पेज तैयार है, जब यह सब सर्वर से किया गया है में पढ़ा है. आप क्या करना चाहते हैं? मैं कोड का एक हिस्सा निष्पादित करने के लिए करना चाहते हैं. सूचना है कि हम इस कोड सही दूर निष्पादित नहीं करना चाहती. अगर मैं इस छोड़े गए हैं, इसका मतलब यह तुरंत कोड की इन पंक्तियों को क्रियान्वित करने के लिए शुरू होगा. लेकिन तथ्य यह है कि मैं नहीं, नहीं, नहीं कह रहा हूँ, इस तरह एक गुमनाम समारोह में इस लपेटो मतलब है कि यह अभी तक अमल नहीं करते हैं, यह अंततः फोन. हम यह हमारे पिछले प्रपत्र उदाहरण में एक पल पहले देखा था. समारोह क्या हम अंत में फोन किया था, 500 मिसे बाद? पलक. इसलिए एक ही विचार है. फिर, भले ही यह थोड़ा अजीब लग रहा है, सिर्फ विश्वास पर अब के लिए ले कि एक गुमनाम समारोह की घोषणा करने के लिए कहा जाता है कि अंततः, आप बस समारोह () लिखने { तो क्या हम कोड को अंततः निष्पादित करने के लिए जा रहे हैं? निम्नलिखित. यह भी एक छोटे से नया लग रहा है, लेकिन यह यहाँ मतलब jQuery समारोह है, और अब यह एक शॉर्टकट है. पाठ्यक्रम के स्क्रीन के नीचे HTML का यह टुकड़ा कुछ पेड़ प्रतिनिधित्व किया है. यह ऐसा नहीं है. यह पृष्ठ इस हैलो, उदाहरण दुनिया की तुलना में और अधिक दिलचस्प है. लेकिन वहाँ कुछ पेड़ कि इस HTML मेल खाती है. यह गर्दन में दर्द हो सकता है करने के लिए पुनरावर्ती समारोह के कुछ प्रकार लागू होगा रूट नोड में शुरू करने के लिए और फिर नोड आईडी जिसका पंजीकरण है. तो क्या jQuery सुपर लिए आसान बनाता है हमें सचमुच यह. आगे बढ़ो और मुझे पाने के लिए जो div या जो भी फार्म, जो HTML तत्व पंजीकरण के एक आईडी है. यह document.getElementById ('पंजीकरण) के लिए बराबर है. JQuery की तरह लोगों को क्यों करते हैं? क्योंकि यह कम करने के लिए लिखें. लेकिन यह है कि यह सब है. यह एक ही विचार है. मुझे टैग आईडी जिसका पंजीकरण है. और जब कि टैग प्रस्तुत की है, जो करने के लिए एक फार्म होना होता, आगे जाना है और इस कोड को निष्पादित. तो चलो एक कैसे हम फार्म का सत्यापन कर रहे हैं पर अब देखो. वाक्यविन्यास वैसे पहली बार में गुप्त है, लेकिन क्या हो रहा है? यदि कोड की इस पंक्ति सच है, मैं उपयोगकर्ता पर चिल्लाना अपने या अपने ईमेल पते प्रदान करने के लिए जा रहा हूँ. तो क्या कोड की इस पंक्ति है? $ JQuery का मतलब है. अब यह नोटिस. यह सीएसएस की तरह की तरह है. यदि आप सीएसएस में डुबकी लगाई है अभी तक, तो आपको पता चल जाएगा कि इस तत्व आईडी जिसका पंजीकरण है का मतलब है. अंतरिक्ष का मतलब है कि एक बच्चे को या पंजीकरण के एक वंशज जिसका नाम इनपुट है. और फिर वर्ग कोष्ठक में इस बात को एक छोटे से फिल्टर है. और यहां तक ​​कि अगर इस गुप्त लग रहा है, यह सिर्फ मतलब है कि फार्म का आईडी जिसका पंजीकरण है, कि जिसका नाम ईमेल के इनपुट तत्व के अंदर करने के लिए जाना है, और फिर अपने मूल्य प्राप्त करने के लिए, जो कुछ भी अपने मूल्य के लिए होता है - asdf कि सभी मैं टाइप या malan@harvard.edu है कि अगर है कि मैं क्या टाइप यदि. तो अगर फार्म का ईमेल == क्षेत्र कुछ भी नहीं के मूल्य, उपयोगकर्ता पर चिल्लाना. और अगर पासवर्ड क्षेत्र के मूल्य == कुछ भी नहीं है, उपयोगकर्ता पर चिल्लाना. वरना अगर पासवर्ड क्षेत्र के मूल्य पुष्टि क्षेत्र के मूल्य नहीं के बराबर है, जो अन्य फार्म तत्व था, उपयोगकर्ता पर चिल्लाना. और फिर अंत में - और यह भी एक अपनी खुद की कुछ नई वाक्यविन्यास है, लेकिन एक बार आप इसे देखा है, यह कम से कम एक छोटे से अधिक उचित है - और अगर फार्म जिसका आईडी पंजीकरण है एक इनपुट तत्व जिसका नाम समझौते है और यह जाँच की है, आगे बढ़ो और उपयोगकर्ता पर चिल्लाना. तो मैं पूरी तरह से स्वीकार करते हैं यह पहली नज़र में पूरी तरह से भारी है. यह नया वाक्यविन्यास की एक बहुत है. लेकिन jQuery के पैटर्न के इन प्रकार के इस प्रकार है. और ईमानदारी से, मैं भी यह अस्तित्व कुछ मिनट पहले तक नहीं पता था. मैं Googled, "आप अगर एक चेकबॉक्स jQuery में जाँच की है जांच कैसे करूं?" और इस वाक्य रचना है, क्योंकि वहाँ यह करने के विभिन्न तरीके वास्तविक कच्चे जावास्क्रिप्ट कोड के साथ. के रूप में तो समस्या 7 सेट के पहले ही पेज पर जोर देती है, 7 pset बहुत ज्यादा अपने आप bootstrapping में एक व्यायाम है हम, जहां प्रदान की है उम्मीद है, जो एक साथ करने के लिए pset से निपटने के लिए एक वैचारिक ढांचे. लेकिन जैसा कि अक्सर वेब डिजाइन के साथ मामला है, यह आप पर निर्भर है वास्तव में चारों ओर से प्रहार करने के लिए, वेब से कोड के टुकड़े और उदाहरण शामिल इतने लंबे समय के रूप में आप उन्हें अदालत में तलब करना कि पहले पत्रक पर शर्तों के अनुसार, और पता है कि HTML, सीएसएस, जावास्क्रिप्ट और भी एसक्यूएल सीखने वास्तव में इस अभ्यास में घर के रूप में हम इन प्रशिक्षण के पहियों से दूर ले शुरू होने का मतलब. एहसास है और भी वहाँ इतने अधिक बातें आप एक ब्राउज़र के साथ कर सकते हैं. इन तत्वों में से अधिकांश के अंदर अन्य घटना संचालकों बुलाया बातें कर रहे हैं. और फिर भी हम सिर्फ लोगों को देखा onsubmit और onready बुलाया, आप onkeydown, onkeyup की तरह बातें कर सकते हैं, पसंद है जब उपयोगकर्ता एक कुंजी को छू, कि और कुंजी के लिए सुन सकते हैं. जीमेल कुंजीपटल शॉर्टकट है. गूगल रचना के लिए कैसे करता है सी की तरह कीबोर्ड शॉर्टकट को लागू? वे घटनाओं के लिए सुनो, के रूप में वे, onkeypress या onkeyup और onkeydown की तरह कर रहे हैं बुलाया. यदि आप कभी भी कुछ मेनू विकल्प पर अपने माउस hovered और अचानक देखा, सभी एक मेनू प्रकट होता है या ग्राफिक परिवर्तन रंग, है कि वे कैसे कर रहे हैं? Onready या onsubmit के लिए सुनने के बजाय, आप onmouseover या onmouseout के लिए सुनो. तो संक्षेप में, ये बहुत ही सरल बुनियादी बातों के साथ कि हम आज की सतह खरोंच शुरू कर दिया है और हम आगे बुधवार को गोता है, तेजी से हूँ, चीजें हैं जो आप पहले से ही परिचित की तरह लागू करने की शक्ति है. तो चलो वहाँ अंत, और हम बुधवार को जारी रखेंगे. [CS50.TV]