"গতকাল এটি কাজ করছিল, আমি দিব্যি!" আপনি কী করতে পারেন? [বন্ধ]


59

আপনি যখন সকালে পৌঁছেছেন, আপনি দেখতে পেয়েছেন যে আপনার সফ্টওয়্যারটি আর কাজ করে না, যদিও আপনি গতকাল সন্ধ্যা ছাড়ার সময় এটি করেছিল।

আপনি কি করেন? আপনি প্রথমে কি পরীক্ষা করেন? রাগ করা বন্ধ করতে এবং আপনার সমস্যায় কাজ শুরু করতে আপনি কী করবেন? আপনি কি আপনার সহকর্মীদের দোষ দিয়েছেন এবং সরাসরি তাদের কাছে যান? এমন পরিস্থিতিতে এড়াতে কী করা যেতে পারে?


10
দোষ দেওয়া কখনই দুর্দান্ত ধারণা নয়। যেহেতু আপনি প্রশ্ন বা সমস্যাটি বিশদভাবে ব্যাখ্যা করেননি, সুতরাং অনুমান করা অসম্ভব যে প্রোগ্রামটি ত্রুটিটি নিজেই তৈরি করে নি। উদাহরণস্বরূপ: হোস্টিং সার্ভারে কোনও ওয়েবসাইট যদি ব্যান্ডউইথ সীমাতে পৌঁছে, তবে এটি নিজেই নেমে যায়। সুতরাং আপনি নিশ্চিত না হওয়া অবধি আপনি কাউকে দোষ দিতে পারবেন না যে কোডটি প্রথমে যথাযথভাবে আচরণ করে নি।
পঙ্কজ উপাধ্যায়

1
ভাল যে স্ট্যাক ওভারফ্লোতে না তাই এটি আরও একটি সাধারণ প্রশ্ন। দোষারোপটি অংশটি একটি রসিকতা :)
নিকক

28
@ নিককো - এটি গতকালও কার্যকর হয়নি। এটি যা সফ্টওয়্যার বিকাশে অনেক কিছু ঘটে :)
জরিস টিমারম্যানস

4
পরিস্থিতিতে না এড়াতে, পরীক্ষায় তাড়াহুড়া করবেন না যাতে আপনি বিকেলে শেষ কয়েক মিনিটে মোতায়েন করতে পারেন। এবং পরীক্ষা করার সময় আপনার গোলাপের রঙিন / বিপদ সংবেদনশীল সানগ্লাসটি বন্ধ করুন।
স্টিভ 314

18
ডেটটাইম.নাউ () এর সাথে কিছু করার আছে ???
সারাউত পোসিটওয়িনিয়ু

উত্তর:


96

সাধারণ সন্দেহভাজনরা হলেন:

  • আপনি ভেবেছিলেন এটি গতকালই কাজ করেছে তবে পুরো দিনের কাজের পরে আপনি বুঝতে পারছেন না যে এটি কার্যকর হয়নি।

  • এই সকালে আপনি আর আইডিই ক্যাশে মেমরিতে গতকাল আর উল্লেখ করতে পারবেন না।

  • ওয়ার্কস্টেশনটি গত রাতে বা একটি রাতের রক্ষণাবেক্ষণ অপারেশন ক্লিয়ার / টিএমপি ডিরেক্টরিগুলি পুনরায় চালু হয়েছে।

  • কোড বেসে কিছু পরিবর্তন হয়েছে: আপনার গতকালের শেষ সংকলন এবং আপনার আজকের শেষ সংকলনের মধ্যে কেউ (সম্ভবত নিজেরাই) পরিবর্তন করেছে কিনা তা পরীক্ষা করে দেখুন।

  • সমর্থন লাইব্রেরিতে কিছু পরিবর্তন হয়েছে: libra লাইব্রেরিগুলি পুনরায় সংযুক্ত করা হয়েছে বা আপগ্রেড হয়েছে কিনা তা পরীক্ষা করে দেখুন। আপাতদৃষ্টিতে স্বতন্ত্র প্যাকেজের নতুন সংস্করণ স্থাপন করা থাকলে কারণটি নির্দিষ্ট গ্রন্থাগারগুলির জন্য বা বাইরে প্রকল্পের ভিতরে থাকতে পারে।

  • পরীক্ষার পরিবেশে কিছু পরিবর্তন হয়েছে: ভার্চুয়াল মেশিনের নতুন সংস্করণ, একটি স্টাব সংশোধন করা হয়েছে, একটি দূরবর্তী ডাটাবেস সার্ভারে পরিবর্তন ...

  • সংকলনের শৃঙ্খলে কিছু বদলেছে: স্ট্যান্ডার্ড লাইব্রেরির মেকফিলস, আইডিইর নতুন সংস্করণ, সংকলক, এর পরিবর্তন ...


