रैपिड रिस्पांस: डेटाबेस डिबगिंग और बचाव के लिए रूपरेखा

लेखक: Roger Morrison
निर्माण की तारीख: 22 सितंबर 2021
डेट अपडेट करें: 1 जुलाई 2024
Anonim
रैपिड रिस्पांस: डेटाबेस डिबगिंग और बचाव के लिए प्रोफाइलिंग
वीडियो: रैपिड रिस्पांस: डेटाबेस डिबगिंग और बचाव के लिए प्रोफाइलिंग

ले जाओ: होस्ट एरिक कवनघ ने डॉ। रॉबिन ब्लोर, डीज़ ब्लांचफील्ड और आईडीईआरएर्ट बर्ट स्कल्ज़ो के साथ डेटाबेस डिबगिंग और प्रोफाइलिंग पर चर्चा की।



आप वर्तमान में लॉग इन नहीं हैं। वीडियो देखने के लिए कृपया लॉग-इन या साइन-अप करें।

एरिक कवनघ: ठीक है, देवियों और सज्जनों, बुधवार को 4:00 पूर्वी समय है, और निश्चित रूप से इसका मतलब है।

रॉबिन ब्लोर: आप सुन नहीं सकते, एरिक।

एरिक कवनघ: मैं वहां कुछ दिन पहले गया था, इसलिए आप अकेले नहीं थे। लेकिन इसलिए आज का विषय वास्तव में दिलचस्प है। यह इस तरह की बात है कि आप यह सुनिश्चित करना चाहते हैं कि आपकी कंपनी की पृष्ठभूमि में ऐसा हो रहा है, जब तक कि आप ऐसा करने वाले व्यक्ति नहीं हैं, जिस स्थिति में आप सुनिश्चित करना चाहते हैं कि आप इसे ठीक से कर रहे हैं। क्योंकि डिबगिंग के बारे में बात कर रहे थे। किसी को कीड़े पसंद नहीं हैं, किसी को भी पसंद नहीं है जब सॉफ्टवेयर काम करना बंद कर देता है - लोग परेशान हो जाते हैं, उपयोगकर्ता बेफ़िक्र हो जाते हैं। यह अच्छा नहीं है। तो, "रैपिड रिस्पांस: डेटाबेस डिबगिंग और प्रोफाइलिंग टू द रेस्क्यू" के बारे में बात करने जा रहे थे।


सही मायने में तुम्हारे बारे में एक जगह है, मुझे मारा, निश्चित रूप से @eric_kavanagh पर।

यह वर्ष गर्म है। और डिबगिंग गर्म होने जा रही है, कोई बात नहीं। यह वास्तव में इन समस्याओं में से एक होने जा रहा है, यानी दूर जाना कभी नहीं, भले ही हम इस सामान पर कितना अच्छा हो, हमेशा मुद्दे बनने जा रहे हैं, इसलिए कुंजी यह है कि आप उन मुद्दों को जल्दी से कैसे हल कर सकते हैं? आदर्श रूप से, आपके पास महान प्रोग्रामर, महान वातावरण हैं, जहां बहुत ज्यादा गलत नहीं होता है, लेकिन जैसा कि पुरानी कहावत है, "दुर्घटनाओं के परिवारों में सबसे अच्छा होता है।" और वही संगठनों के लिए सही है। तो, यह सामान होता है, यह होने जा रहा है, सवाल यह है कि इससे निपटने और उन समस्याओं को हल करने के लिए आपका समाधान क्या होने जा रहा है?

डॉ। रॉबिन ब्लोर से सुनें, फिर नीचे से हमारा अपना डीज़ ब्लैंचफ़ील्ड, और निश्चित रूप से, हमारे अच्छे दोस्त, बर्ट स्कल्ज़ो, आइडेरा से। और वास्तव में, Im रॉबिन ब्लोर को चाबियां सौंपने जा रहा हूं, इसे हटा दें। मंजिल आपकी है।

रॉबिन ब्लोर: ठीक। यह एक दिलचस्प विषय है। मैंने सोचा क्योंकि डीज़ शायद डिबगिंग के बारे में वास्तविक तकनीकों और युद्ध की कहानियों के बारे में चल रहा है, मैंने सोचा कि ईद सिर्फ एक पृष्ठभूमि पर चर्चा करता है ताकि हमें व्हाट्सएप की पूरी तरह से गोल तस्वीर मिल जाए। मैंने इसे लंबे समय तक किया था, और मैं एक कोडर हुआ करता था, इसलिए इसकी तरह, और मैं खुले स्रोत के विचार के बारे में गीतात्मक वैक्सिंग शुरू करने के लिए इस प्रस्तुति के साथ लगभग ललचा गया था लेकिन मैंने सोचा कि बीमार किसी और को छोड़ दें।


प्रसिद्ध कीड़े की एक सूची है, और इनमें से अधिकांश anybodys शीर्ष सूची पर मिलता है, मूल रूप से, पिछले दो लागत को छोड़कर सभी कम से कम $ 100 मिलियन। पहला मंगल मार्बल क्लाइमेट ऑर्बिटर था, जो अंतरिक्ष में खो गया था और यह एक कोडिंग समस्या के कारण था, जहां लोग मीट्रिक इकाइयों (हंसते हुए) पैर और इंच के साथ भ्रमित होते थे। एरियन फाइव फ्लाइट 501 एक इंजन के बीच एक बेमेल था जिसे लगाया गया था और जिन कंप्यूटरों को लॉन्च किया जाना था, वे रॉकेट को चलाने वाले थे। कई कंप्यूटर विफलताओं, विस्फोट रॉकेट, शीर्षक समाचार। 1982 में सोवियत गैस पाइपलाइन, कहा जाता है कि यह ग्रह के इतिहास में सबसे बड़ा विस्फोट है; मुझे यकीन नहीं है कि यह है। रूसियों ने कुछ स्वचालित नियंत्रण सॉफ्टवेयर चुराए, और सीआईए को एहसास हुआ कि वे ऐसा करने जा रहे हैं और इसमें कीड़े डाल रहे हैं, और सोवियत ने इसे बिना परीक्षण के लागू किया। तो, एक पाइपलाइन को उड़ा दिया, सोचा कि मनोरंजक था।

मॉरिस कृमि एक कोडिंग प्रयोग था, जो अचानक एक क्रूर कृमि बन गया, जो हर एक दौर में चला गया- यह जाहिर तौर पर $ 100 मिलियन की क्षति का कारण बना; बेशक एक अनुमान है। इंटेल ने मैथ्स चिप के साथ एक प्रसिद्ध त्रुटि की - 1993 में पेंटियम चिप पर एक गणित निर्देश - जिसकी लागत $ 100 मिलियन से अधिक थी। Apple मैप्स प्रोग्राम संभवतः सबसे खराब और सबसे विनाशकारी लॉन्च है जो ऐप्पल ने कभी किया है। जिन लोगों ने इसका उपयोग करने की कोशिश की, वे थे, मेरा मतलब है, कोई व्यक्ति 101 के साथ चला रहा था, और पता चला कि ऐप्पल मैप ने कहा कि वे सैन फ्रांसिस्को खाड़ी के बीच में थे। इसलिए, लोगों ने Apple मैप्स ऐप को iLost के रूप में संदर्भित करना शुरू कर दिया। - 1990 में हमारा सबसे लंबा आउटेज - इसकी सिर्फ कुछ की लागत के दृष्टिकोण से दिलचस्प है - एटी एंड टी लगभग नौ घंटे के लिए बाहर थे और लंबी दूरी की कॉल में इसकी लागत $ 60 मिलियन थी।

और मैं एक यू.के. बीमा कंपनी और डेटाबेस में था, उन्होंने डेटाबेस का एक नया संस्करण लागू किया और इसने डेटा को मिटा दिया। और मुझे वह बहुत अच्छी तरह से याद है, क्योंकि मुझे इसके बाद किसी तरह के डेटाबेस चयन में भाग लेने के लिए बुलाया गया था। और यह बहुत दिलचस्प था कि उन्होंने डेटाबेस का एक नया संस्करण लिया था, और उनके पास परीक्षणों की एक बैटरी थी जो उन्होंने डेटाबेस के नए संस्करणों के लिए की थी कि यह सभी परीक्षण पास कर चुका था। यह डेटा पोंछने के लिए वास्तव में अस्पष्ट तरीका पाया गया।

तो, वैसे भी, कि। मैंने सोचा था कि प्रतिबाधा बेमेल और एसक्यूएल जारी करने के बारे में ईद की बात करता हूं। यह दिलचस्प है कि संबंधपरक डेटाबेस तालिकाओं में डेटा संग्रहीत करते हैं और कोडर ऑब्जेक्ट संरचनाओं में डेटा में हेरफेर करते हैं जो वास्तव में तालिकाओं के लिए बहुत अच्छी तरह से मैप नहीं करते हैं। और उस वजह से, आपको प्रतिबाधा बेमेल कहा जाने वाला व्हाट्सएप मिलता है, और किसी को इसके साथ किसी तरह से निपटना पड़ता है। लेकिन वास्तव में क्या होता है, क्योंकि एक मॉडल, कोडर्स मॉडल और डेटाबेस एक और मॉडल, विशेष रूप से संरेखित नहीं हैं। आपको ऐसे कीड़े मिलते हैं जो सिर्फ अगर उद्योग ने एक साथ काम किया है, जो मुझे लगता है कि प्रफुल्लित करने वाला है, का निर्माण किया है। तो, मूल रूप से, कोडर्स की तरफ, जब आप पदानुक्रम प्राप्त करते हैं तो यह प्रकार हो सकता है, यह सेट कर सकता है, यह खराब एपीआई क्षमता हो सकती है, यह बहुत सी चीजें हो सकती हैं जो डेटाबेस के साथ बातचीत में चीजों को बाहर फेंक देती हैं। लेकिन मेरे लिए यह बात सबसे दिलचस्प है; हमेशा मुझे आश्चर्य होता है कि आपके पास यह एसक्यूएल अवरोध था जो एक तरह से प्रतिबाधा भी है कि कोडर और डेटाबेस एक दूसरे के साथ काम करते हैं। तो, SQL के पास डेटा पहचान है, जो ठीक है और इसमें चयन, प्रोजेक्ट और जॉइन के लिए DML है, जो ठीक है। आप उस डेटाबेस से डेटा प्राप्त करने के मामले में बहुत अधिक क्षमता फेंक सकते हैं। लेकिन इसके पास चीजों को करने के लिए बहुत कम गणितीय भाषा है। यह इस और उस का एक सा है, और इसमें बहुत कम समय-आधारित सामान है। और उस वजह से, SQL एक अपूर्ण है, अगर आपको पसंद है, तो डेटा प्राप्त करने का साधन। इसलिए, डेटाबेस के लोगों ने डेटाबेस में रहने के लिए संग्रहीत प्रक्रियाओं का निर्माण किया और वहां रहने वाली संग्रहीत प्रक्रियाओं का कारण यह था कि आप वास्तव में प्रोग्राम में डेटा को आगे और पीछे फेंकना चाहते हैं।

कार्यक्षमता के कुछ के लिए अत्यंत विशिष्ट डेटा था, इसलिए यह सिर्फ संदर्भात्मक अखंडता और कैस्केडिंग को हटाता था और इस तरह की चीजें, डेटाबेस अचानक एक डेटाबेस में कार्यक्षमता डालने वाले सभी youre की देखभाल कर रहा था, जिसका मतलब निश्चित रूप से एक कार्यक्षमता के लिए था एप्लिकेशन को कोडर और डेटाबेस के बीच विभाजित किया जा सकता है। और इसने कुछ प्रकार के कार्यों को लागू करने का काम किया है जो वास्तव में काफी कठिन हैं और इसलिए अधिक त्रुटि की संभावना है। इसलिए, डेटाबेस गेम का एक पक्ष है, क्योंकि इसका मतलब है कि youve को उदाहरण के लिए बहुत सारे कार्यान्वयन में मिला है, कि Ive संबंधपरक डेटाबेस में शामिल किया गया है वास्तव में कोड का एक भयानक बहुत कुछ है जो संग्रहीत प्रक्रियाओं में बैठता है जो कोड द्वारा अलग से संभाला जाता है अनुप्रयोगों में बैठता है। और यह एक बहुत ही अजीब बात की तरह लगता है, इसकी विभिन्न चीजों को करने में काफी स्मार्ट होना चाहिए।

