"यह कल काम कर रहा था, मैं कसम खाता हूँ!" आप क्या कर सकते हैं? [बन्द है]


59

जब आप सुबह पहुंचते हैं, तो आप पाते हैं कि आपका सॉफ़्टवेयर अब काम नहीं करता है, भले ही कल शाम को चले जाने पर ऐसा किया हो।

आप क्या करते हैं? आप पहले क्या जाँच करते हैं? आप नाराज होने से रोकने के लिए और अपनी समस्या पर काम करना शुरू करने के लिए क्या करते हैं? क्या आप अपने सहयोगियों को दोषी मानते हैं और सीधे उनके पास जाते हैं? ऐसी स्थिति में होने से बचने के लिए क्या किया जा सकता है?


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

1
अच्छी तरह से यह ढेर अतिप्रवाह पर नहीं है, इसलिए यह एक सामान्य प्रश्न है। दोष वाला हिस्सा थोड़ा मजाक का है :)
निक्को

28
@ निक्को - यह कल भी काम नहीं किया। सॉफ्टवेयर विकास में बहुत कुछ क्या होता है :)
जोरिस टिम्मरमन्स

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

18
क्या DateTime.Now () के साथ कुछ करना है ???
सारावुत पोसिट्विन्यू

जवाबों:


96

सामान्य संदिग्ध हैं:

  • आपने सोचा था कि यह कल काम करेगा, लेकिन काम के एक पूरे दिन के बाद आप महसूस करने के लिए बहुत अंधे थे कि यह काम नहीं किया।

  • आज सुबह आप आईडीई कैश मेमोरी में कल क्या था इसका उल्लेख नहीं कर सकते हैं।

  • कार्यस्थान ने पिछली रात या एक रात के रखरखाव के संचालन को मंजूरी दे दी है।

  • कोड बेस में कुछ बदल गया है: यह जांचें कि क्या किसी ने (संभवतः अपने आप में) कल के अपने अंतिम संकलन और आज के अंतिम संकलन के बीच बदलाव शुरू किए हैं।

  • समर्थन पुस्तकालयों में कुछ बदल गया है: जांचें कि क्या उन पुस्तकालयों को फिर से जोड़ा गया है या अपग्रेड किया गया है। कारण विशिष्ट पुस्तकालयों के लिए परियोजना के अंदर या बाहर हो सकता है यदि एक जाहिरा तौर पर स्वतंत्र पैकेज का एक नया संस्करण तैनात किया गया है।

  • परीक्षण के माहौल में कुछ बदल गया है: एक आभासी मशीन का नया संस्करण, एक स्टब जिसे संशोधित किया गया है, एक दूरस्थ डेटाबेस सर्वर में परिवर्तन ...

  • संकलन श्रृंखला में कुछ बदल गया है: मेकफाइल्स में बदलाव, मानक पुस्तकालयों के कंपाइलर के आईडीई का नया संस्करण ...


82
आप "ईश्वरीय हस्तक्षेप" और "एक उच्च ऊर्जा कण सर्वर के माध्यम से चले गए और बेतरतीब ढंग से पुन: व्यवस्थित बिट्स" को भूल गए। और सौर विस्फोट।
Kheldar

17
आप भूल गए "आप उपयोग कर रहे हैं <अपनी कम से कम पसंदीदा भाषा यहां डालें>, जो कि बेहद अविश्वसनीय है।
विन्यासकर्ता

4
@ कल्लर - दुर्भावनापूर्ण स्प्राइट, ग्रेमलिन्स एट अल मत भूलना।
5arx

5
@configurator: इसीलिए आपको हमेशा अपनी भाषा लिखनी चाहिए । वसाबी के बारे में स्पॉल्स्की से पूछें! अगर Atwood आसपास है और भाग जाता है तो जाँच करता है
Kheldar

13
एक और क्लासिक ख़तरा है तिथि परिवर्तन। यह निश्चित रूप से "सीमा" तिथियों के लिए विशेष रूप से सच है (महीने / सप्ताह का पहला या अंतिम दिन, 29 फरवरी, आदि)।
Brann

49

1) यदि यह आज काम नहीं कर रहा है, तो यह कल भी काम नहीं कर रहा था।

आपको लगा कि यह काम कर रहा है, लेकिन यह नहीं था।

2) एक समस्या है, और इसे हल किया जाना चाहिए

इसके लिए कौन जिम्मेदार है या दूसरों को दोष देने के बारे में मत सोचो।