82
আপনি "divineশিক হস্তক্ষেপ" ভুলে গেছেন এবং "একটি উচ্চ শক্তির কণা সার্ভারের মাধ্যমে গিয়েছিল এবং এলোমেলোভাবে বিটগুলি পুনরায় সাজিয়েছে"। এবং সৌর বিস্ফোরণ।
খেলাদার

17
তুমি ভুলে গেছ "আপনি যা কুখ্যাতিপূর্ণভাবে অবিশ্বস্ত হয়, <এখানে আপনার অন্তত প্রিয় ভাষা ঢোকান> ব্যবহার করছেন।
Configurator

4
@ খেলাদার - দূষিত স্প্রেটিস, গ্রিমিলিনস এবং অন্যকে ভুলে যাবেন না।
5arx

5
@ কনফিগুয়েটর: এজন্য আপনার নিজের ভাষাটি সর্বদা লেখাই উচিত । ওয়াসাবি সম্পর্কে স্পলস্কিকে জিজ্ঞাসা করুন!
আটউড

13
আরেকটি ক্লাসিক ক্ষতি হ'ল তারিখ পরিবর্তন। এটি অবশ্যই "সীমাবদ্ধতার" তারিখগুলির জন্য বিশেষভাবে সত্য (মাসের / সপ্তাহের প্রথম বা শেষ দিন, 29 শে ফেব্রুয়ারি ইত্যাদি)।
ব্রান

49

1) এটি যদি আজ কাজ করে না, এটি গতকালও কাজ করছিল না।

আপনি ভেবেছিলেন এটি কাজ করছে, তবে তা হয়নি।

2) একটি সমস্যা আছে, এবং এটি সমাধান করা আবশ্যক

এর জন্য কে দায়ী বা অন্যকে দোষ দেওয়ার বিষয়ে চিন্তা করবেন না।

গতকাল এবং আজকের মধ্যে যদি কোনও কিছু পরিবর্তিত হয় না (যেমন আমি আপনার প্রশ্নটি পড়ার অনুমান করি) তবে এর অর্থ এটি আপনার কোডটি পরীক্ষা করে আরও ভাল কাজ করা উচিত যা বাস্তবে এটি কাজ করছে তা জানানোর আগে।

এই পরিস্থিতি এড়াতে আপনাকে সঠিক টেস্টিং এবং ডিবাগিং করতে হবে

"কার্যকারী" সংজ্ঞায়িত করুন এবং আপনার কোড রুটিনের সীমানা পরীক্ষা করুন।

  • আপনার প্রোগ্রাম বা কোড কার্যকারিতা ব্যবহার করবে এমন একজন ব্যবহারকারী হওয়ার চেষ্টা করুন।
  • আপনার কোডটিকে অনুমোদিত সীমাতে এবং তার বাইরে ঠেলাও এবং আসলে এটি ভেঙে গেছে কিনা তা পরীক্ষা করুন।

এটি করার একটি উপায় হ'ল রাতের বরাবর বিস্তৃত পরীক্ষাগুলির একটি স্বয়ংক্রিয় সেট চালানো, যাতে পরের দিন আপনি কিছু ভুল হয়েছে কিনা তা পরীক্ষা করে সমস্যাগুলি সমাধান করতে পারেন।


7
আমি আপনাকে দুটি উপস্থাপনা দিতে চাই - একটিটির জন্য "এটি যদি আজ কাজ করে না তবে এটি গতকালও কাজ করছিল না।" এবং "এর জন্য একটি সমস্যা রয়েছে এবং এটি অবশ্যই সমাধান করা উচিত"। উভয়ই মূল ধারণা যা অনেক লোক ভুলে যায়।
ম্যাটবেঞ্জার

2
"যদি এটি আজ কাজ না করে, এটি গতকালও কাজ করে না।" -> গতকাল আমার সাথে এমন কিছু ঘটেছিল যা কোনও কুকির উপর নির্ভর করে সামনের কিছু শেষ কোডিং করে। কুকি ইতিমধ্যে সেট করা ছিল যখন দুর্দান্ত কাজ। পরের দিন এটির মেয়াদ শেষ হয়ে যাওয়ার পরে এবং পুনরায় তৈরির চেষ্টা করার পরে এটি সঠিকভাবে আর তৈরি করা হচ্ছে না তা খুঁজে পেয়েছি।
গ্রাহাম

@ গ্রাহাম: দেখুন "গতকাল এবং আজকের মধ্যে যদি কিছু বদলিত না [...], এর অর্থ হল আপনার কোডটি কার্য সম্পাদন করার আগে তার পরীক্ষার জন্য আরও ভাল কাজ করা উচিত"। আপনার কোডটি পরীক্ষা করার ক্ষেত্রে আপনাকে অবশ্যই আরও ভাল হতে হবে, কী ঘটবে সে সম্পর্কে চিন্তাভাবনা করুন, আমার কী হবে তা ভেবে দেখুন। সম্ভবত সমস্যার আরও ভাল বোঝার সাথে, এটি ঘটেনি।
জোসে ফাতি

