এমন কোনও প্রোগ্রামের আউটপুট কীভাবে পরিবর্তন করা যায় যার জন্য আপনার কাছে সোর্স কোড নেই


89

আমাদের সংস্থায় আমাদের একটি ছোট প্রোগ্রাম রয়েছে (.exe 500Kb সাইজ) যা গাণিতিক গণনা করে এবং শেষ পর্যন্ত এটি ফলাফলকে একটি এক্সেল স্প্রেডশিটে ফেলে দেয় যা আমরা আমাদের কর্মপ্রবাহ চালিয়ে যেতে ব্যবহার করি।

আমি এক্সেল স্প্রেডশিটে কলামগুলি, ফাঁকা ফর্ম্যাট এবং ভিবিএ লজিক ইত্যাদি যুক্ত করতে চাই তবে যেহেতু এই পরামিতিগুলি সেই প্রোগ্রামটিতে কনফিগারযোগ্য নয়, তাই এটি পরিবর্তন করার একমাত্র উপায় আমার কাছে মনে হয় এটি বিচ্ছেদ / ইঞ্জিনের বিপরীত হওয়া ex

এটি কোন ভাষায় প্রোগ্রাম করা হয়েছিল তা কেউ জানে না, কেবল আমাদের জানা জিনিসটি:

  1. 20+ বছর আগে বিকাশ হয়েছে
  2. বিকাশকারী 10 বছর আগে অবসর নিয়েছিলেন
  3. জিইউআই অ্যাপ্লিকেশন
  4. একক চালায়
  5. আকার 500 কেবি

এই জাতীয় সমস্যাগুলির সাথে আমার কী কী বিকল্পগুলি মোকাবেলা করতে হবে? বিপরীত প্রকৌশলই কি একমাত্র বিকল্প, নাকি এর থেকে আরও ভাল পদ্ধতির উপায় আছে?


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

13
@ ডেভিড আর্নোর মন্তব্যটি ভাল উত্তর দিতে পারে। বিপরীত প্রকৌশল সম্ভব, তবে অ্যাপটিকে পুনরায় নির্দিষ্ট করা এবং পুনরায় লেখাই অনেক সস্তা / সহজ / দ্রুত হবে।
ড্যান পিচেলম্যান

44
এটি সংশোধন করার অন্য উপায়টি হ'ল আসল প্রোগ্রামটি যে ফলাফলটি তৈরি করে ফলাফল গ্রহণ করে এবং আপনি যা খুশি তে ফিল্টার করে।
blrfl

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

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

উত্তর:


234

বিপরীত প্রকৌশল খুব শক্ত হয়ে উঠতে পারে, এমনকি যদি আপনি কেবল প্রোগ্রামটির যুক্তি বুঝতে না চান, তবে এটি পরিবর্তন এবং পুনরায় সংকলন করতে পারেন। তাই প্রথমে আমি চেষ্টা করব একটি ভিন্ন সমাধান সন্ধান করা।

আমি এক্সেল স্প্রেডশিটে কলামগুলি, ব্যবধান ফাঁকা বিন্যাস এবং ভিবিএ যুক্তি যুক্ত করতে চাই

যদি আপনি কেবল এটিই চান এবং প্রোগ্রামটি করা গণনাটি ঠিকঠাক হয় তবে কেন আপনার পছন্দের ভাষায় এমন কোনও প্রোগ্রাম লিখবেন না (সম্ভবত কোনও এক্সেল ম্যাক্রো) যা আপনার উত্তরাধিকারটিকে "এক্সি" বলে, আউটপুট নেয় এবং এটি প্রক্রিয়া করে আরও।


9
নতুন প্রোগ্রামটিকে কেন পুরানো EXE কল করতে হবে? কেন কেবলমাত্র নতুন প্রোগ্রামটিকে স্বাধীন করে তুলবেন না এবং তারপরে কোনও স্ক্রিপ্ট লিখুন যা উভয়কেই কল করে এবং আউটপুট এবং ইনপুটকে সমন্বয় করে? আমার অভিজ্ঞতা থেকে বোঝা যায় যে কমান্ড লাইন ভাষা যেমন বাশ, পাওয়ারশেল, বা কমান্ড প্রম্পট হ্যান্ডেল প্রক্রিয়া সমন্বয়কে একটি আবশ্যক ভাষায় নিজেকে কোড করার চেষ্টা করার চেয়ে সাধারণত সহজ। অন্যথায়, +1।
jpmc26