मैंने सोचा कि आईडी डेटाबेस प्रदर्शन के बारे में भी बात करता है क्योंकि प्रदर्शन त्रुटियों को अक्सर बग के रूप में माना जाता है, लेकिन मूल रूप से आप सीपीयू में, मेमोरी में, डिस्क पर, नेटवर्क पर एक अड़चन हो सकती है और लॉक होने के कारण आपके पास प्रदर्शन के मुद्दे हो सकते हैं। विचार यह होगा कि कोडर को वास्तव में प्रदर्शन के बारे में चिंतित होने की आवश्यकता नहीं है और डेटाबेस वास्तविक रूप से यथोचित प्रदर्शन करेगा। इसकी डिजाइन की जानी चाहिए ताकि कोडर को पता न चले। हालांकि, आपको खराब डेटाबेस डिज़ाइन मिलता है, आपको खराब प्रोग्राम डिज़ाइन मिलता है, आपको कार्यभार मिश्रण में संगामिति मिलती है, जिससे प्रदर्शन समस्याएं भी हो सकती हैं। आप लोड संतुलन प्राप्त करते हैं, आपको क्षमता नियोजन, डेटा विकास मिलता है - जो डेटाबेस को बस रोकने, या धीमा करने का कारण बन सकता है। यह एक दिलचस्प बात है, जब डेटाबेस लगभग भर जाते हैं, तो वे धीमा हो जाते हैं। और आपके पास प्रतिकृति के संदर्भ में डेटा परत के मुद्दे हो सकते हैं और दोहराने की आवश्यकता और बैकअप और पुनर्प्राप्ति करने की आवश्यकता है। वैसे भी, एक सामान्य अवलोकन है।

केवल एक चीज जो मैं कहना चाहूंगा, वह यह है कि डेटाबेस डिबगिंग केवल अति सुंदर और गैर-तुच्छ हो सकती है - और मैं कहता हूं कि क्योंकि Ive ने बहुत कुछ किया है - और आप अक्सर डिबगिंग में सभी स्थितियों की तरह इसकी खोज करेंगे जो मैंने कभी अनुभव की थी है, पहली बात यह है कि आप कभी भी गड़बड़ है। और आपको कोशिश करनी होगी कि मेस से बाहर काम करने के लिए कैसे गड़बड़ के बारे में आया। और अक्सर जब आप एक डेटाबेस के मुद्दे को देख रहे होते हैं, तो आप सभी भ्रष्ट आंकड़ों को देख रहे होते हैं और सोच रहे होते हैं, "आखिर यह कैसे हुआ?"

वैसे भी, मैं डीज़ को पास करूँगा, शायद बुद्धि के अधिक शब्द कहने जा रहा हूँ, जिसके साथ मैं बाहर आया था। मुझे नहीं पता कि तुम्हें गेंद कैसे पास करनी है, डी.जे.

एरिक कवनघ: बीमार इसे पास करो, खड़े रहो, पकड़ो।

स्वचालित आवाज़: प्रतिभागी लाइनों को म्यूट कर दिया गया।

एरिक कवनघ: सब ठीक है, एक सेकंड पर लटका दो, मुझे डीज़ बॉल दे दो।

डीज़ ब्लांचफील्ड: धन्यवाद, एरिक। हाँ, डॉ। रॉबिन ब्लोर, आप वास्तव में सबसे सही हैं: यह एक विषय है, एक आजीवन बगबियर यदि आप दंड को क्षमा करेंगे, तो क्षमा करें मैं उस पर खुद को मदद नहीं कर सकता। उम्मीद है कि आप मेरी पहली स्क्रीन देख सकते हैं, शीर्ष पर फ़ॉन्ट आकार की समस्या के लिए मेरी माफी। बग का विषय मेरे अनुभव में कई मामलों में एक दिन का व्याख्यान है। इसका इतना व्यापक और विस्तृत विषय है, इसलिए Im दो प्रमुख क्षेत्रों पर ध्यान देने जा रहा है, विशेष रूप से इस अवधारणा को कि हम कितना बग के रूप में मानते हैं, लेकिन एक प्रोग्रामिंग मुद्दा। मुझे लगता है कि इन दिनों प्रति बग बग को पेश करना आम तौर पर एकीकृत विकास वातावरण द्वारा उठाया जाता है, हालांकि वे लंबे समय तक चलने वाले कीड़े हो सकते हैं। लेकिन अक्सर इसकी अधिक संख्या कोडिंग का मामला है और कोड को लिखने के लिए संभव है कि फ़ंक्शन, यह एक बग होना चाहिए। इसलिए, मेरी शीर्षक स्लाइड यहाँ, मुझे वास्तव में बहुत उच्च रिज़ॉल्यूशन A3 में इसकी एक प्रति थी, लेकिन दुर्भाग्य से यह घर की एक चाल में नष्ट हो गई। लेकिन यह 1945 की एक प्रोग्रामिंग शीट पर एक हस्तलिखित नोट है, जहां संयुक्त राज्य अमेरिका के हार्वर्ड विश्वविद्यालय में माना जाता है, मार्क II नामक मशीन का उनका दूसरा निर्माण है। वे कुछ मुद्दे को आम भाषा में डिबग कर रहे थे, लेकिन वे एक गलती खोजने की कोशिश कर रहे थे, और यह पता चलता है कि हार्डवेयर और माना जाने वाला सॉफ़्टवेयर मुद्दा क्या था, से थोड़ा अलग था।

इसलिए, शहरी मिथक 9 सितंबर के दौर का हैवें, 1945 में हार्वर्ड विश्वविद्यालय में एक टीम एक मशीन को अलग कर रही थी, वे "रिले सत्तर" कहे जाने वाले कुछ पर आए थे - उन दिनों प्रोग्रामिंग एक भौतिक अर्थ में किया गया था, आप एक बोर्ड के चारों ओर घाव कोड करते थे, और इसी तरह आपने प्रभावी ढंग से प्रोग्राम किया था मशीन - और उन्होंने पाया कि यह रिले संख्या सत्तर में कुछ गड़बड़ थी, और इससे वास्तविक शब्द "बग" निकला, क्योंकि यह काफी शाब्दिक रूप से एक कीट था - माना जाता है कि तांबे के तार के कुछ टुकड़े के बीच एक पतंगा था एक जगह से दूसरी जगह। और कहानी यह है कि मेरी शीर्षक स्लाइड के लिए, इस शीर्षक के रूप में प्रसिद्ध ग्रेस हॉपर, "बग का पहला वास्तविक मामला पाया जा रहा है" बोली।

लेकिन जैसा कि रॉबिन ने अपनी पहली स्लाइड में बताया था, बग की अवधारणा उतनी ही पीछे जाती है जितनी हम इंसानों की गणना, पैच जैसी अवधारणाओं की कल्पना कर सकते हैं। "पैच" शब्द एक वास्तविक टेप से आता है जिसे एक पंच कार्ड के छेद पर टेप किया जाता है। लेकिन इस के पूरे बिंदु, यह है कि शब्द "डीबगिंग" एक भौतिक मशीन में एक बग खोजने की इस अवधारणा से निकला था।और तब से, weve ने उस शब्दावली का उपयोग मुद्दों से निपटने की कोशिश करते हुए किया, या तो एक कार्यक्रम में मुद्दों को कोड करने के लिए इतना नहीं है जो संकलन नहीं करता है, लेकिन एक ऐसे कार्यक्रम के रूप में जो अच्छी तरह से नहीं चलता है। और विशेष रूप से केवल कभी खत्म नहीं होने वाले छोरों जैसी चीजों को खोजने के लिए विशेष रूप से तैयार नहीं किया गया है।

लेकिन हमारे पास एक परिदृश्य भी है, और मैंने सोचा कि इससे पहले कि मैं थोड़ा और अधिक विस्तार में हो, ईद ने कुछ अजीब स्लाइड्स डाल दीं। वेब पर XKCD कहे जाने वाले क्लासिक कार्टून, और कार्टूनिस्ट के दुनिया पर कुछ बहुत ही मजेदार विचार हैं। और यह "लिटिल बॉबी टेबल्स" नामक एक बच्चे के बारे में और माना जाता है कि उसके माता-पिता ने इस युवा लड़के का नाम रॉबर्ट रखा है); DROP TABLE Students? - और उसके नाम से पुकारा गया, और "हाय, यह आपके बेटे स्कूल में कुछ कंप्यूटर की परेशानी है," और अभिभावक जवाब देते हैं, "ओह डियर, क्या उसने कुछ तोड़ दिया है?" और शिक्षक कहता है, "ठीक है?" एक तरह से, "और शिक्षक पूछता है," क्या तुमने वास्तव में अपने बेटे का नाम रॉबर्ट रखा है); DROP TABLE Students? -? ”और माता-पिता कहते हैं,“ अरे हाँ, छोटे बॉबी टेबल्स हम उन्हें फोन करते हैं। ”वैसे भी, वे कहते हैं कि अब वे वर्षों के छात्र रिकॉर्ड खो चुके हैं, मुझे उम्मीद है कि आप खुश होंगे। और प्रतिक्रिया है, "ठीक है, आपको अपने डेटाबेस इनपुट को साफ और साफ करना चाहिए।" और मैं कई बार उन कुछ समस्याओं के बारे में बात करने के लिए उपयोग करता हूं जो हमें कोड में चीजों को खोजने में होती हैं, अक्सर कोड डेटा को भी नहीं देखता है। ।

एक और मजेदार, मुझे नहीं पता कि यह वास्तविक है या नहीं - मुझे इसके स्पूफ पर संदेह है - लेकिन फिर से, यह मेरी मजाकिया हड्डी को भी छूता है। किसी ने अपनी कार के सामने लाइसेंस प्लेट को बदल दिया है, इसी तरह के बयान के कारण डेटाबेस गति कैमरों में गिर जाता है और इसके बाद कारों की लाइसेंस प्लेटों पर कब्जा कर लेता है। और मैं हमेशा इसका उल्लेख करता हूं कि मुझे संदेह है कि किसी भी प्रोग्रामर ने एक वास्तविक मोटर वाहन द्वारा अपने कोड के हिट और रन की आशंका जताई है, लेकिन कभी भी इस बात को कम न समझें कि - गुस्से में गीक की शक्ति।

(हँसी)

लेकिन यह मुझे मेरे मुख्य बिंदु तक ले जाता है, मुझे लगता है, और वह यह है कि एक बार, हम कोड और डेब्यू कोड को केवल नश्वर के रूप में दे सकते हैं। लेकिन Im बहुत उस दृश्य से जो उस समय से गुजर चुका है, और मेरे अनुभव में, मेरे पहले - और यह मुझे बहुत उम्र देता है, मुझे यकीन है; रॉबिन youre इस के लिए मुझ पर मज़ाक उड़ाने के लिए स्वागत करते हैं - लेकिन ऐतिहासिक रूप से Ive 14 साल की उम्र में एक पृष्ठभूमि से आते हैं जो शहर के अंत तक भटक रहे हैं, और न्यूजीलैंड में "डेटा कॉम" नामक एक डेटा सेंटर के दरवाजे पर दस्तक दे रहे हैं और पूछ रहे हैं कि क्या मैं देर से बस घर, स्कूल के हर दिन लगभग 25 किमी की दूरी पर, ers में कागज लगाकर और टेप ड्राइव में टेप करके, और सिर्फ एक सामान्य व्यवस्थापक बनकर स्कूल में पॉकेट मनी कमा सकता था। और उत्सुकतावश उन्होंने मुझे नौकरी दे दी। लेकिन समय के साथ, मैं अपने आप को स्टाफिंग में लाने और प्रोग्रामर ढूंढने में कामयाब हो गया और महसूस किया कि मुझे कोडिंग से प्यार है और स्क्रिप्ट और बैच जॉब चलाने की प्रक्रिया से गुजरा, जो दिन के अंत में अभी भी कोड है। आपको स्क्रिप्ट और बैच की नौकरियों को लिखना होगा जो मिनी कार्यक्रमों की तरह दिखते हैं और फिर हाथ से 3270 टर्मिनल लेखन कोड पर बैठने की पूरी प्रक्रिया से गुजरते हैं।

वास्तव में, मेरा पहला अनुभव टेलेटाइप टर्मिनल पर था, जो वास्तव में 132-स्तंभ भौतिक एर था। अनिवार्य रूप से, कागज के साथ एक बहुत पुराने टाइपराइटर के बारे में सोचें जो इसके माध्यम से स्क्रॉल किया गया था, क्योंकि उनके पास सीआरटी ट्यूब नहीं था। और उस पर डिबगिंग कोड एक बहुत ही गैर-तुच्छ मुद्दा था, इसलिए आपने अपने सभी कोड को हाथ से लिखने की कोशिश की, और फिर एक टाइपिस्ट की तरह काम किया, जिससे आपको डराने के लिए त्रुटियां न हों, क्योंकि यह बताने के लिए बहुत निराशा होती है एक पंक्ति के संपादक को एक निश्चित रेखा पर जाने के लिए और फिर रेखा और फिर इसे वापस टाइप करें। लेकिन एक बार, हमने इस तरह कोड लिखा था और हमने इसे कैसे डीबग किया, और हम इसे बहुत अच्छा लगा। और वास्तव में, इसने हमें बहुत अच्छी प्रोग्रामिंग तकनीकों के लिए मजबूर किया, क्योंकि इसे ठीक करने के लिए एक वास्तविक परेशानी थी। लेकिन यात्रा तब - के माध्यम से चली गई और सभी इससे परिचित थे - यह मेरी दुनिया में 3270 टर्मिनल अनुभव से डिजिटल उपकरण VT220 तक चला गया जहां आप स्क्रीन पर चीजें देख सकते थे, लेकिन फिर, आप बस वही कर रहे थे जो आपने किया था सिर्फ CRT पर एड फॉर्मेट के पेपर टेप सॉर्ट पर, लेकिन आप अधिक आसानी से डिलीट करने में सक्षम थे और आपके पास "dit dit dit dit" साउंड नहीं था।