যেমন 1): সম্ভবত ব্রেকিং পরিবর্তনটি একটি সহায়ক লাইব্রেরিতে ছিল
ফ্রেসেল

কঠোরভাবে সত্য নয় ...: পিআই দুর্ঘটনাক্রমে আমার অ্যাপ্লিকেশনটিতে কিছু ক্যাশে ফাইল টানিয়ে একটি অ্যাপ্লিকেশনটি ভেঙে দিয়েছিল যা পুরোপুরি ভুলভাবে সিরিয়ালায়িত করা বস্তু ছিল। অ্যাপ্লিকেশনটি দুর্দান্ত ছিল এবং এটি ঠিকঠাকভাবে কাজ করছিল, এটি ঠিক তখনই যখন আমি গিট টান করেছিলাম, কারণ ক্যাশে ফাইলগুলি উপেক্ষা করা হয়েছিল, প্রোগ্রামটি আপডেট হয়েছিল এবং এটির জন্য আলাদা ফর্ম্যাটে অবজেক্টগুলির প্রয়োজন ছিল। আপনি এখনও
উর্ধ্বতনটি পান

26

কাউকে দোষ দেওয়ার জন্য খুঁজে বের করার চেষ্টা করা সংবিধানমূলক এবং সমস্যাগুলি সমাধান করে না। এটা করবেন না।

যদি গতকাল কোনও কাজ হয়েছিল এবং এখন এটি কাজ করে না, তবে হয় আপনার অ-সংজ্ঞাবিরোধী আচরণ রয়েছে (রেসের শর্তের মতো) এবং গতকাল এটি কাজ করা ঠিক ভাগ্য ছিল, বা তখন এবং এখনকার মধ্যে কিছু পরিবর্তিত হয়েছে এবং আপনাকে এটি খুঁজে বের করতে হবে হয়।

কোনটি কেস এবং কীভাবে এটি স্থির করা যায় ঠিক কীভাবে তা পরিস্থিতিগুলির নির্দিষ্টতার উপর নির্ভর করে তবে এটি সর্বদা কারণগুলি নির্মূল করার জন্য পদ্ধতিগত হতে সহায়তা করে, অর্থাত্ একবারে 5 টি জিনিস পরিবর্তন করবেন না এবং এটি যদি সহায়তা করে তবে সন্ধান বন্ধ করে দিন - কোন নির্দিষ্ট জিনিসটি সমস্যার সৃষ্টি করেছে তা খুঁজে বার করুন এবং সম্ভবত কীভাবে এটি ঠিক করবেন তা লিখুন যাতে এখন থেকে 3 সপ্তাহ পরে আবার এটি ঘটে তবে আপনি এটি সন্ধান করতে পারেন।

উপযুক্ত ডায়াগনস্টিক সরঞ্জাম (ডিবাগার, প্রোফাইলার, নেটওয়ার্ক বিশ্লেষণ সরঞ্জাম) ব্যবহার করাও একটি বড় পার্থক্য আনতে পারে।


সমস্যাটি বিশ্লেষণ করার সময় লিখিত নোটগুলি রাখতে সহায়তা করতে পারে।
স্টার ব্লু

25

আমি এমন কোড দিয়ে কাজ করেছি যা দেখে রাতারাতি পরিবর্তন ঘটেছিল এবং কিছুক্ষণ পরে আমি এই সিদ্ধান্তে পৌঁছলাম যে এটি খারাপ পিক্সিগুলি আমার কোডবেজে রাতের বেলা হামাগুড়ি দিয়েছিল এবং জিনিসগুলি এমনভাবে বদলেছিল যে গতকাল এটি কার্যকর হয়েছে সত্ত্বেও, এটি এখন মোটেই কাজ করে না প্রকৃতপক্ষে ক্লাসিক শ্রোইডিনবাগ স্টাইলে, এটি এখন কেবল কার্যকর হয় না, এটি স্বচ্ছভাবে পরিষ্কার যে এটির আগে কখনও কোনও উপায় নেই।

সময়ের সাথে সাথে আমি বুঝতে পেরেছি যে এটি কেবল সম্ভব যে আসলে পিক্সিসগুলির সাথে কিছু করার নেই এবং সম্ভবত আমার "বাড়ি যাওয়ার সময়, এটি যথেষ্ট ভাল" শেষ বিল্ডটি সম্ভবত এটির যোগ্য বিশদ পরীক্ষা এবং মনোযোগ পাবে না ।