8
@ জেএমপিসি 26: আপনি যতক্ষণ না বাশের অযৌক্তিক উদ্ধৃতি সংক্রান্ত বিধিগুলি মোকাবেলা করবেন ততক্ষণ পর্যন্ত এটি সত্য। হ্যাঁ, তারা (বেশিরভাগ) পসিক্স-অনুগত। না, তারা কোনও godশ্বরিক ধারণা পোষণ করে না। $ উদাহরণস্বরূপ, FOO শব্দটি বিভক্ত হওয়া উচিত নয় split
কেভিন

16
@ জেএমপিসি 26: subprocess.run()ব্যক্তিগতভাবে কল করার ক্ষেত্রে আমার কখনও কোনও সমস্যা হয়নি ।
কেভিন

3
@ jpmc26: কি পাইপিং? এটি খাঁটি কুকবুক; আপনি stdout চান, আপনি যাদু PIPEধ্রুবক পাস । অন্যথায়, আপনি না এবং এটি বাতিল হয়ে যায়। বোঝার কী আছে?
কেভিন

3
... আমার যুক্ত করা উচিত যে আমি অতীতে ভিবিএর সাথে এক্সেলটি ব্যবহার করেছি একাধিকবার সাফল্যের সাথে লাইন ইউটিলিটিগুলি কমান্ড করার জন্য একটি অগ্রভাগ হিসাবে। কাঠামোটি সর্বদা এক রকম: "দরিদ্র মানুষের UI" হিসাবে পরামিতিগুলিতে প্রবেশের জন্য একটি শীট, সেই শীটে "স্টার্ট" বোতামটি। ভিবিএ কোডে Shellএক্সেল ভিবিএতে এইর মতো একটির কল দরকার : স্ট্যাকওভারফ্লো / প্রশ্ন / ৮৯০২০২২ /,, কেউ সেন্টিমিডি ইউটিলিটি থেকে স্টাইডআউট / স্টডারকে আলাদা ফাইলগুলিতে পাইপ করতে পারে এবং তারপরে আউটপুট বিন্যাস প্রয়োগ করতে পারে।
ডক ব্রাউন

114

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

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

অবশ্যই, তাদের সমাধানগুলি ব্যবহার করার জন্য এটির জন্য এখনই কাজ করুন, তবে এটি হতে দেবেন না।

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

এখন, আমি এটি হারাতে উদ্বিগ্ন নই .exe, তবে জ্ঞানটি এনকোডে হারাতে হবে। সেই জ্ঞান অবশ্যই উদ্ধার করতে হবে।

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


14
আধুনিক ডিকম্পোলারগুলি আসলে এমন কোড তৈরি করে যা সাধারণত যথেষ্ট স্পষ্টতই হয়, বিশেষত যদি মূল উত্সটি সরল সি বা এস্যাসেবলারে থাকে এবং উচ্চতর স্তরের ভাষা না হয়।
ফায়ারফক্স

4
খুব ভাল পয়েন্ট। এছাড়াও: কেবল এটিকে প্যাচিং করা যাতে এটি পুনরায় কাজ করে কেবল পরবর্তী ফিক্স বাস্তবায়নের প্রয়োজন না হওয়া পর্যন্ত কাজ করে।
ড্যানিয়েল জোর

33
@ ফাইরফক্স 20 বছর বয়সী ... বিকাশকারী 10 বছর আগে অবসর নিয়েছে ... কেবলমাত্র আউটপুটটি এক্সেল স্প্রেডশিট ... আমি ভিবি 6 অ্যাপ্লিকেশন হিসাবে এটিতে অর্থ উপার্জন করব।
জে ...

10
@ মিমাহো: বা সংস্থাটি এখনও বিদ্যমান এবং ফলাফল এবং গোপন অনুমানগুলি যাচাই করতে জানে-এমন ব্যক্তি সবেমাত্র একটি ট্রাকের মুখোমুখি হয়েছিল। অবশ্যই এটি ব্যবসায়ের ঝুঁকি তাই শেষ পর্যন্ত স্টেকহোল্ডারদের সিদ্ধান্ত নেওয়া উচিত। আমি কেবল জোর দিয়ে বলতে চেয়েছিলাম যে "র‌্যাপার" এখন কাজ করবে, তবে কেবল প্রযুক্তিগত debtণকে যুক্ত করে।
সুজার্ড জব পোস্টমাস