और फिर आप जानते हैं, वायस टर्मिनल्स - जैसे वायस 150, शायद कभी कंप्यूटर के लिए मेरा पसंदीदा इंटरफ़ेस - और फिर पीसी और फिर मैक, और फिर इन दिनों आधुनिक जीयूआई और आईडी जो वेब आधारित हैं। और उस के माध्यम से कार्यक्रमों की एक श्रृंखला, एक और असेंबलर और PILOT और लोगो और लिस्प और और फोरट्रान और पास्कल में प्रोग्रामिंग और ऐसी भाषाएं जो लोगों को परेशान कर सकती हैं। लेकिन ये ऐसी भाषाएं हैं जो आपको अच्छा कोड लिखने के लिए मजबूर करती हैं; उन्होंने आपको बुरे व्यवहार से दूर नहीं होने दिया। C, C ++, Java, Ruby, Python - और हम उस प्रोग्रामिंग चरण को आगे बढ़ाते हैं, हमें अधिक स्क्रिप्ट-जैसे मिलते हैं, हम स्ट्रक्चर्ड क्वेरी लैंग्वेज और PHP जैसी भाषाओं के करीब पहुंचते हैं जो वास्तव में SQL को आह्वान करने के लिए उपयोग की जाती हैं। आपको यह बताने की बात यह है कि मेरी पृष्ठभूमि से आने वाले, मुझे कई तरीकों से आत्म-शिक्षा दी गई थी और जिन्होंने मुझे सीखने में मदद की, मुझे बहुत अच्छी प्रोग्रामिंग प्रथाएं सिखाईं और डिजाइन और प्रक्रियाओं के आसपास बहुत अच्छी प्रथाओं को सुनिश्चित करने के लिए मैंने छोटी गाड़ी शुरू की। कोड।

इन दिनों प्रोग्रामिंग के तरीके, उदाहरण के लिए, संरचित क्वेरी भाषा, एसक्यूएल, इसकी बहुत शक्तिशाली, सरल क्वेरी भाषा जैसी चीजें। लेकिन weve ने इसे एक प्रोग्रामिंग भाषा में बदल दिया और मैं वास्तव में यह नहीं मानता कि SQL को कभी भी एक आधुनिक प्रोग्रामिंग भाषा के रूप में तैयार किया गया था, लेकिन weve ने इसे बनने के लिए तिरछा कर दिया। और यह मुद्दों की एक पूरी गुच्छा का परिचय देता है, क्योंकि जब हम दो दृष्टिकोणों के बारे में सोचते हैं: कोडिंग दृष्टिकोण से और डीबीए दृष्टिकोण से। इसके साथ आना बहुत आसान है और सिर्फ खराब प्रोग्रामिंग तकनीक, लिखने के कोड में आलसी प्रयास, अनुभव की कमी, क्लासिक पालतू पशु के रूप में चीजों के लिए बग का परिचय देने के लिए मेरे पास उदाहरण के लिए SQL लोग हैं जो Google पर कूदते हैं और कुछ खोजते हैं और एक वेबसाइट ढूंढते हैं। एक उदाहरण मिला और मौजूदा कोड की कॉपी और पेस्ट कर रहा हूं। और फिर एक खराब कोडिंग, कदाचार और इसे उत्पादन में डालने की नकल करना, क्योंकि यह सिर्फ उन्हें वे परिणाम देने के लिए होता है जो वे चाहते हैं। Youve को अन्य चुनौतियां मिलीं, उदाहरण के लिए, इन दिनों सभी इस ओर भाग रहे थे, जिसे हम शून्य कहते हैं: सब कुछ इतना सस्ता और इतनी तेजी से करने की कोशिश करना, कि हमारे पास एक ऐसा परिदृश्य है जहां कम वेतन वाले कर्मचारियों को काम पर नहीं रखा गया था। और मेरा मतलब यह नहीं है कि एक अपमानजनक तरीके से, लेकिन हर संभव नौकरी के लिए विशेषज्ञों को काम पर नहीं रखा गया था। एक बार कंप्यूटर के साथ कुछ भी करने के लिए रॉकेट विज्ञान था; यह उन चीजों में शामिल था जो धमाकेदार थीं और बहुत जोर से थीं, या अंतरिक्ष में चली गईं या इंजीनियर भारी योग्य पुरुष और महिलाएं थीं जिन्होंने डिग्री की थी और कठोर शिक्षाएं थीं जो उन्हें पागल चीजें करने से रोकती थीं।

इन दिनों, विकास और डिजाइन और डेटाबेस में बहुत सारे लोग आते हैं, जिनके पास वर्षों का अनुभव था, havent के पास आवश्यक रूप से समान प्रशिक्षण या समर्थन था। और इसलिए आप सिर्फ पारंपरिक शौकिया बनाम विशेषज्ञ के एक परिदृश्य के साथ समाप्त होते हैं। और एक प्रसिद्ध पंक्ति में, मैं वास्तव में याद नहीं कर सकता कि किसने बोली बनाई, रेखा जाती है, "यदि आपको लगता है कि इसका महंगा काम करने के लिए एक विशेषज्ञ को काम पर रखना है, तब तक प्रतीक्षा करें जब तक आप एक समस्या पैदा करने वाले शौकीनों के एक जोड़े को काम पर नहीं रखते हैं और आपके पास है इसे साफ करो। ”और इसलिए एसक्यूएल के पास यह मुद्दा है, और इसका बहुत, बहुत आसान सीखना है, इसका उपयोग करना बहुत आसान है। लेकिन यह मेरे विचार में, एक संपूर्ण प्रोग्रामिंग भाषा नहीं है। इसका बहुत आसान काम है जैसे कि एक सेलेक्ट स्टार को कहीं से भी करें और उस सभी को एक प्रोग्रामिंग लैंग्वेज में खींचें, जो कि PHP और Ruby या Python की तरह अधिक आरामदायक हो, और डेटा हेरफेर करने के लिए प्रोग्रामिंग भाषा का उपयोग करें, जिसे आप मूल रूप से परिचित हैं, SQL में अधिक जटिल क्वेरी करने के बजाय। और हम इसे बहुत देखते हैं, और फिर लोग आश्चर्य करते हैं कि डेटाबेस धीमा क्यों चल रहा है; इसकी वजह यह है कि एक लाख लोग एक ऑनलाइन टिकट प्रणाली के रूप में टिकट खरीदने की कोशिश कर रहे हैं, जहां यह एक सेलेक्ट स्टार होता है।

अब, वास्तव में एक चरम उदाहरण है, लेकिन आप उस सब से बाहर बिंदु मिलता है। तो, बस उस बिंदु को घर पर पंच करने के लिए, एक उदाहरण है कि मैं एक बहुत चारों ओर ले जाता हूं। Im गणित का एक बड़ा प्रशंसक, मुझे अराजकता सिद्धांत पसंद है, मैं मंडेलब्रोट सेट से प्यार करता हूं। दाईं ओर मंडेलब्रोट सेट का एक प्रतिपादन दिया गया है, जिसे इम यकीन है कि सभी परिचित थे। और बाएं हाथ पर SQL का एक टुकड़ा है जो वास्तव में प्रदान करता है। अब, हर बार जब मैंने इसे एक स्क्रीन पर रखा, तो मैंने यह सुना "ओह माय गॉड, किसी ने मैंडलब्रोट सीरीज़ को एसक्यूएल के साथ प्रस्तुत किया, क्या आप गंभीर हैं? यह पागल है! ”ठीक है, इस बात का पूरा मतलब यह है कि मैं वहाँ क्या रेखांकित कर रहा था, और यह है कि हाँ, वास्तव में अब आप SQL में लगभग कुछ भी प्रोग्राम कर सकते हैं; यह एक बहुत भारी विकसित, शक्तिशाली, आधुनिक प्रोग्रामिंग भाषा है। जब मूल रूप से यह एक क्वेरी भाषा थी, तो इसे केवल डेटा अप करने के लिए डिज़ाइन किया गया था। इसलिए, अब weve को बहुत जटिल निर्माण मिल गए और weve को संग्रहीत कार्यविधियाँ मिल गईं, weve को एक भाषा पर लागू होने वाली प्रोग्रामिंग पद्धति मिल गई और इसलिए यह खराब प्रोग्रामिंग अभ्यास, अनुभव की कमी, कट-एंड-पेस्ट कोड, कम-भुगतान वाले कर्मचारियों के लिए बहुत आसान है उच्च-वेतन वाले कर्मचारी बनें, दिखावा करने वाले लोग जानते हैं, लेकिन उन्हें काम पर सीखना होगा।

कोड प्रोफाइलिंग और जिसे हम डिबगिंग कहते हैं, की पूरी श्रृंखला, जो कि बहुत अधिक बग ढूंढने वाली नहीं है, जो प्रोग्राम को काम करने से रोकती है, लेकिन ऐसे कीड़े जो सिस्टम को खराब कर रहे हैं और खराब संरचित कोड। जब आप अब इस स्क्रीन को देखते हैं, और आपको लगता है, बस, अपनी तरह का प्यारा और आपको लगता है, "वाह, क्या शानदार ग्राफिक है, तो ईद उसे चलाने के लिए प्यार करती है।" लेकिन कल्पना करें कि व्यवसाय तर्क के कुछ टुकड़े पर चल रहा है। यह बहुत साफ-सुथरा दिखता है, लेकिन यह गणितीय रूप से प्रस्तुत अव्यवस्थित सिद्धांत को बोलता है, लेकिन जब आप इस बारे में सोचते हैं कि इसका संभावित रूप से कुछ व्यावसायिक तर्क के लिए इस्तेमाल किया जा सकता है, तो आपको तस्वीर बहुत जल्दी मिलती है। और वास्तव में यह स्पष्ट करने के लिए कि - और Im खेद है कि रंगों को उलट दिया गया है, इसकी काली पृष्ठभूमि और हरे रंग की स्क्रीन होना चाहिए, लेकिन आप अभी भी पढ़ सकते हैं।

मैं गया था और एक उदाहरण पर एक त्वरित नज़र रखता था कि आप संभावित रूप से क्या कर सकते हैं यदि आप वास्तव में पागल थे और जिसे कोई अनुभव नहीं था और प्रोग्रामिंग की एक अलग पृष्ठभूमि से आया था और सी ++ की पसंद को एसक्यूएल में लागू किया, वास्तव में मेरी बात को स्पष्ट करने के लिए, इससे पहले मैं IDERA से हमारे सीखा अतिथि को सौंपता हूं। यह एक संरचित क्वेरी है जिसे C ++ की तरह लिखा गया है, लेकिन SQL में इसकी कोडिंग है। और यह वास्तव में निष्पादित करता है, लेकिन यह लगभग तीन से पांच मिनट की अवधि में निष्पादित करता है। और यह डेटा को एक लाइन से कई डेटाबेस, कई जॉइन से वापस खींचता है।

फिर, इसका पूरा बिंदु यह है कि यदि आपके पास सही उपकरण नहीं हैं, यदि आपके पास इन चीजों को पकड़ने में सक्षम होने के लिए सही प्लेटफॉर्म और वातावरण नहीं हैं, और वे उत्पादन में लग जाते हैं, और फिर आपके पास हर सिस्टम पर 100,000 लोग हैं। दिन, या घंटे या मिनट, बहुत जल्द आप एक चेरनोबिल अनुभव के साथ समाप्त होते हैं जहां बड़ा लोहा पिघलने लगता है और ग्रह के मूल में खुद को दफन कर देता है, क्योंकि कोड का वह टुकड़ा कभी भी उत्पादन में नहीं आना चाहिए। आपके सिस्टम और आपके उपकरण, मुझे क्षमा करें, इससे पहले कि कहीं भी जाना चाहिए - परीक्षण प्रक्रिया के माध्यम से, यहां तक ​​कि यूएटी और सिस्टम एकीकरण के माध्यम से भी, उस कोड के टुकड़े को उठाया जाना चाहिए और हाइलाइट किया जाना चाहिए और किसी को एक तरफ लाया जाना चाहिए और कह रही है, "देखो, वास्तव में बहुत अच्छा कोड है, लेकिन आपको एक डीबीए प्राप्त करने में मदद करता है ताकि आप उस संरचित क्वेरी को ठीक से बना सकें, क्योंकि स्पष्ट रूप से, यह सिर्फ बुरा है।" और वहां के URL, आप देख सकते हैं और देख सकते हैं - इसके रूप में संदर्भित है। सबसे जटिल SQL क्वेरी जो आपने कभी लिखी थी। क्योंकि मुझे विश्वास है, कि वास्तव में संकलन करता है, यह चलता है। और अगर आप इसे काटते हैं और पेस्ट करते हैं और बस डेटाबेस का मजाक उड़ाते हैं, तो यह देखने के लिए काफी कुछ है; अगर आपको डेटाबेस को देखने की कोशिश करने के लिए टूल मिला है, तो तीन से पांच मिनट की अवधि में पिघल जाएं, जो कि एक पंक्ति है।