यदि कल और आज के बीच कुछ भी नहीं बदला है (जैसे मैं आपके प्रश्न को पढ़ता हूं), तो इसका मतलब है कि आपको वास्तव में काम कर रहे राज्य से पहले अपने कोड के परीक्षण में बेहतर काम करना चाहिए।

इस स्थिति से बचने के लिए आपको उचित परीक्षण और डिबगिंग करना होगा

"वर्किंग" को परिभाषित करें और अपने कोड रूटीन की सीमाओं का परीक्षण करें।

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

ऐसा करने का एक तरीका यह है कि रात के दौरान चलने वाले व्यापक परीक्षणों का एक स्वचालित सेट हो, ताकि आप जिस दिन जांच कर सकें कि क्या कुछ गलत हुआ है और समस्याओं को ठीक कर सकें।


7
मैं आपको दो upvotes देना चाहता हूं - एक के लिए "यदि यह आज काम नहीं कर रहा है, तो यह कल भी काम नहीं कर रहा था।" और एक के लिए "समस्या है, और इसे हल किया जाना चाहिए"। दोनों प्रमुख विचार हैं जिन्हें बहुत से लोग भूल जाते हैं।
मैटबेलंगर

2
"अगर यह आज काम नहीं कर रहा है, तो यह कल भी काम नहीं कर रहा था।" -> कल मेरे साथ कुछ ऐसा हुआ जो एक कुकी पर निर्भर था। जब कुकी पहले ही सेट हो चुकी थी, तो बहुत अच्छा काम किया। यह पता चला कि यह ठीक से बनाया नहीं जा रहा था अगले दिन एक बार यह समाप्त हो गया था और फिर से बनाया जाने की कोशिश कर रहा था।
ग्राहम

@ ग्राहम: "यदि कल और आज के बीच कुछ भी नहीं बदला है तो [...], इसका मतलब है कि आपको वास्तव में काम कर रहे राज्य से पहले अपने कोड के परीक्षण में बेहतर काम करना चाहिए।" आपको अपने कोड का परीक्षण करने में बेहतर होना चाहिए, यह सोचना चाहिए कि क्या होना चाहिए, इसके बारे में सोचें कि क्या होगा। शायद समस्या की बेहतर समझ के साथ ऐसा नहीं हुआ होगा।
जोस फेटी

1 के रूप में): हो सकता है तोड़ने परिवर्तन एक सहायक पुस्तकालय में था
phresnel

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

26

किसी को दोष देने के लिए खोजने की कोशिश असंवैधानिक है और समस्याओं को हल नहीं करता है। यह मत करो।

अगर कल कुछ काम किया और अब काम नहीं करता है, तो या तो आपके पास गैर-निर्धारक व्यवहार (जैसे एक दौड़ की स्थिति) है और कल काम करना सिर्फ भाग्य था, या कुछ तब और अब के बीच बदल गया है, और आपको यह पता लगाने की आवश्यकता है कि यह क्या है है।

आप वास्तव में यह कैसे पता लगा सकते हैं कि कौन सा मामला है और इसे कैसे ठीक किया जा सकता है, यह स्थिति की बारीकियों पर निर्भर करता है, लेकिन यह हमेशा कारणों को खत्म करने में व्यवस्थित होने में मदद करता है, अर्थात 5 चीजों को एक बार में न बदलें और यह देखना बंद करें कि क्या मदद करता है - पता करें कि कौन सी विशिष्ट चीज़ समस्या का कारण बनी, और शायद इसे ठीक करने का तरीका लिखें ताकि आप इसे देख सकें जब यह अब से 3 सप्ताह बाद फिर से होता है।

उपयुक्त डायग्नोस्टिक टूल (डीबगर, प्रोफाइलर, नेटवर्क एनालिसिस टूल) का उपयोग करना भी एक बड़ा बदलाव ला सकता है।


समस्या का विश्लेषण करते समय लिखित नोट्स रखने में भी मदद मिल सकती है।
स्टारब्लू

25

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

समय के साथ मैंने महसूस किया है कि यह संभव है कि वास्तव में पिक्सी का इससे कोई लेना-देना नहीं है और संभवतः मेरा "घर जाने का समय, यह काफी अच्छा होगा" अंतिम निर्माण में विस्तृत परीक्षण और ध्यान नहीं दिया गया है कि शायद यह योग्य है। ।

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

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