সকালে যখন আমি এটির মুখোমুখি হলাম তখন আমার প্রথম অনুমানটি হ'ল এটি সম্ভবত আমার দোষ কারণ আমি সাধারণত আমার নিজস্ব বৈশিষ্ট্য বা সফ্টওয়্যারটির যে কোণগুলিতে আমি কাজ করছি তার জন্য দায়বদ্ধ। আমার দ্বিতীয় ধারণাটি হ'ল আমিও সম্ভবত সেই কফিটি পেতে পারি। যদি এটি স্পষ্টভাবে স্পষ্টভাবে কিছু না যে একটি বানর সনাক্ত করতে পারে (যা এটি মাঝে মাঝে হয়) তবে সম্ভাবনা ভাল যে আমি কোনও লাইব্রেরির পুরানো সংস্করণে টেনে আনতে পেরেছি, ভুল করে এমন ফাইল ফেলা হয়েছে যা রোল করার দরকার নেই back ফিরে আসুন বা এমন কোনও কিছু ক্যাশে রেখেছেন যা এটিকে পরীক্ষা না করে বিল্ডে এনেছে। আমার সাম্প্রতিক উত্স কন্ট্রোল ক্রিয়াকলাপটি দেখে আমার করা জিনিসগুলি প্রকাশিত হয়, বিল্ডটি পরিষ্কার করা প্রায়শই ভুল কৃত সংস্করণগুলি সরিয়ে দেয়।

কখনও কখনও এটি আমার সাথে আসলেই কিছুই করার নেই - কেউ উল্লেখ না করেই নির্ভরতা আপডেট করেছে, উইন্ডোজ আপডেট এমন কিছু ইনস্টল করেছে যা পরিবেশ পরিবর্তন করেছে যাতে আমার কোডটি কাজ না করে; অনেকগুলি পটভূমি সম্ভাবনা রয়েছে তবে বেশিরভাগ লোকের মতো আমিও মূলত একজন নির্বোধ।


1
এটি একটি অত্যন্ত নম্র এবং স্ব-হ্রাসমূলক উত্তর যা আমাদের অনেকের গ্রহণ করা উচিত। :) আমি সাধারণত "আরে মো, আরে ল্যারি, আমি ভাবার চেষ্টা করছিলাম এবং কিছুই হচ্ছিল না!" অবধি এই ধরণের পরিস্থিতি খাড়া করি! " দিনের শেষে. এই পরিস্থিতি এড়াতে দিনের শেষে "এটি কার্যকর হয়! দ্রুত, এটিকে পরীক্ষা করে আপনার উন্নতি করার তাগিদ পাওয়ার আগে বাড়িতে চলে যান" এই পদ্ধতিটিও আমি ব্যবহার করি।
জেনিফার এস

3
আমি যে জায়গায় কাজ করেছি, কারও কোডটি সকালে প্রথম জিনিসটি ব্যবহার করবে না। দেখা গেল যে আমরা যখন আমাদের মেশিনগুলি বুট করি তখন স্কাইপটি পোর্টটি দখল করে নেয় অ্যাপ্লিকেশনটি যখন এটি শুরু হয়েছিল তখন ব্যবহার করা উচিত।
thepeer

সম্ভবত পিক্সি একটি অস্বীকারহীন পরিবর্তনশীল ছাড়া আর কিছুই নয়? কখনও কখনও ডিবাগ সংস্করণ কাজ করতে পারে যখন রিলিজ সংস্করণটি ব্যর্থ হয় (ক্র্যাশ হয় বা ভিন্নভাবে আচরণ করে)।
জারেড আপডেটে

20

সংস্করণ নিয়ন্ত্রণ ব্যবহার করুন। একটি আলাদা করুন, বা আপনার ভিসিএসের দোষ কার্যকারিতাটি ব্যবহার করুন:

  • diff: প্রতিটি ভিসিএস। আপনাকে uhm, বিভিন্ন সংস্করণের পার্থক্য দেখায়
  • blame: উদাহরণস্বরূপ গিট কে কী পরিবর্তন করেছে রেখার ভিত্তিতে আপনাকে এক লাইনে দেখায়

যদি কোনও সংস্করণ নিয়ন্ত্রণ না থাকে তবে এটি নিজের বা আপনার বসের দোষ ব্যতীত, আপনি ফাইলগুলির পরিবর্তনের তারিখগুলি দেখতে পারেন এবং সম্ভবত আপনার ওএসের লগিং সুবিধাগুলি সন্ধান করতে পারেন।

এগুলি ছাড়াও: সবকিছু পুনরায় সংকলন করুন, সহায়ক লাইব্রেরিগুলিও পুনরায় সংকলন করতে ভুলবেন না।

অবশ্যই: যদি আপনি ত্রুটির উত্স পেয়ে থাকেন তবে শান্ত থাকুন, কেন পরিবর্তন হয়েছে তা জিজ্ঞাসা করুন, আপনার সমস্যাটি ব্যাখ্যা করুন এবং এমন একটি সমাধানের প্রস্তাব করুন যা আপনাকে উভয়কেই খুশি করে। তাকে / তাকে চিত্কার করবেন না, এটি আপনার উত্পাদনশীলতার পক্ষে বিষ be

