घर विकास तेजी से प्रतिक्रिया: डेटाबेस डिबगिंग और बचाव के लिए रूपरेखा

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

Anonim

टेकोपेडिया स्टाफ द्वारा, मार्च 15, 2017

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

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

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

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

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

वास्तव में आपके बारे में एक जगह है, ट्विटर पर मुझे मारा, @eric_kavanagh बेशक।

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

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

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

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

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

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

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

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

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

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

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

एरिक Kavanagh: मैं इसे पारित करेंगे, खड़े रहो, पर पकड़।

स्वचालित आवाज़: प्रतिभागी लाइनें मौन हो गईं।

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

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

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

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

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

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

(हँसी)

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

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

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

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

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

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

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

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

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

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

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

एरिक कवनघ: ठीक है, बर्ट, इसे हटा दो।

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

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

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

Dez Blanchfield: मैं यह कहने जा रहा था, आपने हमें वहां बहुत पुराना कर दिया है।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

बर्ट स्कल्जो: बिल्कुल।

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

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

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

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

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

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

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

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

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

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