1
यह एक बहुत ही विनम्र और आत्म-जवाब देने वाला उत्तर है, जिसे हम में से कई को अपनाना चाहिए। :) मैं आमतौर पर "हे मो, हे लैरी, इस तरह की स्थितियों को चाक करता हूं, मैं सोचने की कोशिश कर रहा था और कुछ भी नहीं हो रहा था!" दिन के अंत में। मैं इन स्थितियों से बचने के लिए, "यह काम करता है! जल्दी से, यह जाँच करें और घर पर जाने से पहले इसे सुधारने का आग्रह करें"।
जेनिफर एस

3
एक जगह मैंने काम किया, किसी का कोड सुबह पहली बात नहीं करेगा। यह पता चला कि जब हमने अपनी मशीनों को बूट किया था, तो स्काइप उस पोर्ट को हड़प लेगा, जिसे एप्लिकेशन पहले इस्तेमाल करना चाहता था।
एपेर

शायद पिक्सी एक असिंचित चर से अधिक कुछ नहीं है? कभी-कभी डिबग संस्करण तब कार्य कर सकता है जब रिलीज़ संस्करण विफल हो जाता है (क्रैश या भिन्न व्यवहार करता है)।
जारेड अपडेटिक

20

संस्करण नियंत्रण का उपयोग करें। एक अलग करो, या अपने VCS 'दोष कार्यक्षमता का उपयोग करें।:

  • diff: हर वी.सी.एस. आपको, अलग-अलग संस्करणों के अंतर दिखाते हैं
  • blame: उदाहरण के लिए। आपको लाइन के आधार पर एक लाइन दिखाता है जिसने क्या बदला है

यदि कोई संस्करण नियंत्रण नहीं है, तो इसके अलावा यह आपके या आपके बॉस की गलती के कारण है, तो आप फ़ाइलों की परिवर्तन तिथियों को देख सकते हैं और संभवतः अपने OS की लॉगिंग सुविधाओं को देख सकते हैं।

इसके अलावा: सब कुछ फिर से इकट्ठा करना, सहायक पुस्तकालयों को फिर से बनाना भी सुनिश्चित करें।

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

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


1
डिफ फीट। मैं हमेशा यही करता हूं।
आदित्य पी

2
@ आदित्यगामीप्रोग्रामर: मैं इसे दिन में कई बार उपयोग करता हूं बस यह देखने के लिए कि मैं कल या ब्रेक से पहले क्या काम कर रहा था :)
phresnel

कोई संस्करण नियंत्रण ?! यह वास्तव में एक भयानक संभावना है।
14

+1 के बारे में मुझे बताने के लिए git blame... पता नहीं था कि यह अस्तित्व में है, लेकिन यह FCKING है
रादू मुराज़े

11

खैर, यहाँ कोड का एक वास्तविक जीवन उदाहरण है कि "कल काम किया" और आज नहीं ... यह इस महीने की शुरुआत से है।

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

एक और सुराग है कि हम ब्रिटेन में हैं, प्रश्न में डेटाबेस संयुक्त राज्य अमेरिका में था ...

तो, आपके प्रश्न के बारे में मेरा जवाब पहले चेक करने के लिए है कि आप अपनी तिथियों को कैसे दोहरा सकते हैं, क्योंकि यदि आप दिन और महीने को मिलाते हैं तो यह पूरी तरह से काम करेगा, लेकिन प्रति माह केवल 1 दिन पर :-)


5

बग को ठीक करें (हालांकि आप सामान्य रूप से करते हैं)। फिर यदि आप पाते हैं कि किसके कारण उन्हें एक विनम्र ईमेल भेजा गया जिससे उन्हें पता चल गया कि क्या गलत हुआ है।

हर कोडर गलती करता है और यदि आप दोष देना शुरू करते हैं तो यह गंभीरता से अगली बार जब आप एक ही काम करेंगे। (संभवतः यह बग भी आपका था)

यह तभी होता है जब आपको उन पर संदेह होता है कि आपको लापरवाह होना चाहिए, तो आपको एक-दो बग से जूझना चाहिए।


5

... आप प्रतिगमन परीक्षण चलाते हैं और उन पर ध्यान केंद्रित करते हैं जो विफल हो जाते हैं।

असल में जो आप छोड़ने से पहले कल करना भूल गए, वह होता है।

आपके पास कोई नहीं है? ठीक है .. तुम कहाँ कह रहे हो? दोष देना ? अच्छा ... वह तो काम कर सकता है


5