যদি কোনও পরিবর্তন না হয় তবে এখন দেখার সময় এটি সিস্টেমে কী পরিবর্তন হয়েছে। উদাহরণস্বরূপ, সম্প্রতি ম্যাক ওএস কম্পিউটারগুলি অ্যাপাচে নতুন সংস্করণে আপডেট হয়েছে যা কিছু কনফিগারেশনকে অবৈধ করে তুলেছে।


1
ডিফ ফ্যাট আমি সবসময় যা করি তা হ'ল
আদিত্য পি

2
@ আদিত্যগেম প্রোগ্রামার: আমি গতকাল বা বিরতির আগে আমি কী কাজ করছিলাম তা দেখার জন্য আমি এটি দিনে কয়েকবার ব্যবহার করি :)
ফ্রেসনেল

কোন সংস্করণ নিয়ন্ত্রণ ?! সত্যিই এটি একটি ভয়াবহ সম্ভাবনা।
thepeer

আমাকে সম্পর্কে বলার জন্য +1 git blame... এর অস্তিত্বের কোনও ধারণা ছিল না, তবে এটি দুর্দান্ত চমকপ্রদ
রাদু মুর্জিয়া

11

ঠিক আছে, এখানে কোডের একটি বাস্তব জীবনের উদাহরণ যা "গতকাল কাজ করেছিল" এবং আজ নয় ... এটি এই মাসের শুরুর দিকের।

প্রশ্নে থাকা অ্যাপ্লিকেশনটি তারিখ অনুসারে একটি ডাটাবেস থেকে তথ্য টানতে পারে এবং বর্তমান দিনের ডেটা পাওয়াটাই ডিফল্ট আচরণ। এটি 8 ই আগস্টে সূক্ষ্মভাবে কাজ করে, তবে 9 ই ব্যর্থ হয়েছিল। এটির আগে এটি পরীক্ষা করা হয়নি। এটি 9 সেপ্টেম্বর, এবং 10 ই অক্টোবরও কাজ করত ...

আরেকটি ক্লুটি হ'ল আমরা যুক্তরাজ্যে আছি, প্রশ্নে থাকা ডাটাবেসটি ছিল মার্কিন যুক্তরাষ্ট্রে ...

সুতরাং, প্রথমে কী চেক করতে হবে সে সম্পর্কে আপনার প্রশ্নের উত্তরটি হ'ল আপনি কীভাবে আপনার তারিখগুলি বিন্যাস করবেন তা দ্বিগুণ পরীক্ষা করা, কারণ আপনি যদি দিন এবং মাসের ক্ষেত্রগুলি মিশ্রিত করেন তবে এটি পুরোপুরি কার্যকর হবে তবে প্রতি মাসে কেবল 1 দিন :-)


5

বাগ ঠিক করুন (তবে আপনি সাধারণত করেন) do তারপরে যদি আপনি খুঁজে পান যে কে কার জন্য এটি করেছে তাদের একটি ভদ্র ইমেল প্রেরণ করুন যাতে তাদের কী ভুল হয়েছে তা জানান।

প্রতিটি কোডার ভুল করে এবং আপনি দোষ দেওয়া শুরু করেন তবে পরের বার যখন আপনি একই জিনিসটি করেন তখন এটি মারাত্মকভাবে পিছিয়ে যাবে। (সম্ভবত এই বাগটিও আপনার ছিল)

কেবলমাত্র যদি আপনি তাদেরকে নিয়মিতভাবে অসাবধান বলে সন্দেহ করেন তবে আপনি কয়েকটি বাগের মধ্যে একটি বড় চুক্তি করা উচিত।


5

... আপনি রিগ্রেশন টেস্ট চালান এবং যারা ব্যর্থ হন তাদের ফোকাস করুন।

আসলে যাবার আগে আপনি গতকাল যা করতে ভুলে গিয়েছিলেন, তা ঘটে।

তোমার কোন নেই? ঠিক আছে .. তুমি কোথায় বলছ? দোষ ? ঠিক আছে ... তাহলে কাজ করতে পারে


5

যখন কোনও কাজ বন্ধ হয়ে যায় তখন করার প্রথম জিনিসটি নিজেকে জিজ্ঞাসা করা - কী আলাদা? কি বদলে গেছে?

যখন গতকাল রাতে কোনও কাজ করা হয়েছিল কিন্তু আজ সকালে ব্যর্থ হয়, তখন একটি জিনিস যা স্পষ্টতই পরিবর্তিত হয়েছিল তা হল - তারিখ এবং সময় :)

আমি চেষ্টা করব এবং ভাবব যে আমি যে যুক্তি নিয়ে কাজ করছি তার কোনও অংশ আছে কিনা তা তারিখের উপর নির্ভর করে এবং সময়ের সাথে সাথে প্রভাবিত হতে পারে। এটি আশ্চর্যজনক যে এটি কতবার এরকম সমস্যার কারণ।

যদি এটি ব্যর্থ হয় তবে আপনার অবশ্যই সরবরাহিত অন্যান্য দুর্দান্ত পরামর্শ অনুসরণ করা উচিত।