इसलिए, संक्षेप में, उस बात को ध्यान में रखते हुए, कोडिंग में मेरी पूरी पृष्ठभूमि ने मुझे सिखाया है कि आप लोगों को एक बंदूक दे सकते हैं और अगर वे सावधान नहीं हैं तो वे खुद को पैर में गोली मार लेंगे; चाल उन्हें दिखाने के लिए जहां सुरक्षा तंत्र है। अपनी उंगलियों पर सही उपकरण और सही सॉफ्टवेयर के साथ, आपने कोडिंग करने के बाद, आप अपने कोड की समीक्षा कर सकते हैं, आप कोड को प्रोफाइल करके मुद्दों को पा सकते हैं, आप प्रभावी रूप से अनपेक्षित बग पा सकते हैं जो प्रदर्शन के मुद्दे हैं, और जैसा कि मैंने पहले कहा था। , एक बार, आप इसे हरे रंग की स्क्रीन पर देख सकते हैं। तुम अब और नहीं कर सकते; कोड की हजारों-हज़ारों पंक्तियाँ हैं, दसियों हज़ार ऐप्स तैनात हैं, कुछ उदाहरणों में लाखों डेटाबेस हैं, और यहां तक ​​कि सुपर मानव भी वास्तव में अब ऐसा नहीं कर सकते। आपको अपनी उंगलियों पर सही सॉफ्टवेयर और सही उपकरण की आवश्यकता है और आपको उन उपकरणों का उपयोग करने के लिए टीम की आवश्यकता है, ताकि आप इन मुद्दों को ढूंढ सकें और उन्हें बहुत जल्दी, बहुत जल्दी से संबोधित कर सकें, जब तक आप बिंदु पर पहुंचते हैं, जबकि डॉ। रॉबिन ब्लोर ने प्रकाश डाला, चीजें या तो विनाशकारी हो जाती हैं, और चीजें उड़ जाती हैं, या अधिक सामान्य रूप से, वे बस आपको बहुत अधिक डॉलर और बहुत समय और प्रयास करना शुरू करते हैं और मनोबल और सामान को नष्ट करते हैं, जब वे काम नहीं करते हैं तो चीजें क्यों लेती हैं लंबे समय तक चलने के लिए।

और यह ध्यान में रखते हुए, Im हमारे अतिथि को सौंपने जा रहा है और मैं यह सुनने के लिए उत्सुक हूं कि कैसे इस मुद्दे को हल किया। और विशेष रूप से डेमो मुझे लगता है कि प्राप्त करने वाले थे। एरिक, इल पास बैक ओवर।

एरिक कवनघ: ठीक है, बर्थ, इसे ले जाओ।

बर्ट स्केलोज़: ठीक है धन्यवाद। IDERA से Bert Scalzo यहां, हमारे डेटाबेस टूल के लिए उत्पाद प्रबंधक Im। और Im डिबगिंग के बारे में बात करने जा रहा हूं। मुझे लगता है कि सबसे महत्वपूर्ण चीजों में से एक जो रॉबिन ने पहले कहा था - और इसकी बहुत ही सच्ची बात यह है कि डिबगिंग बहुत ही सामान्य और गैर-तुच्छ है, और जब आप डेटाबेस में जाते हैं, तो इसके परिमाण के क्रम को और अधिक शानदार और गैर-तुच्छ मानते हैं - इसलिए, एक महत्वपूर्ण उद्धरण था।

ठीक। मैं प्रोग्रामिंग इतिहास के साथ शुरू करना चाहता था, क्योंकि बहुत बार मैं ऐसे लोगों को देखता हूं जो डिबगिंग नहीं कर रहे हैं, वे डिबगर का उपयोग नहीं करते हैं, वे बस जिस भी भाषा का उपयोग कर रहे हैं, उसके साथ प्रोग्राम करते हैं, और बहुत बार वे मुझे कहते हैं, "ठीक है, वे डीबगर चीजें नई हैं, और हमने अभी तक उन का उपयोग करना शुरू कर दिया है। "और इसलिए मैं जो कुछ करता हूं वह उन्हें इस समयरेखा चार्ट, पूर्व-इतिहास, पुराने युग, मध्य युग, इसकी तरह का कहना है कि हम कहाँ थे प्रोग्रामिंग भाषाओं की शर्तें। और हमारे पास बहुत पुरानी भाषाएँ थीं 1951 में असेंबली कोड, और लिस्प और FACT और COBOL। फिर हम अगले समूह, पास्कल्स और Cs और फिर अगले समूह, C ++ s में आते हैं, और यह देखते हैं कि प्रश्न चिह्न कहाँ है - यह प्रश्न चिह्न 1978 से 1980 के आसपास लगभग सही है। उस सीमा में कहीं न कहीं हमारे पास था हमारे लिए उपलब्ध डिबगर्स, और ऐसा कहने के लिए, "अरे, मैं डिबगर का उपयोग नहीं कर रहा हूँ, उन नई चीज़ों में से एक का कारण बनता है," तो आपने प्रोग्रामिंग शुरू कर दी होगी, आप जानते हैं, 1950 के दशक में वापस, एकमात्र कारण youd प्राप्त करना उस दावे के साथ दूर।

अब इस चार्ट के बारे में मज़ेदार दूसरी बात यह है कि डीज़ ने सिर्फ ग्रेस हॉपर के बारे में एक टिप्पणी की, मैं वास्तव में ग्रेस जानता था, इसलिए इसकी तरह का मजाकिया। और फिर दूसरी बात जिस पर मुझे हंसी आई, वह है तेलेपिट्स और इम के बारे में बात करते हुए वहाँ बैठे हुए, "यार, वह सबसे बड़ी छलांग थी जो हमारे पास उत्पादकता में थी, जब हम कार्ड से टेलेटिप में गए, तो यह अब तक की सबसे बड़ी छलांग थी।" , और Ive ने SNOBOL सहित यहाँ की सभी भाषाओं में प्रोग्राम किया, जिसके बारे में किसी ने पहले कभी नहीं सुना था, यह एक CDC, Control Data Corporation था, इसलिए मुझे लगता है कि Im इस उद्योग के लिए थोड़ा बहुत बूढ़ा हो रहा है।

डीज़ ब्लांचफील्ड: मैं कहने जा रहा था, तुम हमें वहाँ बहुत वृद्ध करते हो।

बर्ट स्केलोज़: हाँ, मैं तुम्हें बता रहा हूँ, मुझे दादाजी सिम्पसन की तरह लग रहा है। इसलिए मैं डिबगिंग को देखता हूं और डीबगिंग करने के विभिन्न तरीकों को देखता हूं। आप इस बारे में बात कर सकते हैं कि एक डिबगर में पारंपरिक होने और कोड के माध्यम से कदम रखने के बारे में हम सभी क्या सोचते हैं। लेकिन इसके अलावा, लोग अपने कोड को लिखेंगे; आप अपने कोड में बयान छड़ी करते हैं और शायद आप एक आउटपुट फ़ाइल, एक ट्रेस फ़ाइल या कुछ और, और इसलिए आप अपना कोड लिखते हैं। मुझे लगता है कि यह डिबगिंग के रूप में गिना जाएगा, यह थोड़ा कठिन है, इसे करने का एक तरीका है, लेकिन यह मायने रखता है। लेकिन इसके अलावा, weve को प्रसिद्ध कथन मिला: आप देखते हैं और लोग वास्तव में वक्तव्य देते हैं और Ive ने वास्तव में एक उपकरण देखा है - और इसका डेटाबेस टूल - जहां यदि आप डिबगर का उपयोग करना नहीं जानते हैं, तो आप एक बटन दबाते हैं और यह चिपक जाएगा आप के लिए अपने कोड भर में बयान और फिर जब आप किया आप एक और बटन धक्का और यह उन्हें बाहर स्ट्रिप्स। क्योंकि बहुत से लोग कैसे डीबग करते हैं।

और जिस कारण से हम डिबग करते हैं वह दो गुना है: सबसे पहले, हमें उन चीजों को खोजने के लिए मिला जो हमारे कोड को अप्रभावी बनाते हैं। दूसरे शब्दों में, आम तौर पर इसका मतलब है कि तर्क की गलती होती है या हम एक व्यावसायिक आवश्यकता से चूक गए हैं, लेकिन यह क्या है, क्या कोड प्रभावी नहीं है; यह वह नहीं करता है जो हमने करने की अपेक्षा की थी। दूसरी बार जब हम जाते हैं और हम डिबगिंग करते हैं, इसकी दक्षता के लिए और यह एक तर्क गलती हो सकती है, लेकिन यह क्या है, क्या मैंने सही काम किया है, यह बस जल्दी से वापस नहीं आता है। अब, मैं उस बिंदु को बनाता हूं क्योंकि एक प्रोफाइलर शायद उस दूसरे परिदृश्य के लिए बेहतर है और डीबगर और प्रोफाइलर दोनों के बारे में बात करने जा रहा है। इसके अलावा, दूरस्थ डिबगिंग की इस अवधारणा को पूरा करता है; यह महत्वपूर्ण है क्योंकि कई बार यदि आप अपने निजी कंप्यूटर पर बैठे हैं, और आप डिबगर का उपयोग कर रहे हैं, तो एक डेटाबेस को हिट करता है, जहां कोड को वास्तव में डेटाबेस पर निष्पादित किया जाता है, आप वास्तव में दूरस्थ डीबगिंग नामक व्हाट्स कर रहे हैं। आप इसे महसूस नहीं कर सकते हैं, लेकिन यह हो रहा है। और फिर, इन डिबगर्स के साथ ब्रेक पॉइंट, वॉच पॉइंट, स्टेप इन और स्टेप ओवर और कुछ अन्य सामान्य चीज़ों के साथ इसका बहुत ही सामान्य है, जो Im एक पल में स्क्रीन स्नैपशॉट पर दिखाने जा रहा है।

अब, प्रोफाइलिंग: आप कुछ अलग तरीकों से प्रोफाइलिंग कर सकते हैं। कुछ लोग कहेंगे कि कार्यभार पर कब्जा और फिर से खेलना जहां यह सब कुछ कैप्चर करता है, जो कि रूपरेखा के रूप में गिना जाता है। अगर इसका सैंपल लिया जाए तो मेरा अनुभव अधिक बेहतर रहा है। Theres हर एक बयान को पकड़ने का कोई कारण नहीं है, क्योंकि कुछ बयान सिर्फ इतनी जल्दी से चल सकते हैं कि आप परवाह नहीं करते हैं, क्या आप वास्तव में देखने की कोशिश कर रहे हैं, ठीक है, जो कि बार-बार दिखाते रहते हैं, क्योंकि वे बहुत लंबे समय तक चलते हैं । तो, कभी-कभी प्रोफाइलिंग का मतलब पूरी चीज़ को चलाने के बजाय नमूना करना हो सकता है। और आम तौर पर, आपको कुछ प्रकार के आउटपुट मिलेंगे, जिनका आप उपयोग कर सकते हैं, अब यह एक IDE विकास वातावरण के अंदर दृश्य हो सकता है, जहां यह आपको कोड के विभिन्न लाइनों के प्रदर्शन के हिस्टोग्राम की तरह दे सकता है, लेकिन यह अभी भी हो सकता है हो कि यह एक ट्रेस फ़ाइल का उत्पादन करता है।

Profilers पहली बार 1979 में दिखाई दिए। इसलिए, वे लंबे समय से आसपास भी हैं। दक्षता की बात करने वाले दूसरे शब्दों में संसाधन खपत, या प्रदर्शन के मुद्दों को खोजने के लिए महान। सामान्यतया, डिबगर से इसका अलग और अलग, हालांकि मैंने ऐसे डिबगर्स के साथ काम किया है जो एक ही समय में दोनों करते हैं। और जबकि मुझे लगता है कि प्रोफाइलर्स दो उपकरणों के अधिक दिलचस्प हैं, अगर मुझे लगता है कि पर्याप्त लोग डिबग नहीं करते हैं, तो निश्चित रूप से पर्याप्त लोग प्रोफ़ाइल नहीं करते हैं, क्योंकि दस डिबगर्स में से एक प्रोफ़ाइल करेगा, ऐसा लगता है। और शर्म की बात है, क्योंकि प्रोफाइलिंग वास्तव में एक बड़ा अंतर बना सकती है। अब, डेटाबेस भाषाओं, जैसा कि हमने पहले बात की थी, आपको एसक्यूएल मिला है - और हमने वर्गाकार छेद में गोल खूंटी को मजबूर किया और इसे प्रोग्रामिंग भाषा - और ओरेकल बनने के लिए मजबूर किया।पीएल / एसक्यूएल - प्रक्रियात्मक भाषा एसक्यूएल - और एसक्यूएल सर्वर, इसके लेनदेन-एसक्यूएल, इसके एसक्यूएल -99, इसके एसक्यूएल / पीएसएम - के लिए, मुझे लगता है, इसकी प्रक्रिया संग्रहीत मॉड्यूल। Postgres इसे एक और नाम देता है, DB2 अभी तक एक और नाम है, Informix, लेकिन मुद्दा यह है कि सभी ने 3GL- प्रकार के निर्माणों को मजबूर किया है; दूसरे शब्दों में, लूप के लिए, चर घोषणाओं में और एसक्यूएल के लिए विदेशी अन्य सभी सामान अब उन भाषाओं में एसक्यूएल का हिस्सा हैं। और इसलिए, आपको एक पीएल / एसक्यूएल या एक ट्रांसेक्ट-एसक्यूएल को डीबग करने में सक्षम होने की आवश्यकता है जैसे आप एक विज़ुअल बेसिक प्रोग्राम करेंगे।