22
@ জে ...: যদি এটি ভিবি 6 হয় তবে মূল পোস্টারটি ভাগ্যের মধ্যে রয়েছে। আপনি খুব সহজেই একটি ভিবি 6 সংকলন থেকে উত্স কোডটি পুনরুদ্ধার করতে পারেন।
এরিক লিপার্ট

74

সম্ভব হলে মূল প্রোগ্রামারকে জিজ্ঞাসা করুন।

কয়েক সপ্তাহ আগে আমার সাথে একটি ফার্মের সাথে যোগাযোগ করা হয়েছিল আমি 90 বছর দশকের মাঝামাঝি একটি এমডিবি ফাইল সম্পর্কে খুব একই প্রশ্নটি নিয়ে 10 বছর আগে কাজ করেছি।


52
এটি আসল কম ঝুলন্ত ফল। রিভার্স ইঞ্জিনিয়ারিং, প্রোগ্রামের কার্যকারিতা পুনরায়করণ করা বা ডেটা প্রক্রিয়াকরণে স্তর যুক্ত করার মতো হার্ড প্রোগ্রামিং দক্ষতার ব্যবহারকে প্রত্যেকে (আমার সহ) রোমান্টিক করে izes বাস্তবে, শুরু করার সেরা জায়গাটি একটি বন্ধুত্বপূর্ণ ইমেল যা এক ঘন্টার মধ্যে সোর্স কোডের অবস্থান বা অন্য কোনও আদর্শ সমাধানের সাথে ফিরে আসতে পারে।
ব্যবহারকারী 1717828

2
বাড়িতে যখন 10 বছরের পুরানো অ্যাপ্লিকেশন সহ আমিও একটি বিচ্ছিন্নকারীকে জ্বালিয়ে দেব তবে কাজের সময় লক্ষ্যটি ভিন্ন ^^
পাওলো

2
আপনি এটি সম্পর্কে কিছু মনে আছে? :)
অ্যাঞ্জেল

2
অবশ্যই! দুর্ভাগ্যক্রমে সংস্থাটি 3 অধিগ্রহণ এবং মেশানো হয়েছে যাতে প্রচুর তথ্য হারিয়ে যায় এবং ব্যাকআপগুলির একটি অংশ হারিয়ে যাওয়া ব্যাগে ছিল ... বিকাশটি তাদের মেশিনে সাইটে ছিল তাই আমার উত্সটির কোনও অনুলিপি নেই এবং এটিই।
পাওলো

1
এম্বেড থাকা স্ট্রিংগুলির জন্য EXE স্ক্যান করুন যাতে বিকাশকারীর নাম বা কিছু অন্তর্ভুক্ত থাকতে পারে। এটি একটি সম্পূর্ণ ডিসেম্বল-এর চেয়ে সহজ!
জেডিগোগস

55

এই জাতীয় সমস্যাগুলির সাথে আমার কী কী বিকল্পগুলি মোকাবেলা করতে হবে?

আপনি যা করতে চাইছেন তা যদি আউটপুট সংশোধন করে, তবে কেবল রচনাটি কেন ব্যবহার করবেন না?

আপনি সহজেই অ্যাক্সেস করতে পারবেন না ব্ল্যাক বক্সটি পরিবর্তনের পরিবর্তে, আপনি একটি নতুন প্রোগ্রাম তৈরি করেন যা এক্সেল আউটপুট নেয় এবং আপনার ফর্ম্যাটিং / কলামটিও পরিবর্তন করে । তারপরে আপনি একটি নতুন এক্সি / স্ক্রিপ্ট তৈরি করতে পারেন যা দুটি প্রোগ্রামকে যথাক্রমে কল করে, তাই এটি শেষ ব্যবহারকারীর কাছে উপস্থিত হয় যে কেবলমাত্র একটি প্রোগ্রাম রয়েছে যা সমস্ত কাজ করে - যদিও এটি হুডের নীচে দুটি স্বতন্ত্র পদক্ষেপ রয়েছে।


2
@ আলেক জাভা একটি উপযুক্ত ভাষা কিনা তা মূলত আপনার কতটা ডেটা হ্যান্ডেল করতে হবে / কতগুলি গণনার প্রয়োজন তা নির্ভর করে। দুটোই কম হলে জাভা ঠিক আছে। উভয়ই যদি সমালোচনামূলক হয় তবে আপনি ভাল সি বা সি ++ এ নেমে যান। তবে যেহেতু আপনি কেবলমাত্র একটি এক্সেল স্প্রেডশিটে ফিট করে এমন পরিমাণে ডেটা ব্যবহার করছেন বলে মনে হয় না, জাভা একটি খারাপ পছন্দ করে তুলতে পর্যাপ্ত ডেটা জড়িত বলে আমি মনে করি না (এক্সেল সম্ভবত আপনার অ্যাপ্লিকেশনটি তৈরির আগে বিস্ফোরিত হবে)।
মাস্টার