2
দিবালোকের সঞ্চয় বাছাইয়ের / বাইরে যাওয়ার মতো সময় অদ্ভুততার সাথে জড়িত বাগগুলি প্রিয় (অক্টোবর এবং মার্চ মাসে) ...
জুলিয়া

4

একটি কিন্ডার সংক্ষিপ্ত উত্তর (লেখার জন্য) তবে এটির মূল বক্তব্য জানতে আগ্রহী: প্রোগ্রামগুলি কেন ব্যর্থ হয়: আন্দ্রেয়াস জেলারের সিস্টেমিক ডিবেগিংয়ের একটি গাইড (যা কিছুটা একাডেমিক মনে হলেও এটি তা নয়)


4

ইউনিট পরীক্ষা (গুলি) ব্যর্থ হওয়ার পরে অবিচ্ছিন্ন ইন্টিগ্রেশন ইঞ্জিন দ্বারা প্রেরিত মেলটির পরে আপনি আপনার মেইলবক্সটি দেখেন (বা যদি আপনি সেই নির্দিষ্ট সমস্যাটি না দেখেন তবে লগ পৃষ্ঠা) এবং দেখুন যে বিল্ডের ঠিক আগে চেক-ইন করেছে ।

তারপরে তার সাথে কথা বলুন।


4

আজ আপনার কোডটি ব্যর্থ হওয়ার কেবল দুটি সম্ভাব্য কারণ রয়েছে তবে গতকাল কাজ করেছিল worked

তথ্য দেখুন

ডেটাতে এমন কিছু আছে যা আপনি পরীক্ষা করেন নি বা অ্যাকাউন্ট করেন নি। হয় ডেটা সঠিকভাবে যাচাই করা হয় না বা যুক্তিযুক্ত একটি ত্রুটি প্রকাশিত হয় না যতক্ষণ না আপনি যে যৌক্তিক শর্তটি অনুমান করেননি ততক্ষণ ঘটে না। এর অর্থ গতকাল বাগটি ছিল, তবে এটি বৈধ ডেটার আওতায় আপনার কাছ থেকে লুকিয়ে ছিল।

আমি একবার কয়েক অর্ডার এন্ট্রি কোড কয়েক সপ্তাহ ধরে জরিমানা ছিল। আমি একদিন বাড়ি গেলাম, মারা গেল। তদন্তের পরের দিন প্রকাশ পেয়েছে যে আমার কাছে একটি বাগ ফাংশন কলের চেইনে লুকানো ছিল। দুর্বলভাবে টাইপ করা ভাষায়, আমি একটি পূর্ণসংখ্যা ঘোষণা করেছিলাম যখন আমার দীর্ঘ ইনট ব্যবহার করা উচিত। ভাষাটি দুটির মধ্যে স্বয়ংক্রিয়ভাবে রূপান্তর করেছিল যতক্ষণ না এটি সংখ্যায় পূর্ণ সংখ্যায় পূর্ণ হবে exceed অর্ডার নম্বর 32768 এ সিস্টেমটি ব্যর্থ হয়েছিল।

কি পরিবর্তন হয়েছে দেখুন

এটি কাজ করার পরে কি পরিবর্তন হয়েছে তা দেখুন। আইটি বিভাগটি কোনও ওএস আপডেট সরিয়ে দিয়েছে? অন্য কোডার কি আপনার প্রোগ্রামটি ব্যবহার করে কোড সংশোধন করেছে? ব্যবহারকারীর অনুমতি পরিবর্তন হয়েছে? প্রায়শই, যদি আপনি কী পরিবর্তন করেন তা খুঁজে পান, আপনি বাগটি খুঁজে পাবেন।


3

বাইনারি চপ

জটিল জাভাস্ক্রিপ্ট ত্রুটির জন্য বিশেষত ভাল কাজ করে। মূলত অর্ধেক কোডটি মন্তব্য করুন, দেখুন যে আপনি ত্রুটি পেয়েছেন কিনা, আপনি যদি কোডটির অর্ধেকটি করেন তবে এটি করুন। আবার এটি অর্ধেক এবং চালিয়ে যান।

যদি আপনার কোডটি ভালভাবে encapsulated হয় এটি একটি দুর্দান্ত, সময় সাশ্রয়, স্ট্রেস বস্টিং সরঞ্জাম ing

একবার আপনি দোষী কোডটি খুঁজে পাওয়ার পরে, এটির নিজের পরীক্ষার পৃষ্ঠাতে ত্রুটিটি বিচ্ছিন্ন করে ফেলা প্রায়শই সার্থক।


অবশ্যই যদি আপনার প্রকল্পটি বহু-ফাইলগুলিকে ছড়িয়ে দেয় তবে এটি * কাশি এলোমেলো কাশি * দ্বারা আপনার প্রকল্পের অর্ধেক ফাইল মুছে ফেলা যেতে পারে , এটি অবশ্যই কার্যকর স্ট্রেস বস্টিং টুল (নিশ্চিত করুন যে আপনার ব্যাকআপ পাওয়া গেছে)।
মিথ্যা রায়ান