अब, डेटाबेस ऑब्जेक्ट्स, यह महत्वपूर्ण है क्योंकि लोग कहेंगे, "ठीक है, मुझे डेटाबेस में डीबग करने के लिए क्या चीजें हैं?" और जवाब है, ठीक है, जो भी आप डेटाबेस में कोड के रूप में स्टोर कर सकते हैं - यदि इम कर रहा है टी- एसक्यूएल, या पीएल / एसक्यूएल - और इम डेटाबेस में वस्तुओं को स्टोर कर रहा है, शायद यह एक संग्रहीत कार्यविधि या संग्रहीत फ़ंक्शन है। लेकिन उपचार भी ट्रिगर होता है: एक ट्रिगर एक संग्रहीत प्रक्रिया की तरह होता है, लेकिन यह किसी प्रकार की घटना पर आग लगाता है। अब, उनके ट्रिगर में कुछ लोग कोड की एक पंक्ति डालेंगे और एक संग्रहीत प्रक्रिया को कॉल करेंगे ताकि वे अपने सभी संग्रहीत कोड और प्रक्रियाओं को रख सकें, लेकिन इसकी एक ही अवधारणा है: इसका अभी भी ट्रिगर वही हो सकता है जो पूरी चीज को शुरू करता है। और फिर ओरेकल के रूप में, उनके पास एक पैकेज नामक कुछ है, जो यदि आप चाहें तो लाइब्रेरी की तरह है। आपने 50 या 100 संग्रहीत प्रक्रियाओं को एक समूह में रखा, जिसे एक पैकेज कहा जाता है, इसलिए यह एक पुस्तकालय की तरह है। तो, पुराने तरीके के डिबगर को विधमान करता है; यह वास्तव में एक उपकरण है जो वास्तव में आपके लिए आपके कोड में इन सभी डिबग स्टेटमेंट को चिपकाएगा। तो, हर जगह आप डिबग ब्लॉक देखते हैं, हटा नहीं है, ऑटो डिबगर शुरू और ट्रेस करता है, जो सभी किसी न किसी उपकरण द्वारा अटक गए थे। और उस के बाहर की पंक्तियाँ, जो कि कोड की अल्पसंख्यक है, ठीक है, गैर-मैनुअल डीबगिंग विधि है।

और इसका कारण यह है कि, यदि आप हाथ से ऐसा करने की कोशिश कर रहे हैं, तो आप वास्तव में इन सभी कथनों में डालने के लिए अधिक डिबगिंग कोड टाइप करने जा रहे हैं, जैसा कि आप कोड के साथ हैं। तो, जबकि यह काम कर सकता है, और इसके कुछ भी नहीं से बेहतर है, यह डिबग करने का एक बहुत ही कठिन तरीका है, खासकर तब से, अगर इस चीज को चलाने के लिए 10 घंटे लगते हैं, और जहां यह एक समस्या है, लाइन तीन में है? यदि मैं एक इंटरैक्टिव डिबगिंग सत्र कर रहा था, तो मुझे लाइन तीन - पांच मिनट में पता चल जाता था - हे, यहाँ एक समस्या है, मैं छोड़ सकता हूँ। लेकिन इसके साथ, Ive को इसे चलाने के लिए, सभी तरह से पूरा होने का इंतजार करना पड़ा और फिर Ive को कुछ ट्रेस फाइल देखने को मिलीं, जिसमें शायद इन सभी कथनों में यह है, और कोशिश करें और सुई को धड़ में खोजें। फिर, यह कुछ भी नहीं से बेहतर है, लेकिन यह काम करने का सबसे अच्छा तरीका नहीं होगा। अब, यह वह फ़ाइल है जो पूर्व स्लाइड से आएगी; दूसरे शब्दों में, मैंने इस कार्यक्रम को चलाया, और इसकी सिर्फ इस ट्रेस फ़ाइल में कथनों का एक गुच्छा मिला और मैं इसके माध्यम से साइफन करने में सक्षम हो सकता है या नहीं हो सकता है और इसे खोजने के लिए मुझे क्या चाहिए। तो, फिर से, मुझे यकीन नहीं है कि यह वह तरीका है जो आप काम करना चाहते हैं।

अब, इंटरैक्टिव डिबगर्स - और अगर आपने प्रोग्राम लिखने के लिए विज़ुअल स्टूडियो जैसी किसी चीज़ का उपयोग किया है, या एक्लिप्स, Youve में डीबगर्स थे और आपने उन्हें अपनी अन्य भाषाओं के साथ उपयोग किया - तो बस उन्हें अपने डेटाबेस के साथ यहाँ पर उपयोग करने के लिए मत सोचो। और हमारे डीबी आर्टिसन और हमारे रैपिड एसक्यूएल जैसे उपकरण हैं, यह रैपिड एसक्यूएल है, जिसमें एक डिबगर है, और आप बाईं ओर देख सकते हैं, मेरे पास एक संग्रहीत कार्यविधि है जिसे "डुप्लिकेट के लिए जांच" कहा जाता है। मूल रूप से, इसका बस जाना और देखना और देखना है कि क्या मेरे पास एक ही फिल्म के शीर्षक के साथ तालिका में कई पंक्तियाँ हैं। तो, डेटाबेस फिल्मों के लिए है। और आप दाईं ओर देख सकते हैं, शीर्ष तीसरे पर, Ive को बीच में मेरा स्रोत कोड मिला, Ive को मेरे वॉच चर और मेरे कॉल स्टैक ट्रे कहा जाता है, और फिर नीचे Ive को कुछ आउटपुट मिला। और यहाँ क्या महत्वपूर्ण है, यदि आप उस पहले लाल तीर को देखते हैं, अगर मैं एक चर पर माउस ले जाता हूं, तो मैं वास्तव में देख सकता हूं कि उस समय उस चर में क्या मूल्य है, जैसे कि इम कोड के माध्यम से कदम रखता है। और यह वास्तव में उपयोगी है, और फिर मैं कोड के माध्यम से एक समय में एक पंक्ति को स्थानांतरित कर सकता हूं, मुझे निष्पादित करने के लिए कहना नहीं है, मैं कह सकता हूं कि एक पंक्ति है, मुझे देखने दें कि क्या हुआ, दूसरी पंक्ति को चरणबद्ध करें, मुझे देखें कि क्या हुआ, और Im डेटाबेस में यह कर रहा हूँ। और भले ही मैं अपने पीसी पर रैपिड एसक्यूएल पर बैठा हूं और मेरा डेटाबेस क्लाउड में है, फिर भी मैं उस रिमोट डिबगिंग को कर सकता हूं और इसे देख सकता हूं और इसे यहां से नियंत्रित कर सकता हूं, और डीबगिंग वैसे ही कर सकता हूं जैसे मैं किसी अन्य भाषा के साथ करूंगा।

अब, वहाँ अगला तीर - आप उस डीबीएमएस आउटपुट की ओर दाईं ओर इशारा करते हुए तीर की तरह छोटे को देख सकते हैं, अर्थात जहां मेरा कर्सर इस समय है - इसलिए दूसरे शब्दों में, Ive कदम रखा और इस समय Im जहां thats। इसलिए, अगर मैं कहता हूं, "फिर से कदम," मैं उस अगली पंक्ति पर जा रहा हूं। अब उसके ठीक नीचे आपको लाल बिंदु दिखाई देगा। खैर, एक ब्रेकपॉइंट, जो कहता है, "अरे, मैं इन लाइनों पर कदम नहीं रखना चाहता।" अगर मैं बस सब कुछ पर कूदना चाहता हूं और उस लाल बिंदु पर पहुंचना चाहता हूं, तो मैं रन बटन को हिट कर सकता हूं और यहां से रन भी बना सकता हूं। अंत में, या किसी ब्रेकपॉइंट पर, यदि कोई ब्रेकपॉइंट सेट हैं, और फिर यह बंद हो जाएगा और मुझे फिर से कदम रखने देगा। और इसका कारण यह है कि यह सब महत्वपूर्ण और शक्तिशाली है, क्योंकि जब Im यह सब कर रहा है, तो मध्य में और यहां तक ​​कि नीचे भी हो रहा है - लेकिन सबसे महत्वपूर्ण रूप से मध्य बदल जाएगा - और मैं अपने चर से मूल्यों को देख सकता हूं, मैं कर सकता हूं मेरे कॉल स्टैक ट्रेस देखें, आप जानते हैं, और इसलिए यह सभी जानकारी वहां प्रदर्शित की जाती है क्योंकि Im कोड के माध्यम से कदम बढ़ा रहा है, इसलिए मैं वास्तव में देख सकता हूं और महसूस कर सकता हूं और व्हाट्सएप पर चल रहा है और कोड वास्तव में निष्पादन के समय कैसे काम कर रहा है, इसकी समझ प्राप्त कर सकता है। । और आम तौर पर मैं एक समस्या पा सकता हूं, अगर कोई एक है, या अगर इम उसे पकड़ने के लिए पर्याप्त है।

ठीक है, अब Im एक प्रोफाइलर के बारे में बात करने जा रहा हूं, और इस मामले में, यह एक प्रोफाइलर है जिसे मैं डिबगर के माध्यम से देख सकता हूं। याद रखें मैंने कहा कभी-कभी वे अलग होते हैं और कभी-कभी वे एक साथ हो सकते हैं? इस स्थिति में, और फिर से, रैपिड एसक्यूएल में इम, और मैं रेखाओं के बगल में बाईं ओर, एक मार्जिन को देख सकता हूं। और वह जो है, वह सेकंड या माइक्रोसेकंड की संख्या है जिसे कोड की प्रत्येक पंक्ति को निष्पादित करने में लगा है, और मैं देख सकता हूं कि स्पष्ट रूप से, मेरा सारा समय इस एक लूप में बिताया जाता है जहां इम एक मेज से सब कुछ का चयन करता है। और इसलिए, उस फॉर लूप के अंदर क्या हो रहा है, शायद ऐसा कुछ है जिसे मुझे देखने की जरूरत है, और अगर मैं इसे बेहतर बना सकता हूं, तो यह लाभांश का भुगतान करेगा। Im उन लाइनों पर काम करके कोई सुधार नहीं करने जा रहा है जिनके पास 0.90 या 0.86 है; वहाँ ज्यादा समय नहीं बिताया। अब, इस मामले में, और फिर से, रैपिड एसक्यू में Im, आप देख रहे हैं कि मैं अपने डीबगिंग के साथ इंटरमिलिक्स कैसे कर सकता हूं। अब, क्या अच्छा है रैपिड एसक्यूएल भी आपको इसे दूसरे तरीके से करने की अनुमति देता है। रैपिड एसक्यूएल आपको यह कहने की अनुमति देता है, “आप जानते हैं क्या? मैं डिबगर में नहीं रहना चाहता, मैं बस इसे चलाना चाहता हूं और फिर मैं ग्राफिक या नेत्रहीन एक ही प्रकार की जानकारी देखना चाहता हूं। "

और आप देख सकते हैं कि Im अब डिबगर में नहीं है और यह कार्यक्रम चलाता है और निष्पादन होने के बाद, यह मुझे चीजों को बताने के लिए चार्ट देता है ताकि मैं देख सकूं कि Ive को एक बयान मिला है जो इसके अधिकांश पाई को लेने जैसा दिखता है चार्ट और अगर मैं देखता हूं, तो मैं उस ग्रिड पर नीचे की ओर देखता हूं, लाइन 23, फ़ोर लूप को फिर से प्राप्त करता है: सबसे अधिक समय लेने में संकोच, वह वास्तव में है कि सभी पाई चार्ट को गहरा लाल चबाते हुए। और इसलिए, यह प्रोफाइलिंग करने का एक और तरीका है। हम अपने टूल में उस "कोड एनालिस्ट" को कॉल करते हैं। लेकिन इसका मूल रूप से सिर्फ एक डीबगर से अलग एक प्रोफाइलर है। कुछ लोग इसे पहले तरीके से करना पसंद करते हैं, कुछ लोग इसे दूसरे तरीके से करना पसंद करते हैं।