18
@ মাস্টার ধারণাটি ভারী গণনার জন্য জাভা নিষিদ্ধের ধারণাটি একটি পুরানো ধারণা। খারাপ মাত্রাবিশিষ্ট এখানে তালিকাভুক্ত এমনকি 4x নয় (সবচেয়ে 2x বা তার কম হয়) এবং যদি একটি একক অঙ্ক স্কালে আপনার অবিচ্ছিন্ন বিন্দু, নিরাপত্তা সঞ্চয় (যা ডেভেলপার ডলার সরাসরি অনুবাদ) সম্ভবত কর্মক্ষমতা হিট অফসেট যাচ্ছে বেশী ।
কর্সিকা

8
@ অ্যালেক যে কোনও ভাষা কাজ করবে। ভিবিএ একটি ভাল পছন্দ বলে মনে হচ্ছে কারণ এটি ইতিমধ্যে এক্সেলের সাথে এত ভাল সংহত হয়েছে।
ক্যাপ্টেন ম্যান

4
@ করসিকা এটি সম্পূর্ণরূপে আপনার আবেদনের স্কেলের উপর নির্ভর করে। যদি কোনও একক রান কয়েক হাজার হাজার সিপিইউ-ঘন্টা খায় তবে 2 বা 4 এর একটি উপাদানটি নিষিদ্ধ হয়ে যায়: এটি আপনাকে বহু মিলিয়ন মেশিন থেকে বেরিয়ে আসতে পারে এমন ফলাফলের সরাসরি অনুবাদ করে। এছাড়াও, এই জাতীয় অ্যাপ্লিকেশনগুলি সাধারণত লকস্টেপে কাজ করে, তাই আবর্জনা সংগ্রহ তাদের কার্য সম্পাদনের জন্য খাঁটি বিষ, ছোট বাধাগুলি প্রক্রিয়াগুলির সংখ্যা দ্বারা বহুগুণ হবে। আমি আপনাকে বলি, এ জাতীয় অ্যাপ্লিকেশন উপস্থিত রয়েছে এবং সেগুলি অবশ্যই জাভাতে লেখা হয় না। এগুলি কেবলমাত্র औसत ইন্টারনেট ব্যবসায় দ্বারা ব্যবহৃত হয় না।
মাস্টার

7
@ মাস্টার আমরা কিছু সাধারণ গণনার কথা বলছি, রিয়েলটাইম গ্লোবাল আলোকসজ্জা, শারীরিক ভিত্তিক রেন্ডারিং, অ্যানিমেটেড স্পারস ভক্সেল অক্ট্রি, সার্বজনীন পদার্থবিজ্ঞান ক্ষেত্র সিমুলেশন এবং এর মতো একটি পূর্ণ বিকাশযুক্ত এএএ গেম ইঞ্জিন নয়। কোনও অপরাধ নয়, তবে এখানে কোনও যুক্তি আরই পারফর্মেন্স inোকানো খারাপ। ব্যবহারের সহজতা # 1 হওয়া উচিত, এবং যে কেউ কয়েক বছর ধরে সি ++ ব্যবহার করছেন সে হিসাবে এটি এই ক্ষেত্রে আমি প্রস্তাব করব এটিই শেষ ভাষা।

3

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

কয়েক বছর আগে আমার নিয়োগকর্তা লিনাক্স সার্ভারে কিছু নেটিভ এস / 390 মেইনফ্রেম কোড স্থানান্তর করতে এটি ব্যবহার করেছিলেন। আমরা তাদের একটি বাইনারি দিয়েছি, তারা আমাদের সি তে উত্স কোড দিয়েছে

এটি আপনার ক্ষেত্রে প্রয়োজনীয় কিনা তা আপনার উপর নির্ভর করে। আপনি যদি কেবলমাত্র আউটপুটটির ফর্ম্যাট সম্পর্কে চিন্তা করেন তবে আউটপুট তৈরি হওয়ার পরে আপনি কেবল এটি ম্যাসেজ করতে পারেন। তবে অন্যরা যেমন উল্লেখ করেছে যে, বাইনারি ব্লবের মধ্যে ব্যবসায়ের যুক্তি লুকানো একটি চলমান ঝুঁকি হতে পারে।