पहली चीज जब काम करना बंद हो जाता है, तो अपने आप से पूछना है - क्या अलग है? क्या बदल गया?

जब कल रात कुछ काम किया, लेकिन आज सुबह विफल हो जाता है, तो एक चीज जो स्पष्ट रूप से बदल गई है - तारीख और समय :)

मैं कोशिश करता हूं और सोचता हूं कि क्या मैं जिस तर्क पर काम कर रहा हूं उसका कुछ हिस्सा तारीखों पर निर्भर करता है और समय बीतने से प्रभावित हो सकता है। यह आश्चर्य की बात है कि ऐसी समस्याओं का कारण कितनी बार है।

यदि वह विफल हो जाता है, तो आपको निश्चित रूप से यहां आपूर्ति की गई अन्य महान सलाह का पालन करना चाहिए।


2
कीड़े जो समय की ख़ासियत को शामिल करते हैं जैसे कि दिन के उजाले की बचत में / बाहर स्विच करना पसंदीदा है (अक्टूबर और मार्च में) ...
जूलिया हेवर्ड

4

थोड़े छोटे उत्तर (लिखने के लिए) लेकिन थोड़े लंबे समय तक इसे पाने के लिए: क्यों कार्यक्रम विफल: एंड्रियास ज़ेलर द्वारा व्यवस्थित डिबगिंग के लिए एक गाइड (जो थोड़ा बहुत अकादमिक लग सकता है लेकिन ऐसा नहीं है)


4

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

फिर उससे या उससे बात करें।


4

आपके कोड के आज विफल होने के केवल दो संभावित कारण हैं, लेकिन कल काम किया।

डेटा को देखो

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

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

देखो क्या बदल गया

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


3

बाइनरी चॉप

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

यदि आपका कोड अच्छी तरह से एनकैप्सुलेटेड है तो यह एक शानदार, समय की बचत, स्ट्रेस बस्टिंग टूल है।

एक बार जब आप दोषी कोड पा लेते हैं, तो अक्सर यह स्वयं के परीक्षण पृष्ठ पर त्रुटि को अलग करने योग्य होता है।


यदि आपका प्रोजेक्ट मल्टी-फाइल्स का विस्तार करता है, तो इसे * कफ रैंडमली कफ * द्वारा बढ़ाया जा सकता है । आपकी प्रोजेक्ट की आधी फाइलों को डिलीट कर सकता है , जो निश्चित रूप से एक प्रभावी स्ट्रेस बस्टिंग टूल है (सुनिश्चित करें कि आपको एक बैकअप मिल गया है)।
रेयान

हां, निश्चित रूप से सुनिश्चित करें कि आपने एक बैक अप लिया है!
चिम

3

और निश्चित रूप से, ऐसी स्थिति में होने से बचने के लिए क्या किया जा सकता है?

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

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

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

[टूटी हुई चीजों के बारे में मुझे क्या करना चाहिए।]

जैसा कि दूसरों ने पहले ही कहा है, पता करें कि क्या टूट गया और इसे ठीक करने का प्रयास करें। दोष लगाने की कोशिश में समय बिताने से समस्या हल नहीं होती है।


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

3

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


2

संभवत: यदि यह अब काम नहीं कर रहा है, तो आपने काम नहीं करने के लक्षणों की पहचान की है, यानी, यह लटका हुआ है, या उपयोगकर्ता को एक विशेष त्रुटि संवाद वापस फेंकता है।

यदि समस्या का एकमात्र विवरण "यह काम नहीं कर रहा है", तो पहली बात यह है कि आपको समस्या के लक्षणों के बारे में अधिक जानकारी एकत्र करनी होगी।

तब आप संभावित कारणों की तलाश शुरू कर देते हैं, या तो समस्या के लॉग या प्रयास के माध्यम से या दोनों का संयोजन - यह इस बात पर निर्भर करता है कि आपका सिस्टम मुझे कैसे सेट करता है।

फिर आप उन्हें बाहर करना शुरू करते हैं।


2

जब मैं छुट्टियां लेता हूं तो आमतौर पर यही होता है :-)

अधिक गंभीरता से, मैं पहले उन्हें बताऊंगा:

  • मैं इसमें देखूंगा कि क्या गलत है और क्या जड़ हो सकता है

  • मैं 30-60 मिनट में आधार को छू लूंगा, जब मुझे यह देखने का मौका मिला कि क्या हो रहा है