হ্যাঁ, নিশ্চিত হয়ে নিন যে আপনি ব্যাকআপ পেয়েছেন!
চিম

3

এবং অবশ্যই, এমন পরিস্থিতিতে এড়াতে কী করা যেতে পারে?

এই প্রশ্নের সমাধান করে আপনি কন্টিনিউস ইন্টিগ্রেশন (সিআই) দেখতে চাইতে পারেন । সহজ কথায় বলতে গেলে: সিআই হ'ল এমন একটি প্রক্রিয়া যেখানে বিকাশকারীরা প্রায়শই (দিনে বেশ কয়েকবার) সমস্ত কোড সংহত করে পরীক্ষা করে। ধারণাটি হ'ল এমন একটি মডিউলে পরিবর্তন ঘটে যা অন্য মডিউলটি ভেঙে দেয় quickly

অনুশীলনে, সিআই নিয়োগকারী বেশিরভাগ দলগুলি সিআই সার্ভার ব্যবহার করে (দেখুন: উইকিপিডিয়া তালিকা )। সিআই সার্ভারটি সাধারণত এসসিএম সংগ্রহস্থলটি পর্যবেক্ষণ করতে এবং পরিবর্তনগুলি দেখলে একটি বিল্ড শুরু করার জন্য সেটআপ করা হয়। বিল্ডটি সম্পূর্ণ হয়ে গেলে, এরপরে এটি স্বয়ংক্রিয় পরীক্ষার একটি সিরিজ চালাবে এবং বিল্ডটি কী কী পরিবর্তন ঘটে তা বরাবর বিল্ড এবং পরীক্ষাগুলির ই-মেইল এবং / অথবা ওয়েবপেজের মাধ্যমে ফলাফল পোস্ট করবে। আশা করি, যখন কোনও কিছু বিল্ড বা পরীক্ষাগুলি ভঙ্গ করে তখন আপনার দেখার জন্য খুব সামান্য পরিবর্তন রয়েছে, সুতরাং এটি দ্রুত সমাধান হয়ে যায়।

কোন সিআই সার্ভারটি ব্যবহার করবেন সে সম্পর্কে এখানে অন্যান্য প্রশ্ন রয়েছে, তাই আমি আপনাকে সেগুলি আগ্রহী করে তুলব। ব্যক্তিগতভাবে, আমি জেনকিন্সের একটি বড় অনুরাগী।

[জিনিসগুলি নষ্ট হওয়ার বিষয়ে আমার কী করা উচিত]]

অন্যরা ইতিমধ্যে বলেছে, কী ভেঙে গেছে তা খুঁজে বের করুন এবং এটি ঠিক করার চেষ্টা করুন। দোষারোপ করার চেষ্টা করে সময় ব্যয় করা সমস্যাটি সমাধান না করে সময় ব্যয় করে।


হ্যাঁ কাজের জায়গায় আমরা জেনকিন্স ব্যবহার করি এবং এটি সত্যই কার্যকর। আমরা বিভিন্ন সিস্টেমে বিল্ডগুলি পর্যবেক্ষণ করতে পারি এবং কী ব্যর্থ হয় তা অবিলম্বে দেখতে পারি। এমনকি আমাদের কাছে একটি আসল গ্যারেজ বীকন রয়েছে যা বিল্ড ব্যর্থ হলে ঝিমুনি শুরু করে।
নিককো

3

আমার স্বাভাবিক প্রতিক্রিয়াটি সর্বদা অন্যকে দোষ দেওয়ার জন্য হয় তবে সময়ের সাথে সাথে আমি বুঝতে পারি যে সাধারণত আমারই দোষ হয়। উপরের সমস্ত দুর্দান্ত মন্তব্য ছাড়াও, চূড়ান্ত কারণটি আপনার নিজের জন্য রেকর্ড করা গুরুত্বপূর্ণ is আপনি কোনও উইকি ব্যবহার করেন কিনা যা অন্য দলের সদস্যদের সাথে, একটি ব্যক্তিগত টুইকি, এভারনোট, লগ বই বা একটি ভাল মেমরির সাথে ভাগ করে নেওয়া উচিত নয়। গুরুত্বপূর্ণ বিষয়, এই মুহুর্তে আপনি উত্তরটি খুঁজে পান (এবং কাজে ফিরে আসতে চান!) কারণ রেকর্ড করা।


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- ব্যাকআপ কেবল পৃথক পৃথক ফাইল সংরক্ষণ করে। আপনি লিনাক্স, ম্যাক এবং জিতে আরডিফ-ব্যাকআপ ব্যবহার করতে পারেন।