हम डीबगिंग और प्रोफाइलिंग क्यों करते हैं? इसका कारण यह नहीं है कि हम दुनिया को सबसे बड़ा कोड लिखना चाहते हैं और एक वेतन वृद्धि प्राप्त करना चाहते हैं - जो कि हमारा कारण हो सकता है, लेकिन वास्तव में यही कारण है कि आप इसे नहीं करते हैं - आपने वादा किया था कि आप सही ढंग से कुछ करेंगे, जिससे आपका कार्यक्रम प्रभावी होगा। आप के लिए डिबगर का उपयोग करते हैं। इसके अलावा, व्यापार के अंत उपयोगकर्ताओं; वे बहुत रोगी नहीं हैं: वे कुंजी दबाने से पहले ही परिणाम चाहते हैं। उनके दिमाग को पढ़ने और सब कुछ तुरंत करने के लिए चाहिए थे। दूसरे शब्दों में, यह कुशल हो गया। और इसलिए, क्या हम के लिए प्रोफाइलर का उपयोग होता है। अब, इन उपकरणों के बिना, मैं वास्तव में विश्वास करता हूं कि आप इस आदमी को धनुष और तीर के साथ व्यापार सूट में हैं और आप लक्ष्य पर शूटिंग कर रहे हैं और आप आंखों पर पट्टी बांध रहे हैं। क्योंकि आप कैसे पता लगाने जा रहे हैं कि कैसे एक प्रोग्राम केवल स्थिर कोड को देखकर निष्पादित करता है और आप यह पता लगाने जा रहे हैं कि वह कौन सी रेखा है जहां वह वास्तव में निष्पादन में सबसे अधिक समय बिताएगा, फिर से, बस स्थैतिक कोड को देखकर? कोड की समीक्षा इनमें से कुछ चीजों को चालू कर सकती है या नहीं भी कर सकती है, लेकिन इस बात की कोई गारंटी नहीं है कि कोड समीक्षा उन सभी को खोज लेगी। डिबगर और प्रोफाइलर का उपयोग करके आपको उन सभी बग्स को खोजने में सक्षम होना चाहिए।

ठीक है, Im बस यहाँ एक वास्तविक त्वरित डेमो करने जा रहा हूँ। उत्पाद को आगे बढ़ाने का मेरा उद्देश्य नहीं है, मैं आपको केवल यह दिखाना चाहता हूं कि एक डिबगर ऐसा लगता है कि बहुत बार ऐसा लगता है कि लोग कहेंगे, "Ive ने इनमें से एक को भी पहले कभी नहीं देखा था।" और यह स्क्रीन स्नैप स्लाइड्स में बहुत अच्छा लग रहा है, लेकिन क्या। जब यह गति में होता है तो कैसा दिखता है? तो, यहाँ मेरी स्क्रीन Im पर हमारे DB कारीगर उत्पाद चल रहा है; हमारे पास वहां भी डिबगर है। डीबी कारीगर डीबीए के लिए अधिक है, रैपिड एसक्यूएल डेवलपर्स के लिए अधिक है, लेकिन मैंने डेवलपर्स को देखा है जो डीबी कारीगर का उपयोग करते हैं, और आईवीए ने डीबीए देखा जो रैपिड का उपयोग करते हैं। तो, उत्पाद पर पकड़ा नहीं है। और यहाँ, मेरे पास एक डीबग करने का विकल्प है, लेकिन इससे पहले कि मैं डिबग लॉन्च करूं, Im इस कोड को निकालने जा रहा हूं ताकि आप देख सकें कि कोड को चलाने से पहले मैं कैसा दिखता हूं। तो, यहाँ ठीक वही कोड है जो स्क्रीन स्नैपशॉट में था, यह डुप्लिकेट के लिए मेरा चेक है। और मैं इसे डीबग करना चाहता हूं, इसलिए मैं डीबग दबाता हूं। और अब, इसमें एक क्षण लगता है और आप कहते हैं, "ठीक है, यह एक क्षण क्यों ले रहा है?" दूरस्थ डिबगिंग याद रखें: डीबगिंग वास्तव में मेरे डेटाबेस सर्वर पर हो रही है, मेरे पीसी पर नहीं। तो, इसे खत्म करना था और वहां पर एक सत्र बनाना था, एक दूरस्थ डिबगिंग चीज़ बनाएं, मेरे सत्र को उस दूरस्थ डीबगिंग सत्र में हुक करें और एक संचार चैनल सेट अप करें।

तो, अब, मेरे तीर, उसके शीर्ष पर वहाँ लाइन एक द्वारा, जहां कोड में Im है, वह यहाँ है। और अगर मैं वहां तीसरा आइकन दबाता हूं, जो कि एक कदम है, तो आप उस तीर को सिर्फ स्थानांतरित करते हुए देखेंगे, और अगर मैं इसे दबाता रहूं, तो आप इसे देखते रहेंगे। अब, अगर मैं इस लूप के लिए सभी तरह से नीचे जाना चाहता था, क्योंकि मुझे पता है कि समस्या कहां है, मैं एक ब्रेकपॉइंट सेट कर सकता हूं। मुझे लगा कि मैंने वह सेट कर दिया है। ओह शूट, मेरे पास मेरी एक स्क्रीन कैप्चर कीज थी जो डीबगर के रूप में एक ही कुंजी के लिए मैप की गई थी, जो कि भ्रम पैदा करती थी। ठीक है, इसलिए मैं बस मैन्युअल रूप से वहां एक ब्रेकपॉइंट सेट करता हूं, इसलिए अब एक कदम, कदम, कदम, कदम के बजाय जब तक मैं वहां पहुंचता हूं, वास्तव में मैं बस कह सकता हूं, "आगे बढ़ो और इस चीज को चलाओ," और यह बंद हो जाएगा। ध्यान दें कि यह मुझे सभी जगह ले जाता है जहां ब्रेक पॉइंट है, इसलिए मैं अब इस लूप को चलाने के लिए तैयार हूं, मैं देख सकता हूं कि मेरे सभी चर क्या हैं, जो आश्चर्य की बात नहीं है, क्योंकि मैंने उन सभी को शुरू में शून्य। और अब, मैं इस लूप में कदम रख सकता हूं और इस लूप के अंदर जा रहे व्हाट्सएप को देखना शुरू कर सकता हूं।

तो, अब अपने किराये से एक चुनिंदा गिनती करने जा रहा है और मैं उस आदमी के ऊपर माउस ले जा सकता हूं और झिझक सकता हूं, दो, दो एक से अधिक है, इसलिए यह संभवतः इस कोड का अगला टुकड़ा करने जा रहा है। दूसरे शब्दों में, यह कुछ पाया। Im बस आगे जाने के लिए और चल रहा है कि चलो। मैं यहाँ सब कुछ नहीं करना चाहता; जब मैं एक डिबगर किया जाता है, तो मैं आपको दिखाना चाहता हूं, यह एक सामान्य कार्यक्रम की तरह ही पूरा होता है। Ive को ब्रेकपाइंट सेट मिला, इसलिए जब मैंने कहा, तो यह अगले ब्रेकपॉइंट पर वापस चला गया। Im इसे अंत तक चलने देता है, जो मैं आपको देखना चाहता हूं वह यह है कि एक डिबगर प्रोग्राम के व्यवहार को परिवर्तित नहीं करता है: जब इसका काम चल रहा है, तो मुझे सटीक वही परिणाम प्राप्त होने चाहिए यदि मैंने इसे डिबगर के अंदर नहीं चलाया है।

और उस के साथ, Im डेमो को निलंबित करने जा रहा है और वापस जाने के कारण हम यह सुनिश्चित करना चाहते हैं कि हमारे पास प्रश्नों और उत्तरों के लिए समय है। और इसलिए, मैं इसे सवाल और जवाब के लिए खोलूंगा।

एरिक कवनघ: सब ठीक है, रॉबिन, शायद आपसे एक सवाल और फिर डीज़ से एक युगल?

रॉबिन ब्लोर: हाँ, निश्चित रूप से, मुझे यह आकर्षक लगता है, बिल्कुल। Ive ने इस तरह से सामान के साथ काम किया, लेकिन Ive ने डेटाबेस में ऐसा कुछ भी काम नहीं किया। क्या आप मुझे इस बारे में कुछ जानकारी दे सकते हैं कि लोग प्रोफाइलर का उपयोग किस लिए करते हैं? क्योंकि इसके जैसे, क्या वे देख रहे हैं - क्योंकि मुझे लगता है कि वे हैं - वे प्रदर्शन के मुद्दों को देख रहे हैं, क्या यह आपकी मदद करने में मदद कर रहा है कि जब डेटाबेस में समय लगता है और जब किसी कोड में समय लगता है?

बर्ट स्केलोज़: तुम्हें पता है, एक शानदार सवाल है। कहते हैं कि Im विजुअल बेसिक में काम कर रहा है, और मैं, मेरे Visual Basic Im के अंदर एक Transact-SQL या PL / SQL कॉल करने जा रहा हूं। मुझे PL / SQL करने दें, क्योंकि Oracle उपकरण Microsoft उपकरणों के साथ हमेशा अच्छा नहीं खेलता है। मैं अपना विज़ुअल बेसिक कोड प्रोफाइल कर सकता हूं, और वहां मौजूद प्रोफ़ाइल कह सकता है, "अरे, मैंने इसे संग्रहीत प्रक्रिया कहा है और इसमें बहुत लंबा समय लगा है।" लेकिन फिर मैं संग्रहीत प्रक्रिया में जा सकता हूं और संग्रहीत पर एक डेटाबेस प्रोफ़ाइल कर सकता हूं। प्रक्रिया और कहते हैं, "ठीक है, 100 बयानों में से जो यहां हैं, उन पाँचों को समस्या पैदा कर रहे हैं।" और इसलिए, आपको एक टैग टीम करना होगा, जहां आपको कई प्रोफाइलर्स का उपयोग करना होगा।

विचार यह है कि क्या कभी आपको बताया जाता है कि प्रदर्शन की समस्या आपके डेटाबेस में है, एक डेटाबेस प्रोफ़ाइल आपकी मदद कर सकती है कि आप सुई को धड़ल्ले से ढूंढ सकते हैं, जिस पर कथन वास्तव में वही होते हैं जहाँ आपको समस्या होती है। मैं आपको एक और बात बताता हूं जो प्रोफाइलिंग के साथ बदल गया है: यदि आपके पास एक ऐसा कोड है जिसे एक लाख बार कहा जाता है, लेकिन यह केवल एक लाख बार प्रत्येक microsecond लेता है, लेकिन इसे एक लाख बार कहा जाता है, जो प्रोफाइलर दिखाएगा , यह बात इस समय की कई इकाइयों के लिए चली। और इसलिए जब कोड अत्यधिक कुशल हो सकता है, तो आप देख सकते हैं और कह सकते हैं, “ऊह, यह कॉल कोड के इस तरीके से बहुत बार कर रहे थे। हो सकता है कि हम हर बार रिकॉर्ड करने की प्रक्रिया के बजाय इसे केवल इतनी बार ही कॉल करें। और इसलिए आप वास्तव में पा सकते हैं जहाँ कुशल कोड है thats बस भी अक्सर कहा जाता है, और वास्तव में एक प्रदर्शन समस्या है।

रॉबिन ब्लोर: हाँ, यह अद्भुत है। Ive यह कभी नहीं किया। आप निश्चित रूप से, जब मुझे डेटाबेस की समस्या थी, तो यह ऐसा था जैसे मैं एक तरह से होगा या कोई अन्य डेटाबेस के साथ काम करेगा या कोड के साथ काम करेगा; मैं एक ही समय में उन दोनों के साथ कभी भी व्यवहार नहीं कर सकता था। लेकिन वहाँ, फिर से, मैंने ऐसा नहीं किया - Ive वास्तव में उन अनुप्रयोगों के निर्माण में शामिल नहीं है जहाँ हमने प्रक्रियाएँ संग्रहीत की थीं, इसलिए मुझे लगता है कि Ive वास्तव में उन समस्याओं में नहीं चलते हैं जो मुझे जंगली चलाते थे, यह विचार कि youd कोड को एक के बीच विभाजित कर देता है डेटाबेस और एक कार्यक्रम। लेकिन हां, सब करते हैं- Im जवाब हां होने जा रहा है, लेकिन यह एक विकास टीम की गतिविधि का हिस्सा है, जब आप एक तरह से या किसी अन्य चीज को तोड़ने के लिए ठीक करने की कोशिश कर रहे हैं, या शायद एक साथ एक नया आवेदन लाने की कोशिश कर रहे हैं। लेकिन क्या यह सभी दर्जी अन्य सभी घटकों के साथ है जो मैं पर्यावरण में उम्मीद करूंगा? क्या मैं यह उम्मीद कर सकता हूं कि मैं अपने सभी टेस्ट पैक और अन्य सभी सामानों के साथ जो मैं कर रहा हूं और अपने प्रोजेक्ट प्रबंधन सामान के साथ यह क्लिप कर सकता हूं, वह यह है कि यह सभी क्लिप एक साथ कैसे?

