1 00:00:00,000 --> 00:00:02,270 >> [समीक्षा: प्रश्नोत्तरी 1] 2 00:00:02,270 --> 00:00:04,620 [अली Nahm, Oreoluwa Barbarinsa, लुकास Freitas, रोब बोडेन] [हार्वर्ड विश्वविद्यालय] 3 00:00:04,620 --> 00:00:07,660 [यह CS50 है.] [CS50.TV] 4 00:00:07,660 --> 00:00:11,610 [लुकास Freitas] हर किसी का स्वागत है. इस क्विज 1 के लिए समीक्षा की है. 5 00:00:11,610 --> 00:00:15,040 बस एक त्याग के रूप में, यह है - मेरा मतलब है, हम कवर करने की कोशिश करने जा रहे हैं 6 00:00:15,040 --> 00:00:17,770 संभव है, लेकिन जितना सामग्री है कि इसका मतलब यह नहीं है कि 7 00:00:17,770 --> 00:00:20,780 हम प्रश्नोत्तरी 1 में हो सकता है कि चीजों के सभी को कवर करने जा रहे हैं. 8 00:00:20,780 --> 00:00:25,270 तो आप भी एक व्याख्यान में देखो, वर्गों, आप कर सकते हैं कि सब कुछ ले सुनिश्चित करें. 9 00:00:25,270 --> 00:00:28,240 प्रश्नोत्तरी 1 बुधवार, अगले बुधवार को होने जा रहा है. 10 00:00:28,240 --> 00:00:33,800 तो अध्ययन करने के लिए सुनिश्चित करें. यह पहली प्रश्नोत्तरी तरह, बहुत ज्यादा, होने जा रहा है 11 00:00:33,800 --> 00:00:36,390 इसके स्वरूप के बारे में है, लेकिन यह शायद बहुत कठिन होने जा रहा है. 12 00:00:36,390 --> 00:00:39,600 मैं 50 ले लिया, जब कम से कम पिछले साल, मैं यह बहुत कठिन था. 13 00:00:39,600 --> 00:00:42,410 तो एक बहुत अध्ययन करते हैं. 14 00:00:42,410 --> 00:00:45,190 >> मैं डेटा संरचनाओं को कवर करने के लिए जा रहा हूँ और Huffman कोडन. 15 00:00:45,190 --> 00:00:47,910 यह बहुत से लोगों को जटिल लगता है कि कुछ है 16 00:00:47,910 --> 00:00:51,930 लेकिन मैं इसे यथासंभव आसान बनाने के लिए प्रयास करने के लिए जा रहा हूँ. 17 00:00:51,930 --> 00:00:56,330 सबसे पहले, हम क्या तुम लोगों को प्रश्नोत्तरी 1 के लिए जानना चाहता हूँ करने के लिए है 18 00:00:56,330 --> 00:01:00,970 मैं पेश करने के लिए जा रहा हूँ कि डेटा संरचनाओं में से प्रत्येक के वैचारिक वर्णन समझते हैं. 19 00:01:00,970 --> 00:01:03,960 कि तुम नहीं है इसका मतलब है कि वास्तव में 20 00:01:03,960 --> 00:01:07,020 अपनी प्रश्नोत्तरी 1 में एक हैश तालिका को लागू करने. 21 00:01:07,020 --> 00:01:10,250 हम आपके पूरे हैश तालिका को लागू नहीं करना चाहते हैं, शायद हम कोशिश करेंगे 22 00:01:10,250 --> 00:01:13,090 आप कुछ कार्यों को लागू करने के लिए, 23 00:01:13,090 --> 00:01:16,940 सबसे आम आपरेशन, लेकिन हम आप सब कुछ को लागू करने के लिए नहीं जा रहे हैं. 24 00:01:16,940 --> 00:01:21,010 तो यह है कि आप प्रत्येक डेटा संरचना के पीछे की अवधारणा समझ ज़रूरी है 25 00:01:21,010 --> 00:01:23,510 और भी तुम सी में कोड करने में सक्षम हैं, 26 00:01:23,510 --> 00:01:27,880 वे एक आंकड़ा संरचना के लिए सिर्फ सबसे आम आपरेशन. 27 00:01:27,880 --> 00:01:30,090 और यह भी, संकेत और structs की समीक्षा कर सकेंगे 28 00:01:30,090 --> 00:01:33,470 वे इन आंकड़ों संरचनाओं में एक बहुत दिखाई देते हैं. 29 00:01:33,470 --> 00:01:37,380 >> सबसे पहले, सूचियों से जुड़े. लिंक सूचियों वास्तव में सरणियों के समान हैं, 30 00:01:37,380 --> 00:01:39,930 लेकिन एक लिंक की गई सूची और एक सरणी के बीच अंतर, 31 00:01:39,930 --> 00:01:45,160 सबसे पहले, एक लिंक की गई सूची एक बहुत लचीला आकार की है कि है 32 00:01:45,160 --> 00:01:50,060 सरणियों में आप सरणी के लिए एक बहुत बड़े आकार का चयन करने के लिए या तो है, जबकि 33 00:01:50,060 --> 00:01:53,710 तो आप, आप उस सरणी में अपने सभी डेटा स्टोर करने में सक्षम होने के लिए जा रहे हैं कि पता 34 00:01:53,710 --> 00:01:59,370 या आप सरणी के एक लचीला लंबाई को malloc का उपयोग किया है. 35 00:01:59,370 --> 00:02:03,680 लिंक सूचियों में यह सिर्फ अधिक तत्व प्राप्त करने के लिए बहुत आसान है, 36 00:02:03,680 --> 00:02:07,210 लिंक सूची में अधिक तत्वों डाल या तत्वों को दूर. 37 00:02:07,210 --> 00:02:09,370 और वास्तव में, आप लिंक की गई सूची हल किया जाना नहीं चाहते हैं, 38 00:02:09,370 --> 00:02:13,950 आप खोज और लगातार समय में तत्वों को दूर कर सकते हैं, 39 00:02:13,950 --> 00:02:16,800 इसलिए हे (1) समय है, तो यह बहुत सुविधाजनक है. 40 00:02:16,800 --> 00:02:20,660 तुम बस, नोड्स हमेशा malloc को याद करने के लिए सावधान और मुक्त होना जरूरी 41 00:02:20,660 --> 00:02:25,510 यदि आप नहीं करते हैं, तो आप स्मृति लीक होगा सिर्फ इसलिए. 42 00:02:25,510 --> 00:02:31,480 तो लिंक सूचियों - एक नोड की परिभाषा सिर्फ हम सही वहाँ क्या है की तरह है. 43 00:02:31,480 --> 00:02:35,110 मैं int n रखा है, लेकिन जब आप किसी से डेटा स्टोर कर सकते हैं. 44 00:02:35,110 --> 00:02:37,280 आप एक स्ट्रिंग संग्रहीत करना चाहते हैं तो, यह ठीक है. 45 00:02:37,280 --> 00:02:41,690 आप एक संरचना स्टोर करना चाहते हैं, यह जो आप चाहते हैं, एक डबल ठीक है. 46 00:02:41,690 --> 00:02:44,630 मैं बस यहाँ उदाहरण के लिए int n डाल दिया. 47 00:02:44,630 --> 00:02:46,800 और आप अगले नोड के लिए एक संकेत है. 48 00:02:46,800 --> 00:02:51,940 तो, मूलतः, एक लिंक की गई सूची में कुछ डेटा है, और तब यह अगले नोड के लिए अंक. 49 00:02:51,940 --> 00:02:56,710 यह लिंक की गई सूची में अंतिम तत्व है, यह अशक्त करने के लिए बात करने के लिए जा रहा है. 50 00:02:56,710 --> 00:02:59,060 तो यह एक लिंक की गई सूची का एक उदाहरण है. 51 00:02:59,250 --> 00:03:05,960 >> ठीक है, तो अब मैं एक लिंक की गई सूची में एक तत्व सम्मिलित करना चाहते हैं, तो हम क्या करना चाहिए देखते हैं. 52 00:03:05,960 --> 00:03:08,810 सबसे पहले, एक समारोह डालने प्रकार शून्य से होगा 53 00:03:08,810 --> 00:03:11,350 मैं कुछ भी वापस नहीं करना चाहते क्योंकि. 54 00:03:11,350 --> 00:03:14,200 और मैं एक तर्क के रूप में एक पूर्णांक ले जा रहा हूँ, 55 00:03:14,200 --> 00:03:17,090 मैं मैं सम्मिलित करने के लिए चाहते हैं पता करना चाहते हैं. 56 00:03:17,090 --> 00:03:21,840 तो मुझे क्या करना चाहिए पहली बात क्या है? खैर, मैं newnode पर malloc चाहिए, 57 00:03:21,840 --> 00:03:24,240 इसलिए कि पहली पंक्ति है. 58 00:03:24,240 --> 00:03:27,580 मैं सिर्फ एक लिंक की गई सूची में डालने के लिए एक नया नोड पैदा कर रहा हूँ. 59 00:03:27,580 --> 00:03:32,360 तो मैं क्या कर सकता है? ठीक है, हम जानते हैं कि लिंक सूचियों के बारे में हमारी कार्यान्वयन में 60 00:03:32,360 --> 00:03:38,180 कक्षा में, हम हमेशा एक वैश्विक चर के रूप में सिर रख दिया. 61 00:03:38,180 --> 00:03:41,800 तो हम क्या कर सकते हैं सिर बदल जाता है. 62 00:03:41,800 --> 00:03:44,300 मैं इस नए नोड नए प्रमुख हो कर सकते हैं, 63 00:03:44,300 --> 00:03:46,670 और यह पिछले सिर को इंगित करने के लिए जा रहा है. 64 00:03:46,670 --> 00:03:50,390 हम ऐसा कैसे कर सकते हैं? मुझे क्या करना है पहली बात 65 00:03:50,390 --> 00:03:54,770 , मूल्य के लिए नए नोड में 'एन' बदल रहा है 66 00:03:54,770 --> 00:03:57,530 समारोह के लिए पारित किया गया था. 67 00:03:57,530 --> 00:04:01,050 फिर newnode अगले के सिर होने जा रहा है. 68 00:04:01,050 --> 00:04:05,800 सिर newnode होने जा रहा है. तो यह बहुत आसान है. 69 00:04:05,800 --> 00:04:10,090 एक नोड को हटाने के लिए, हम ऐसा कर सकते हैं - 70 00:04:10,090 --> 00:04:14,790 हम ऐसा कर सकता एक तरीका यह कहना है, 71 00:04:14,790 --> 00:04:18,160 ठीक है, मैं इसे हटाना चाहता था, उदाहरण के लिए, 3, 72 00:04:18,160 --> 00:04:24,850 क्या मैं कर सकता बस पिछले नोड बिंदु है 73 00:04:24,850 --> 00:04:27,580 3 के अगले नोड के लिए. 74 00:04:27,580 --> 00:04:29,400 इसलिए मैं ऐसे ही कुछ करना होगा. 75 00:04:29,400 --> 00:04:33,400 लेकिन यह है कि कर के साथ समस्या क्या है? 76 00:04:33,400 --> 00:04:37,400 मैं एक स्मृति रिसाव है, इसलिए मैं अब और नंबर 3 के लिए पहुँच नहीं है. 77 00:04:37,400 --> 00:04:42,480 उस के साथ समस्या यह है कि मैं उस नोड मुक्त करने के लिए सक्षम होने के लिए नहीं जा रहा हूँ कि है. 78 00:04:42,480 --> 00:04:45,360 मैं स्मृति रिसाव और (दुर्बोध) मुझसे नफरत करने जा रहा है किया जा रहा हूँ. 79 00:04:45,360 --> 00:04:49,370 तो बजाय कर रही है कि, मैं शायद एक अस्थायी सूचक होना चाहिए. 80 00:04:49,370 --> 00:04:53,210 तो मैं अस्थायी डाल दिया. यह मैं इसे हटाना चाहते हैं कि नोड के लिए बात करने के लिए जा रहा है. 81 00:04:53,210 --> 00:04:58,170 और फिर मैं अगले नोड के लिए बात करने के लिए पिछले नोड्स स्थानांतरित कर सकते हैं 82 00:04:58,170 --> 00:05:00,390 मैं इसे हटाना चाहते हैं कि नोड की. 83 00:05:00,390 --> 00:05:02,730 और अंत में, मैं सूचक मुक्त कर सकते हैं. 84 00:05:02,730 --> 00:05:07,480 मुझे लगता है मैं अभी भी वहीं बनाया कि सूचक मुक्त करने के लिए है? 85 00:05:07,480 --> 00:05:09,560 मैं करने के लिए, सिर्फ इसलिए नहीं है - 86 00:05:09,560 --> 00:05:13,430 फर्क इस नोड malloc का उपयोग कर बनाया गया है, 87 00:05:13,430 --> 00:05:17,280 यह सिर्फ एक ढेर में एक नल स्विच के रूप में घोषित किया गया था, इसलिए जब तक यह ढेर में है. 88 00:05:17,280 --> 00:05:20,000 इसलिए मैं इसे मुक्त करने की जरूरत नहीं है. 89 00:05:20,000 --> 00:05:22,030 >> ठीक है. तो अब के ढेर के बारे में बात करते हैं. 90 00:05:22,030 --> 00:05:24,680 ढेर बहुत स्पष्ट हैं. 91 00:05:24,680 --> 00:05:29,540 हम सिर्फ सरणियों का उपयोग कर वर्ग में ढेर और कतार किया था, 92 00:05:29,540 --> 00:05:32,820 लेकिन आप परिचित होना चाहिए - सिर्फ जागरूक होना 93 00:05:32,820 --> 00:05:40,740 तुम भी रूप में अच्छी तरह से जुड़ा हुआ सूचियों का उपयोग कतारों में ढेर कर सकते हैं. 94 00:05:40,740 --> 00:05:44,460 आप एक सरणी है, तो क्या एक ढेर होगा? 95 00:05:44,460 --> 00:05:46,810 एक ढेर, सबसे पहले, एक आकार के लिए होगा. 96 00:05:46,810 --> 00:05:49,950 आप अभी है कि ढेर के आकार क्या है की दुकान है. 97 00:05:49,950 --> 00:05:52,980 और तुम भी, संख्या के इस मामले में, एक सरणी होगा 98 00:05:52,980 --> 00:05:55,120 अगर आप चाहते हैं लेकिन, यह एक सरणी हो सकता है 99 00:05:55,120 --> 00:06:00,380 तार की, संरचना की एक सरणी, आप संग्रहीत करना चाहते हैं कि कुछ भी. 100 00:06:00,380 --> 00:06:03,240 ढेर के बारे में: एक ढेर और एक लिंक की गई सूची के बीच का अंतर 101 00:06:03,240 --> 00:06:08,590 ढेर में आप केवल ढेर में डाल दिया गया था कि पिछले तत्व के लिए उपयोग किया है. 102 00:06:08,590 --> 00:06:11,770 यह पहली बार बाहर, पिछले में कहा जाता है. 103 00:06:11,770 --> 00:06:15,090 आप ट्रे की हो चुकी है, जैसे 104 00:06:15,090 --> 00:06:17,670 आप ढेर के शीर्ष पर एक ट्रे रखा है, 105 00:06:17,670 --> 00:06:22,670 आप अन्य ट्रे का उपयोग किया है पहली बार है कि ट्रे से हटा दिया है. 106 00:06:22,670 --> 00:06:26,310 यह ढेर के साथ एक ही बात है. 107 00:06:26,310 --> 00:06:31,220 मैं, उदाहरण के लिए, एक ढेर करने के लिए एक तत्व जोड़ने के लिए चाहते हैं, तो मुझे क्या करना चाहिए? 108 00:06:31,220 --> 00:06:34,070 यह पुश कहा जाता है, और यह बहुत सीधा है है. 109 00:06:34,070 --> 00:06:37,130 तुम्हें क्या करना है पहली बात की जांच है अगर ढेर का आकार 110 00:06:37,130 --> 00:06:40,150 अधिक से अधिक या ढेर की क्षमता के बराबर नहीं है. 111 00:06:40,150 --> 00:06:45,810 आप पहले से ही पूरी क्षमता पर कर रहे हैं, तो आपको कुछ और नहीं जोड़ सकते हैं. 112 00:06:45,810 --> 00:06:51,140 नहीं तो, आप बस पर ढेर करने के तत्व जोड़ दिया है. 113 00:06:51,140 --> 00:06:54,530 और अंत में, आकार बढ़त. इसलिए यह बहुत सीधा है. 114 00:06:54,530 --> 00:06:57,140 तो मैं बस संख्या 2 जोड़ें. 115 00:06:57,140 --> 00:07:00,350 मैं पॉप करना चाहते हैं, जो मैं निकालना चाहते हैं, इसका मतलब है 116 00:07:00,350 --> 00:07:03,870 जोड़ा और तत्व का मान दिया गया था कि पिछले तत्व, 117 00:07:03,870 --> 00:07:09,180 मैं जाँच करने के लिए पहली बात पर ढेर खाली नहीं है. 118 00:07:09,180 --> 00:07:11,510 यह खाली है, तो मैं कुछ भी वापस नहीं कर सकते हैं. 119 00:07:11,510 --> 00:07:14,820 उस मामले में, मैं -1 लौट रहा हूँ. 120 00:07:14,820 --> 00:07:18,960 अन्यथा, मैं कल्पना के आकार घटती जा रहा हूँ, 121 00:07:18,960 --> 00:07:22,510 और नंबर (s.size) वापसी. 122 00:07:22,510 --> 00:07:27,230 क्यों मैं आकार घटती है और फिर s.size लौटे? 123 00:07:27,230 --> 00:07:30,930 इस मामले में, कल्पना आकार 4 है, क्योंकि यह है 124 00:07:30,930 --> 00:07:33,810 और मैं चौथे तत्व लौटना चाहते हैं, है ना? 125 00:07:33,810 --> 00:07:36,030 लेकिन चौथे तत्व के सूचकांक क्या है? तीन. 126 00:07:36,030 --> 00:07:44,510 मैं आकार है के बाद से - 3 होने जा रहा है, मैं बस (s.size) s.numbers लौट सकते हैं 127 00:07:44,510 --> 00:07:48,410 यह 3 है क्योंकि. तो यह सिर्फ सूचकांक है. 128 00:07:48,410 --> 00:07:50,380 >> अभी कतार. कतारों बहुत ज्यादा एक ही बात कर रहे हैं. 129 00:07:50,380 --> 00:07:54,950 फर्क सिर्फ इतना है कि बजाय आखिरी में होने की, पहली बार बाहर है 130 00:07:54,950 --> 00:07:57,480 जब आप पहली बार बाहर, में पहली बार है. 131 00:07:57,480 --> 00:07:59,460 आप एक संगीत कार्यक्रम में जाने के लिए इंतजार कर रहे हैं शायद अगर, 132 00:07:59,460 --> 00:08:04,260 आप के बजाय एक पंक्ति का ढेर था अगर आप खुश नहीं होगा. 133 00:08:04,260 --> 00:08:07,730 आने के लिए अंतिम व्यक्ति होने के नाते संगीत कार्यक्रम में प्रवेश करने वाले पहले व्यक्ति होंगे. 134 00:08:07,730 --> 00:08:09,760 तुम्हें शायद खुश नहीं होगा. 135 00:08:09,760 --> 00:08:15,020 कतार में, में पाने के लिए पहले व्यक्ति को भी बाहर निकलने के लिए पहला व्यक्ति है. 136 00:08:15,020 --> 00:08:18,720 तो एक पंक्ति की परिभाषा में, सरणी में आकार होने के अलावा, 137 00:08:18,720 --> 00:08:23,360 आप भी ढेर के सिर के सूचकांक है जो सिर, के लिए है. 138 00:08:23,360 --> 00:08:29,000 अब ठीक पहले तत्व तो. 139 00:08:29,000 --> 00:08:32,710 Enqueue के ढेर के लिए धक्का के रूप में एक ही बात है. 140 00:08:32,710 --> 00:08:34,980 तुम बहुत भोली थे, तुम बस कहना होगा, 141 00:08:34,980 --> 00:08:39,289 मैं धक्का के लिए किया था के रूप में अच्छी तरह से, मैं अभी बिल्कुल एक ही बात कर सकते हैं. 142 00:08:39,289 --> 00:08:44,030 यह क्षमता से परे नहीं है अगर मैं सिर्फ देख सकते हैं. 143 00:08:44,030 --> 00:08:48,760 अगर ऐसा है, मैं नहीं तो मैं सिर्फ नए मूल्य निर्यात कर सकते हैं, वापसी झूठी 144 00:08:48,760 --> 00:08:50,630 और फिर आकार बढ़त. 145 00:08:50,630 --> 00:08:52,750 लेकिन क्यों यह गलत है? 146 00:08:52,750 --> 00:08:55,010 चलो इस उदाहरण देखते हैं. 147 00:08:55,010 --> 00:08:57,020 मैं सामान का एक गुच्छा enqueue करने की कोशिश कर रहा हूँ, 148 00:08:57,020 --> 00:08:58,390 और फिर मैं विपंक्ति और enqueue करने जा रहा हूँ. 149 00:08:58,390 --> 00:09:00,550 वहाँ आदेशों की एक बहुत है, लेकिन यह बहुत आसान है. 150 00:09:00,550 --> 00:09:04,790 मैं 5 enqueue, तो 5 जोड़ने के लिए जा रहा है, और उसके बाद 7, हूँ 151 00:09:04,790 --> 00:09:09,310 1, 4, 6, और फिर मैं कुछ विपंक्ति करना चाहते हैं, 152 00:09:09,310 --> 00:09:12,000 जो मैं पहले तत्व को दूर करने के लिए जा रहा हूँ कि इसका मतलब है. 153 00:09:12,000 --> 00:09:14,640 तो मैं सही, नंबर 3 को दूर करने के लिए जा रहा हूँ? 154 00:09:14,640 --> 00:09:17,320 पहला तत्व. ठीक है. 155 00:09:17,320 --> 00:09:21,450 मैं कुछ और enqueue करने की कोशिश अब, क्या होने वाला है? 156 00:09:21,450 --> 00:09:24,290 मेरे कार्यान्वयन के अनुसार, 157 00:09:24,290 --> 00:09:31,040 मैं सूचकांक q.size में अगले नंबर डालने के लिए जा रहा था. 158 00:09:31,040 --> 00:09:35,140 इस मामले में, आकार 8 है, 159 00:09:35,140 --> 00:09:38,640 तो इंडेक्स 8 अंतिम स्थिति में यहीं होगा. 160 00:09:38,640 --> 00:09:43,900 मैं यहीं 1 enqueue करने की कोशिश करते हैं, तो मैं अंतिम स्थिति overwriting की जाएगी 161 00:09:43,900 --> 00:09:45,870 पूरी तरह से गलत है जो संख्या 1, के लिए. 162 00:09:45,870 --> 00:09:49,870 मुझे क्या करना चाहते आसपास लपेटो और पहले की स्थिति के लिए जाना है. 163 00:09:49,870 --> 00:09:52,870 शायद तुम सिर्फ ठीक है, मैं सिर्फ जाँच करने के लिए कहेंगे, 164 00:09:52,870 --> 00:09:55,600 मैं वास्तव में वहाँ कुछ डाल सकते हैं. 165 00:09:55,600 --> 00:09:58,560 यदि नहीं, मैं सिर्फ ओह, नई पूरी क्षमता का कहना है, 166 00:09:58,560 --> 00:10:02,010 वास्तव में क्षमता है - 1, और आप वहाँ एक तत्व नहीं डाल सकते हैं. 167 00:10:02,010 --> 00:10:06,150 लेकिन समस्या क्या है? समस्या यह है कि मैं बस यहीं सब कुछ विपंक्ति अगर 168 00:10:06,150 --> 00:10:08,240 और फिर मैं कुछ और जोड़ने की कोशिश, यह अभी कहना होगा, 169 00:10:08,240 --> 00:10:11,210 खैर, आप 0 है जो पूरी क्षमता, पर थे. 170 00:10:11,210 --> 00:10:13,620 तो अपने कतार में चला गया है. 171 00:10:13,620 --> 00:10:16,990 आप के आसपास लपेटो करने के लिए है, और चारों ओर लपेटकर का एक तरीका 172 00:10:16,990 --> 00:10:22,040 आप दूरदर्शी और अन्य psets में सीखा लड़के माड उपयोग कर रहा था कि. 173 00:10:22,040 --> 00:10:29,090 आप q.size + q.head करना होगा समझने के लिए क्यों घर पर यह कोशिश कर सकते हैं 174 00:10:29,090 --> 00:10:31,080 आधुनिक विपणन क्षमता है, लेकिन आप यहीं की जांच, 175 00:10:31,080 --> 00:10:34,760 हम यह काम करता है देख सकते हैं. 176 00:10:34,760 --> 00:10:37,760 इसलिए पिछले उदाहरण में, 8 q.size था 177 00:10:37,760 --> 00:10:47,590 यह यहां सरणी की इस स्थिति थी क्योंकि और सिर, 1 था. 178 00:10:47,590 --> 00:10:51,970 तो यह 1 + 8, 9 हो जाएगा. मॉड क्षमता 9 0 होगा. 179 00:10:51,970 --> 00:10:56,640 यह सूचकांक 0 के लिए जाना होगा. हम सही स्थिति में हो जाएगा. 180 00:10:56,640 --> 00:10:59,750 और फिर घर में कतार कोशिश. 181 00:10:59,750 --> 00:11:04,950 कुछ महत्वपूर्ण बातें: एक ढेर और एक कतार के बीच के अंतर को समझने की कोशिश करो. 182 00:11:04,950 --> 00:11:11,620 घर में, enqueue, विपंक्ति, धक्का और पॉप लागू करने के साथ बहुत परिचित पाने के लिए प्रयास करें. 183 00:11:11,620 --> 00:11:16,560 आप उनमें से प्रत्येक का प्रयोग करेंगे और जब भी समझते हैं. 184 00:11:16,560 --> 00:11:22,830 >> तो चलो Pokemons के एक समूह के साथ 10 सेकंड के लिए आराम करते हैं. 185 00:11:22,830 --> 00:11:26,080 और अब वापस आ गया डेटा संरचनाओं के लिए चलते हैं. 186 00:11:26,080 --> 00:11:29,770 टेबल हैश. बहुत सारे लोग हैश तालिकाओं के डर गए थे. 187 00:11:29,770 --> 00:11:33,650 समस्या 6 सेट में, वर्तनी परीक्षक. 188 00:11:33,650 --> 00:11:35,980 हैश तालिका और कोशिश करता है, बहुत से लोगों को उनमें से डर लगता है. 189 00:11:35,980 --> 00:11:38,540 उन्होंने कहा कि वे समझने के लिए इतनी मेहनत कर रहे हैं. हाँ? 190 00:11:38,540 --> 00:11:41,490 [लूटने बोडेन] समस्या 5 सेट. >> समस्या हाँ, 5 सेट. धन्यवाद लूटना. 191 00:11:41,490 --> 00:11:43,370 हाँ. छह आवेश एन 'पफ, हाँ था. 192 00:11:43,370 --> 00:11:49,340 समस्या परीक्षक वर्तनी गया था 5 सेट, और आप एक हैश तालिका या एक कोशिश या तो इस्तेमाल किया था. 193 00:11:49,340 --> 00:11:55,360 बहुत सारे लोग वे समझने के लिए सुपर कठिन थे कि सोचा था, लेकिन वे वास्तव में बहुत आसान कर रहे हैं. 194 00:11:55,360 --> 00:12:01,290 एक हैश तालिका असल में, क्या है? एक हैश तालिका लिंक सूचियों की एक सरणी है. 195 00:12:01,290 --> 00:12:06,730 एक सरणी और एक हैश तालिका के बीच फर्क सिर्फ इतना है 196 00:12:06,730 --> 00:12:09,730 हैश तालिका में आप एक हैश समारोह में कहा जाता है कि कुछ है. 197 00:12:09,730 --> 00:12:12,080 एक हैश कार्य क्या है? 198 00:12:12,080 --> 00:12:13,970 तुम लोग यहां पढ़ सकते हैं, तो मैं नहीं जानता. 199 00:12:13,970 --> 00:12:16,090 यह एक हैश तालिका का एक उदाहरण है. 200 00:12:16,090 --> 00:12:19,220 तो अगर आप 31 तत्वों के साथ एक सरणी है कि देख सकते हैं. 201 00:12:19,220 --> 00:12:22,440 और क्या हम एक हैश तालिका में करना एक हैश समारोह है है 202 00:12:22,440 --> 00:12:26,660 एक चाबी है कि अनुवाद करने के लिए जा रहा है, हर एक सूचकांक के लिए int. 203 00:12:26,660 --> 00:12:31,740 तो, उदाहरण के लिए, मैं बी हैरिसन के लिए चयन करना चाहते हैं, 204 00:12:31,740 --> 00:12:34,190 मैं अपने हैश कार्यों में बी हैरिसन रखा जाएगा, 205 00:12:34,190 --> 00:12:36,960 और हैश समारोह 24 लौटेंगे. 206 00:12:36,960 --> 00:12:40,930 इसलिए मुझे लगता है मैं 24 में बी हैरिसन संग्रहीत करना चाहते हैं कि पता है. 207 00:12:40,930 --> 00:12:46,580 तो यह है कि सिर्फ एक सरणी होने और एक हैश तालिका होने के बीच अंतर है. 208 00:12:46,580 --> 00:12:48,740 हैश तालिका में आपको बताने जा रहा है कि एक समारोह होगा 209 00:12:48,740 --> 00:12:54,740 जहां आप संग्रहीत करना चाहते हैं कि डेटा स्टोर करने के लिए. 210 00:12:54,740 --> 00:12:57,040 हैश समारोह के लिए, आप एक हैश समारोह के लिए देखना चाहता हूँ 211 00:12:57,040 --> 00:13:00,600 कि नियतात्मक और अच्छी तरह से वितरित की है. 212 00:13:00,600 --> 00:13:07,810 आप यहाँ देख सकते हैं, आपको मैं दुकान के लिए चाहते थे कि डेटा का एक बहुत वास्तव में 19 थी कि देखते हैं 213 00:13:07,810 --> 00:13:12,470 बजाय सभी मुक्त थे, जो 31 और 30 और 29 का उपयोग कर की. 214 00:13:12,470 --> 00:13:16,920 इसलिए मुझे लगता है कि इस्तेमाल किया हैश समारोह बहुत अच्छी तरह से वितरित नहीं किया गया था. 215 00:13:16,920 --> 00:13:20,710 हम अच्छी तरह से वितरित कहना है, यह हम है चाहता हूँ कि इसका मतलब 216 00:13:20,710 --> 00:13:26,520 मोटे तौर पर, कम से कम 1 या में से प्रत्येक के लिए 2 - 217 00:13:26,520 --> 00:13:32,190 जैसे, सरणियों में सूचकांकों में से प्रत्येक के लिए 1 या 2 के एक अंतर. 218 00:13:32,190 --> 00:13:43,950 तुम्हें पता है, मोटे तौर पर, सरणी में प्रत्येक लिंक की गई सूची में तत्वों की एक ही नंबर है चाहता हूँ. 219 00:13:43,950 --> 00:13:48,600 और यह हैश तालिका में मान्य है हैश तालिकाओं के रूप में देखने के लिए जाँच अगर आसान है. 220 00:13:48,600 --> 00:13:51,770 >> फिर पेड़. यह एक पेड़ है. 221 00:13:51,770 --> 00:13:56,400 कंप्यूटर विज्ञान में पेड़ किसी कारण के लिए उल्टा कर रहे हैं. 222 00:13:56,400 --> 00:14:00,150 तो तुम्हें यहीं पेड़ की जड़ और फिर छोड़ दिया है. 223 00:14:00,150 --> 00:14:05,630 तुम सिर्फ माता पिता और बच्चे के लिए नामकरण पता होना चाहिए. 224 00:14:05,630 --> 00:14:12,880 प्रत्येक नोड माता पिता के नीचे हैं कि नोड्स रहे हैं, जो अपने बच्चों की है. 225 00:14:12,880 --> 00:14:19,660 तो, उदाहरण के लिए, 2, वहीं 3 के लिए और दूसरे बच्चे के लिए माता - पिता होने जा रहा है 226 00:14:19,660 --> 00:14:25,290 3 1 के लिए माता - पिता और कर रहे हैं कि अन्य बच्चों को होने जा रहा है, जबकि. 227 00:14:25,290 --> 00:14:29,990 और 1 इतने पर 3 के बच्चे होने जा रहा है, और है. 228 00:14:29,990 --> 00:14:34,610 हम और अधिक दिलचस्प कुछ, एक द्विआधारी खोज वृक्ष कहा जाता है 229 00:14:34,610 --> 00:14:39,040 जिसमें एक नोड के अधिकार पर सभी मान 230 00:14:39,040 --> 00:14:41,660 यहीं, सही पर होने जा रहे हैं - सही पर, 231 00:14:41,660 --> 00:14:46,780 जड़ में तत्व से अधिक होने जा रहे हैं. 232 00:14:46,780 --> 00:14:49,780 सही पर तो मैं यहीं संख्या 5 है, तो सभी तत्वों 233 00:14:49,780 --> 00:14:51,940 5 से अधिक होने जा रहा है, और बाईं तरफ जाते हैं 234 00:14:51,940 --> 00:14:56,770 सभी तत्वों को 5 से भी कम होने जा रहे हैं. 235 00:14:56,770 --> 00:14:58,780 क्यों यह उपयोगी है? 236 00:14:58,780 --> 00:15:01,660 खैर, मैं नंबर 7 यहाँ है की जाँच करना चाहते हैं, उदाहरण के लिए, 237 00:15:01,660 --> 00:15:05,960 मैं सिर्फ पहले 5 पर जाएँ और मैं यह देखने के लिए जा रहा हूँ, 5 से 7 अधिक से अधिक या कम है? 238 00:15:05,960 --> 00:15:09,540 यह अधिक से अधिक है, तो मैं इसे पेड़ के अधिकार पर होना करने के लिए जा रहा है. 239 00:15:09,540 --> 00:15:13,980 तो मैं देखने के लिए बहुत कम सामान है. 240 00:15:13,980 --> 00:15:19,520 एक द्विआधारी खोज पेड़, नोड के कार्यान्वयन में, मैं सिर्फ जानकारी है करने के लिए जा रहा हूँ 241 00:15:19,520 --> 00:15:21,750 इसलिए int n, तुम भी एक स्ट्रिंग हो सकता था 242 00:15:21,750 --> 00:15:23,630 या आप चाहते थे कि कुछ भी. 243 00:15:23,630 --> 00:15:28,100 आप बस अधिक से अधिक है क्या परिभाषित करने पर सावधान रहना होगा, कम है. 244 00:15:28,100 --> 00:15:30,390 तो तुम तार था, उदाहरण के लिए, आप को परिभाषित कर सकता 245 00:15:30,390 --> 00:15:34,690 सही पर उन सभी चीजों को बड़ा लंबाई करने जा रहे हैं कि, 246 00:15:34,690 --> 00:15:40,940 बाईं कम लंबाई के लिए जा रहे हैं, तो यह आप पर निर्भर सच है. 247 00:15:40,940 --> 00:15:44,930 >> मैं कैसे BST खोजने के लिए लागू कर सकते हैं? 248 00:15:44,930 --> 00:15:47,840 हम क्या करना होगा पहली बात रूट नल है अगर जाँच है. 249 00:15:47,840 --> 00:15:50,920 यह शून्य है, यह बात नहीं है कि इसका मतलब है 250 00:15:50,920 --> 00:15:53,330 आप भी एक पेड़, सही नहीं है क्योंकि? 251 00:15:53,330 --> 00:15:55,790 तो मैं वापसी झूठी. 252 00:15:55,790 --> 00:15:58,740 अन्यथा, मैं संख्या अधिक है, तो जाँच करने के लिए जा रहा हूँ 253 00:15:58,740 --> 00:16:01,720 जड़ में मूल्य से अधिक है. 254 00:16:01,720 --> 00:16:04,250 मैं सही पर तत्व खोजने की कोशिश करने जा रहा हूँ 255 00:16:04,250 --> 00:16:08,590 पेड़ की. 256 00:16:08,590 --> 00:16:11,310 तुम्हें पता है मैं यहाँ recursion का उपयोग कर रहा हूँ कि देखते हैं. 257 00:16:11,310 --> 00:16:14,150 यह कम है और फिर, अगर मैं छोड़ दिया पर देखने के लिए जा रहा हूँ. 258 00:16:14,150 --> 00:16:18,330 और अंत में, अन्यथा, यह अधिक से अधिक कम या नहीं अगर नहीं है, 259 00:16:18,330 --> 00:16:20,660 यह यह मान ही है कि इसका मतलब है. 260 00:16:20,660 --> 00:16:23,010 इसलिए मैं सिर्फ सच वापसी. 261 00:16:23,010 --> 00:16:26,360 तुम्हें पता है मैं अगर, अगर, अगर प्रयोग किया जाता है कि यहाँ देख सकते हैं. 262 00:16:26,360 --> 00:16:30,820 और याद रखो, प्रश्नोत्तरी 0 में, हम, अगर अगर, अगर था कि एक समस्या थी 263 00:16:30,820 --> 00:16:32,780 और आप अक्षमता को खोजने वाले थे, 264 00:16:32,780 --> 00:16:35,180 और अक्षमता अगर आप इस्तेमाल किया गया था. 265 00:16:35,180 --> 00:16:39,060 यदि आप किसी और, अगर नहीं तो, अगर इस्तेमाल किया, और कुछ किया जाना चाहिए था. 266 00:16:39,060 --> 00:16:44,240 अगर और अगर नहीं तो और बाकी यहाँ तो, मैं किसी और का उपयोग करना चाहिए? 267 00:16:44,240 --> 00:16:46,200 क्या किसी - हाँ? 268 00:16:46,200 --> 00:16:51,140 [छात्र बोल, सुनाई] 269 00:16:51,140 --> 00:16:53,480 यह तो एकदम सही है. तो वह, यह बात नहीं है कि कह रहा है 270 00:16:53,480 --> 00:16:55,930 सिर्फ इसलिए कि हम पहले था कि अक्षमता 271 00:16:55,930 --> 00:16:59,550 था कि, कुछ हालत संतुष्ट था हो सकता है अगर, क्योंकि 272 00:16:59,550 --> 00:17:03,570 तो तुम एक काम किया है, लेकिन फिर आप अन्य शर्तों के सभी जांच करने के लिए जा रहे थे. 273 00:17:03,570 --> 00:17:06,319 लेकिन इस मामले में, यह सही दूर लौटे, तो यह बात नहीं है. 274 00:17:06,319 --> 00:17:09,220 तो अगर आप किसी और का उपयोग करने के लिए नहीं है. 275 00:17:09,220 --> 00:17:11,740 >> और अंत में, की कोशिश करता है के बारे में बात करते हैं, 276 00:17:11,740 --> 00:17:13,800 जो सभी की पसंदीदा है. 277 00:17:13,800 --> 00:17:15,980 एक कोशिश सरणियों का एक पेड़ है. 278 00:17:15,980 --> 00:17:20,369 यह मान देखने के लिए बहुत तेजी से है, लेकिन यह स्मृति का एक बहुत का उपयोग करता है. 279 00:17:20,369 --> 00:17:22,530 और यह शब्द फिल्टर करने के लिए आमतौर पर है, इसलिए जब आप 280 00:17:22,530 --> 00:17:27,920 अपने फोन में एक फोन की किताब की तरह है, उदाहरण के लिए, मैं नहीं जानता, लागू करना चाहते हैं 281 00:17:27,920 --> 00:17:30,440 और तुम बी टाइप करने में सक्षम होना चाहता हूँ 282 00:17:30,440 --> 00:17:32,510 और सिर्फ बी हैं, जो लोगों के नाम है 283 00:17:32,510 --> 00:17:37,960 यह उदाहरण के लिए, एक कोशिश का उपयोग कर लागू करने के लिए बहुत आसान है. 284 00:17:37,960 --> 00:17:39,820 कैसे आप एक कोशिश में एक नोड परिभाषित करते हैं? 285 00:17:39,820 --> 00:17:43,910 तुम बस is_word जा रहा है कि एक bool किया है. 286 00:17:43,910 --> 00:17:48,660 यही कारण है, कि नोड से पहले सभी अक्षरों का उपयोग प्रतिनिधित्व करता है कि 287 00:17:48,660 --> 00:17:51,920 आप एक शब्द बनाने के लिए सक्षम थे, 288 00:17:51,920 --> 00:17:57,230 और फिर आप नोड्स के लिए संकेत की एक सरणी होगा. 289 00:17:57,230 --> 00:18:03,120 आपको हम एक पैरेंट नोड की सरणी, तो नोड * सरणी है कि देख सकते हैं? हाँ? 290 00:18:03,120 --> 00:18:06,050 तो चलो काम करेंगे कैसे देखते हैं. जादू की जांच के लिए, 291 00:18:06,050 --> 00:18:08,230 हम 27 तत्वों की एक सरणी है, 292 00:18:08,230 --> 00:18:12,150 हम सभी पत्र प्लस apostrophe किया है. 293 00:18:12,150 --> 00:18:17,800 मैं बोर्ड पर लिखने में सक्षम होना चाहता हूँ, क्योंकि यहां पहले मैं सिर्फ 2 उपयोग करने के लिए जा रहा हूँ. 294 00:18:17,800 --> 00:18:20,230 ठीक है. तो यह एक कोशिश का एक उदाहरण है. 295 00:18:20,230 --> 00:18:25,600 मैं सिर्फ पहला नोड को परिभाषित करते हैं, तो मैं 2 तत्वों की एक सरणी होगा 296 00:18:25,600 --> 00:18:29,290 नल करने के लिए 2 संकेत दिए गए हैं, इसलिए मैं सिर्फ 'ए' और 'बी' में डाल दिया है. 297 00:18:29,290 --> 00:18:32,430 और मैं is_word का कहना है कि एक bool किया जा रहा हूँ. 298 00:18:32,430 --> 00:18:34,420 यह पहली बार एक के लिए झूठी होने जा रहा है, 299 00:18:34,420 --> 00:18:37,370 बस, क्योंकि इससे पहले कि आप किसी भी अक्षर नहीं है. 300 00:18:37,370 --> 00:18:40,900 तो एक खाली शब्द एक शब्द नहीं है. तो यह गलत है. 301 00:18:40,900 --> 00:18:46,320 मैं इस शब्दकोश में 'एक' जोड़ना चाहते हैं, तो मुझे क्या करना होगा? 302 00:18:46,320 --> 00:18:49,760 मैं सिर्फ 'ए' के ​​लिए एक नया नोड malloc करना होगा, 303 00:18:49,760 --> 00:18:54,630 और फिर सच करने के लिए अपने शब्द जोड़ें. 304 00:18:54,630 --> 00:19:00,180 तो यह सिर्फ 'ए' सच होने जा रहा है होने कि प्रतिनिधित्व करता है. भावना करें? 305 00:19:00,180 --> 00:19:04,120 मैं 'बा' को जोड़ने के लिए चाहते हैं, तो मैं 'बी' के लिए malloc 1 के लिए होगा, 306 00:19:04,120 --> 00:19:07,550 और फिर मैं, गलत पर बूलियन स्थापित करने के लिए जा रहा हूँ 307 00:19:07,550 --> 00:19:10,160 अपने आप में 'बी' एक शब्द नहीं है. 308 00:19:10,160 --> 00:19:13,010 तो मैं एक और 'ए' के ​​लिए एक, तो 'बा' malloc के लिए जा रहा हूँ, 309 00:19:13,010 --> 00:19:16,290 और फिर मैं इसे सच करने के लिए एक शब्द है स्थापित करने के लिए जा रहा हूँ. 310 00:19:16,290 --> 00:19:18,950 'बा' एक शब्द है. 311 00:19:18,950 --> 00:19:21,910 मैं देखना चाहते हैं और फिर 'बी', इस शब्दकोश में है 312 00:19:21,910 --> 00:19:26,730 मैं सिर्फ पहले एक, 'बी' में जा सकते हैं. मैं नीचे जाना, और मैं शब्द है पर देखने के लिए, और यह गलत कहते हैं. 313 00:19:26,730 --> 00:19:30,110 तो यह एक शब्द नहीं है. मैं 'बा' की जाँच करना चाहते हैं, 314 00:19:30,110 --> 00:19:38,010 मैं पहली बार एक, 'ख' के लिए जाना है, और फिर 'ए' के ​​लिए जाना है, और मैं सच देखना है, तो यह एक शब्द है. भावना करें? 315 00:19:38,010 --> 00:19:41,950 बहुत सारे लोग कोशिश करता है द्वारा उलझन में हैं. नहीं? 316 00:19:41,950 --> 00:19:44,740 >> अंत में, Huffman कोडन. Huffman कोडन बहुत उपयोगी है 317 00:19:44,740 --> 00:19:47,550 स्मृति बचाने और पाठ फ़ाइलों को संपीड़ित करने के लिए, 318 00:19:47,550 --> 00:19:52,270 सिर्फ इसलिए कि आप उदाहरण के लिए, 'ए' और 'ई' का उपयोग आमतौर पर, 319 00:19:52,270 --> 00:19:57,710 तुम लोग ज्यादा के रूप में 'क्यू' या 'जेड' का उपयोग अगर अपने दस्तावेज़ों में, लेकिन मैं नहीं जानता. 320 00:19:57,710 --> 00:20:02,040 हर एक चरित्र के लिए सिर्फ 1 बाइट के बाद, 321 00:20:02,040 --> 00:20:08,520 हर एक - हम ASCII तालिका में है कि 256 अक्षर बहुत इष्टतम नहीं है, 322 00:20:08,520 --> 00:20:11,410 आप बहुत अधिक उपयोग करने वाले कुछ अक्षर हैं, सिर्फ इसलिए कि 323 00:20:11,410 --> 00:20:15,180 तो आप शायद उन लोगों के लिए कम स्मृति का उपयोग करना चाहिए. 324 00:20:15,180 --> 00:20:17,560 कैसे मैं Huffman कोडन प्रयोग करते हैं? 325 00:20:17,560 --> 00:20:20,010 हम एक Huffman वृक्ष क्या करना है. 326 00:20:20,010 --> 00:20:23,370  एक Huffman पेड़ नोड्स है 327 00:20:23,370 --> 00:20:27,760 पत्र, 'सी', 'बी', 'एक' की तरह होने जा रहा है कि एक प्रतीक है कि, 328 00:20:27,760 --> 00:20:32,990 आपके पास जो कुछ अक्षर, शब्द पाठ में दिखाई देता है कि आवृत्ति है कि एक आवृत्ति, 329 00:20:32,990 --> 00:20:36,280 यदि आप के लिए Huffman वृक्ष बनाने थे कि 330 00:20:36,280 --> 00:20:41,800 और फिर Huffman वृक्ष के बाईं ओर इंगित करने के लिए जा रहा है कि एक नोड 331 00:20:41,800 --> 00:20:47,210 और सही करने के लिए बात करने के लिए जा रहा है कि एक और नोड. तो बस एक पेड़ की तरह. 332 00:20:47,210 --> 00:20:49,440 कैसे आप एक Huffman वृक्ष का निर्माण करते हैं? 333 00:20:49,440 --> 00:20:54,020 तुम सबसे कम आवृत्तियों है कि 2 नोड्स लेने के लिए जा रहे हैं. 334 00:20:54,020 --> 00:20:56,490 आप एक टाई है, तो आप 2 नोड्स लेने के लिए जा रहे हैं 335 00:20:56,490 --> 00:20:59,870 साथ ही सबसे कम ASCII मूल्यों है कि. 336 00:20:59,870 --> 00:21:02,420 तो फिर तुम उन 2 नोड्स के बाहर एक नए पेड़ बनाने के लिए जा रहे हैं 337 00:21:02,420 --> 00:21:08,030 कि माता पिता के नोड में संयुक्त आवृत्ति किया जा रहा है. 338 00:21:08,030 --> 00:21:13,240 और फिर तुम जंगल से 2 बच्चों को दूर करने के लिए जा रहे हैं 339 00:21:13,240 --> 00:21:15,570 और माता - पिता के साथ बदलें. 340 00:21:15,570 --> 00:21:18,930 और अगर आप आप ही जंगल में 1 पेड़ है जब तक कि दोहराने जा रहे हैं. 341 00:21:18,930 --> 00:21:23,840 तो चलो आप ZAMYLA के लिए एक Huffman वृक्ष करना होगा कैसे देखते हैं. 342 00:21:23,840 --> 00:21:29,220 आप सभी पत्र 'ए' के ​​लिए छोड़कर आवृत्ति 1 है कि यहाँ देख सकते हैं, आवृत्ति 2 है कि. 343 00:21:29,220 --> 00:21:34,090 इसलिए मुझे लगता है मैं ASCII मूल्य और आवृत्ति के क्रम में डाल सभी पत्रों के लिए नोड्स बनाया. 344 00:21:34,090 --> 00:21:40,090 मैं पहले वृक्ष बनाने के लिए चाहते हैं, तो यह 'एल' और 'एम' के साथ हो जाएगा. 345 00:21:40,090 --> 00:21:43,100 तो यह यहाँ है. इस जोड़ी की आवृत्ति 2 होगा 346 00:21:43,100 --> 00:21:49,470 यह 1 + 1 है क्योंकि, तो सबसे कम आवृत्तियों के साथ अगले 2 'वाई' और 'जेड' कर रहे हैं. 347 00:21:49,470 --> 00:21:53,180 2 की एक आवृत्ति है - और फिर मैं जा रहा है उन सभी को है. 348 00:21:53,180 --> 00:22:00,470 तो अगले एक के लिए सबसे कम ASCII मूल्य है कि लोगों को जो लोग कर रहे हैं? 349 00:22:00,470 --> 00:22:04,830 'ए' और 'एल'. इसलिए मैं नई नोड बनाने, 350 00:22:04,830 --> 00:22:09,930 और अंत में, यह 4 और 2 है, तो 2 बाईं तरफ होने जा रहा है. 351 00:22:09,930 --> 00:22:12,430 और इस Huffman वृक्ष है. 352 00:22:12,430 --> 00:22:16,060 मैं कुछ पाठ लिखना चाहते हैं तो अगर, 353 00:22:16,060 --> 00:22:24,440 जैसे Huffman वृक्ष का उपयोग कर, पाठ में बदलने के लिए द्विआधारी में बहुत आसान है. 354 00:22:24,440 --> 00:22:30,220 मैं बाईं ओर घूम रहा एक 0 और सही करने के लिए चलती है का कहना है कि यदि उदाहरण के लिए, एक है 1 355 00:22:30,220 --> 00:22:32,410 क्या प्रतिनिधित्व करने के लिए जा रहा है? 356 00:22:32,410 --> 00:22:35,530 तो जैसे 1, 1, ठीक है, तो सही, 357 00:22:35,530 --> 00:22:40,370 और तब तो छोड़ दिया 0, एल होगा, और फिर 1, 0, 0. 358 00:22:40,370 --> 00:22:43,950 तो 1, 0, इसलिए सिर्फ 1, 0, 'ए'. 359 00:22:43,950 --> 00:22:47,540 और फिर 0, 1, ताकि 'जेड'. 360 00:22:47,540 --> 00:22:52,170 और फिर 1, 0, 0 - नहीं. 361 00:22:52,170 --> 00:22:56,780 0, 0 'वाई' हो, इतना आलसी जाएगा. 362 00:22:56,780 --> 00:23:06,060 इसलिए मेरे लिए यह सब है, रोब पर लेने के लिए जा रहा है. 363 00:23:06,060 --> 00:23:08,400 >> [रोब बोडेन] तो, सप्ताह 7 सामान. 364 00:23:08,400 --> 00:23:11,390 हम वास्तव में तेजी से ऊपर जाने के लिए एक बहुत कुछ मिल गया. 365 00:23:11,390 --> 00:23:13,430 Bitwise ऑपरेटरों, बफर अतिप्रवाह, 366 00:23:13,430 --> 00:23:16,760 CS50 पुस्तकालय, तो HTML, HTTP, सीएसएस. 367 00:23:16,760 --> 00:23:20,990 15 से 20 मिनट की तरह सभी में. 368 00:23:20,990 --> 00:23:24,330 Bitwise ऑपरेटरों. आप जानना चाहते हैं कि उनमें से 6 कर रहे हैं. 369 00:23:24,330 --> 00:23:31,200 बिटवाइस और, बिटवाइस या, XOR, छोड़ा पाली, सही बदलाव, और नहीं. 370 00:23:31,200 --> 00:23:35,420 सही बदलाव और आप मुश्किल से सब पर व्याख्यान में देखा नहीं. 371 00:23:35,420 --> 00:23:40,480 हम जल्दी से इसे यहाँ पर जायेंगे, लेकिन यह इन मौजूद है कि 6 जानते हैं कि अच्छा है. 372 00:23:40,480 --> 00:23:45,070 बिटवाइस ऑपरेटरों आप + 4 3 है जब की तरह हैं याद रखें. 373 00:23:45,070 --> 00:23:49,420 आप 3 और 4 के द्विआधारी के साथ काम नहीं कर रहे हैं. 374 00:23:49,420 --> 00:23:56,550 बिटवाइस ऑपरेटरों के साथ आप वास्तव में संख्या 3 और 4 के व्यक्तिगत बिट्स के साथ काम कर रहे हैं. 375 00:23:56,550 --> 00:23:59,120 >> तो हम कह देंगे कि पहले एक बिटवाइस, नहीं है 376 00:23:59,120 --> 00:24:02,340 और यह सब होता है सभी बिट्स फ्लिप है. 377 00:24:02,340 --> 00:24:05,500 तुम सी में यह लिख रहे हैं, तो यहाँ, आप यह लिख नहीं होगा 378 00:24:05,500 --> 00:24:09,380 ~ 11011 या जो कुछ भी रूप में, तुम, यह ~ 4 की तरह लिखना होगा 379 00:24:09,380 --> 00:24:12,970 और फिर यह 4 की द्विआधारी प्रतिनिधित्व फ्लिप जाएगा. 380 00:24:12,970 --> 00:24:24,800 तो यहाँ, 1 के लिए ~ कुछ बाइनरी संख्या के 1,101,101 बिल्कुल 0 के लिए सभी 1 के फ्लिप करने के लिए जा रहा है और सभी 0 की. 381 00:24:24,800 --> 00:24:27,600 मैं वहाँ कहते हैं, इस के लगातार उपयोग, 382 00:24:27,600 --> 00:24:30,830 हम कुछ संख्या के साथ आने के लिए चाहते हैं की तरह है और हम कुछ देर में यह देखेंगे, है 383 00:24:30,830 --> 00:24:35,460 बिट्स के सभी उनमें से एक को छोड़कर, 1 कहाँ हैं. 384 00:24:35,460 --> 00:24:38,560 तो यह संख्या व्यक्त करने के लिए आम तौर पर आसान है 385 00:24:38,560 --> 00:24:40,630 सिर्फ इतना है कि एक बिट सेट है जहां, 386 00:24:40,630 --> 00:24:44,650 और फिर इसके बारे में ~, तो हर दूसरे बिट है कि एक को छोड़कर सेट है ले लो. 387 00:24:44,650 --> 00:24:50,300 इसलिए कि हम एक बिट में और अधिक उपयोग करने के लिए जा रहे हैं. 388 00:24:50,300 --> 00:24:58,220 >> बिटवाइस या. यहाँ 2 द्विआधारी संख्या, और इन 2 नंबर इस प्रकार हैं 389 00:24:58,220 --> 00:25:00,780 वे हर संभव प्रतिनिधित्व करते हैं, सुंदर प्रतिनिधि हैं 390 00:25:00,780 --> 00:25:07,290 बिट्स के संयोजन आप पर काम करने की जरूरत सकता है. 391 00:25:07,290 --> 00:25:13,540 मैं प्रत्येक बिट or'd जब यहाँ, हम बस सीधे नीचे की तुलना करने के लिए जा रहे हैं. 392 00:25:13,540 --> 00:25:15,410 तो बाईं ओर हम एक 1 और एक 1 है. 393 00:25:15,410 --> 00:25:20,510 मैं Bitwise | जब उन, क्या मैं करने जा रहा हूँ? एक. 394 00:25:20,510 --> 00:25:25,320 0 और 1 मुझे देने जा रहा है | फिर bitwise? एक. 395 00:25:25,320 --> 00:25:27,840 बिटवाइस 1 और 0 ही बात है, एक होने जा रहा है. 396 00:25:27,840 --> 00:25:31,880 बिटवाइस 0 | 0 मुझे 0 देने जा रहा है. 397 00:25:31,880 --> 00:25:37,300 0 मामला | तो मैं 0 मिलता है, जहां केवल मामले 0 में है. 398 00:25:37,300 --> 00:25:40,020 और तुम सिर्फ अपने तार्किक अन्य रैंकों की तरह उस के बारे में सोच सकते हैं. 399 00:25:40,020 --> 00:25:44,830 तुम सच के रूप में 1 और के रूप में झूठी 0 से लगता है कि अगर ऐसा है, तो एक ही बात यहाँ लागू होता है. 400 00:25:44,830 --> 00:25:50,040 तो सच है या सच सच है, सही है या गलत सच है. 401 00:25:50,040 --> 00:25:57,150 झूठी या सच सच है, झूठी या गलत वास्तव में गलत है कि केवल एक चीज है. 402 00:25:57,150 --> 00:26:00,100 यहाँ आपको पता होना चाहिए कि उदाहरण है 403 00:26:00,100 --> 00:26:05,160 bitwise ऑपरेटरों का उपयोग किया जाता है जब एक बहुत अच्छा उदाहरण के रूप में. 404 00:26:05,160 --> 00:26:08,660 यहां अगर हम या Ox20 साथ राजधानी 'ए', 405 00:26:08,660 --> 00:26:11,830 और हम हम कुछ मिलता है, एक दूसरे में इन पर गौर करेंगे. 406 00:26:11,830 --> 00:26:16,020 और हम या छोटा अक्षर 'ए' Ox20 साथ, हम कुछ मिलता है. 407 00:26:16,020 --> 00:26:26,750 तो चलो ASCII तालिका ऊपर खींच देना. 408 00:26:26,750 --> 00:26:34,000 ठीक है. यहाँ हम 'ए' देखना है कि - 409 00:26:34,000 --> 00:26:36,920 यहाँ हम 'ए' में 65 दशमलव है. 410 00:26:36,920 --> 00:26:45,120 लेकिन मैं Ox41 है जो हेक्साडेसिमल, साथ जाना होगा. 411 00:26:45,120 --> 00:26:48,280 पूरा यकीन है कि हम क्लास में देखा था. मुझे लगता है हम क्लास में यह देखा है 412 00:26:48,280 --> 00:26:52,730 यह हेक्साडेसिमल से बाइनरी में कनवर्ट करना बहुत आसान है कि. 413 00:26:52,730 --> 00:26:55,280 यहाँ तो, मैं द्विआधारी में 4 डाल करना चाहते हैं, 414 00:26:55,280 --> 00:26:59,550 कि सिर्फ 0100 होने जा रहा है. 415 00:26:59,550 --> 00:27:03,620 यह 1 की जगह, 2 की जगह, 4 की जगह है, तो यह 4 है. 416 00:27:03,620 --> 00:27:08,550 तब मैं 0001 में होने जा रहा है जो बाइनरी में 1 विभाजित कर सकते हैं. 417 00:27:08,550 --> 00:27:14,280 और इसलिए इस द्विआधारी में 'ए' का प्रतिनिधित्व होने जा रहा है. 418 00:27:14,280 --> 00:27:22,720 छोटा अक्षर 'ए', यह अब Ox61 होने जा रहा है ले रहा है, 419 00:27:22,720 --> 00:27:27,050 अपने द्विआधारी में इन तेज जहां,, तो एक 6 - 420 00:27:27,050 --> 00:27:37,830 वास्तव में यह करते हैं - कोई रबड़ है? रबड़. 421 00:27:37,830 --> 00:27:48,220 Ox61. तो द्विआधारी में 6 बंटवारे + 4 + 2 + 0 0 होने जा रहा है. 422 00:27:48,220 --> 00:27:54,610 और बंटवारे 1 0001 होने जा रहा है. 423 00:27:54,610 --> 00:27:56,520 इन 2 के बीच अंतर को देखते हुए 424 00:27:56,520 --> 00:28:04,250 हम एक छोटे और एक पूंजी 'ए' के ​​बीच फर्क सिर्फ इस एक सा है कि देखते हैं. 425 00:28:04,250 --> 00:28:11,810 ठीक है - तो यहाँ वापस करने के लिए आ रहा है. 426 00:28:11,810 --> 00:28:15,920 हम सा Ox20 है देखो, तो यहाँ वापस करने के लिए आ रहा है 427 00:28:15,920 --> 00:28:22,210 अपने द्विआधारी में इतना बंटवारे Ox20, 428 00:28:22,210 --> 00:28:27,310 0010, 0000 है. 429 00:28:27,310 --> 00:28:33,470 Ox20, सेट किया गया है कि केवल बिट, हम साथ संबंध रहे हैं कि इस बिट है 430 00:28:33,470 --> 00:28:38,210 पूंजी और लोअरकेस 'ए' के ​​बीच स्विच के साथ. 431 00:28:38,210 --> 00:28:47,610 यदि यह एक 'ए' है जो मैं या 'ए',, 432 00:28:47,610 --> 00:28:50,580 अगर मैं या Ox20 साथ 'ए', 433 00:28:50,580 --> 00:28:53,490 क्या मैं करने जा रहा हूँ? 434 00:28:53,490 --> 00:28:58,960 [छात्र, अश्रव्य] >> लोअरकेस 'ए', यह एक 1 के लिए इस बिट फ्लिप करने के लिए जा रहा है. 435 00:28:58,960 --> 00:29:04,170 और अगर मैं या 'एक' Ox20 साथ, क्या मैं करने जा रहा हूँ? 436 00:29:04,170 --> 00:29:08,780 एक छोटे, क्योंकि सिर्फ oring 'ए' Ox20 साथ, 437 00:29:08,780 --> 00:29:14,580 मैं सिर्फ एक 1 के लिए इस एकल बिट oring होने जा रहा हूँ, यह बात नहीं है, तो यह पहले से ही एक 1 है. 438 00:29:14,580 --> 00:29:17,960 इसलिए हम 'ए' और 'ए' मिलता है. 439 00:29:17,960 --> 00:29:24,820 >> बिटवाइस और. फिर, हम अपने तार्किक और समकक्ष के रूप में इस के बारे में सोच सकते हैं. 440 00:29:24,820 --> 00:29:28,180 बाईं तरफ हम सच और सच है. 441 00:29:28,180 --> 00:29:31,160 यह सच होने जा रहा है, और मामले के सभी के लिए है 442 00:29:31,160 --> 00:29:36,270 , झूठे और सच है या सच और झूठे, या गलत और झूठे 443 00:29:36,270 --> 00:29:38,550 उन चीजों में से कोई भी सत्य हैं. 444 00:29:38,550 --> 00:29:44,170 तो क्या हम अंत में हो रही 1000 है. 445 00:29:44,170 --> 00:29:48,830 तो अब, यहाँ, यहाँ मैं भरोसेमंद बिटवाइस नहीं का उपयोग किया है, जहां है, 446 00:29:48,830 --> 00:29:52,230 हम Ox20 था जहां. 447 00:29:52,230 --> 00:29:54,350 तो इस Ox20 है. 448 00:29:54,350 --> 00:29:59,570 अब मैं क्या करना चाहते हैं, बिटवाइस Ox20 की ~. 449 00:29:59,570 --> 00:30:03,600 यही कारण है कि सभी बिट्स फ्लिप करने के लिए जा रहा है. 450 00:30:03,600 --> 00:30:09,330 इसलिए मैं 1101, 1111 है. 451 00:30:09,330 --> 00:30:18,940 और तो 'ए' ~ Ox20 मुझे क्या देने जा रहा है साथ anded? 452 00:30:18,940 --> 00:30:22,430 हम वास्तव में के बारे में सोचने की जरूरत ही सा, यह एक है 453 00:30:22,430 --> 00:30:26,020 क्योंकि, इन बिट्स के सभी 1 के लिए सेट कर रहे हैं, 454 00:30:26,020 --> 00:30:29,000 तब हम वास्तव में क्या 'ए' था पाने के लिए जा रहे हैं, 455 00:30:29,000 --> 00:30:31,260 के लिए छोड़कर, संभवतः, क्या इस बिट है. 456 00:30:31,260 --> 00:30:34,460 यह एक 1 था, तो अब यह, एक 0 पर सेट किया जा रहा है क्योंकि 457 00:30:34,460 --> 00:30:39,810 यह है जो भी हो, इस 0 होने जा रहा है साथ anded है. 458 00:30:39,810 --> 00:30:43,280 तो 'ए' ~ Ox20 मुझे देने जा रहा और क्या है? 459 00:30:43,280 --> 00:30:48,200 [छात्रों का जवाब, अश्रव्य] >> और 'ए' और क्या है - यह 'ए' है. 460 00:30:48,200 --> 00:30:52,170 और 'ए' और ~ Ox20 मुझे देने के लिए क्या हो रहा है? 461 00:30:52,170 --> 00:30:56,720 'ए' यह वर्तमान में एक 1 है. 462 00:30:56,720 --> 00:30:59,570 इस 0 से Anding, यह एक 0 बनाने जा रही है 463 00:30:59,570 --> 00:31:02,530 और अब हम एक 'ए' पाने के लिए जा रहे हैं. 464 00:31:02,530 --> 00:31:06,600 >> दोनों ', एक' हैं और इस प्रकार के पिछले नहीं बल्कि कम से कम, 465 00:31:06,600 --> 00:31:10,830 हम XOR है. यह बहुत पसंद है या, 466 00:31:10,830 --> 00:31:14,400 यह विशेष रूप से मतलब है या छोड़कर. 467 00:31:14,400 --> 00:31:18,420 यह आप आमतौर पर के रूप में या असली दुनिया में के बारे में सोच की तरह है. 468 00:31:18,420 --> 00:31:23,190 तो आप या तो 'एक्स' या 'Y', लेकिन दोनों नहीं करते. 469 00:31:23,190 --> 00:31:28,700 यहाँ ^ 1 1 0 होने जा रहा है. 470 00:31:28,700 --> 00:31:33,650 सच है, क्योंकि यह है - यह तार्किक सही और गलत के साथ के रूप में अच्छी तरह से काम नहीं करता 471 00:31:33,650 --> 00:31:37,150 , बिटवाइस और और या कर के रूप में 472 00:31:37,150 --> 00:31:40,100 लेकिन सच ^ सच्चा झूठा है. 473 00:31:40,100 --> 00:31:44,810 उनमें से केवल एक सच है अगर हम केवल सच वापसी करना चाहते हैं. 474 00:31:44,810 --> 00:31:50,950 तो ^ 1 1 0 है. क्या ^ 1 0 के बारे में? 475 00:31:50,950 --> 00:31:56,010 1 है. ^ 0 1 ^ 0 0 0 है, 1 है. 476 00:31:56,010 --> 00:32:03,890 इसलिए सभी परिस्थितियों में, 0 बिटवाइस कुछ 0 0 होने जा रहा है. 477 00:32:03,890 --> 00:32:10,270 1 बिटवाइस कुछ 0 या 0 बिटवाइस 1, 478 00:32:10,270 --> 00:32:14,660 अगर यह है | या ^, यह एक 1 हो जाएगा, और यह और है कि अगर यह 0 हो जाएगा. 479 00:32:14,660 --> 00:32:20,850 और 1 बिटवाइस 1 1 नहीं है, जहां केवल मामले अनन्य या के साथ है. 480 00:32:20,850 --> 00:32:24,580 यही कारण है कि 0110 है. 481 00:32:24,580 --> 00:32:36,520 यहाँ तो अब, XOR का उपयोग कर - तो हम वापस 20 में कर रहे हैं. 482 00:32:36,520 --> 00:32:43,480 'ए' ^ Ox20 हम तुलना कर रहे हैं इन 2 बिट्स है. 483 00:32:43,480 --> 00:32:50,020 तो एक 1 ^ 0 मुझे एक क्या दे रहा है? एक से एक. 484 00:32:50,020 --> 00:32:58,430 'ए' ^ Ox20 मुझे देने जा रहा है? एक छोटा अक्षर. 485 00:32:58,430 --> 00:33:04,010 'एक' ^ Ox20 मुझे देने जा रहा है? राजधानी ए 486 00:33:04,010 --> 00:33:09,310 इस वजह से कर रही है, जो कुछ भी Ox20 साथ इस XORing 487 00:33:09,310 --> 00:33:15,380 प्रभावी ढंग से इस बिट है जो कुछ flipping है. 488 00:33:15,380 --> 00:33:21,240 यह एक 0 है, यह अब एक 1 बनने जा रही है. 489 00:33:21,240 --> 00:33:26,160 यह एक 1 है, ^ 1 1 0 है. 490 00:33:26,160 --> 00:33:33,280 इसलिए हमारे 'ए' 'ए' बन गया है, और हमारे 'ए' 'एक' बन गया है. 491 00:33:33,280 --> 00:33:36,910 तो XOR सिर्फ मामले flipping का एक बहुत आसान तरीका है. 492 00:33:36,910 --> 00:33:39,960 तुम बस पत्र की एक स्ट्रिंग अधिक पुनरावृति करना चाहते हैं 493 00:33:39,960 --> 00:33:44,330 और हर एक चरित्र के मामले वैकल्पिक, 494 00:33:44,330 --> 00:33:50,680 Ox20 साथ आप बस XOR सब कुछ. 495 00:33:50,680 --> 00:33:55,220 >> अब हम पारी को छोड़ दिया है. वाम शिफ्ट बस, मूल रूप से, करने के लिए जा रहा है 496 00:33:55,220 --> 00:34:01,250 में, या बाईं ओर की संख्या के सभी धक्का, और उनके पीछे 0 के सम्मिलित करें. 497 00:34:01,250 --> 00:34:05,550 तो यहाँ हम 00001101 है. 498 00:34:05,550 --> 00:34:08,560 हम सही से 3 0 के दशक में पुश करने के लिए जा रहे हैं 499 00:34:08,560 --> 00:34:13,580 और हम 01101000 मिलता है. 500 00:34:13,580 --> 00:34:16,380 Nonbinary संदर्भ में, 501 00:34:16,380 --> 00:34:24,699 हम चाहते हैं कि वास्तव में 13 बाएँ स्थानांतरित कर दिया 3 के साथ, हमें 104 देता है जो काम कर रहा है कि देखते हैं. 502 00:34:24,699 --> 00:34:32,530 तो बाईं स्थानांतरण, हम यहाँ देख, एक्स << Y मूल रूप से एक्स * 2 ^ Y है. 503 00:34:32,530 --> 00:34:40,139 ^ 3 13 * 2, ^ 3 2 इतनी * 8 13 104 है, 8 है. 504 00:34:40,139 --> 00:34:45,679 आप सिर्फ सामान्य रूप में द्विआधारी, कैसे प्रत्येक अंक, के बारे में सोचते हैं 505 00:34:45,679 --> 00:34:49,530 हम सही से शुरू, यह तो 1 की जगह, तो 2 की जगह, 4 की जगह है. 506 00:34:49,530 --> 00:34:51,330 इसलिए सही से 0 के दशक में धकेलने के द्वारा, 507 00:34:51,330 --> 00:34:55,080 हम बस, 8 की जगह पर 4 की जगह में थे कि बातें जोर दे रहे हैं 508 00:34:55,080 --> 00:34:57,920 और 16 के स्थान पर 8 की जगह में थे कि चीजें. 509 00:34:57,920 --> 00:35:01,280 प्रत्येक पारी में सिर्फ 2 से पलता है. हाँ? 510 00:35:01,280 --> 00:35:05,210 आप 5 से स्थानांतरित कर दिया, तो [छात्र] क्या होता है? 511 00:35:05,210 --> 00:35:10,790 [बोडेन] क्या आप 5 से स्थानांतरित कर दिया, तो आप सिर्फ अंक खो देगा. 512 00:35:10,790 --> 00:35:15,410 अनिवार्य रूप से, यह एक ही बात है. जैसे, पूर्णांकों केवल 32 बिट कर रहे हैं, 513 00:35:15,410 --> 00:35:20,750 आप 2 वास्तव में बड़ा पूर्णांकों जोड़ने अगर ऐसा है, तो यह सिर्फ एक पूर्णांक में फिट नहीं है. 514 00:35:20,750 --> 00:35:23,660 तो यह यहाँ एक ही बात है. आप 5 से स्थानांतरित कर दिया है, 515 00:35:23,660 --> 00:35:25,650 हम सिर्फ इतना है कि एक खो देगा. 516 00:35:25,650 --> 00:35:28,820 और कहा कि, "मोटे तौर पर" मैं क्या मतलब है की तरह है 517 00:35:28,820 --> 00:35:37,470 तुम बहुत दूर शिफ्ट, तो आप बिट्स खो जहां. 518 00:35:37,470 --> 00:35:39,830 >> सही बदलाव विपरीत होने जा रहा है, 519 00:35:39,830 --> 00:35:43,090 हम अंत बंद 0 भगाओ कहाँ जा रहे हैं 520 00:35:43,090 --> 00:35:48,400 और हमारे उद्देश्यों के लिए, बाएं से 0 के दशक में भरें. 521 00:35:48,400 --> 00:35:52,910 इसलिए यह कर, हम मूल रूप से हम पहले से ही क्या किया था पीछे रहे. 522 00:35:52,910 --> 00:35:57,780 और हम सही पर तीन 0 की बस से गिर गया है कि देखने 523 00:35:57,780 --> 00:36:02,020 और हम सही करने के लिए 1101 के लिए सभी तरह धक्का दिया है. 524 00:36:02,020 --> 00:36:08,380 यह प्रभावी रूप से, एक्स / 2 ^ Y, है, जो 104 >> 3 कर रही है. 525 00:36:08,380 --> 00:36:11,200 तो अब, यहाँ, यह एक समान विचार है. 526 00:36:11,200 --> 00:36:18,720 ऐसा क्यों है कि सिर्फ मोटे तौर पर एक्स / 2 ^ Y है, और नहीं वास्तव में एक्स / 2 ^ Y? 527 00:36:18,720 --> 00:36:22,240 मैं 4 से स्थानांतरित कर दिया था, तो मैं एक 1 खो दिया होता है. 528 00:36:22,240 --> 00:36:25,950 असल में, सिर्फ सामान्य रूप में पूर्णांक विभाजन का क्या आप सोचते हैं, लगता है. 529 00:36:25,950 --> 00:36:31,070 तो, 5/2 की तरह 2 है. यह 2.5 नहीं है. 530 00:36:31,070 --> 00:36:35,000 यह यहाँ एक ही विचार है. हम 2 से विभाजित, जब 531 00:36:35,000 --> 00:36:39,910 हम जिस तरह से साथ अजीब बिट्स खो सकते हैं. 532 00:36:39,910 --> 00:36:43,870 तो अब - कि बिटवाइस के लिए है. यही कारण है कि आप को जानने की जरूरत है. 533 00:36:43,870 --> 00:36:46,340 हम क्लास में देखा उपयोग के मामलों को याद रखें, 534 00:36:46,340 --> 00:36:49,340 की तरह एक सा मुखौटा, बिटवाइस ऑपरेटरों के लिए उपयोगी है 535 00:36:49,340 --> 00:36:53,220 या तुम सा मास्क के लिए उन्हें इस्तेमाल करते हैं. 536 00:36:53,220 --> 00:36:58,620 पूंजी पत्र और छोटे अक्षरों, रूपांतरण एक सुंदर प्रोटोटाइप उदाहरण है. 537 00:36:58,620 --> 00:37:01,640 >> ठीक है, तो अतिप्रवाह हमलों बफर. 538 00:37:01,640 --> 00:37:05,110 किसी को भी इस समारोह के साथ क्या गलत था याद है? 539 00:37:05,110 --> 00:37:10,140 हम 12 बाइट्स की एक सरणी, 12 घर का काम, घोषित नोटिस 540 00:37:10,140 --> 00:37:18,510 और फिर हम 12 घर का काम पूरे स्ट्रिंग पट्टी के हमारे बफर में कॉपी. 541 00:37:18,510 --> 00:37:25,080 तो यहाँ क्या समस्या है? 542 00:37:25,080 --> 00:37:32,270 क्यों 12 - जादुई संख्या 12 बहुत ज्यादा तुरंत के रूप में बाहर पॉप चाहिए? 543 00:37:32,270 --> 00:37:35,050 बार 12 से अधिक वर्ण होना होता तो क्या होगा? 544 00:37:35,050 --> 00:37:41,200 क्या बार वर्ण के लाखों है तो क्या होगा? 545 00:37:41,200 --> 00:37:46,010 यहाँ मुद्दा memcpy है. बार काफ़ी समय से है, तो 546 00:37:46,010 --> 00:37:50,330 यह अभी पूरी तरह से होगा - 'सी', 'सी' यह केवल 12 अक्षर था कि परवाह नहीं करता; 547 00:37:50,330 --> 00:37:53,280 'सी' यह है कि कई बाइट्स फिट नहीं कर सकते कि कोई परवाह नहीं है. 548 00:37:53,280 --> 00:37:58,250 यह अभी पूरी तरह से चार के ऊपर लिख देगा, हम इसके लिए आवंटित किया है 12 बाइट्स, 549 00:37:58,250 --> 00:38:01,830 और स्मृति में यह अतीत में सब कुछ है कि वास्तव में बफर करने के लिए संबंधित नहीं है 550 00:38:01,830 --> 00:38:06,520 जो कुछ स्ट्रिंग बार है साथ. 551 00:38:06,520 --> 00:38:09,780 तो यह है कि हम क्लास में देखा तस्वीर थी 552 00:38:09,780 --> 00:38:12,220 हम अपने ढेर आगे बढ़ रही है, जहां. 553 00:38:12,220 --> 00:38:16,040 आप इन चित्रों के लिए इस्तेमाल किया या फिर उन लोगों के साथ परिचित हो जाना चाहिए. 554 00:38:16,040 --> 00:38:21,260 हम अपने ढेर आगे बढ़ रही है, स्मृति पते शीर्ष पर 0 में शुरू 555 00:38:21,260 --> 00:38:26,270 और नीचे में 4 अरब पसंद करने के लिए नीचे हो जाना. 556 00:38:26,270 --> 00:38:28,820 हम कहीं स्मृति में हमारी सरणी 'सी' है 557 00:38:28,820 --> 00:38:32,260 फिर हम इसे ठीक नीचे पट्टी करने के लिए हमारे सूचक है, 558 00:38:32,260 --> 00:38:38,720 और फिर हम इस बचाया फ्रेम हमारी वापसी पते में सूचक और हमारी मूल दिनचर्या का ढेर है. 559 00:38:38,720 --> 00:38:40,800 वापसी पता क्या है याद है? 560 00:38:40,800 --> 00:38:45,360 मुख्य एक समारोह बार कहता है, एक समारोह foo कॉल जब यह है 561 00:38:45,360 --> 00:38:48,100 अनिवार्य रूप से, रिटर्न बार. 562 00:38:48,100 --> 00:38:52,610 इसलिए जब बार रिटर्न, वे इसे यह कहा जाता है कि foo के लिए वापस जा रहा है कि पता करने की जरूरत है. 563 00:38:52,610 --> 00:39:01,360 तो वापसी पता जब समारोह रिटर्न पर लौटने के लिए यह है कि समारोह का पता है. 564 00:39:01,360 --> 00:39:05,830 सुविधा, क्योंकि बफर अतिप्रवाह हमलों के लिए महत्वपूर्ण है कि कारण है 565 00:39:05,830 --> 00:39:09,580 हैकर्स कि वापसी पता बदलना. 566 00:39:09,580 --> 00:39:14,950 इसके बजाय वापस foo के लिए जाने की, मैं वापस हैकर मुझे वापस जाना चाहता है जहाँ जाने के लिए जा रहा हूँ. 567 00:39:14,950 --> 00:39:17,760 और, सुविधा, हैकर अक्सर करने के लिए वापस जाना चाहता है, जहां 568 00:39:17,760 --> 00:39:22,400 हम मूल रूप से किया था कि बफर की शुरुआत है. 569 00:39:22,400 --> 00:39:26,170 तो, फिर से, लिटिल भारतीय नोटिस. 570 00:39:26,170 --> 00:39:28,490 उपकरण एक छोटे से भारतीय प्रणाली का एक उदाहरण है, 571 00:39:28,490 --> 00:39:34,140 तो एक पूर्णांक या एक सूचक उलट बाइट्स के साथ संग्रहीत किया जाता है. 572 00:39:34,140 --> 00:39:38,980 तो यहाँ हम देखते हैं - यह है? हाँ. 573 00:39:38,980 --> 00:39:45,660 हम Ox80, OxC0, Ox35, OxO8 देखें. 574 00:39:45,660 --> 00:39:48,250 हेक्साडेसिमल अंक याद है? 575 00:39:48,250 --> 00:39:50,640 हम, थोड़ा भारतीय में हेक्साडेसिमल अंक रिवर्स नहीं है 576 00:39:50,640 --> 00:39:56,110 2 हेक्साडेसिमल अंक एक बाइट श्रृंगार, और हम बाइट्स रिवर्स क्योंकि. 577 00:39:56,110 --> 00:40:00,300 क्यों हम जैसे, 80530CO8 दुकान नहीं है. 578 00:40:00,300 --> 00:40:07,520 हम सही से शुरू, बजाय, 2 अंकों की प्रत्येक जोड़ी की दुकान. 579 00:40:07,520 --> 00:40:10,880 उस पते शुरू की पता करने के लिए संदर्भित करता है 580 00:40:10,880 --> 00:40:15,190 हम वास्तव में पहले स्थान में कॉपी करने के लिए चाहते थे कि हमारे बफर की. 581 00:40:15,190 --> 00:40:19,230 उपयोगी है कि क्या कारण है अगर, क्योंकि हमलावर 582 00:40:19,230 --> 00:40:24,100 के बजाय सिर्फ था कि एक स्ट्रिंग होने के, के लिए हुआ 583 00:40:24,100 --> 00:40:27,060 जैसे की एक हानिरहित स्ट्रिंग, उनके नाम या कुछ और, 584 00:40:27,060 --> 00:40:33,900 क्या होगा अगर, बजाय, कि स्ट्रिंग सिर्फ कुछ मनमाने ढंग से कोड थे 585 00:40:33,900 --> 00:40:38,610 कि वे यह करना चाहता था जो कुछ किया? 586 00:40:38,610 --> 00:40:45,630 इसलिए वे सकता है - मैं किसी भी शांत कोड के बारे में सोच नहीं सकता. 587 00:40:45,630 --> 00:40:47,780 हालांकि यह कुछ भी हो सकता है. किसी भी विनाशकारी कोड. 588 00:40:47,780 --> 00:40:51,440 वे चाहते थे, वे सिर्फ SEG दोष में कुछ कर सकता है, लेकिन वह व्यर्थ होगा. 589 00:40:51,440 --> 00:40:54,950 वे आम तौर पर अपने सिस्टम को हैक करने के लिए यह करना. 590 00:40:54,950 --> 00:40:59,930 >> ठीक है. CS50 पुस्तकालय. 591 00:40:59,930 --> 00:41:04,800 यह मूल रूप से, getInt, getString, उन सभी कार्यों को हम आप के लिए प्रदान की जाती है. 592 00:41:04,800 --> 00:41:10,630 इसलिए हम चार * स्ट्रिंग है, और है कि हम दूर उड़ा दिया कि अमूर्त है 593 00:41:10,630 --> 00:41:12,450 सेमेस्टर के दौरान कुछ बिंदु पर. 594 00:41:12,450 --> 00:41:18,220 एक स्ट्रिंग वर्ण का सिर्फ एक सरणी है कि याद रखें. 595 00:41:18,220 --> 00:41:23,240 तो यहाँ हम getString की एक संक्षिप्त संस्करण देखते हैं. 596 00:41:23,240 --> 00:41:25,920 आप यह वास्तव में लागू कैसे याद करने के लिए इसे वापस देखना चाहिए. 597 00:41:25,920 --> 00:41:30,950 मुख्य विवरण हैं, हम एक समय में एक ही चरित्र में मिलता नोटिस 598 00:41:30,950 --> 00:41:34,570 बस हमें कीबोर्ड पर टाइपिंग की तरह है, जो में मानक से. 599 00:41:34,570 --> 00:41:37,890 तो एक बार में एक ही चरित्र है, और हम भी कई पात्रों हो, 600 00:41:37,890 --> 00:41:40,580 इसलिए एन 1 क्षमता से अधिक है, 601 00:41:40,580 --> 00:41:44,140 फिर हम अपने बफर की क्षमता बढ़ाने की जरूरत है. 602 00:41:44,140 --> 00:41:47,780 तो यहाँ हम अपने बफर के आकार को दोगुना कर रहे हैं. 603 00:41:47,780 --> 00:41:51,840 और वह जा रहा रखता है, हम अपने बफर में वर्ण सम्मिलित 604 00:41:51,840 --> 00:41:56,220 हम एक नई लाइन या फ़ाइल या जो कुछ के अंत प्राप्त करने तक, 605 00:41:56,220 --> 00:41:59,380 जो मामले में, हम स्ट्रिंग और फिर असली getString साथ कर रहे हैं 606 00:41:59,380 --> 00:42:05,120 हम बहुत अधिक स्मृति आवंटित अगर यह वापस जाने के लिए और एक बिट हटना हूँ की तरह, स्मृति सिकुड़ती. 607 00:42:05,120 --> 00:42:08,830 तो हम बताते हैं कि नहीं है, लेकिन मुख्य विचार है 608 00:42:08,830 --> 00:42:11,960 यह एक समय में एक ही चरित्र में पढ़ने के लिए है. 609 00:42:11,960 --> 00:42:17,140 यह सिर्फ एक बार में एक पूरी बात में नहीं पढ़ सकते हैं, 610 00:42:17,140 --> 00:42:19,550 उनके बफर केवल एक निश्चित आकार की है. 611 00:42:19,550 --> 00:42:26,590 यह बफर में डालने की कोशिश करता है कि स्ट्रिंग बहुत बड़ा है, तो यह अतिप्रवाह होगा. 612 00:42:26,590 --> 00:42:28,940 यहाँ तो हम रोकने कि केवल एक ही चरित्र में पढ़ने के द्वारा 613 00:42:28,940 --> 00:42:33,750 एक समय में और हम जब भी जरूरत बढ़ रही है. 614 00:42:33,750 --> 00:42:40,270 तो getInt और अन्य CS50 पुस्तकालय कार्यों getString का इस्तेमाल करते हैं 615 00:42:40,270 --> 00:42:42,310 उनके कार्यान्वयन में. 616 00:42:42,310 --> 00:42:45,370 इसलिए मैं यहाँ महत्वपूर्ण बातों पर प्रकाश डाला. 617 00:42:45,370 --> 00:42:49,460 यह एक स्ट्रिंग पाने के लिए getString कहता है. 618 00:42:49,460 --> 00:42:51,710 GetString स्मृति लौटने करने में विफल रहा है, 619 00:42:51,710 --> 00:42:54,270 getString कुछ mallocs कि याद है, तो आप getString कॉल जब भी 620 00:42:54,270 --> 00:42:57,820 आप (दुर्बोध) तुम्हारे पास जो कि स्ट्रिंग मुक्त नहीं होना चाहिए. 621 00:42:57,820 --> 00:43:02,870 यह कुछ malloc करने में विफल रहा तो अगर यहाँ, हम सिर्फ एक ध्वज के रूप में INT_MAX देने वाले, 622 00:43:02,870 --> 00:43:05,650 अरे, हम वास्तव में एक पूर्णांक प्राप्त करने में सक्षम नहीं थे. 623 00:43:05,650 --> 00:43:10,830 तुम्हें पता है मैं तुम्हारे पास लौट जो भी उपेक्षा, या चाहिए 624 00:43:10,830 --> 00:43:15,540 आप एक वैध निवेश के रूप में इस व्यवहार नहीं करना चाहिए. 625 00:43:15,540 --> 00:43:21,360 अंत में, कि सफल था, यह सोचते हैं हम, कि विशेष ध्वज के साथ sscanf का उपयोग 626 00:43:21,360 --> 00:43:23,820 जिसका मतलब है, पहले एक पूर्णांक से मेल, 627 00:43:23,820 --> 00:43:26,770 फिर उस पूर्णांक के बाद किसी भी अक्षर से मेल. 628 00:43:26,770 --> 00:43:29,070 तो हम इसे 1 के बराबर करना चाहते हैं नोटिस. 629 00:43:29,070 --> 00:43:32,940 तो sscanf रिटर्न सफलतापूर्वक कितने मैचों बनाया तो क्या होगा? 630 00:43:32,940 --> 00:43:37,010 यह सफलतापूर्वक एक पूर्णांक मिलान किया, तो यह 1 वापस आ जाएगी, 631 00:43:37,010 --> 00:43:40,890 यह एक पूर्णांक से मेल नहीं खाती अगर यह 0 वापसी करेंगे, और यह 2 वापसी करेंगे 632 00:43:40,890 --> 00:43:45,920 यह मेल अगर एक पूर्णांक कुछ चरित्र द्वारा पीछा किया. 633 00:43:45,920 --> 00:43:49,780 तो हम 1 लेकिन कुछ मैच हम पुन: प्रयास नोटिस. 634 00:43:49,780 --> 00:43:55,230 तो हम में प्रवेश किया, तो 1, 2, 3, सी, या 1, 2, 3, एक्स, 635 00:43:55,230 --> 00:43:57,400 तो 1, 2, 3 पूर्णांक में जमा हो जाएगा, 636 00:43:57,400 --> 00:43:59,620 एक्स, चरित्र में जमा हो जाएगा 637 00:43:59,620 --> 00:44:06,410 हम केवल एक पूर्णांक चाहते हैं, क्योंकि sscanf 2 लौटेंगे, और हम पुन: प्रयास होगा. 638 00:44:06,410 --> 00:44:09,810 >> जल्दी HTML, HTTP, सीएसएस के माध्यम से उड़ाने. 639 00:44:09,810 --> 00:44:15,340 हाइपरटेक्स्ट मार्कअप लैंग्वेज वेब की संरचना और अर्थ विज्ञान है. 640 00:44:15,340 --> 00:44:19,960 यहाँ हम एचटीएमएल टैग नहीं है जहां व्याख्यान से उदाहरण है. 641 00:44:19,960 --> 00:44:22,110 हम सिर टैग, शरीर टैग है 642 00:44:22,110 --> 00:44:27,770 हम, हम वास्तव में एक शुरुआत है और करीब टैग नहीं है जहां खाली टैग के उदाहरण हैं 643 00:44:27,770 --> 00:44:30,820 हम सिर्फ लिंक और छवि है. 644 00:44:30,820 --> 00:44:38,480 नहीं समापन छवि टैग नहीं है, टैग करने की जरूरत है सब कुछ accomplishes है कि सिर्फ एक ही टैग नहीं है. 645 00:44:38,480 --> 00:44:41,950 लिंक एक उदाहरण है, हम तुम सीएसएस के लिए लिंक कैसे देखेंगे, 646 00:44:41,950 --> 00:44:45,910 स्क्रिप्ट आप एक बाहरी जावास्क्रिप्ट के लिए लिंक का एक उदाहरण है. 647 00:44:45,910 --> 00:44:53,100 यह HTML एक प्रोग्रामिंग भाषा नहीं है, बहुत सीधा है, और याद है. 648 00:44:53,100 --> 00:44:58,250 यहाँ, आप यह करना होगा कि क्या एक फार्म परिभाषित या कम से कम कैसे होगा याद है? 649 00:44:58,250 --> 00:45:01,740 इस तरह के एक फार्म एक कार्रवाई और एक विधि है. 650 00:45:01,740 --> 00:45:06,210 आप ही कभी देखा होगा तरीकों जाओ और पोस्ट कर रहे हैं. 651 00:45:06,210 --> 00:45:09,040 इतनी बात यूआरएल में डाल दिया जाता है जहां संस्करण है. 652 00:45:09,040 --> 00:45:11,680 यह यूआरएल में डाल नहीं है जहां पोस्ट है. 653 00:45:11,680 --> 00:45:18,520 इसके बजाय, प्रपत्र से कोई डेटा HTTP अनुरोध में अधिक छिपा डाला जाता है. 654 00:45:18,520 --> 00:45:22,390 HTTP अनुरोध चला जाता है जहां तो यहाँ, कार्रवाई को परिभाषित करता है. 655 00:45:22,390 --> 00:45:27,490 यह कहाँ जा रहा है google.com / खोज है. 656 00:45:27,490 --> 00:45:32,890 विधि. जाओ और पोस्ट के बीच के मतभेदों को याद रखें, 657 00:45:32,890 --> 00:45:37,200 आप बुकमार्क कुछ करना चाहते हैं, तो सिर्फ एक उदाहरण के रूप में कहते हैं. 658 00:45:37,200 --> 00:45:40,660 आप एक पोस्ट यूआरएल को बुकमार्क करने के लिए कभी नहीं कर सकेंगे 659 00:45:40,660 --> 00:45:44,970 डेटा यूआरएल में शामिल नहीं है क्योंकि. 660 00:45:44,970 --> 00:45:49,790 >> HTTP, अब, हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल है. 661 00:45:49,790 --> 00:45:54,080 हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल, आप इसे स्थानांतरित करने के लिए उम्मीद करेंगे 662 00:45:54,080 --> 00:45:57,710 हाइपरटेक्स्ट मार्कअप लैंग्वेज, और यह करता है. 663 00:45:57,710 --> 00:46:00,170 लेकिन यह भी आप वेब पर खोज किसी भी चित्र स्थानान्तरण, 664 00:46:00,170 --> 00:46:05,400 आप किसी भी डाउनलोड एक HTTP अनुरोध के रूप में शुरू करते हैं. 665 00:46:05,400 --> 00:46:10,350 तो HTTP बस वर्ल्ड वाइड वेब की भाषा है. 666 00:46:10,350 --> 00:46:15,610 और यहाँ आप एक HTTP अनुरोध के इस तरह के पहचान करने की जरूरत है. 667 00:46:15,610 --> 00:46:19,300 पक्ष पर यहाँ HTTP/1.1 बस उस संस्करण का कहना है 668 00:46:19,300 --> 00:46:21,570 प्रोटोकॉल का उपयोग कर रहा हूँ. 669 00:46:21,570 --> 00:46:25,770 आप इसे देखेंगे के रूप में यह बहुत ज्यादा हमेशा HTTP/1.1 होने जा रहा है. 670 00:46:25,770 --> 00:46:30,110 तो फिर हम इस आप देख सकते हैं कि, वैकल्पिक पोस्ट किया जा रहा है, मिल गया था कि देखते हैं. 671 00:46:30,110 --> 00:46:40,790 और मैं यात्रा करने के लिए कोशिश कर रहा था कि यूआरएल www.google.com/search?q = बकवास, बकवास, बकवास था. 672 00:46:40,790 --> 00:46:44,240 तो याद है कि इस प्रश्न चिह्न क्यू = ब्ला ब्ला ब्ला, 673 00:46:44,240 --> 00:46:49,040 एक रूप से प्रस्तुत की है कि सामान की तरह है. 674 00:46:49,040 --> 00:46:51,830 यह मेरे लिए वापस हो सकता है प्रतिक्रिया कुछ इस तरह देखना होगा. 675 00:46:51,830 --> 00:46:54,050 फिर, कि होने जा रहा है जो प्रोटोकॉल, के साथ शुरू 676 00:46:54,050 --> 00:46:59,190 स्थिति कोड द्वारा पीछा किया. यहाँ यह 200 ठीक है. 677 00:46:59,190 --> 00:47:05,060 और अंत में, मैं वास्तव में के लिए कहा है जो वेब पेज के बाद किया जाएगा. 678 00:47:05,060 --> 00:47:08,210 संभव स्थिति कोड आप देख सकते हैं, और आप उनमें से कई को पता होना चाहिए. 679 00:47:08,210 --> 00:47:12,770 200 ठीक है कि आप शायद पहले देखा है. 680 00:47:12,770 --> 00:47:17,830 403 निषिद्ध, 404 नहीं मिला, 500 आंतरिक सर्वर त्रुटि 681 00:47:17,830 --> 00:47:22,140 आप एक वेबसाइट पर जाकर कुछ टूट गया है या उनके PHP कोड दुर्घटनाओं, तो आमतौर पर है 682 00:47:22,140 --> 00:47:24,930 उपकरण में हम हैं, जबकि कि बड़ा नारंगी बॉक्स 683 00:47:24,930 --> 00:47:27,830 कि ऊपर आता है और जैसे, कुछ गड़बड़ है, कहते हैं, इस कोड काम नहीं करता 684 00:47:27,830 --> 00:47:30,380 या इस समारोह का बुरा. 685 00:47:30,380 --> 00:47:33,230 आमतौर पर वेबसाइटों, आप कार्यों को वास्तव में खराब कर रहे हैं जाने क्या नहीं करना चाहती 686 00:47:33,230 --> 00:47:37,880 तो बजाय वे तो बस आप 500 आंतरिक सर्वर त्रुटि दे देंगे. 687 00:47:37,880 --> 00:47:43,050 >> टीसीपी / आईपी HTTP के तहत 1 परत है. 688 00:47:43,050 --> 00:47:47,550 इंटरनेट वर्ल्ड वाइड वेब के बाहर वहाँ है कि याद रखें. 689 00:47:47,550 --> 00:47:52,270 जैसा आप HTTP के माध्यम से जाना नहीं है कि एक ऑनलाइन खेल खेलते हैं, 690 00:47:52,270 --> 00:47:55,740 यह एक अलग माध्यम से हो रहा है - यह अभी भी इंटरनेट का इस्तेमाल कर रहा है, 691 00:47:55,740 --> 00:47:58,900 लेकिन यह HTTP का उपयोग नहीं करता. 692 00:47:58,900 --> 00:48:02,470 HTTP टीसीपी / आईपी पर बनाया प्रोटोकॉल की सिर्फ एक उदाहरण है. 693 00:48:02,470 --> 00:48:07,820 आईपी ​​सचमुच इंटरनेट प्रोटोकॉल का मतलब है. 694 00:48:07,820 --> 00:48:11,500 हर कंप्यूटर एक आईपी पता है, वे उन 4 अंकों की बातें कर रहे हैं 695 00:48:11,500 --> 00:48:16,510 192.168.2.1, या जो कुछ भी तरह, कि एक स्थानीय एक हो जाता है. 696 00:48:16,510 --> 00:48:23,390 लेकिन यह है कि एक आईपी पते के पैटर्न है. 697 00:48:23,390 --> 00:48:29,060 तो DNS, डोमेन नाम सेवा, 698 00:48:29,060 --> 00:48:33,410 कि एक वास्तविक आईपी पते पर google.com तरह बातें तब्दील हो रहा है. 699 00:48:33,410 --> 00:48:37,700 तो तुम एक यूआरएल में है कि आईपी पते लिखते हैं, तो 700 00:48:37,700 --> 00:48:40,850 कि गूगल के लिए आप लाना होगा, लेकिन आप उन बातों को याद करने के लिए नहीं करते हैं. 701 00:48:40,850 --> 00:48:45,470 आप के बजाय google.com याद करते हैं. 702 00:48:45,470 --> 00:48:51,560 हमारे पास आखिरी बात यह आईपी के टीसीपी हिस्सा है जहां बंदरगाहों, है. 703 00:48:51,560 --> 00:48:54,880 टीसीपी अधिक करता है. यदि आप अपने वेब ब्राउज़र चल रहा है, जैसे, के बारे में सोचो. 704 00:48:54,880 --> 00:48:58,670 हो सकता है कि आप कुछ ईमेल अनुप्रयोग चल रहा है; 705 00:48:58,670 --> 00:49:02,150 शायद आप इंटरनेट चल रहा है का उपयोग करता है कि कुछ अन्य कार्यक्रम है. 706 00:49:02,150 --> 00:49:05,090 वे सभी इंटरनेट का उपयोग करने की जरूरत है, 707 00:49:05,090 --> 00:49:08,100 लेकिन अपने कंप्यूटर केवल 1 वाईफ़ाई कार्ड या जो कुछ भी किया है. 708 00:49:08,100 --> 00:49:10,780 तो बंदरगाहों हम अलग करने में सक्षम हैं कि जिस तरह से कर रहे हैं 709 00:49:10,780 --> 00:49:13,550 इन आवेदनों में इंटरनेट का उपयोग करने में सक्षम हैं कैसे. 710 00:49:13,550 --> 00:49:17,230 प्रत्येक आवेदन, उस पर सुन सकते हैं कि 1 विशिष्ट बंदरगाह हो जाता है 711 00:49:17,230 --> 00:49:19,670 और डिफ़ॉल्ट रूप से, HTTP पोर्ट 80 का उपयोग करता है. 712 00:49:19,670 --> 00:49:22,410 कुछ ईमेल सेवाओं में 25 का उपयोग करें. 713 00:49:22,410 --> 00:49:24,490 कम गिने लोगों को सुरक्षित हो जाते हैं. 714 00:49:24,490 --> 00:49:29,270 आप आमतौर पर अपने आप के लिए उच्च गिने लोगों को मिल रहे हैं. 715 00:49:29,270 --> 00:49:32,010 >> सीएसएस, स्टाइल शीट्स. 716 00:49:32,010 --> 00:49:36,030 सीएसएस के साथ हम शैली वेब पेज, नहीं HTML के साथ. 717 00:49:36,030 --> 00:49:38,440 आप अपने सीएसएस डाल सकते हैं 3 स्थानों रहे हैं. 718 00:49:38,440 --> 00:49:46,300 यह शैली टैग के बीच, या एक पूरी तरह से अलग फाइल में है और फिर अंदर जुड़ा है, इनलाइन हो सकता है 719 00:49:46,300 --> 00:49:48,470 और यहाँ सीएसएस की सिर्फ एक उदाहरण है. 720 00:49:48,470 --> 00:49:50,450 आप इस पैटर्न की पहचान करनी चाहिए, 721 00:49:50,450 --> 00:49:54,310 पहला उदाहरण है कि हम शरीर टैग मिलान कर रहे है, जहां 722 00:49:54,310 --> 00:49:56,680 और यहाँ हम शरीर टैग केंद्रित कर रहे हैं. 723 00:49:56,680 --> 00:50:00,420 दूसरा उदाहरण, हम बात से मेल खाते हैं 724 00:50:00,420 --> 00:50:04,740 आईडी पाद लेख के साथ, और हम उस के लिए कुछ शैलियों आवेदन कर रहे हैं. 725 00:50:04,740 --> 00:50:07,310 बाईं ओर उस आईडी पाद लेख पाठ संरेखित सूचना है, 726 00:50:07,310 --> 00:50:09,840 शरीर पाठ संरेखित केंद्र जबकि. 727 00:50:09,840 --> 00:50:13,180 पाद शरीर के अंदर है. 728 00:50:13,180 --> 00:50:16,470 यह बजाय, पाठ शरीर पाठ केंद्र का कहना है, भले ही छोड़ दिया जाएगा. 729 00:50:16,470 --> 00:50:18,880 यह बात के पूरे कैस्केडिंग हिस्सा है. 730 00:50:18,880 --> 00:50:22,110 तुम हो सकता है - आप शरीर के लिए शैलियों निर्दिष्ट कर सकते हैं, 731 00:50:22,110 --> 00:50:25,320 और फिर शरीर में चीजों को आप अधिक विशिष्ट शैली निर्दिष्ट कर सकते हैं, 732 00:50:25,320 --> 00:50:28,160 और चीजों को आप उम्मीद के रूप में काम. 733 00:50:28,160 --> 00:50:34,420 अधिक विशिष्ट सीएसएस विनिर्देशक पूर्वता ले. 734 00:50:34,420 --> 00:50:46,140 मुझे लगता है कि यह है. 735 00:50:46,140 --> 00:50:49,260 >> [अली Nahm] हाय सब लोग. मैं सिर्फ आपका ध्यान मिल सकता है. 736 00:50:49,260 --> 00:50:53,990 मैं अली हूँ और मैं वास्तव में तेजी से PHP और एसक्यूएल के माध्यम से जाने के लिए जा रहा हूँ. 737 00:50:53,990 --> 00:51:00,310 तो हम शुरू कर सकते हैं. PHP PHP के लिए कम है: Hypertext पूर्वप्रक्रमक. 738 00:51:00,310 --> 00:51:03,730 आप सभी को पता होना चाहिए और, जैसा कि यह एक सर्वर साइड पटकथा भाषा है, 739 00:51:03,730 --> 00:51:06,800 और हम वेबसाइटों के पीछे के अंत के लिए इसका इस्तेमाल करते हैं, 740 00:51:06,800 --> 00:51:12,540 और यह संगणना, परदे के पीछे के हिस्से का एक बहुत कुछ करता है. 741 00:51:12,540 --> 00:51:17,510 सिंटेक्स. यह सी, आश्चर्य, आश्चर्य की तरह नहीं है. 742 00:51:17,510 --> 00:51:22,060 मैं आगे नहीं ले जा सकते हैं - यह हमेशा आप देख सकते हैं, के साथ शुरू करने के लिए है. 743 00:51:22,060 --> 00:51:31,340 आप ब्रेसिज़ के नए प्रकार की जरूरत है देख सकते हैं और फिर आप भी? PHP जरूरत है. 744 00:51:31,340 --> 00:51:35,780 यही कारण है कि आप अपने PHP पाठ, अपने PHP कोड फ्रेम करने के लिए है कि कैसे हमेशा है. 745 00:51:35,780 --> 00:51:39,180 तो यह सिर्फ आप की तरह पहले उस पर डाल दिया, जहां सी, तरह नहीं हो सकता. 746 00:51:39,180 --> 00:51:42,290 आप हमेशा यह चारों ओर की जरूरत है. 747 00:51:42,290 --> 00:51:47,610 और अब, प्रमुख वाक्यविन्यास सभी चर $ चरित्र के साथ शुरू करने की जरूरत है. 748 00:51:47,610 --> 00:51:49,490 आप उन्हें परिभाषित कर रहे हैं जब यह करने की जरूरत है, आप ऐसा करने की जरूरत 749 00:51:49,490 --> 00:51:51,860 आप बाद में उन्हें की बात कर रहे हैं. 750 00:51:51,860 --> 00:51:56,510 तुम हमेशा कि $ की जरूरत है. यह बहुत सुंदर है, अपने नए सबसे अच्छा दोस्त है. 751 00:51:56,510 --> 00:52:01,690 तुम नहीं करते - सी विपरीत, आप यह है चर प्रकार की किस तरह खड़ा करने की जरूरत नहीं है. 752 00:52:01,690 --> 00:52:04,940 आप $ की जरूरत क्या है तो, जबकि आप की तरह खड़ा करने की जरूरत नहीं है 753 00:52:04,940 --> 00:52:09,470 INT एक्स या स्ट्रिंग वाई, वगैरह, वगैरह. 754 00:52:09,470 --> 00:52:11,490 तो एक मामूली अंतर है. 755 00:52:11,490 --> 00:52:15,590 इस का एक परिणाम के रूप में, यह PHP एक कमजोर प्रकार है कि इसका मतलब है. 756 00:52:15,590 --> 00:52:19,310 PHP एक कमजोर प्रकार की भाषा है, और यह कमजोर चर टाइप किया गया है. 757 00:52:19,310 --> 00:52:24,020 दूसरे शब्दों में, कि आप चर प्रकार के विभिन्न प्रकार के बीच स्विच कर सकते हैं. 758 00:52:24,020 --> 00:52:27,230 आप एक पूर्णांक के रूप में अपने नंबर 1 स्टोर कर सकते हैं, 759 00:52:27,230 --> 00:52:29,650 आप एक स्ट्रिंग के रूप में यह स्टोर कर सकते हैं, और आप एक नाव के रूप में यह स्टोर कर सकते हैं, 760 00:52:29,650 --> 00:52:33,550 और यह सब उस नंबर 1 हो जाएगा. 761 00:52:33,550 --> 00:52:36,080 आप अलग अलग रूपों में यह भंडारण कर रहे हैं, भले ही 762 00:52:36,080 --> 00:52:39,120 यह अभी भी है - चर प्रकार अभी भी अंत में पकड़े हुए हैं. 763 00:52:39,120 --> 00:52:41,540 तो आप यहां से देखो, तुम pset 7 से याद है, 764 00:52:41,540 --> 00:52:43,500 आप में से कई शायद इस के साथ मुद्दों था. 765 00:52:43,500 --> 00:52:47,280 दो बराबर संकेत, 3 बराबर संकेत, 4 बराबर संकेत. 766 00:52:47,280 --> 00:52:49,990 ठीक है, नहीं 4 बराबर संकेत मिल रहे हैं, लेकिन 2 और 3 रहे हैं. 767 00:52:49,990 --> 00:52:53,320 आप मूल्यों की जांच करने के लिए 2 बराबर संकेत का उपयोग करें. 768 00:52:53,320 --> 00:52:55,830 यह प्रकारों में जाँच कर सकते हैं. 769 00:52:55,830 --> 00:52:58,770 तो आपको पहले उदाहरण में देख सकते हैं, 770 00:52:58,770 --> 00:53:02,210 मैं num_int == num_string है. 771 00:53:02,210 --> 00:53:06,710 तो अपने int और अपने स्ट्रिंग दोनों हैं, तकनीकी रूप से, 1, 772 00:53:06,710 --> 00:53:10,790 लेकिन वे विभिन्न प्रकार के कर रहे हैं. लेकिन डबल बराबरी के लिए, यह अभी भी पारित करेंगे. 773 00:53:10,790 --> 00:53:15,510 हालांकि, ट्रिपल बराबरी के लिए, यह मूल्य के साथ ही विभिन्न प्रकार की जांच करता है. 774 00:53:15,510 --> 00:53:18,760 यही कारण है, यह है कि यहाँ दूसरे मामले में पारित करने के लिए नहीं जा रहा है इसका मतलब है कि 775 00:53:18,760 --> 00:53:22,350 आप के बजाय 3 बराबर संकेत का उपयोग कर रहे हैं. 776 00:53:22,350 --> 00:53:26,590 तो यह है कि तुम सब अब दिखा देना चाहिए कि एक बड़ा अंतर है. 777 00:53:26,590 --> 00:53:31,570 >> स्ट्रिंग कड़ी आप PHP में उपयोग कर सकते हैं एक और शक्तिशाली बात है. 778 00:53:31,570 --> 00:53:34,080 यह मूल रूप से सिर्फ इस काम डॉट संकेतन है 779 00:53:34,080 --> 00:53:36,230 और है कि आप एक साथ तार बाँध कैसे कर सकते हैं. 780 00:53:36,230 --> 00:53:40,800 तो अगर आप बिल्ली है और आप कुत्ता है, और आप एक साथ 2 तार डाल करना चाहते हैं, 781 00:53:40,800 --> 00:53:44,080 आप अवधि का उपयोग कर सकते हैं, और है कि यह कैसे काम करता है की तरह है. 782 00:53:44,080 --> 00:53:46,660 आप भी सिर्फ एक दूसरे के बगल में उन्हें जगह कर सकते हैं, 783 00:53:46,660 --> 00:53:49,030 आप नीचे उदाहरण में यहाँ देख सकते हैं, 784 00:53:49,030 --> 00:53:51,610 मैं स्ट्रिंग 1, अंतरिक्ष स्ट्रिंग 2 गूंज है जहां. 785 00:53:51,610 --> 00:53:56,930 PHP जैसे उन्हें बदलने के लिए पता चल जाएगा. 786 00:53:56,930 --> 00:53:59,780 सारणियों. अब, PHP में, सरणियों के 2 अलग प्रकार के होते हैं. 787 00:53:59,780 --> 00:54:03,180 आप नियमित रूप से सरणियों हो सकता है, और आप भी साहचर्य arrays हो सकता है, 788 00:54:03,180 --> 00:54:06,040 और हम अभी उन के माध्यम से जाने के लिए जा रहे हैं. 789 00:54:06,040 --> 00:54:08,280 नियमित सरणियों, सिर्फ इस सी में हैं 790 00:54:08,280 --> 00:54:11,240 और इसलिए आप गिने जा रहे हैं कि सूचकांक है. 791 00:54:11,240 --> 00:54:13,160 अभी हम सिर्फ एक बनाने के लिए जा रहा है और डाल रहे हैं - 792 00:54:13,160 --> 00:54:15,500 तो यह है कि हम एक खाली सरणी बनाने के लिए है, तो हम करने जा रहे हैं 793 00:54:15,500 --> 00:54:17,310 इंडेक्स नंबर 0 में डाल दिया. 794 00:54:17,310 --> 00:54:19,200 हम नंबर 6, मूल्य 6 डाल करने के लिए जा रहे हैं. 795 00:54:19,200 --> 00:54:21,500 आप यहाँ तल पर इसे देख सकते हैं. 796 00:54:21,500 --> 00:54:24,240 Where's - इंडेक्स नंबर 1 पर हम, मूल्य 4 नंबर डालने के लिए जा रहे हैं 797 00:54:24,240 --> 00:54:26,720 और इसलिए आप एक 6 वहाँ देख सकते हैं, एक 4, वहाँ 798 00:54:26,720 --> 00:54:29,160 और फिर हम चीजों मुद्रण कर रहे हैं, के रूप में 799 00:54:29,160 --> 00:54:33,550 हम कोशिश करते हैं और इंडेक्स नंबर 0 में संग्रहीत मूल्य मुद्रित करते हैं, 800 00:54:33,550 --> 00:54:36,900 तो हम बाहर मुद्रित किया जा रहा 6 मूल्य देखेंगे. कूल? 801 00:54:36,900 --> 00:54:40,160 तो यह है कि आप के लिए नियमित रूप से सरणियों है. 802 00:54:40,160 --> 00:54:42,750 आप भी अब नियमित सरणियों की बातें जोड़ सकते हैं एक और तरीका है 803 00:54:42,750 --> 00:54:44,780 आप बस उन्हें अंत में संलग्न कर सकते है. 804 00:54:44,780 --> 00:54:47,240 यही कारण है कि आप विशिष्ट सूचकांक निर्दिष्ट करने की जरूरत नहीं है कि इसका मतलब है. 805 00:54:47,240 --> 00:54:51,000 आप संख्या देख सकते हैं, और तब वर्ग कोष्ठक में निर्दिष्ट कोई सूचकांक नहीं है. 806 00:54:51,000 --> 00:54:56,270 और यह पता चल जाएगा - PHP सिर्फ सूची, अगले मुक्त स्थान के अंत में जोड़ने के लिए पता चल जाएगा. 807 00:54:56,270 --> 00:54:59,190 तो तुम, कि 0 स्थान पर वहीं 1 देख सकते हैं 808 00:54:59,190 --> 00:55:02,690 2 प्रथम स्थान पर वहीं चला गया. 809 00:55:02,690 --> 00:55:04,690 3 जाता है - के रूप में अच्छी तरह से जोड़ा जाता है. 810 00:55:04,690 --> 00:55:06,720 तो उस तरह की समझ में आता है. तुम बस लगातार यह जोड़ रहे हैं, 811 00:55:06,720 --> 00:55:09,360 और फिर हम नंबर 1 के सूचकांक गूंज रहे हैं जब 812 00:55:09,360 --> 00:55:13,080 यह मूल्य 2 बाहर प्रिंट होगा. 813 00:55:13,080 --> 00:55:16,800 >> तो हम साहचर्य arrays रहे हैं कि सरणियों है. 814 00:55:16,800 --> 00:55:19,370 बजाय संख्यात्मक सूचकांक होने के साहचर्य arrays,, 815 00:55:19,370 --> 00:55:23,630 वे क्या वे स्ट्रिंग से कर रहे हैं कि सूचकांक है, है. 816 00:55:23,630 --> 00:55:25,670 आप के बजाय, देख सकते हैं - मैं उन सभी इंडेक्स नंबर से छुटकारा मिल गया, 817 00:55:25,670 --> 00:55:32,140 और अब यह key1, key2, key3 है, और वे सब तार कर रहे हैं दर्शाता है कि डबल उद्धरण में हैं. 818 00:55:32,140 --> 00:55:34,470 इसलिए हम इस का एक उदाहरण हो सकता है. 819 00:55:34,470 --> 00:55:38,790 इस बात का उदाहरण है कि हम TF है, और कि सूचकांक के नाम है. 820 00:55:38,790 --> 00:55:42,030 हम कैलोरी खाया, सूचकांक में, नाम के रूप में "अली" डाल करने के लिए जा रहे हैं 821 00:55:42,030 --> 00:55:47,640 हम बजाय एक स्ट्रिंग के एक int इस समय रख सकते हैं, 822 00:55:47,640 --> 00:55:52,240 और फिर सूचकांक पसंद पर, हम इसे के अंदर एक पूरे सरणी डाल सकते हैं. 823 00:55:52,240 --> 00:55:55,490 तो इस तरह से है - यह हम था कैसे करने के लिए इसी तरह की एक अवधारणा है 824 00:55:55,490 --> 00:55:58,930 संख्या के साथ सूचकांक, लेकिन अब हम चारों ओर सूचकांकों बदल सकते हैं 825 00:55:58,930 --> 00:56:03,890 बजाय तार के रूप में उनके पास करने के. 826 00:56:03,890 --> 00:56:06,070 तुम भी, सिर्फ व्यक्तिगत रूप से यह कर के अलावा, यह कर सकते हैं 827 00:56:06,070 --> 00:56:09,400 आप एक हिस्सा में यह सब कर सकते हैं. तो तुम, कि सरणी की कि TF देख सकते हैं 828 00:56:09,400 --> 00:56:13,350 और फिर हम एक विशाल वर्ग ब्रैकेट सेट में उन सब को निर्धारित किया है. 829 00:56:13,350 --> 00:56:15,220 तो यह है कि चीजों को गति कर सकते हैं. 830 00:56:15,220 --> 00:56:19,730 यह नहीं की तुलना में एक शैलीगत पसंद का अधिक है. 831 00:56:19,730 --> 00:56:21,550 हम भी छोरों है. 832 00:56:21,550 --> 00:56:26,020 सी में हम इस तरह का काम है कि छोरों है. 833 00:56:26,020 --> 00:56:29,690 हम अपने सरणी था, और हम सूची के अंत में सूचकांक में 0 से चला गया, 834 00:56:29,690 --> 00:56:31,740 और हम सही है, यह सभी के लिए प्रिंट? 835 00:56:31,740 --> 00:56:33,880 , समस्या साहचर्य arrays के लिए है, सिवाय 836 00:56:33,880 --> 00:56:36,610 हम जरूरी उन संख्यात्मक सूचकांक पता नहीं है 837 00:56:36,610 --> 00:56:39,610 अब हम स्ट्रिंग सूचकांकों किया है. 838 00:56:39,610 --> 00:56:44,800 अब हम फिर से, आप उम्मीद है कि pset 7 में प्रयोग किया जाता है, जो foreach छोरों, का उपयोग करें. 839 00:56:44,800 --> 00:56:48,930 Foreach छोरों बस सूची के हर एक भाग को पता चल जाएगा. 840 00:56:48,930 --> 00:56:52,450 और यह है कि आप वास्तव में संख्यात्मक सूचकांक पता करने के लिए नहीं है. 841 00:56:52,450 --> 00:56:56,490 तो आप सरणी डाल, आप foreach वाक्यविन्यास है, तो यह foreach है. 842 00:56:56,490 --> 00:57:00,430 , तो मेरे सरणी pset कहा जाता है, और उसके बाद के रूप में शब्द, रूप 843 00:57:00,430 --> 00:57:04,530 और फिर आप प्रयोग करने जा रहे हैं कि इस स्थानीय अस्थायी चर डाला 844 00:57:04,530 --> 00:57:10,690 सिर्फ विशिष्ट आयोजित करने जा रहा है कि विशेष बात के लिए - 845 00:57:10,690 --> 00:57:14,770 एक उदाहरण या सरणी में से एक खंड. 846 00:57:14,770 --> 00:57:18,350 , Pset संख्या 1 का आयोजन करेगा, और तब शायद यह संख्या 6 का आयोजन करेगा 847 00:57:18,350 --> 00:57:20,410 और फिर यह संख्या 2 का आयोजन करेगा. 848 00:57:20,410 --> 00:57:26,630 लेकिन यह सरणी में है कि हर एक मूल्य के माध्यम से जाने की गारंटी है. 849 00:57:26,630 --> 00:57:30,530 आप PHP में पता होना चाहिए कि उपयोगी कार्यों की आवश्यकता होती हैं, 850 00:57:30,530 --> 00:57:35,880 बाहर निकलें, खाली, गूंज इतनी है कि, आप कुछ फ़ाइलों सहित सुनिश्चित करता है कि. 851 00:57:35,880 --> 00:57:40,490 मैं अत्यधिक तुम pset 7 को देखो और उन कार्यों को देखने की सलाह देते हैं. 852 00:57:40,490 --> 00:57:42,810 आप उन पता करने के लिए हो सकता है, 853 00:57:42,810 --> 00:57:47,060 तो मैं निश्चित रूप से वास्तव में, उन सब क्या कर रहे हैं, पता होगा. 854 00:57:47,060 --> 00:57:50,080 >> और अब हम वास्तव में जल्दी गुंजाइश के माध्यम से जाने के लिए जा रहे हैं. 855 00:57:50,080 --> 00:57:53,490 दायरे में, पीएचपी, सी के विपरीत, एक कायरता बात की तरह है 856 00:57:53,490 --> 00:57:56,170 और इसलिए हम बस जल्दी से इसे माध्यम से जाने के लिए जा रहे हैं. 857 00:57:56,170 --> 00:57:58,930 तो चलिए हम हम वहाँ है कि उस तीर पर शुरू कहते हैं. 858 00:57:58,930 --> 00:58:02,900 और हम $ मैं के साथ शुरू करने जा रहे हैं. तो चर 'मैं', 0 होने जा रहा है 859 00:58:02,900 --> 00:58:06,730 और हम बस वहाँ पर कि बड़े सफेद बॉक्स में यह मुद्रण रखने के लिए जा रहे हैं. 860 00:58:06,730 --> 00:58:09,220 हम I0 के साथ शुरू करने जा रहे हैं, और फिर हम यह गूंज करने जा रहे हैं. 861 00:58:09,220 --> 00:58:12,670 तो 0 नहीं है. 862 00:58:12,670 --> 00:58:15,210 और फिर हम, के लिए पाश से यह वेतन वृद्धि के लिए जा रहे हैं 863 00:58:15,210 --> 00:58:17,810 और फिर यह 1 के मूल्य होने जा रहा है. 864 00:58:17,810 --> 00:58:20,070 , एक कम से कम 3 है, तो यह पाश के लिए उस के माध्यम से पारित करने के लिए जा रहा है 865 00:58:20,070 --> 00:58:23,230 और फिर हम इसे फिर से मुद्रित देखने जा रहे हैं. 866 00:58:23,230 --> 00:58:25,520 हम 2 करने के लिए इसे फिर से बढ़ाने के लिए जा रहे हैं 867 00:58:25,520 --> 00:58:29,860 और 2 कम से कम 3 है, तो यह पाश के लिए पारित करेंगे, और यह 2 मुद्रित करेंगे. 868 00:58:29,860 --> 00:58:35,100 तो फिर तुम 3 3 से कम नहीं है कि ध्यान देंगे, तो हम पाश के लिए के बाहर तोड़ दूँगा. 869 00:58:35,100 --> 00:58:40,050 तो अब हम बाहर हुआ है, और फिर हम क्रियाहीन में जाने के लिए जा रहे हैं. 870 00:58:40,050 --> 00:58:45,010 ठीक है. तो अगर आप इस चर हम बना लिया है कि ध्यान दें कि करने के लिए है 871 00:58:45,010 --> 00:58:48,270 'मैं' चर, स्थानीय स्तर पर scoped नहीं है. 872 00:58:48,270 --> 00:58:50,280 यही कारण है कि यह पाश के लिए स्थानीय नहीं है इसका मतलब है कि, 873 00:58:50,280 --> 00:58:58,060 और उस चर हम अभी भी पहुँच सकते हैं और बाद में बदल सकते हैं, और यह अभी भी प्रभावी हो जाएगा सकता है. 874 00:58:58,060 --> 00:59:02,160 आप अब समारोह में जाना है, तो आप, हम भी 'मैं' चर का उपयोग करने वाले देखेंगे 875 00:59:02,160 --> 00:59:05,320 और हम 'मैं' + + वेतन वृद्धि के लिए जा रहे हैं. 876 00:59:05,320 --> 00:59:09,410 आपको लगता है कि 'मैं' चर की एक प्रति है कि, सी के आधार पर, सबसे पहले, आपको लगता होगा. 877 00:59:09,410 --> 00:59:12,830 यह सही है, जो पूरी तरह से एक अलग बात है. 878 00:59:12,830 --> 00:59:16,560 हम इसे मुद्रित करते हैं तो, हम बाहर मुद्रित करने के लिए जा रहा है, जो 'मैं' + + मुद्रित करने के लिए जा रहे हैं कि 4, 879 00:59:16,560 --> 00:59:19,640 खेद है - और फिर हम करने जा रहे हैं. 880 00:59:19,640 --> 00:59:22,030 तो फिर हम उस समारोह के बाहर समाप्त करने के लिए जा रहे हैं, 881 00:59:22,030 --> 00:59:24,820 और हम उस तीर सही अब कहाँ हो जा रहे हैं. 882 00:59:24,820 --> 00:59:29,190 यही तो, हालांकि, समारोह 'मैं' का मान बदल गया है, भले ही इसका मतलब है कि, 883 00:59:29,190 --> 00:59:32,620 यह बाहर समारोह का परिवर्तन नहीं किया, 884 00:59:32,620 --> 00:59:35,060 समारोह एक अलग गुंजाइश है क्योंकि. 885 00:59:35,060 --> 00:59:38,960 यही है, हम 'मैं' की गूंज है, यह समारोह के दायरे में नहीं बदला है इसका मतलब है कि 886 00:59:38,960 --> 00:59:43,660 और यदि ऐसा है तो हम फिर से 3 मुद्रित करने के लिए जा रहे हैं. 887 00:59:43,660 --> 00:59:47,520 सी. में से PHP में गुंजाइश के बारे में अलग अलग बातें 888 00:59:47,520 --> 00:59:51,130 >> अभी PHP और एचटीएमएल में. 889 00:59:51,130 --> 00:59:53,510 PHP वेब पृष्ठों गतिशील बनाने के लिए प्रयोग किया जाता है. 890 00:59:53,510 --> 00:59:58,660 यह एक तरह से चीजों को अलग करता है. 891 00:59:58,660 --> 01:00:02,090 हम HTML से यह अलग है. 892 01:00:02,090 --> 01:00:05,230 एचटीएमएल के साथ, हम हमेशा बस, रोब दिखाया है कि कैसे की तरह ही स्थिर बात है, 893 01:00:05,230 --> 01:00:09,370 PHP, जबकि आप उपयोगकर्ता है, जो के आधार पर चीजों को बदल सकते हैं. 894 01:00:09,370 --> 01:00:11,830 मैं यह है, तो मैं, "आप के रूप में लॉग इन किया है -" है और उसके बाद नाम, 895 01:00:11,830 --> 01:00:14,420 और मैं नाम बदल सकते हैं. इसलिए अभी नाम यूसुफ है 896 01:00:14,420 --> 01:00:18,880 और यह "मेरे बारे में" है, लेकिन फिर मैं भी टॉमी है करने के लिए नाम बदल सकते हैं. 897 01:00:18,880 --> 01:00:21,700 और वह एक अलग बात होगी. 898 01:00:21,700 --> 01:00:23,840 तो फिर हम भी उसके बारे में अलग अलग चीजों को बदल सकते हैं, 899 01:00:23,840 --> 01:00:27,070 और यह नाम के आधार पर अलग अलग सामग्री दिखाएगा. 900 01:00:27,070 --> 01:00:31,430 इसलिए PHP तरह की अपनी वेबसाइट में क्या हो रहा है बदल सकते हैं. 901 01:00:31,430 --> 01:00:33,540 यहाँ भी. फिर भी, वे अलग सामग्री है कि ध्यान दें, 902 01:00:33,540 --> 01:00:38,870 आप तकनीकी रूप से अभी भी सतह पर है कि एक ही वेब पेज तक पहुँचने रहे हैं, भले ही. 903 01:00:38,870 --> 01:00:43,450 एचटीएमएल सृजन. आप ऐसा कर सकते हैं कि 2 अलग अलग तरीके हैं. 904 01:00:43,450 --> 01:00:48,980 तो क्या अब हम उस अधिकार के माध्यम से जाना होगा. पहला तरीका है आपके पास, है - हाँ, माफ करना. 905 01:00:48,980 --> 01:00:51,150 तो आप सिर्फ PHP में पाश के लिए नियमित रूप से अपने पास 906 01:00:51,150 --> 01:00:56,270 और फिर आप PHP में गूंज और आप HTML बाहर गूंज. 907 01:00:56,270 --> 01:00:58,720 रोब एचटीएमएल स्क्रिप्ट का आप क्या दिखाया का उपयोग करना 908 01:00:58,720 --> 01:01:04,030 और फिर बस वेब पेज के लिए इसे बाहर प्रिंट करने के लिए PHP प्रिंट का उपयोग कर. 909 01:01:04,030 --> 01:01:09,520 वैकल्पिक तरीका आप PHP और एचटीएमएल बाहर अलग रूप में अगर यह करने के लिए है. 910 01:01:09,520 --> 01:01:11,940 तो तुम, पाश के लिए शुरू होता है कि PHP की एक लाइन हो सकता है 911 01:01:11,940 --> 01:01:16,020 तो आपको एक अलग बात में HTML की लाइन हो सकता है, 912 01:01:16,020 --> 01:01:19,700 और फिर आप एक PHP के साथ, फिर से, लूप अंत. 913 01:01:19,700 --> 01:01:21,800 तो यह एक तरह से यह बाहर अलग है. 914 01:01:21,800 --> 01:01:24,020 बाईं ओर, यदि आप कर सकते हैं कि सब - 915 01:01:24,020 --> 01:01:26,360 यह PHP का सिर्फ 1 हिस्सा है. 916 01:01:26,360 --> 01:01:28,510 सही में आप, आप PHP की एक पंक्ति है कि देख सकते हैं 917 01:01:28,510 --> 01:01:32,540 आप HTML की एक पंक्ति है, और आप फिर से PHP की एक पंक्ति है. 918 01:01:32,540 --> 01:01:36,870 तो वे क्या कर रहे हैं में इसे बाहर अलग. 919 01:01:36,870 --> 01:01:39,330 और आपको लगता है कि किसी भी तरह से, उनमें से किसी के लिए, ध्यान देंगे 920 01:01:39,330 --> 01:01:41,980 वे अभी भी छवि बाहर प्रिंट, छवि, छवि, 921 01:01:41,980 --> 01:01:44,540 इसलिए कि एचटीएमएल अभी भी उसी तरह मुद्रित किया जाता है. 922 01:01:44,540 --> 01:01:49,870 और फिर आप अभी भी 3 छवियों को अपनी वेबसाइट पर दिखाने देखेंगे. 923 01:01:49,870 --> 01:01:52,820 तो यह एक ही बात कर के 2 अलग अलग तरीके है. 924 01:01:52,820 --> 01:01:55,060 >> अब हम रूपों और अनुरोध किया है. रोब, आपको दिखाया 925 01:01:55,060 --> 01:01:59,400 वहाँ HTML के रूप हैं, और हम सिर्फ इस माध्यम से हवा जाएगा. 926 01:01:59,400 --> 01:02:02,040 आप एक क्रिया है और आप एक विधि है, और अपनी कार्रवाई 927 01:02:02,040 --> 01:02:04,350 एक तरह से आप इसे भेजने के लिए जा रहे हैं, जहां आपको दिखाता है, और तरीका है कि क्या 928 01:02:04,350 --> 01:02:06,960 यह एक हो जाओ या एक के बाद होने जा रहा है. 929 01:02:06,960 --> 01:02:11,220 और एक अनुरोध प्राप्त, रोब कहा, आप एक प्रपत्र में डाल करने के लिए जा रहे हैं इसका मतलब है कि 930 01:02:11,220 --> 01:02:15,760 एक पोस्ट अनुरोध आप एक URL में नहीं देख सकेंगे जबकि और तुम, एक यूआरएल के रूप में देखेंगे. 931 01:02:15,760 --> 01:02:17,840 तो एक मामूली अंतर है. 932 01:02:17,840 --> 01:02:19,950 हालांकि, एक ऐसी ही बात है कि एक बात 933 01:02:19,950 --> 01:02:22,560 पोस्ट और मिल भी उतना ही असुरक्षित हैं. 934 01:02:22,560 --> 01:02:26,430 तो तुम, सिर्फ इसलिए कि आप URL में इसे देख नहीं लगता है कि हो सकता है 935 01:02:26,430 --> 01:02:28,790 कि, पोस्ट और अधिक सुरक्षित है इसका मतलब 936 01:02:28,790 --> 01:02:34,420 लेकिन आप अभी भी आप भेज रहे हैं कि जानकारी में अपने कुकीज़ में देख सकते हैं. 937 01:02:34,420 --> 01:02:38,260 इसलिए नहीं लगता है कि के बारे में एक या अन्य. 938 01:02:38,260 --> 01:02:42,160 नोट करने के लिए एक और बात आप भी खंड चर है कि है. 939 01:02:42,160 --> 01:02:45,850 तुम लोग अपने यूजर आईडी जानकारी प्राप्त करने के लिए pset 7 में इस का इस्तेमाल किया. 940 01:02:45,850 --> 01:02:48,550 क्या हुआ आप इस साहचर्य सरणी का उपयोग कर सकते हैं कि था, 941 01:02:48,550 --> 01:02:53,310 $ देखना, और उसके बाद आप अलग अलग चीजों का उपयोग करने में सक्षम हैं 942 01:02:53,310 --> 01:02:57,720 और पृष्ठों पर अलग अलग बातें की दुकान. 943 01:02:57,720 --> 01:03:00,750 >> अंतिम बात, हम एसक्यूएल, संरचित क्वेरी भाषा है 944 01:03:00,750 --> 01:03:04,360 और इस डेटाबेस का प्रबंधन करने के लिए एक प्रोग्रामिंग भाषा है. 945 01:03:04,360 --> 01:03:08,220 , वास्तव में, डेटाबेस क्या हैं? वे तालिकाओं का संग्रह कर रहे हैं, 946 01:03:08,220 --> 01:03:10,630 और प्रत्येक मेज वस्तुओं की समान प्रकार के हो सकते हैं. 947 01:03:10,630 --> 01:03:14,990 इसलिए हम आपके वित्त pset में उपयोगकर्ताओं का एक मेज था. 948 01:03:14,990 --> 01:03:20,610 और क्यों वे उपयोगी होते हैं? यह स्थायी रूप से जानकारी संग्रहीत करने का एक तरीका है क्योंकि. 949 01:03:20,610 --> 01:03:22,840 यह बातें नज़र रखने और चीजों के प्रबंधन के लिए एक रास्ता है 950 01:03:22,840 --> 01:03:25,890 और वास्तव में विभिन्न पृष्ठों और ट्रैक रखने पर यह देखकर. 951 01:03:25,890 --> 01:03:29,930 जबकि आप सिर्फ एक है कि तत्काल इस समय यह दुकान 952 01:03:29,930 --> 01:03:33,720 और फिर बाद में उपयोग करते हैं, क्या आप को बचाया है कि कुछ भी उपयोग करने में सक्षम नहीं होगा. 953 01:03:33,720 --> 01:03:37,660 हम SQL आदेश के लिए उपयोग किए जाने वाले 4 प्रमुख बातें हैं. 954 01:03:37,660 --> 01:03:40,190 हम चुनें, सम्मिलित करने, हटाने, और अद्यतन है. 955 01:03:40,190 --> 01:03:42,880 उन तुम लोग अपने प्रश्नोत्तरी के लिए पता करने के लिए वास्तव में महत्वपूर्ण हैं. 956 01:03:42,880 --> 01:03:45,990 >> हम जल्दी से सही अब चुनिंदा जायेंगे. 957 01:03:45,990 --> 01:03:48,540 असल में, आप एक डेटाबेस से पंक्तियों का चयन कर रहे हैं. 958 01:03:48,540 --> 01:03:52,400 तो तुम यहीं, है - 959 01:03:52,400 --> 01:03:56,740 हम इन 2 अलग बातें हैं, और हम कक्षाओं तालिका से चयन करना चाहते हैं 960 01:03:56,740 --> 01:04:01,480 जहां भयानक - भयानक स्तंभ में मान 1 है. 961 01:04:01,480 --> 01:04:04,460 आप यहाँ देख सकते हैं तो, हम, वर्ग के नाम के इन 2 बातें हैं 962 01:04:04,460 --> 01:04:08,490 CS50 और Stat110, और हम वर्ग आईडी और नारा है. 963 01:04:08,490 --> 01:04:13,150 तो हम उस जानकारी का चयन करना चाहते हैं. 964 01:04:13,150 --> 01:04:17,480 तो फिर तुम, यह एक तरह से उस भयानक स्तंभ के बाहर उठा रहा है कि सही यहाँ देख सकते हैं 965 01:04:17,480 --> 01:04:25,170 सब बातें कर रहे हैं 1, और फिर यह वर्ग आईडी, वर्ग के नाम और इसे बाहर ले सकते हैं कि नारा है, जहां. 966 01:04:25,170 --> 01:04:28,100 आप इस कोड में वास्तव में किस प्रकार करते हैं? आप PHP का उपयोग करने के लिए है. 967 01:04:28,100 --> 01:04:33,830 तो उस तरह की PHP और एसक्यूएल एक दूसरे से जुड़े हुए हैं कि कैसे है. 968 01:04:33,830 --> 01:04:38,130 अब हम अपने कोड है, और हम हमारे क्वेरी समारोह का उपयोग करने के लिए जा रहे हैं 969 01:04:38,130 --> 01:04:41,370 हम pset 7 में किया था, और हम एसक्यूएल क्वेरी चलाने के लिए जा रहे हैं. 970 01:04:41,370 --> 01:04:43,870 तो हम करने जा रहे हैं - 971 01:04:43,870 --> 01:04:46,280 हम हमेशा झूठे यदि पंक्ति के ट्रिपल बराबर है की जाँच करने के लिए है. 972 01:04:46,280 --> 01:04:49,010 तो फिर, तुम प्रकार और मान की जाँच करना चाहते, 973 01:04:49,010 --> 01:04:53,880 यह काम नहीं करता है और फिर, तो आप हम pset 7 में किया था, हमेशा की तरह, माफी चाहता हूँ. 974 01:04:53,880 --> 01:04:55,870 अन्यथा, आप उन काम के साथ सब कुछ के माध्यम से लूप करना चाहते हैं 975 01:04:55,870 --> 01:04:59,410 foreach हम बस खत्म हो गया था कि छोरों. 976 01:04:59,410 --> 01:05:01,280 , हम के माध्यम से पाशन कर रहे हैं और हम पिछले इसे बनाया है अब जब कि 977 01:05:01,280 --> 01:05:05,080 चलो हमारे क्वेरी पारित कर दिया है कि कल्पना करते हैं, अब हम अपने foreach पाश है. 978 01:05:05,080 --> 01:05:11,050 और पहली पंक्ति यह है, तो यहाँ पंक्ति यहीं, है, यह बॉक्सिंग है. 979 01:05:11,050 --> 01:05:14,010 यह हो गया है कि सभी जानकारी बाहर मुद्रित करने के लिए जा रहा है. 980 01:05:14,010 --> 01:05:18,070 तो यह नीचे में मुद्रित करने के लिए जा रहा है "चाहता हूँ एचटीएमएल जानें?" 981 01:05:18,070 --> 01:05:23,370 यह पाश के लिए पहले पूरा कर लिया है, क्योंकि तब यह अगली पंक्ति में जाना जा रहा है 982 01:05:23,370 --> 01:05:26,510 और यदि ऐसा है तो यह, यह की दूसरी पंक्ति के बाहर मुद्रित करने के लिए जा रहा है 983 01:05:26,510 --> 01:05:32,120 STAT110 होने जा रहा है, जो सभी क्षणों का पता लगाएं. 984 01:05:32,120 --> 01:05:34,290 >> एक आखिरी बात एसक्यूएल कमजोरियों पर है. 985 01:05:34,290 --> 01:05:37,300 मैं दाऊद इस पर व्याख्यान में एक छोटा सा छुआ पता है. 986 01:05:37,300 --> 01:05:40,730 आप बाद में इसे पढ़ सकते हैं. यह वास्तव में अजीब है. 987 01:05:40,730 --> 01:05:45,320 SQL इंजेक्शन मुश्किल बात का एक प्रकार है. 988 01:05:45,320 --> 01:05:49,890 मान लीजिए कि आप सिर्फ सही आपकी क्वेरी में उन चर छड़ी है कि हम कहते हैं, 989 01:05:49,890 --> 01:05:52,290 आपको लगता है कि पहली पंक्ति में देख सकते हैं. 990 01:05:52,290 --> 01:05:54,520 तो यह ठीक है, ठीक लगता है? तुम बस उपयोगकर्ता नाम में डाल रहे हैं 991 01:05:54,520 --> 01:05:58,820 और अपने एसक्यूएल क्वेरी के लिए पासवर्ड, और आप इसे बंद जहाज और अपने डेटा तालिका में है जो कुछ प्राप्त करना चाहते हैं. 992 01:05:58,820 --> 01:06:01,450 यह बहुत आसान लगता है. तो, किसी में डालता कह देता है 993 01:06:01,450 --> 01:06:04,910 पासवर्ड के लिए, यह या पाठ यहीं - 994 01:06:04,910 --> 01:06:06,780 वास्तव में लाल बॉक्स में होना चाहिए. 995 01:06:06,780 --> 01:06:11,920 तो चलो वे में है कि पासवर्ड डाल कि हम कहते हैं - कि वे प्रवेश कर रहा है. 996 01:06:11,920 --> 01:06:16,520 इसलिए वे डालने या "1" = 1 रहे हैं. 997 01:06:16,520 --> 01:06:20,880 करने के लिए एक मूर्खतापूर्ण पासवर्ड की तरह. 998 01:06:20,880 --> 01:06:25,070 अब चलो बस में जगह ले जाने, और अब आप कि SQL क्वेरी में ध्यान देंगे कि, 999 01:06:25,070 --> 01:06:29,090 आप ध्यान देंगे, क्योंकि यह हमेशा सच करने के लिए है कि मूल्यांकन 1000 01:06:29,090 --> 01:06:32,240 आप एसक्यूएल क्वेरी इस जानकारी का चयन कर सकते हैं 1001 01:06:32,240 --> 01:06:35,420 या तुम सिर्फ = 1 1 हो सकता है. 1002 01:06:35,420 --> 01:06:41,030 तो यह है कि हमेशा सच करने के लिए मूल्यांकन करने के लिए जा रहा है. 1003 01:06:41,030 --> 01:06:46,610 कि हैकर आपके सिस्टम में टूट सकता है कि क्योंकि इसका मतलब है कि वास्तव में काम करने के लिए नहीं जा रहा है. 1004 01:06:46,610 --> 01:06:49,300 इस का हल आप पीडीओ प्रणाली का उपयोग किया है, 1005 01:06:49,300 --> 01:06:51,360 जो, आप प्रश्न चिह्न का उपयोग करने का मतलब है कि 1006 01:06:51,360 --> 01:06:53,350 क्या आप pset 7 में इस्तेमाल लोगों को, जो 1007 01:06:53,350 --> 01:06:57,620 क्या आप कुछ करना चाहते हैं, जहां के स्थान पर एक प्रश्न चिह्न का उपयोग करने जा रहे हैं जहां, 1008 01:06:57,620 --> 01:07:01,430 और, तो आप एक अल्पविराम लिए जा रहे हैं, और फिर आप बाद में होगा 1009 01:07:01,430 --> 01:07:07,610 अपने स्ट्रिंग के बाद, आप चाहते हैं कि विभिन्न चर अपने प्रश्न चिह्न में बदलने के लिए. 1010 01:07:07,610 --> 01:07:10,330 तो क्या अब मैं इन लाल प्रश्न चिह्न है कि यहाँ ध्यान देंगे. 1011 01:07:10,330 --> 01:07:15,420 मैं बाद में इसी क्रम में उन्हें बदलने के लिए पता है तो फिर मैं मेरा तार के बाद चर डाला. 1012 01:07:15,420 --> 01:07:18,470 किसी को इस तरह से अगर यह होता है कि, यकीन है कि कर देगा 1013 01:07:18,470 --> 01:07:24,050 और वे सुनिश्चित करेंगे कि, या 1 = 1 स्थिति है 1014 01:07:24,050 --> 01:07:30,490 वापस अंत में, यह वास्तव में एसक्यूएल क्वेरी नहीं टूटेगा सुनिश्चित करें. 1015 01:07:30,490 --> 01:07:33,660 ठीक है, PHP और एसक्यूएल का एक बवंडर, कि यह बहुत सुंदर है तो. 1016 01:07:33,660 --> 01:07:41,520 आप सभी को शुभकामनाएँ, और अब अयस्क के लिए 1017 01:07:41,520 --> 01:07:44,270 >> [Oreoluwatomiwa Babarinsa] सब ठीक है. कुछ जावास्क्रिप्ट पर जाने के लिए समय 1018 01:07:44,270 --> 01:07:48,840 और कुछ अन्य चीजों को बहुत जल्दी तो हम आपको आज रात तक पकड़ नहीं है. 1019 01:07:48,840 --> 01:07:56,930 जावास्क्रिप्ट. हां. जावास्क्रिप्ट कथित, एक अच्छी बात की तरह है. 1020 01:07:56,930 --> 01:07:59,090 आप वास्तव में जावास्क्रिप्ट के बारे में पता करने की जरूरत बातें, यह की तरह की तरह है 1021 01:07:59,090 --> 01:08:03,810 कृपया अपने वेब एप्लिकेशन कर रही हो जा रहा है की क्लाइंट साइड अंत. 1022 01:08:03,810 --> 01:08:08,280 तुम सिर्फ सर्वर साइड पर हर समय का ध्यान रखना नहीं चाहते हैं कुछ बातें की. 1023 01:08:08,280 --> 01:08:12,880 सभी छोटे बातचीत,, एक बात पर प्रकाश डाला कुछ गायब. 1024 01:08:12,880 --> 01:08:15,340 तुम सच में अपने सर्वर से उस के लिए हर समय बात करने के लिए नहीं करना चाहती. 1025 01:08:15,340 --> 01:08:18,069 और उस में से कुछ सर्वर साइड पर करने के लिए भी संभव नहीं है. 1026 01:08:18,069 --> 01:08:21,899 हम जावास्क्रिप्ट की तरह कुछ की जरूरत क्यों है. 1027 01:08:21,899 --> 01:08:24,359 जावास्क्रिप्ट के बारे में अच्छी बातें: यह गतिशील रूप से लिखा गया है. 1028 01:08:24,359 --> 01:08:27,149 इसका मतलब क्या यह अपने कार्यक्रम में जानने की जरूरत नहीं है 1029 01:08:27,149 --> 01:08:30,970 आप इसे लिखने के बाहर जब क्या, वास्तव में, चर रहे हैं. 1030 01:08:30,970 --> 01:08:34,510 यह चल रहा है के रूप में यह बस की तरह यह पता लगा लेंगे. 1031 01:08:34,510 --> 01:08:37,520 इसके बारे में अच्छा कर रहे हैं कि अन्य बातें: यह एक घुंघराले ब्रेस भाषा है, 1032 01:08:37,520 --> 01:08:41,359 जो वाक्यविन्यास सी और PHP के समान है इसका मतलब है. 1033 01:08:41,359 --> 01:08:47,050 आप जावास्क्रिप्ट सीख रहे हैं जब ज्यादा rework करने की जरूरत नहीं है. 1034 01:08:47,050 --> 01:08:49,180 यहाँ हम जावास्क्रिप्ट का एक छोटा सा है. 1035 01:08:49,180 --> 01:08:52,560 यहीं दिलचस्प बात यह है कि, तुम इसे देखो, तो है 1036 01:08:52,560 --> 01:08:56,330 हम सिर टैग में सही वहाँ जावास्क्रिप्ट का एक सा है. 1037 01:08:56,330 --> 01:08:59,479 क्या है मूल रूप से एक जावास्क्रिप्ट फ़ाइल शामिल है करता है. 1038 01:08:59,479 --> 01:09:02,260 इससे आप अपने प्रोग्राम में जावास्क्रिप्ट शामिल कर सकते हैं एक ही रास्ता है. 1039 01:09:02,260 --> 01:09:06,910 फिर दूसरा छोटा सा है, वास्तव में कुछ इनलाइन जावास्क्रिप्ट है 1040 01:09:06,910 --> 01:09:10,790 बहुत सीएसएस के साथ एक इनलाइन शैली के समान, 1041 01:09:10,790 --> 01:09:16,180 और अगर आप अभी बहुत जल्दी वहाँ कुछ कोड लिख रहे हैं. 1042 01:09:16,180 --> 01:09:18,120 जावास्क्रिप्ट सरणियों है. 1043 01:09:18,120 --> 01:09:20,850 बहुत उपयोगी, चारों ओर डेटा रखने के लिए सिर्फ एक और तरीका. 1044 01:09:20,850 --> 01:09:25,180 बहुत अच्छा और आसान वाक्यविन्यास. 1045 01:09:25,180 --> 01:09:29,870 आप सब कुछ का उपयोग और सब कुछ एक साथ रखने के लिए वर्ग कोष्ठक का उपयोग करें. 1046 01:09:29,870 --> 01:09:35,020 बहुत जटिल कुछ नहीं है. 1047 01:09:35,020 --> 01:09:38,630 सामान्य में जावास्क्रिप्ट और पटकथा भाषाओं के बारे में अच्छी बात 1048 01:09:38,630 --> 01:09:40,920 आप सरणी के आकार के बारे में चिंता करने की ज़रूरत नहीं है. 1049 01:09:40,920 --> 01:09:43,880 तुम बस array.length का उपयोग करें और इसे का ट्रैक रख सकते हैं, 1050 01:09:43,880 --> 01:09:46,960 और भी सरणी बढ़ने या आप इसे करने की आवश्यकता के रूप में छोटा कर सकते हैं. 1051 01:09:46,960 --> 01:09:49,279 तो तुम भी, किसी भी प्रकार के बारे में चिंता करने की जरूरत नहीं है 1052 01:09:49,279 --> 01:09:57,050 अरे नहीं, मैं अधिक बातें, या ऐसा कुछ भी आवंटित की जरूरत है. 1053 01:09:57,050 --> 01:10:00,090 >> यहाँ शांत बात जावास्क्रिप्ट वस्तुओं बुलाया कुछ किया है. 1054 01:10:00,090 --> 01:10:04,800 यह एक वस्तु उन्मुख भाषा है, इसलिए यह है क्या, अनिवार्य रूप से, 1055 01:10:04,800 --> 01:10:10,100 समूह डेटा के लिए आप के लिए एक तरह से एक साथ, एक संरचना करने के लिए कुछ इसी तरह, 1056 01:10:10,100 --> 01:10:17,280 लेकिन आप एक संरचना की तरह या एक साहचर्य सरणी वाक्यविन्यास में यह उपयोग कर सकते हैं. 1057 01:10:17,280 --> 01:10:22,520 यह बहुत आसान है और क्या आप इस बात से कर सकते हैं एक साथ समूह डेटा है 1058 01:10:22,520 --> 01:10:24,810 आप संबंधित है कि डेटा का एक गुच्छा है. 1059 01:10:24,810 --> 01:10:26,850 यह आप पर एक कार का वर्णन करने की जरूरत है सब बातें है, क्योंकि 1060 01:10:26,850 --> 01:10:29,050 आप विभिन्न स्थानों के एक झुंड में यह करने की जरूरत नहीं है. 1061 01:10:29,050 --> 01:10:35,300 तुम सिर्फ जावास्क्रिप्ट में 1 वस्तु में छड़ी कर सकते हैं. 1062 01:10:35,300 --> 01:10:39,090 आप शायद जानते हैं, पुनरावृति को उन कठिन कार्यों में से एक है. 1063 01:10:39,090 --> 01:10:43,810 तुम बस फिर से एक से अधिक से अधिक यह कर. आप कार में हर वस्तु से बात करने की जरूरत है 1064 01:10:43,810 --> 01:10:47,340 या आप एक सूची या ऐसा कुछ में हर मद के माध्यम से जाने की जरूरत है. 1065 01:10:47,340 --> 01:10:51,770 तो कृपया जावास्क्रिप्ट, पीएचपी, एक foreach वाक्यविन्यास के समान है. 1066 01:10:51,770 --> 01:10:54,590 इस मामले में, यह पाश में के लिए एक है. 1067 01:10:54,590 --> 01:10:57,300 आप केवल वस्तुओं पर इस का उपयोग करना चाहते हैं. 1068 01:10:57,300 --> 01:11:01,030 आप सरणियों पर इस का उपयोग हो जो कुछ समस्याएं हैं. 1069 01:11:01,030 --> 01:11:03,750 यह आम तौर पर है, हालांकि, कि बहुत उपयोगी है, उन चीजों में से एक है 1070 01:11:03,750 --> 01:11:06,590 आप भूमि के ऊपर का एक बहुत समाप्त क्योंकि 1071 01:11:06,590 --> 01:11:10,270 तुम अपने आप से अपने उद्देश्य में सब कुछ ऊपर खींचने के लिए नहीं है क्योंकि. 1072 01:11:10,270 --> 01:11:12,300 आप सभी प्रमुख नाम याद नहीं करना पड़ेगा. 1073 01:11:12,300 --> 01:11:18,270 आप बस की तरह इस वाक्य रचना में उन्हें वापस मिलता है. 1074 01:11:18,270 --> 01:11:21,500 इस में, के लिए के साथ, तुम सिर्फ याद रखना चाहते हैं 1075 01:11:21,500 --> 01:11:27,180 आप तालिका हैश करने के लिए एक बहुत ही इसी तरह, सभी चाबी वापस हो रही है. 1076 01:11:27,180 --> 01:11:30,880 आप उस से याद है कि आप एक स्ट्रिंग में रखा जाएगा, जब आप बाहर कुछ मिल सकता है 1077 01:11:30,880 --> 01:11:33,840 कि इसके साथ एक संबद्ध मूल्य होगा. 1078 01:11:33,840 --> 01:11:36,360 क्या आप इस बात से कर सकते हैं, आप बिलकुल ठीक कह सकता है 1079 01:11:36,360 --> 01:11:42,120 मैं एक कार में डाल दिया, और मैं एक फेरारी यह कहा जाता है. 1080 01:11:42,120 --> 01:11:45,290 ताकि आप बाद में फिर स्ट्रिंग फेरारी में डाल सकते हैं, और आपको लगता है कि बाहर निकल सकते हैं. 1081 01:11:45,290 --> 01:11:50,000 और तुम पाश में के लिए के साथ, एक पाश में ऐसा कर सकते हैं. 1082 01:11:50,000 --> 01:11:53,320 तो सिर्फ वस्तुओं के बारे में अधिक. आपको याद करने की जरूरत है इस से चाबी बात 1083 01:11:53,320 --> 01:12:00,340 , आप इन के साथ चाहते हैं जब भी आप वाक्यविन्यास की तरह वस्तु संरचना का उपयोग कर सकते हैं 1084 01:12:00,340 --> 01:12:04,590 क्या आपके स्ट्रिंग के रूप में उपयोग करने के लिए जा रहा एक वैध चर नाम नहीं है अगर छोड़कर. 1085 01:12:04,590 --> 01:12:07,650 आपको लगता है कि वहाँ पर देखने के लिए तो, अगर हम रिक्त स्थान के साथ कुंजी है. 1086 01:12:07,650 --> 01:12:12,500 ठीक है, तुम object.key डाल रहे थे, अंतरिक्ष, साथ, अंतरिक्ष, रिक्त स्थान, 1087 01:12:12,500 --> 01:12:15,320 कि सिर्फ वाक्य रचना से मतलब नहीं होता. 1088 01:12:15,320 --> 01:12:22,730 तो आप केवल ब्रैकेट वाक्यविन्यास के इस तरह के साथ ऐसा कर सकते हैं. 1089 01:12:22,730 --> 01:12:26,520 >> इसके अलावा, जावास्क्रिप्ट बहुत गुंजाइश वार PHP के लिए है. 1090 01:12:26,520 --> 01:12:29,050 आप गुंजाइश को संबोधित करने का 2 तरीके हैं. 1091 01:12:29,050 --> 01:12:31,960 आप एक चर के सामने वार नहीं कर सकते हैं, 1092 01:12:31,960 --> 01:12:34,060 और कहा कि अभी यह वैश्विक है इसका मतलब है. 1093 01:12:34,060 --> 01:12:37,050 आप कहीं से भी देख सकते हैं. आप एक अगर बयान में इस डाल रहे थे, तो भी 1094 01:12:37,050 --> 01:12:42,430 कहीं और अपने कोड में उस बिंदु के बाद आप उस चर देख सकता था. 1095 01:12:42,430 --> 01:12:46,730 एक और बात है, हालांकि, यह तुम अंदर हो जो भी कार्य करने के लिए सीमित है, वर के साथ है 1096 01:12:46,730 --> 01:12:48,870 आप एक समारोह में नहीं हैं, तो ठीक है, यह वैश्विक है. 1097 01:12:48,870 --> 01:12:53,900 आप एक समारोह में कर रहे हैं लेकिन अगर यह है कि समारोह के भीतर ही दिखाई है. 1098 01:12:53,900 --> 01:12:56,420 मैं हाँ, एक उदाहरण है, लेकिन नहीं है. यह उन चीजों में से एक है, जहां 1099 01:12:56,420 --> 01:12:59,900 आप, आप वैश्विक क्या बनना चाहते चर का प्रबंधन कर सकते हैं 1100 01:12:59,900 --> 01:13:03,810 क्या चर आप स्थानीय होना चाहता हूँ, लेकिन आप इस बारे में सावधान रहने की जरूरत है, 1101 01:13:03,810 --> 01:13:06,890 क्या आप सी में करना ठीक अनाज नियंत्रण के प्रकार की जरूरत नहीं है क्योंकि, 1102 01:13:06,890 --> 01:13:15,820 कुछ पाश के लिए एक में घोषित किया जाता है, तो यह पाश के लिए कि में रहने के लिए जा रहा है, जहां. 1103 01:13:15,820 --> 01:13:18,790 हम वास्तव में के लिए जावास्क्रिप्ट का उपयोग कर के बारे में परवाह बात सही, वेब पेज से छेड़छाड़ कर रहा है? 1104 01:13:18,790 --> 01:13:21,800 मेरा मतलब है, यही कारण है कि हम यह कर रहे है. 1105 01:13:21,800 --> 01:13:23,840 >> हम डोम बुलाया कुछ का उपयोग करने के लिए. 1106 01:13:23,840 --> 01:13:25,850 दस्तावेज़ ऑब्जेक्ट मॉडल. 1107 01:13:25,850 --> 01:13:29,430 असल में, यह क्या करता है यह सब अपने HTML लेता है 1108 01:13:29,430 --> 01:13:34,110 और एक दूसरे के अंदर नेस्ट कर रहे हैं कि वस्तुओं का एक गुच्छा में मॉडल इसे बाहर. 1109 01:13:34,110 --> 01:13:37,080 आप इस तरह से कुछ के साथ बाहर शुरू. 1110 01:13:37,080 --> 01:13:44,770 आप बाहर वहाँ कोड का एक गुच्छा है कि तरह की है, मेरे लिए सही है, पर है - 1111 01:13:44,770 --> 01:13:46,640 तुम्हें पता है कि हेरफेर करने के लिए बहुत मुश्किल होगा लगता होगा, 1112 01:13:46,640 --> 01:13:48,700 आप पाठ का एक गुच्छा के माध्यम से पार्स करने की होगी क्योंकि 1113 01:13:48,700 --> 01:13:52,080 और बातों के अलावा टुकड़ा खा रहे हैं. और इसे सही ढंग क्या स्वरूपित नहीं किया गया तो क्या होगा? 1114 01:13:52,080 --> 01:13:54,880 बुरी बातें होती होगी. 1115 01:13:54,880 --> 01:13:58,140 तो, जावास्क्रिप्ट आप के लिए इस बात का ख्याल रखता है, और आप एक अच्छा डेटा संरचना मिल 1116 01:13:58,140 --> 01:14:01,390 आप सिर्फ एक दस्तावेज है, जहां मेरी बाईं तरफ एक तरह, 1117 01:14:01,390 --> 01:14:03,530 और कि अंदर आप HTML बुलाया कुछ है 1118 01:14:03,530 --> 01:14:05,600 और कि अंदर आप एक सिर और एक शरीर है 1119 01:14:05,600 --> 01:14:08,420 और कहा कि सिर के अंदर तुम, वगैरह, वगैरह वगैरह एक शीर्षक है. 1120 01:14:08,420 --> 01:14:11,810 यह है, यह सिर्फ इतना है कि एक वेब पेज से छेड़छाड़ को सरल 1121 01:14:11,810 --> 01:14:14,190 ओह, मैं सिर्फ इस उद्देश्य के लिए बात करना चाहता हूँ. 1122 01:14:14,190 --> 01:14:21,340 क्या आप अपने आप को बनाया एक और उद्देश्य के लिए बात करेंगे एक बहुत ही इसी तरह की तरह. 1123 01:14:21,340 --> 01:14:25,980 जैसे मैंने कहा, सभी डोम दस्तावेज़ वस्तु में है. 1124 01:14:25,980 --> 01:14:29,290 या तो यह सिर्फ एक जगह है और उसके बाद आप चीजों को खोजने के लिए यह भीतर जा सकते हैं 1125 01:14:29,290 --> 01:14:33,880 और आप यह कर सकते हैं - यह वहाँ है, यह कर की पुरानी शैली है, 1126 01:14:33,880 --> 01:14:38,130 आप document.getElementById करते हैं, और जहां उसके बाद नाम, 1127 01:14:38,130 --> 01:14:42,420 आप शायद बता सकते हैं और, यह एक समय के बाद बहुत बोझल हो जाता है. 1128 01:14:42,420 --> 01:14:44,480 तो आप शायद ऐसा करने के लिए नहीं करना चाहती. हम यही कारण है कि 1129 01:14:44,480 --> 01:14:48,760 हम इस बारे में बाद में बात करने जा रहे हैं अगले बात. 1130 01:14:48,760 --> 01:14:52,510 यहां महत्वपूर्ण बात यह है, कि सब ठीक है, तुम सही, इन सभी तत्वों है? 1131 01:14:52,510 --> 01:14:56,400 तो शायद मैं जब पेज लोड कुछ का रंग बदल सकते हैं. 1132 01:14:56,400 --> 01:14:58,380 तो क्या हुआ? क्या मेरे उपयोगकर्ता कुछ क्लिक करता है तो क्या होगा? 1133 01:14:58,380 --> 01:15:00,540 मुझे लगता है वे कुछ क्लिक करने पर यह दिलचस्प कुछ करना चाहते हैं. 1134 01:15:00,540 --> 01:15:02,600 हम घटनाओं है यही कारण है कि. 1135 01:15:02,600 --> 01:15:05,330 आप मूल रूप से अपनी डोम में किसी भी तत्व को पा सकते हैं, 1136 01:15:05,330 --> 01:15:08,560 और फिर हे, कहते हैं. , इस लोड करता है या किसी को यह क्लिक करता है 1137 01:15:08,560 --> 01:15:11,410 या वे माउस इसे खत्म, इसके साथ कुछ करना है. 1138 01:15:11,410 --> 01:15:15,330 और जो तुम्हारे पास क्या आप के लिए इस संभाल कि कार्य किया है. 1139 01:15:15,330 --> 01:15:17,980 इन कार्यों घटना संचालकों हैं. 1140 01:15:17,980 --> 01:15:20,440 क्या they're - यह कह रही है की सिर्फ एक अच्छा तरीका है, 1141 01:15:20,440 --> 01:15:23,500 इस घटना होता है जब इस समारोह में केवल मार डाला है. 1142 01:15:23,500 --> 01:15:28,070 तो यह होता है कि घटना को संभालती है. 1143 01:15:28,070 --> 01:15:30,810 यह आपको एक ईवेंट हैंडलर बाहर करना होगा कैसे है. 1144 01:15:30,810 --> 01:15:34,750 मैं कुछ बटन है, और आप इसे क्लिक करते हैं, तो यह फट जाएगा. 1145 01:15:34,750 --> 01:15:40,560 तो बटन पर क्लिक न करें. 1146 01:15:40,560 --> 01:15:42,910 यह सही है, यह आ का एक तरीका है? 1147 01:15:42,910 --> 01:15:46,430 , आप एक बटन टैग है, और क्लिक पर आप कहते हैं कि एक स्ट्रिंग है 1148 01:15:46,430 --> 01:15:50,460 ओह, वैसे, मैं मेरे लिए इस विस्फोट बात करते हैं. 1149 01:15:50,460 --> 01:15:53,990 अन्यथा, यह सिर्फ तुम अभी बनाया एक नियमित रूप से बटन की तरह है. 1150 01:15:53,990 --> 01:15:56,550 आप भी इस दूसरे तरीके से कर सकते हैं, 1151 01:15:56,550 --> 01:16:02,770 हम jQuery के बारे में बात करने के बाद डोम तत्व हथियाने, लेकिन हम चाहते हैं कि बचा लेंगे. 1152 01:16:02,770 --> 01:16:07,580 >> JQuery: यह पार ब्राउज़र है कि एक पुस्तकालय है. 1153 01:16:07,580 --> 01:16:09,580 तुम बहुत ज्यादा कुछ में इसका इस्तेमाल कर सकते हैं. 1154 01:16:09,580 --> 01:16:12,090 और यह सिर्फ तुम्हारे साथ काम करने के लिए उपकरणों का एक बहुत कुछ देता है. 1155 01:16:12,090 --> 01:16:15,850 जावास्क्रिप्ट, शक्तिशाली, जबकि आप सभी की जरूरत के उपकरण नहीं है क्योंकि 1156 01:16:15,850 --> 01:16:20,550 वास्तव में एक वेब अनुप्रयोग से निपटने के लिए बॉक्स से बाहर तुम करना चाहते हो सकता है. 1157 01:16:20,550 --> 01:16:24,650 इसलिए यह बहुत सारी बातें सरल करता है कि आप कार्यों की एक बहुत कुछ देता है 1158 01:16:24,650 --> 01:16:28,760 आप सामान्य रूप से और फिर से और अधिक से अधिक, अपने आप को लिखना होगा कि बॉक्स के बाहर. 1159 01:16:28,760 --> 01:16:31,600 और सिर्फ बातें बहुत आसान बना देता है. 1160 01:16:31,600 --> 01:16:35,780 तुम भी आप उन सभी तत्वों को बाहर ले जाने जो चयनकर्ताओं, है 1161 01:16:35,780 --> 01:16:42,800 अपने डोम और अधिक से बस, बजाय ये बहुत लंबे समारोह फोन का उपयोग करने के लिए होने का. 1162 01:16:42,800 --> 01:16:46,630 इन चयनकर्ताओं पर. तुम चलो कहना है वहाँ ऊपर है, 1163 01:16:46,630 --> 01:16:49,800 मैं आईडी के साथ एक तत्व प्राप्त करना चाहते हैं "रॉक." 1164 01:16:49,800 --> 01:16:56,450 खैर, jQuery में, यह सिर्फ $ और फिर एक पाउंड है कि एक स्ट्रिंग, और तब है "रॉक." 1165 01:16:56,450 --> 01:17:01,960 यह बहुत आसान है और इस समस्या से निपटने के पारंपरिक जावास्क्रिप्ट जिस तरह से एक बहुत तेज है. 1166 01:17:01,960 --> 01:17:06,120 और तुम वर्गों और तत्व प्रकार के लिए इसी तरह की बातें है. 1167 01:17:06,120 --> 01:17:08,140 jQuery है - शांत सुविधाओं की है कि आप की तरह सेक कर सकते है 1168 01:17:08,140 --> 01:17:14,350 अपने डोम पर अपने प्रश्नों के नीचे बहुत, बहुत तेज. 1169 01:17:14,350 --> 01:17:18,980 अब हम वापस घटना से निपटने के लिए कर रहे हैं, और यह आपके jQuery में एक घटना को संभाल कैसे होगा है. 1170 01:17:18,980 --> 01:17:23,090 तो क्या हम यहाँ जा रहे हैं हम सब ठीक है, कह रहे है. मैं एक स्क्रिप्ट टैग है, है ना? 1171 01:17:23,090 --> 01:17:25,400 इसलिए मैं इस इनलाइन जावास्क्रिप्ट है. 1172 01:17:25,400 --> 01:17:27,750 हम क्या करने जा रहे हैं हम सब ठीक है, कहने के लिए जा रहे है. 1173 01:17:27,750 --> 01:17:30,860 दस्तावेज़, दस्तावेज़ लोड किया गया है, जिसका अर्थ है, के लिए तैयार है 1174 01:17:30,860 --> 01:17:34,660 , हम उस समारोह में जाने के लिए जा रहे हैं, और हम सब सही कहने जा रहे हैं 1175 01:17:34,660 --> 01:17:37,060 इस समारोह में वास्तव में कुछ और कर रहा है. 1176 01:17:37,060 --> 01:17:42,320 यह मूल रूप से सब ठीक है, मुझे आईडी के साथ तत्व मिलता है, कह रही है "MyID." 1177 01:17:42,320 --> 01:17:47,960 और फिर यह आप इसे क्लिक करने पर निष्पादित करता है कि एक समारोह हैंडलर दे. 1178 01:17:47,960 --> 01:17:49,820 असल में यह क्या करता है, यह कहना है, सब ठीक है. 1179 01:17:49,820 --> 01:17:52,630 , पेज लोड किया जाता है, तो मैं में, इस तत्व को खोजने के लिए जा रहा हूँ 1180 01:17:52,630 --> 01:17:56,420 यह इस ईवेंट हैंडलर देते हैं, और यह मूल रूप से आप के लिए अपने पृष्ठ सेट. 1181 01:17:56,420 --> 01:18:00,520 और यह आपके घटना से निपटने के बारे में सोचना चाहिए कि कैसे है. 1182 01:18:00,520 --> 01:18:06,310 तुम बस के बारे में सोचने के लिए ठीक है, कुछ होता है, मैं ऐसा करने के लिए क्या चाहिए चाहते हैं? 1183 01:18:06,310 --> 01:18:10,520 क्या आप ठीक है, मैं इस बात को यकीन है कि इस बात की वार्ता करने की जरूरत है, के बारे में सोचना नहीं चाहता है 1184 01:18:10,520 --> 01:18:14,660 इस बात ब्ला ब्ला ब्ला, आप सिर्फ घटनाओं के संदर्भ में बात में बात करना चाहते हैं. 1185 01:18:14,660 --> 01:18:17,650 जब ऐसा होता है, ऐसा होता है. जब ऐसा होता है, ऐसा होता है. 1186 01:18:17,650 --> 01:18:20,240 चीजें अन्य बातों के ट्रिगर तो यह बहुत अच्छी बात है. 1187 01:18:20,240 --> 01:18:22,150 लेकिन आप जटिल कोड कोशिश करते हैं और ऐसा नहीं करना चाहते हैं 1188 01:18:22,150 --> 01:18:24,130 जहां आप एक ही समय में कई चीजों को ट्रिगर कर रहे हैं 1189 01:18:24,130 --> 01:18:28,860 आप बस अपने आप को एक सिर दर्द देने के लिए जा रहे हैं. 1190 01:18:28,860 --> 01:18:32,340 >> ठीक है. अब हम अपने पेज घटनाओं को संभाल करने के लिए मिल सकता है, 1191 01:18:32,340 --> 01:18:35,640 लेकिन मेरे उपयोगकर्ता एक बटन क्लिक कहते हैं. 1192 01:18:35,640 --> 01:18:38,040 क्या, मैं वापस सर्वर से अनुरोध है कि भेजना चाहते हैं 1193 01:18:38,040 --> 01:18:41,100 एक नया पेज लोड होने की वजह से है, लेकिन मैं पृष्ठ को फिर से लोड नहीं करना चाहती 1194 01:18:41,100 --> 01:18:44,390 हर बार की तरह कर थकाऊ हो जाता है, और यही कारण है कि मैं क्या ज़रूरत है 1195 01:18:44,390 --> 01:18:47,430 फिर हैडर नीचे खींच, और फिर पाद लेख, 1196 01:18:47,430 --> 01:18:49,670 और सभी पेज के तत्वों को फिर से 1197 01:18:49,670 --> 01:18:53,180 सिर्फ ग्रीटिंग या समय को ताज़ा करने के लिए? 1198 01:18:53,180 --> 01:18:55,290 हम अजाक्स की तरह कुछ है तो इसलिए. 1199 01:18:55,290 --> 01:18:59,150 क्या हम अजाक्स के साथ यहाँ कर सकते हैं, हम सब सही कह सकता है 1200 01:18:59,150 --> 01:19:01,290 मैं सर्वर से कुछ डेटा भेजने के लिए चाहते हैं, 1201 01:19:01,290 --> 01:19:04,010 और मैं तो मैं अपने पेज को अपडेट कर सकते हैं एक प्रतिक्रिया वापस पाने के लिए चाहते हैं, 1202 01:19:04,010 --> 01:19:12,120 या शायद सिर्फ जरूरी उपयोगकर्ता के लिए कुछ भी नहीं दिखा है कि कुछ एल्गोरिथम गणना करते हैं. 1203 01:19:12,120 --> 01:19:15,500 क्या आप ऐसा करने की जरूरत है? वैसे, अगर आप आप से बात करने की जरूरत है एक यूआरएल की जरूरत है. 1204 01:19:15,500 --> 01:19:18,650 अपने सर्वर सिर्फ जादुई कहीं से में सुन सकते हैं. 1205 01:19:18,650 --> 01:19:21,960 आप इस डेटा भेज रहे हैं एक विशिष्ट जगह की आवश्यकता है. 1206 01:19:21,960 --> 01:19:26,240 और तुम भी भेजने के लिए कुछ डेटा की जरूरत है, या हो सकता है यह एक तिथिहीन क्वेरी है. 1207 01:19:26,240 --> 01:19:31,380 तुम बस अरे, मैं जिंदा, या ऐसा कुछ कर रहा हूँ, सर्वर को वापस पिंग और कहना चाहता हूँ. 1208 01:19:31,380 --> 01:19:35,150 और फिर आप मूल रूप से सफलता के साथ संभालती है कि एक समारोह चाहते हैं. 1209 01:19:35,150 --> 01:19:38,250 मान लीजिए कि आप अपने सर्वर से कुछ जानकारी वापस मिल हम कहते हैं, 1210 01:19:38,250 --> 01:19:42,960 और आप अपने पृष्ठ पर उपयोगकर्ता के शीर्षक बदलना चाहते हैं. 1211 01:19:42,960 --> 01:19:44,930 तो तुम वापस जानकारी मिल जाएगा, 1212 01:19:44,930 --> 01:19:48,860 और आप स्क्रीन को उस धक्का होगा. 1213 01:19:48,860 --> 01:19:51,170 पेज तैयार है तो क्या होता है, यह है, 1214 01:19:51,170 --> 01:19:56,500 आप स्वागतकर्ता नामक इस बटन के लिए क्लिक समारोह पर एक बना. 1215 01:19:56,500 --> 01:19:58,810 उस बटन धक्का दिया है, तब क्या यह तो करता है, 1216 01:19:58,810 --> 01:20:03,700 आप greetings.php के लिए बात करते हैं, तो आप एक पोस्ट अनुरोध करना 1217 01:20:03,700 --> 01:20:07,290 और तुम अरे, मुझे अपने पेज से कुछ मिलता है, का कहना है. 1218 01:20:07,290 --> 01:20:09,890 हम वास्तव में, कि वर्णन करने के लिए की जरूरत है, लेकिन greetings.php नहीं है 1219 01:20:09,890 --> 01:20:12,480 चलो बस कहना है, "हैलो दुनिया." वापस देता है 1220 01:20:12,480 --> 01:20:15,650 तो हम, "नमस्ते विश्व" यह वापस पाने के लिए और इस की सफलता पर 1221 01:20:15,650 --> 01:20:20,730 कुछ गलत हो जाता संभालने, तो हम सिर्फ इस लक्ष्य स्थान पर जाना 1222 01:20:20,730 --> 01:20:25,720 हम निर्दिष्ट और हम बस वहाँ में प्रतिक्रिया छड़ी कि. 1223 01:20:25,720 --> 01:20:31,560 और यह एक Ajax क्वेरी स्थापित करने का एक बहुत ही आसान तरीका है. 1224 01:20:31,560 --> 01:20:34,340 >> बहुत जल्दी, रोब की तरह, पहले से ही इस उल्लेख 1225 01:20:34,340 --> 01:20:37,170 बातें गलत जा सकते हैं, बुरी बातें हो सकता है, 1226 01:20:37,170 --> 01:20:42,660 तो आप इन HTTP प्रतिक्रिया कोड के साथ खुद को परिचित करना चाहते हैं. 1227 01:20:42,660 --> 01:20:46,030 क्या इन कर रहे हैं कि सब कुछ ठीक चला गया, 200, की तरह, सिर्फ हैं. 1228 01:20:46,030 --> 01:20:48,670 कुछ और, बुरी बातें हुआ. 1229 01:20:48,670 --> 01:20:50,790 यह आम तौर पर आप याद रखना चाहते हैं तो बात है. 1230 01:20:50,790 --> 01:20:53,440 लेकिन यह इन सभी को पता करने के लिए अच्छा है. 1231 01:20:53,440 --> 01:20:55,970 और अंत में, एक बार हम उस सब के माध्यम से चला गया है, 1232 01:20:55,970 --> 01:20:58,680 हम डिजाइन के बारे में बहुत जल्दी से बात करने की जरूरत 1233 01:20:58,680 --> 01:21:00,620 और फिर हम आप सब छोड़ दे सकते हैं. 1234 01:21:00,620 --> 01:21:03,410 डिजाइन. आप याद रखना चाहते हैं बातें. 1235 01:21:03,410 --> 01:21:06,950 इन सवालों से पूछो: कौन इस का उपयोग होगा? 1236 01:21:06,950 --> 01:21:09,580 क्या वे के लिए यह प्रयोग किया जाएगा? मेरे उपयोगकर्ताओं के बारे में परवाह है? 1237 01:21:09,580 --> 01:21:11,750 वे क्या बारे में परवाह नहीं है? 1238 01:21:11,750 --> 01:21:14,500 तुम बस एक app बनाने के लिए और यह सिर्फ बढ़ने नहीं करना चाहती 1239 01:21:14,500 --> 01:21:18,270 और इस विशाल, तुम भी खत्म नहीं कर सकता कि सभी उपभोक्ता बात हो गई है. 1240 01:21:18,270 --> 01:21:23,900 आप पता करना चाहते हैं असतत लक्ष्यों और योजनाओं और बातें करना चाहते हैं. 1241 01:21:23,900 --> 01:21:29,000 यह सरल बनाएं. इस सब के सब मूल रूप से कहते हैं, 1242 01:21:29,000 --> 01:21:34,950 यह आसान उपयोगकर्ता के लिए इसका इस्तेमाल करने के लिए करते हैं, वास्तव में, यह इस स्लाइड की तरह पाठ की एक विशाल बूँद है नहीं बनाते हैं. 1243 01:21:34,950 --> 01:21:38,020 तुम बस यह किसी में जाने के लिए यह बहुत आसान है जहां कुछ होना चाहता हूँ 1244 01:21:38,020 --> 01:21:40,800 और वे क्या करना चाहते हैं करते हैं. 1245 01:21:40,800 --> 01:21:42,920 आप उन्हें 5 पन्नों नेविगेट करने के लिए है नहीं करना चाहती 1246 01:21:42,920 --> 01:21:45,460 आपकी साइट के अपने प्रधानमंत्री समारोह को पाने के लिए. 1247 01:21:45,460 --> 01:21:49,290 गूगल से पहले 5 पृष्ठों की थी, तो आप भी कुछ खोज सकते हैं, 1248 01:21:49,290 --> 01:21:53,080 कोई भी इसका इस्तेमाल होता है. 1249 01:21:53,080 --> 01:21:55,890 और अंत में, कागज प्रोटोटाइप, फोकस समूह. 1250 01:21:55,890 --> 01:21:59,220 अच्छी डिजाइन और परीक्षण प्रथाओं है. 1251 01:21:59,220 --> 01:22:00,730 आप यह आप के लिए काम करता है, सिर्फ इसलिए कि 1252 01:22:00,730 --> 01:22:04,860 किसी और को यह काम करता है सोचता है मतलब नहीं है. 1253 01:22:04,860 --> 01:22:14,490 लेकिन हाँ, यह बात है. 1254 01:22:14,490 --> 01:22:17,490 [CS50.TV]