অবশ্যই এটি আপনার একমাত্র ব্যাকআপ হওয়া উচিত নয়। তবে স্থানীয় ব্যাকআপ পাওয়া এটি অত্যন্ত সহজ এবং সস্তা উপায়।

এখন, আমি এটি সাধারণ বাগ ফিক্সিং পদ্ধতি হিসাবে সুপারিশ করব না, তবে অন্য সমস্ত কিছু যদি ব্যর্থ হয় তবে এটি একটি ফ্যালব্যাক।


3
সংস্করণ নিয়ন্ত্রণ করা সহজ
প্রতিবন্ধী

@ থিপার: একেবারে একমত তবে এমন কিছু জিনিস রয়েছে যা উত্স নিয়ন্ত্রণকে প্রতিরোধ করে (বিশেষত মাইক্রো-কমিট সময়সূচীতে), যেমন বড় বাইনারি ফাইল। আমি আমি যেমন প্রকল্প এড়াতে পারেন মাত্র খুশি অধিকাংশ সময়
sehe

@ থিপি: আমি সত্যিই ভাবিনি যে কেউ এটিকে সংস্করণ নিয়ন্ত্রণের বিকল্প হিসাবে বিবেচনা করবেন। এটি একটি সংগঠিত বিশৃঙ্খলা সম্পর্কে আমার ধারণা হতে পারে :) এইভাবে আপনার কাছে আপনার সামগ্রীর অনুলিপিটি গতকাল যেমন ছিল। সংস্করণ নিয়ন্ত্রণ সিস্টেমটি কখন এবং কখন প্রতিশ্রুতিবদ্ধ তা বিবেচনাধীন নয়। আপনার শেষ প্রতিশ্রুতিও 2 দিনেরও বেশি আগে হতে পারে। কিছু প্রকল্পের সংস্করণ নিয়ন্ত্রণ থেকে কিছু ফাইল উপেক্ষা করা হয়েছে।
olafure

@ সেহ: গিট সহ, যা আমি বর্তমানে ব্যবহার করছি, আপনার নিজস্ব ব্যক্তিগত রেপো রয়েছে যাতে পথের প্রতিটি পদক্ষেপে প্রতিশ্রুতি না দেওয়ার কোনও অজুহাত নেই।
থিপার

@ বিস্ময়কর: যে কোনও শালীন সংস্করণ নিয়ন্ত্রণ সিস্টেম আপনাকে কোনও নির্দিষ্ট সময়ে সিস্টেমের সম্পূর্ণ অবস্থা চেকআউট / ক্লোন করতে দেয়।
থিপার

2

বাগটি ইতিমধ্যে বিদ্যমান থাকতে পারে তবে এটি বাহ্যিক উপাদান বা গভীর সিস্টেম সমস্যা দ্বারা গোপন করা হয়েছে।

এটা আমার সাথে ঘটেছিল। আমাদের প্রকল্পের 2 টি বিল্ডের মধ্যে একটি বাগ তৈরি হয়েছে। আক্ষরিক অর্থে, কেবলমাত্র আমরা পরিবর্তন করেছিলাম হ'ল অন্তর্নিহিত লাইব্রেরিগুলির মধ্যে একটি সাম্প্রতিক বিল্ডটি আপডেট করা।

স্বভাবতই আমরা তাদের দোষ দিয়েছি। তবে তারা যে পরিবর্তনটি করেছিল তা হ'ল দ্রুত সংকলনের জন্য কিছু শিরোনামকে রিফেক্টর করা। আমি একমত হয়েছি যে এর ফলে সিস্টেমটি ভেঙে যাওয়া উচিত ছিল না।

অনেক ডিবাগ করার পর এটা প্রমাণিত যে সমস্যাটি দুর্বৃত্ত পয়েন্টার বাগ যে সুপ্ত ভুগছিল আমার কোড বছর । কোনওভাবেই এটিকে কখনই ট্রিগার করা হয়নি যতক্ষণ না তাদের রিফ্যাক্টরিং কার্য সম্পাদনের ব্যবস্থা পরিবর্তন না করে।


1

এটি গতকাল কাজ করছিল কারণ এটি সঠিকভাবে ব্যবহৃত হচ্ছে।

আপনি দেখতে পান যে অন্যান্য লোকেরা এমনভাবে জিনিস ব্যবহার করে যাতে মনে হয় না যে জিনিস ভাঙার একটি ভাল উপায়।

দিনের শুরুতে কোড আপডেট করা সর্বদা ভাল কারণ এটি আপনাকে একটি ভাল পরীক্ষার পরিবেশের সাথে ছেড়ে দেয়।

ব্যাকআপ!


-2

আমার ডেটাটি বিরতি দেওয়া এবং এটি কোথায় এবং কীভাবে খারাপ হচ্ছে ঠিক ঠিক তা নির্ধারণ করার জন্য ব্রেকপয়েন্টগুলি সেট করা আমার ডেটা খুব সহায়ক বলে মনে হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.