बर्ट स्केलोज़: हाँ, यह आपके प्रोग्रामिंग या विकास के प्रयासों को करने के लिए किसी भी संरचित प्रक्रिया का हिस्सा बन सकता है। और इसका मजाकिया, पिछले हफ्ते मेरे पास एक ग्राहक था जो एक वेब एप्लिकेशन का निर्माण कर रहा था, और उनका डेटाबेस ऐतिहासिक, ऐतिहासिक रूप से छोटा था, और इसलिए यह तथ्य था कि वे बहुत अच्छे प्रोग्रामर थे, उन्हें कभी चोट नहीं पहुंची। खैर, उनका डेटाबेस वर्षों में विकसित हुआ है, और अब आपको एक वेब पेज में 20 सेकंड लगते हैं, जब आप कहते हैं, "मुझे लॉग इन करें और मुझे देखने के लिए कुछ डेटा दें" और जब स्क्रीन वास्तव में आती है, और इसलिए अब इसकी एक प्रदर्शन समस्या। और उन्हें पता था कि समस्या उनके जावा या उन अन्य स्थानों में से किसी में नहीं थी। लेकिन उनके पास हजारों संग्रहीत प्रक्रियाएं थीं और इसलिए उन्हें यह पता लगाने के लिए संग्रहीत प्रक्रियाओं को शुरू करना पड़ा कि यह वेब पेज क्यों आने में 20 सेकंड का समय ले रहा है? और हमें वास्तव में पता चला कि उनके पास उनके कुछ चुनिंदा बयानों में कार्टेशियन शामिल थे और उन्हें यह पता नहीं था।

रॉबिन ब्लोर: वाह।

बर्ट स्केलोज़: लेकिन किसी ने मुझसे एक बार कहा, "वैसे वे कार्टेसियन कैसे हो सकते हैं और यह नहीं जानते?" और यह वास्तव में भयानक ध्वनि होगी; कभी-कभी एक प्रोग्रामर जो एसक्यूएल के साथ बहुत सहज नहीं है, वह कुछ ऐसा करेगा जैसे मुझे कार्टेसियन जॉइन दे, लेकिन उसके बाद ही मुझे पहला रिकॉर्ड वापस दे, इसलिए मुझे पता है कि मुझे कुछ मिला है, और मुझे केवल पहले वाले की आवश्यकता है। और इसलिए, उन्होंने महसूस नहीं किया कि वे सिर्फ एक अरब रिकॉर्ड वापस लाए हैं या वे एक अरब रिकॉर्ड के माध्यम से देखते हैं, क्योंकि उन्हें वह मिल गया जिसमें वे रुचि रखते थे।

रॉबिन ब्लोर: वाह, मुझे पता है, व्हाट्स व्हाट्स-वेल, दैट व्हाट्स देज़ के बारे में क्या चल रहा था, लोगों के मामले में बिल्कुल उतने कुशल नहीं थे जितना शायद उन्हें होना चाहिए, आप जानते हैं। यदि आप एक प्रोग्रामर हैं, तो आपको पता होना चाहिए कि किसी भी कमांड को जारी करने के निहितार्थ क्या हैं। मेरा मतलब है, वास्तव में, मूर्खता के स्तर का कोई बहाना नहीं है। Im यह भी मानता है कि आप एक तरह से या किसी अन्य, बस भाषा अज्ञेय को इस संबंध में मानते हैं, क्योंकि यह सब डेटाबेस पक्ष पर ध्यान केंद्रित कर रहा है। क्या मैं सही हूं? यह वही है, जो भी आप कोडिंग पक्ष पर उपयोग कर रहे हैं?

बर्ट स्केलोज़: बिल्कुल, आप इसे फोरट्रान या सी या सी ++ में कर सकते हैं। वास्तव में, कुछ यूनिक्स पर आप उनकी स्क्रिप्टिंग भाषाओं के लिए भी कर सकते हैं; वे वास्तव में एक ही उपकरण प्रदान करते हैं। और फिर मैं बिना किसी बहाने के आप के लिए एक सेकंड वापस जाना चाहता हूं। मैं प्रोग्रामरों को एक ब्रेक देने जा रहा हूं, क्योंकि मुझे प्रोग्रामर को बस के नीचे फेंकना पसंद नहीं है। लेकिन समस्या वास्तव में शैक्षणिक वातावरण है क्योंकि जब आप प्रोग्रामर बनने के बारे में जानने जाते हैं, तो आप रिकॉर्ड-ए-ए-टाइम सोचते हैं। आपको सेट थिंकिंग नहीं सिखाई जाती है, और वह जो संरचित क्वेरी लैंग्वेज है, या SQL सेट के साथ काम करता है; यही कारण है कि हमारे पास संघ, प्रतिच्छेदन और माइनस ऑपरेटर हैं। और इसके लिए बहुत कठिन कभी-कभी एक व्यक्ति के लिए जिसे सेट के संदर्भ में कभी नहीं सोचा गया था, छोड़ना, रिकॉर्ड-ए-ए-टाइम प्रसंस्करण पर जाना और सेट के साथ काम करना।

रॉबिन ब्लोर: हाँ, मैं उस पर तुम्हारे साथ हूँ। मेरा मतलब है, मैं अब मिलता है, एक शिक्षा मुद्दा है; मुझे लगता है कि यह पूरी तरह से एक शिक्षा का मुद्दा है, मुझे लगता है कि प्रोग्रामर को प्रक्रियात्मक रूप से सोचने के लिए यह स्वाभाविक है। और एसक्यूएल प्रक्रियात्मक नहीं है, इसकी घोषणात्मक है। आप वास्तव में कह रहे हैं, "यह वही है जो मैं चाहता हूं और मुझे परवाह नहीं है कि आप इसे कैसे करते हैं," आप जानते हैं? जबकि प्रोग्रामिंग भाषाओं के साथ, आप अक्सर अपनी आस्तीन ऊपर लुढ़क जाते हैं और आप एक लूप करते हुए भी काउंट्स के प्रबंधन में नीचे गिर जाते हैं। बीमार हाथ पर -

बर्ट स्केलोज़: नहीं, ठीक है, जारी रखें।

हाँ, मेरा कहना था कि आप एक और उदाहरण लेकर आए हैं कि एक प्रॉइलर अच्छी पकड़ होगी, इस तरह के रिकॉर्ड के साथ-साथ समय पर प्रसंस्करण होता है। कभी-कभी, एक प्रोग्रामर जो रिकॉर्ड-ए-ए-टाइम लॉजिक में अच्छा होता है, यह पता नहीं लगा सकता है कि एसक्यूएल प्रोग्राम कैसे करना है। ठीक है, कहते हैं कि वह दो छोरों के लिए बनाता है और मूल रूप से एक में शामिल होता है, लेकिन वह ग्राहक की तरफ से करता है। इसलिए, समान प्रभाव को एक जॉइन के रूप में करने में संकोच करते हैं, लेकिन इसे स्वयं करने में संकोच करते हैं, और एक प्रोफ़ाइल यह पकड़ लेगी, क्योंकि आप संभवतः डेटाबेस सर्वर को आपके लिए ऐसा करने की तुलना में मैन्युअल रूप से जॉइन करने में अधिक समय व्यतीत करेंगे।

रॉबिन ब्लोर: हाँ, यह एक आपदा होगी। मेरा मतलब है, आप बस चारों ओर पिटाई होगी। रोमांच हमेशा बुरा होता है।

वैसे भी, डीज़ पर इल पास; मुझे यकीन है कि संकोच कुछ दिलचस्प सवाल मिला।

डीज़ ब्लांचफील्ड: धन्यवाद, हाँ, मैं करता हूँ। Im बस के तहत प्रोग्रामर को नहीं फेंकने में शामिल होने जा रहा हूं। मेरा मतलब है, Ive ने अपने जीवन में कई साल खुद को एक कोडर के रूप में बिताया है, हर स्तर पर, आप जानते हैं, क्या आपने जैसा कहा है, यूनिक्स मशीन की कमांड लाइन पर बैठे हैं, और कुछ मामलों में, मैं एक में भी शामिल था एक हार्डवेयर प्लेटफॉर्म से दूसरे तक यूनिक्स के विभिन्न बंदरगाहों की जोड़ी। और आप वहां मौजूद चुनौतियों की कल्पना कर सकते हैं। लेकिन वास्तविकता यह है कि दुनिया के हर कोडर और ट्रॉटर के लिए जेल से बाहर कार्ड मिलता है। यह एक रॉकेट विज्ञान है, काफी शाब्दिक रूप से, हर समय, हर समय वास्तव में तंग लिखने के लिए, एक रॉकेट विज्ञान है। और डेनिस रिची और ब्रायन कर्नाहन जैसे लोगों की प्रसिद्ध कहानियां स्वतंत्र रूप से कोड के कुछ टुकड़े पर काम करती हैं और फिर एक कॉफी पर कोड समीक्षा चैट में बदल जाती हैं और पता चलता है कि कोड के एक ही टुकड़े को लिखा है, बिल्कुल उसी कार्यक्रम में, वास्तव में उसी तरह। और उन्होंने इसे सी। में किया लेकिन प्रोग्रामिंग का शुद्ध स्तर बहुत कम ही मौजूद है।

तथ्य यह है कि दैनिक आधार पर, एक दिन में केवल 24 घंटे, सप्ताह में सात दिन, और हमें बस सामान प्राप्त करना होता है। और इसलिए, जब यह न केवल पारंपरिक प्रोग्रामर, डीबीए, और कोडर, और स्क्रिप्टर्स, और sysadmin, और नेटवर्क व्यवस्थापक, और सुरक्षा स्टाफ, और सब कुछ इन दिनों नागरिक डेटा पक्ष के माध्यम से आता है; हम सुनते हैं, हर कोई बस अपना काम करने की कोशिश कर रहा है। और इसलिए मुझे लगता है कि इस पूरे मामले से महान takeaway मैं अपने डेमो प्यार करता था और मैं takeaway प्यार करता था कि आप हमें वहाँ छोड़ दिया, बस एक पल पहले, रॉबिन से इस तथ्य के बारे में बात करते हुए कि यह एक विशेष है - शायद इतना नहीं एक आला - लेकिन एक व्यापक स्थान जो इसे लागू करता है, जहां तक ​​कोड और एसक्यूएल और डेटाबेस को ठीक करना है। लेकिन मैं आपको यह कहते हुए सुनने के लिए वास्तव में उत्साहित था कि आप इसे एक शेल स्क्रिप्ट पर लिख सकते हैं और कुछ मुद्दों को पा सकते हैं, क्योंकि आप जानते हैं, आज के दिन और उम्र हमेशा हर चीज पर सबसे कम लागत में काम कर रहे थे।

आप कहीं $ 6 शर्ट खरीद सकते हैं, इसका कारण यह है कि किसी ने वास्तव में निर्माण के लिए सस्ते में एक प्रणाली का निर्माण किया और जहाज और तार्किक रूप से वितरित और बेचते हैं और ऑनलाइन भुगतान लेते हैं और उस $ 6 शर्ट को प्राप्त करते हैं। और अगर आप लोगों को सही तरीके से कोड लिखने के लिए $ 400,000 प्रति वर्ष का भुगतान किया जा रहा है तो यह नहीं होता है; इसका सिर्फ संपूर्ण विकास। तो, उस बिंदु, मुझे लगता है कि सवालों में से एक ईद वास्तव में आपको सिर्फ हमें कुछ और जानकारी देने के लिए प्यार करता है, क्या है ब्रेड्स और लोगों के प्रकार तक पहुंचना वर्तमान में आप देख रहे हैं कि एक कोड को देखने के लिए इस प्रकार के उपकरण तैनात हैं और देखो प्रदर्शन के मुद्दों के लिए? शुरू में, ऐतिहासिक रूप से, वे कहाँ से आते हैं? क्या वे बड़े इंजीनियरिंग घराने थे? और फिर, आगे बढ़ते हुए, क्या यह मामला है, क्या मैं यह सोचने में सही हूं कि अधिक से अधिक कंपनियां इस उपकरण को लागू कर रही हैं, या ये उपकरण कोडर्स की कोशिश करने और उनकी मदद करने के लिए हैं, जिन्हें वे जानते हैं कि काम पूरा करने के लिए बस कौन सी चीजें हो रही हैं। और इसे बाहर निकालो? और कभी-कभी हमें जेल-आउट कार्ड की आवश्यकता होती है? क्या मैं यह सोचने में सही हूं कि ऐतिहासिक रूप से हमारे पास अधिक इंजीनियरिंग फोकस और विकास था? रॉबिन ने कहा कि अब, कम हो रहे थे, जैसा कि अकादमिक दृष्टिकोण, और अब इसका स्व-शिक्षण, या कट-एंड-पेस्ट कोड, या बस निर्मित चीजें प्राप्त करें? और क्या यह उस तरह के लोगों से मेल खाता है जो अभी उत्पाद ले रहे हैं?