उस समय के बाद, मैं एक अनुमान लगा सकता हूं कि क्या हुआ है और कब तक इसे ठीक कर लिया जाएगा यदि यह पहले से तय नहीं है और यदि लागू हो, तो हम कौन सा डेटा खो सकते हैं (लेकिन मेरे पास अच्छे बैकअप हैं, ताकि ऐसा कभी न हो उम्मीद है कि)।


दोष वाले भाग के रूप में:

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

  • अगर उसने जानबूझकर ऐसा कुछ किया है जो मैंने उसे नहीं बताया है (जैसे नए आदमी को प्रोडक्शन सर्वर का रूट पासवर्ड देना और उसे सीधे पर्यवेक्षण के बिना उस पर संशोधन करने के लिए कहना) (हाँ, यह पहले से ही हुआ है ...), तो मैं इसका उल्लेख करना होगा।


2

यदि आपके सामान्य बग ट्रेसिंग तरीके काम नहीं करते हैं और सब कुछ कुल गड़बड़ है, तो बैकअप लेना अद्भुत हो सकता है जिसे आप आसानी से बहाल कर सकते हैं।

यह वही है जो मैं स्थानीय रूप से चलाता हूं, हर घंटे सुबह 8 बजे से शाम 6 बजे तक।

rdiff-backup /path/to/mystuff /path/to/mybackup

सरल, एह?

यदि आपको कभी भी कुछ भी बहाल करना है, तो उपयोग करें

rdiff-backup -r 24h /path/to/mybackup/specific/dir /tmp/restored

rdiff- बैकअप केवल उन फ़ाइलों को संग्रहीत करता है जो अलग-अलग होती हैं। आप लिनक्स, मैक और जीत पर rdiff- बैकअप का उपयोग कर सकते हैं।

बेशक, यह आपका एकमात्र बैकअप नहीं होना चाहिए। लेकिन स्थानीय बैकअप के लिए यह बेहद आसान और सस्ता तरीका है।

अब, मैं इसे सामान्य बग फिक्सिंग विधि के रूप में अनुशंसित नहीं करूंगा, लेकिन यदि बाकी सब विफल हो जाता है, तो यह एक गिरावट है।


3
संस्करण नियंत्रण आसान है
एपर

@ अन्य: बिल्कुल सहमत। हालांकि, ऐसी चीजें हैं जो स्रोत नियंत्रण (विशेष रूप से माइक्रो-कम शेड्यूल पर) का विरोध करती हैं, जैसे कि बड़ी बाइनरी फाइलें। मुझे लगता है मैं ऐसी परियोजनाओं से बच सकते हैं बस खुश हूँ समय की सबसे
sehe

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

@sehe: git के साथ, जिसका मैं वर्तमान में उपयोग कर रहा हूं, आपके पास अपना व्यक्तिगत रेपो है, इसलिए रास्ते के हर चरण पर प्रतिबद्ध नहीं होने का कोई बहाना नहीं है।
thepeer

@olafure: किसी भी सभ्य संस्करण नियंत्रण प्रणाली से आपको किसी भी बिंदु पर सिस्टम की पूर्ण स्थिति की जांच / क्लोन करने की अनुमति मिल सकती है।
thepeer

2

बग पहले से ही मौजूद हो सकता है, लेकिन बाहरी कारकों या गहरी प्रणाली के मुद्दों द्वारा छिपाया गया है।

यह मेरे साथ हुआ। हमारी परियोजना के 2 बिल्ड के बीच एक बग विकसित हुआ। वस्तुतः, हमने जो एकमात्र परिवर्तन किया था, वह अंतर्निहित पुस्तकालयों में से एक के अधिक हाल के निर्माण के लिए अद्यतन करना था।

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

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


1

यह कल काम कर रहा था क्योंकि इसका सही इस्तेमाल किया जा रहा था।

आप पाते हैं कि अन्य लोग चीजों का उपयोग इस तरह से करते हैं कि ऐसा न हो कि सामान तोड़ने का एक अच्छा तरीका है।

दिन में कोड को जल्दी अपडेट करने के लिए हमेशा अच्छा होता है क्योंकि यह आपको एक अच्छा परीक्षण वातावरण देता है।

बैकअप!


-2

मुझे लगता है कि यह कहां और कैसे खराब हो रहा है, यह इंगित करने के लिए मेरे डेटा को बहुत मददगार बनाने के लिए ब्रेकपॉइंट्स सेट करना और जांचना बहुत मददगार है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.