3

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

অবশ্যই এই সমাধানটি কেবল তখনই যথেষ্ট ভাল কাজ করে যখন আউটপুটটি এত সহজেই পার্স করা সহজ হয়।

এটি একটি জিইউআই অ্যাপ্লিকেশন, কোনও ব্লকিং সমস্যা নয়। আপনি এটি চালু করতে পারেন, আউটপুট উত্পন্ন করতে পারেন এবং তারপরে এই জিইআইআই সমাপ্ত হলে স্বয়ংক্রিয়ভাবে এটিকে প্রক্রিয়া পোস্ট করতে পারেন।


3
ডক ব্রাউন এর শীর্ষ-ভোট দেওয়া উত্তর থেকে এটি কীভাবে আলাদা?
লাফ

আমি ডক এর উত্তর খারাপভাবে লেখা হচ্ছে অনুমানের সাথে একমত নই। এটি পরিষ্কার এবং সংক্ষিপ্ত।
মাস্ত

1
আপনি যদি এই উত্তরের পাঠ্যটি সন্ধান করেন তবে আপনি দেখতে পাবেন যে একমাত্র তথ্যমূলক অংশটি "শেষ বাক্যটি" যা আপনার উত্তরাধিকারকে "এক্সি" বলে আখ্যায়িত করে, আউটপুট গ্রহণ করে এবং আরও প্রক্রিয়া করে ""
এইচ 22

2
কোনও ডাউনভোটার নয়, এবং দেখুন না কেন এটি -3 পেয়েছে ... আবার কী এটার সাথে মেটা? তবে পৃথকভাবে, আমি অন্য কারও জবাব দেওয়ার বিরুদ্ধে "আমি প্রচুর মস্তিষ্কে মিশ্রিত ব্লাহ ধারণ করে" এর বিরুদ্ধে পরামর্শ দেব যখন (এ) এটি একটি বিষয়গত রায় এবং (বি) আমার বিষয়ভিত্তিক মতামত অনুসারে, আপনার ঠিক তেমনটাই রয়েছে!
আন্ডারস্কোর_ডি

এটি যদি আরও সহায়ক মনে হয় তবে "এটি অপ্রয়োজনীয় জেনেরিক আলোচনার বিষয়বস্তু যা পাঠকদের সময় নষ্ট করার বিষয় থেকে সরে যায়" হিসাবে এটি আবারও রচনা করা যেতে পারে। শেষ বাক্যটির দ্বিতীয়ার্ধে সঠিক পদ্ধতির একটি ইঙ্গিত সরবরাহ করে। এটির অপমান করার কোনও উদ্দেশ্য ছিল না। মন্তব্য সরানো হয়েছে।
এইচ 22

1

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

বিভিন্ন ক্ষেত্রে প্রদত্ত সঠিক আউটপুটটি কী তা নীচে নামিয়ে আনুন এবং তারপরে এমন একটি পরীক্ষার জন্য চেষ্টা করুন যা একই পরীক্ষাগুলিকে সন্তুষ্ট করে

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

20 বছর আগে যদি একটি লোক দ্বারা সফ্টওয়্যারটি তৈরি করা হয়েছিল, তবে এটি সম্ভবত এমন অনেক কিছুই নয় যা অনেক বেশি আধুনিক শক্তি নেয়। একটি জিইউআই প্রোগ্রাম যা 20 বছর আগে মেশিনটিকে প্রসারিত করে সবেমাত্র একটি আধুনিক মেশিনে নিবন্ধভুক্ত হবে, সুতরাং আপনি সম্ভবত পুনরুত্পাদন করার জন্য তুলনামূলকভাবে সহজ এমন কোনও কিছুটির দিকে লক্ষ্য করছেন।


0

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

সম্পন্ন হওয়ার চেয়ে সহজ বলেছিলেন, 20 বছর পূর্বে বিপরীত প্রকৌশলী তৈরি একটি প্রকৃত চ্যালেঞ্জ।


12
এক্সের ডেটিংটি সত্যই গুরুত্বপূর্ণ নয়
অ্যাঞ্জেল

1
প্রকৃতপক্ষে, প্রতি বছর অপ্টিমাইজারগুলি আরও স্মার্ট হয়ে উঠলে, বিপরীত ইঞ্জিনিয়ারিং কেবল আরও শক্ত হয়।
MSalters
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.