बर्ट स्केलोज़: हां, ठीक यही। और बीमार आपको एक बहुत ही विशिष्ट उदाहरण देते हैं, हम बस काम करना चाहते हैं, क्योंकि व्यवसाय के लोग पूर्णता नहीं चाहते हैं। एक कम्प्यूटरीकृत शतरंज के खेल की तरह इसका प्रकार: शतरंज का खेल पूर्ण उत्तर के लिए नहीं दिखता है; यह एक उचित समय के लिए पर्याप्त जवाब thats के लिए लग रहा है, तो कैसे हम प्रोग्राम है। लेकिन अब मैं क्या ढूंढ रहा हूं, ज्यादातर लोग यह कहने के बजाय कि वे अपनी यूनिट के परीक्षण के हिस्से के रूप में एक प्रोफाइलर चाहते हैं - जो कि मैं इसे कैसे करूंगा, क्योंकि मैं इसे समय की बर्बादी के रूप में नहीं देखता - अब जो कुछ हो रहा है वह यही है बाद में, कभी-कभी, एकीकरण परीक्षण या तनाव परीक्षण के दौरान, यदि भाग्यशाली थे। लेकिन ज्यादातर बार इसके बढ़ाव का एक हिस्सा, जहां कुछ उत्पादन में चला गया, यह थोड़ी देर के लिए चला, शायद सालों तक चला, और अब यह अच्छी तरह से नहीं चलता है, और अब यह अच्छी तरह से प्रोफ़ाइल करता है। और यह अब अधिक सामान्य परिदृश्य लगता है।

डीज़ ब्लांचफील्ड: हाँ, और मुझे लगता है कि शब्द "तकनीकी ऋण" शायद एक से अधिक परिचित हैं; मैं जानता हूं कि रॉबिन और मैं निश्चित रूप से हैं। मुझे लगता है कि इन दिनों, विशेष रूप से विकासशील और सिस्टम बिल्डिंग के लिए चुस्त दृष्टिकोण में, तकनीकी ऋण की अवधारणा अब एक बहुत ही वास्तविक चीज है, और हम वास्तव में परियोजनाओं में इसके लिए जिम्मेदार हैं। मुझे पता है, मेरा मतलब है, weve को मीडिया लेंस और अन्य की तरह हमारी अपनी परियोजनाएं मिलीं, जहां weve को दैनिक आधार पर कोडिंग हो रही है, और ब्लोर ग्रुप में विभिन्न चीजें हैं। और जब भी कोई चीज बन रही होती है, तो हम उस पर ध्यान देते हैं, मैं उसे देखता हूं, और हमेशा इस नजरिए से देखता हूं कि मुझे इस समय इसे ठीक करने के लिए क्या खर्च करना पड़ रहा है, बनाम क्या मैं अभी इसे कर सकता हूं और इसे वहां से बाहर निकालो, और फिर देखो और देखो कि क्या यह चीजें टूटने वाली हैं। और इस तकनीकी ऋण को विरासत में मिला है जिसे मैं जानता हूं कि बीमार को बाद में वापस सर्कल करना होगा और ठीक करना होगा।

और मेरा मतलब है, Ive ने पिछले सात दिनों में: Ive ने कुछ उपकरण और पटकथाएँ लिखीं, Ive ने पायथन भाषा के कुछ टुकड़े लिखे, और Ive ने इसे Mongo बैक एंड में तैनात किया, जिससे यह सुनिश्चित हो गया कि यह अच्छा और साफ और सुरक्षित है। लेकिन यह सिर्फ उस क्वेरी को प्राप्त करता है जिसकी मुझे आवश्यकता है, यह जानकर कि मुझे काम करने के लिए उस फ़ंक्शन की आवश्यकता है, बड़ी पहेली को प्राप्त करने के लिए; मेरा असली दर्द यही है। और इसलिए आप इस तकनीकी ऋण को उठाते हैं, और मुझे लगता है कि यह अब केवल एक सामयिक बात नहीं है, मुझे लगता है कि यह अब विकसित होने वाले डीएनए का हिस्सा है। लोग बस - असंतुष्ट नहीं - वे सिर्फ तकनीकी ऋण को स्वीकार करते हैं एक सामान्य तौर पर काम करने का एक प्रकार है, और उन्हें बस इसे लागू करना होगा। जहां आप तकनीकी ऋण लेना चाहते हैं। और मुझे लगता है कि आपने हमें डेमो में जो दिखाया, उसके बारे में महान बात यह है कि आप शाब्दिक रूप से प्रोफ़ाइल कर सकते हैं और देख सकते हैं कि कुछ को चलाने में कितना समय लगता है। और शायद मेरी पसंदीदा चीजों में से एक है। मेरा मतलब है, Ive ने वास्तव में प्रोफाइलिंग टूल्स का निर्माण किया था - हमने अपना कोड चलाने के लिए सेड और लेक्स और Orc में टूल्स का निर्माण किया और यह देखा कि लूप्स कहां थे, इस तरह के टूल उपलब्ध होने से पहले - और जब आपने अपने कोड को जाने और उसकी समीक्षा करने के लिए कोड बनाया था , आपको अपने स्वयं के कोड की समीक्षा नहीं करने में बहुत अच्छा लगता है। लेकिन अब यह मामला नहीं है। इसे ध्यान में रखते हुए, क्या कोई विशेष बाजार खंड है जो इसे किसी अन्य की तुलना में अधिक लेता है? द्रव्यमान की तरह देखना-

बर्ट स्केलोज़: अरे हाँ, Ive मिला- Im आपके लिए एक सादृश्य आकर्षित करने जा रहा हूं, और आपको दिखाता हूं कि गैर-प्रोग्रामर हर समय ऐसा करते हैं। कारण अगर इम कभी एक डिबगर और प्रोफाइलिंग क्लास या सेशन पढ़ाते हैं, तो इल लोगों से पूछते हैं, "ठीक है, यहाँ कितने लोग माइक्रोसॉफ्ट वर्ड में जाते हैं और उद्देश्यपूर्ण वर्तनी परीक्षक का उपयोग कभी नहीं करते हैं?" और दस्तावेज़ लिखने के लिए कोई भी अपना हाथ नहीं डालता है, क्योंकि? हम सभी जानते हैं कि हम अंग्रेजी गलतियाँ कर सकते हैं, और इसलिए हर कोई वर्तनी परीक्षक का उपयोग करता है। और मैंने कहा, "ठीक है, जब आप अपने आईडीई में विजुअल बेसिक की तरह लिखते हैं, तो आप डीबगर का उपयोग नहीं करते हैं? यह एक ही बात है, एक जादू परीक्षक की तरह है। ”

डीज़ ब्लांचफील्ड: हाँ, वास्तव में, एक महान सादृश्य है। मैं वास्तव में इसके बारे में नहीं सोचा था, मुझे यह स्वीकार करना होगा कि मैं वास्तव में कुछ उपकरणों के साथ ऐसा ही करता हूं, जिनका मैं उपयोग करता हूं। वास्तव में, एक, ओडीएफ, एक्लिप्स के साथ मेरा पसंदीदा सिर्फ कोड है और वहां कोड पेस्ट करना है और उन चीजों की तलाश में हैं जो बस तुरंत हाइलाइट करते हैं और मुझे एहसास होता है कि मैंने कुछ क्लास कॉल में एक टाइपो बनाया है। और, लेकिन इस तरह के उपकरण के साथ अब यह दिलचस्प है कि आप इसे वास्तविक समय में कर सकते हैं जैसा कि वापस आने और बाद में इसे देखने के लिए है, जो इसे पकड़ने के लिए अच्छा है। लेकिन हाँ, बस एक शब्द प्रोसेसर में डाल के एक महान सादृश्य है, इसकी एक दिलचस्प वेक-अप कॉल का कारण बनता है, बस एहसास है कि आप कुछ टाइपो या यहां तक ​​कि एक व्याकरण त्रुटि बना दिया है, है ना?

बर्ट स्केलोज़: ठीक ठीक।

डीज़ ब्लांचफील्ड: तो, क्या आप अनुमान लगा रहे हैं कि मेरे अनुमान के लिए, मेरे प्रश्न और उत्तर के लिए फेंकने से पहले, मुझे लगता है कि अब मुझे लगता है कि मेरे विचार से अधिक उठाव दिखाई दे रहा है। यदि आप ऐसा करने के लिए दृष्टिकोण के आसपास किसी तरह की सिफारिश देने जा रहे थे - मुझे यह मानकर बयानबाजी की जा रही है - क्या यह मामला है कि आप जल्दी में आते हैं और इसे लागू कर रहे हैं जैसे कि आप विकसित हो रहे हैं, इससे पहले कि आप विकसित हो रहे हैं? या यह मामला है कि आप मुख्य रूप से भवन प्राप्त करते हैं, चलते हैं, कुछ का निर्माण करते हैं और बाद में इसमें आते हैं? मुझे इसके जल्दी होने के मामले पर संदेह है और सुनिश्चित करें कि आपके कोड साफ-सुथरे हैं। या क्या यह ऐसा मामला है कि उन्हें अपने पद के इस हिस्से पर विचार करना चाहिए?

बर्ट स्केलोज़: आदर्श रूप से, वे इसे उल्टा कर देंगे, लेकिन क्योंकि हर कोई हलचल में है, हलचल दुनिया में जहां उन्हें बस सामान प्राप्त करने के लिए मिला है, वे इसे तब तक नहीं करते हैं जब तक कि वे एक प्रदर्शन समस्या में नहीं भागते हैं जो वे अधिक सीपीयू और मेमोरी जोड़कर हल नहीं करते हैं एक आभासी मशीन के लिए।

डीज़ ब्लांचफील्ड: हाँ। तो, वास्तव में आपने कुछ दिलचस्प उल्लेख किया है, अगर मैं जल्दी कर सकता हूं? आपने पहले उल्लेख किया था कि यह कहीं से भी चलाया जा सकता है, और पीछे के अंत में डेटाबेस से बात कर सकता है। इसलिए यह उस तरह की द्विअर्थी अवधारणा के साथ सहज है, जिसके बारे में हम अभी बात करते हैं, ऑन-प्रिमाइसेस / ऑफ-प्रिमाइस क्लाउड, चीजों के रूप में भी, दिन के अंत में, यदि यह बैक एंड से बात कर सकता है और देख सकता है कोड, यह वास्तव में परवाह नहीं करता है, यह करता है?

बर्ट स्केलोज़: बिल्कुल, हाँ, आप इसे क्लाउड में चला सकते हैं।

डीज़ ब्लांचफील्ड: बहुत बढ़िया, क्योंकि मुझे लगता है कि हमारी नई बहादुर दुनिया कहाँ जा रही है। तो, एरिक। Im अब आपको वापस फेंकने जा रहा हूं और देख रहा हूं कि weve को यहां कुछ प्रश्न मिले हैं और मैं चाहता हूं कि हमारे उपस्थित लोग अब भी हमारे साथ रहें, भले ही weve घंटा बीते।

एरिक कवनघ: हाँ, वहाँ कुछ लोगों को बाहर निकालता है, बीमार बस एक त्वरित टिप्पणी करते हैं: बर्ट, मुझे लगता है कि रूपक, वर्तनी जांच का उपयोग करने के लिए आपको जो सादृश्य देता है वह स्पष्ट रूप से शानदार है। यह एक ब्लॉग या दो के योग्य है, काफी स्पष्ट रूप से, क्योंकि इसका एक अच्छा तरीका यह है कि आप क्या कर रहे हैं, और यह कितना मूल्यवान है, और कैसे यह वास्तव में एक डीबगर का उपयोग करने के लिए एक अच्छा तरीका होना चाहिए। नियमित आधार, सही? मुझे यकीन है कि आप कुछ सिर हिलाते हैं जब आप उस एक को फेंक देते हैं, है ना?

बर्ट स्केलोज़: बिल्कुल, जो मैं उन्हें बताता हूं, उसका कारण है, “मैं अपने दस्तावेज़ों पर वर्तनी जांच क्यों चलाता हूं? मैं बेवकूफ वर्तनी की गलतियों से शर्मिंदा नहीं होना चाहता। "ठीक है, वे बेवकूफ कोडिंग गलतियों से शर्मिंदा नहीं होना चाहते हैं!

एरिक कवनघ: सही। हाँ सचमुच। ठीक है, दोस्तों, यहाँ एक घंटे और पाँच मिनट के दौरान जल गया, इतना बड़ा धन्यवाद आप सभी को अपने समय और ध्यान के लिए। हम इन सभी वेब चैटों को संग्रहीत करते हैं, किसी भी समय वापस आने और उनकी जांच करने के लिए स्वतंत्र महसूस करते हैं। उन लिंक को खोजने के लिए सबसे अच्छी जगह शायद techopedia.com है, इसलिए इसे इस सूची में यहीं जोड़ दें।

और उस के साथ, आप विदाई, लोगों को बोली जा रहे थे। एक बार फिर, महान काम, बर्ट, IDERA से हमारे दोस्तों के लिए धन्यवाद। अगली बार आपसे अच्छी तरह से बात करें, अगले सप्ताह आपसे अच्छी तरह से बात करें। ख्याल रखना! अलविदा।