Diff চেকার
দুটি টেক্সট পেস্ট করুন এবং পার্থক্যগুলি হাইলাইট দেখুন।
Diff
- মূল টেক্সটটি টেক্সট A-তে পেস্ট করুন।
- পরিবর্তিত সংস্করণটি টেক্সট B-তে পেস্ট করুন।
- কোড/কনফিগের জন্য লাইন বা গদ্যের জন্য শব্দ বাছুন।
- অদৃশ্য পরিবর্তনগুলি নয়েজ যোগ করলে হোয়াইটস্পেস উপেক্ষা করুন বা কেস উপেক্ষা করুন টগল করুন।
- নিচের হাইলাইট করা আউটপুট পড়ুন — সবুজ যোগ করা হয়েছে, লাল সরানো হয়েছে।
এটি কী করে?
Diff চেকার দুটি টেক্সট তুলনা করে এবং ঠিক কী যোগ করা হয়েছিল, সরানো হয়েছিল বা অপরিবর্তিত রাখা হয়েছিল তা দেখায়। লাইন মোড প্রতিটি লাইনকে একটি ইউনিট হিসাবে বিবেচনা করে — সোর্স কোড এবং কনফিগের জন্য আদর্শ যেখানে সাধারণত একবারে পুরো লাইন পরিবর্তিত হয়। শব্দ মোড হোয়াইটস্পেসে বিভক্ত করে এবং গদ্যের জন্য ভাল যেখানে আপনি টোকেন-স্তরের সম্পাদনার বিষয়ে যত্নশীল।
উদাহরণ
টেক্সট A:
function greet(name) {
console.log("Hello, " + name);
} টেক্সট B:
function greet(name) {
if (!name) name = "world";
console.log(`Hello, ${name}!`);
} লাইন মোডে Diff:
function greet(name) {
+ if (!name) name = "world";
- console.log("Hello, " + name);
+ console.log(`Hello, ${name}!`);
} সাধারণ ত্রুটি ও সমস্যা
যখন দুটি লাইন দেখতে একই রকম কিন্তু diff এখনও তাদের পরিবর্তিত হিসেবে ফ্ল্যাগ করে, কারণ প্রায় সর্বদা একটি অদৃশ্য অক্ষর বা কেস পার্থক্য। এখানে সাধারণ সন্দেহভাজনগুলি রয়েছে।
- CRLF বনাম LF লাইন এন্ডিং। Windows ফাইলগুলি লাইন শেষ করে \r\n দিয়ে, Unix ফাইলগুলি \n দিয়ে। এমনকি একটি একক-অক্ষরের পার্থক্য প্রতিটি লাইনকে ফ্ল্যাগ করে। হোয়াইটস্পেস উপেক্ষা করুন সক্ষম করে ঠিক করুন, বা dos2unix / আপনার সম্পাদক সেটিংসের সাথে স্বাভাবিক করুন।
- পিছনে স্পেস। "foo " এবং "foo" diff হয় যদি না হোয়াইটস্পেস উপেক্ষা করা হয়। একটি কনফিগ-ফাইল সংরক্ষণ যা পিছনের স্পেস সরিয়ে দেয় তা প্রতিটি স্পর্শ করা লাইনকে পরিবর্তিত দেখাবে।
- ট্যাব বনাম স্পেস। একটি রিফর্ম্যাট যা ট্যাবকে স্পেসের সাথে অদলবদল করে (বা উল্টো) প্রতিটি ইনডেন্টেড লাইনকে সঠিক-মিলের মোডে ভিন্ন দেখায়। হোয়াইটস্পেস উপেক্ষা করুন টগল করুন বা প্রথমে উভয় পাশকে একইভাবে রিফর্ম্যাট করুন।
- বাইট-অর্ডার মার্ক (BOM)। BOM সহ UTF-8 হিসাবে সংরক্ষিত ফাইলগুলি একটি অদৃশ্য দিয়ে শুরু হয়। সেই প্রথম "লাইন" একটি BOM-বিহীন ফাইলের বিরুদ্ধে diff করা হলে সর্বদা পরিবর্তিত দেখাবে। পেস্ট করার আগে আপনার সম্পাদক বা একটি হেক্স সম্পাদকে BOM সরিয়ে ফেলুন।
- স্মার্ট উদ্ধৃতি বা নন-ব্রেকিং স্পেস। ওয়ার্ড প্রসেসর থেকে পেস্ট করলে " কে " দিয়ে বা নিয়মিত স্পেসকে নন-ব্রেকিং স্পেস দিয়ে বদলাতে পারে। তারা দেখতে একই রকম কিন্তু ভিন্ন কোড পয়েন্ট। diff করার আগে টেক্সটটিকে প্লেইন ASCII-তে স্বাভাবিক করুন।
- শুধুমাত্র কেসের পার্থক্য। API এবং api আলাদা স্ট্রিং যদি না আপনি কেস উপেক্ষা করুন চালু করেন। অন্তর্নিহিত মিলগুলি এখনও মূল টেক্সট দেখায়; শুধুমাত্র তুলনা শিথিল করা হয়।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
লাইন এবং শব্দ মোডের মধ্যে পার্থক্য কী?
লাইন মোড একবারে একটি লাইন টেক্সট তুলনা করে — যদি একটি লাইনের যেকোনো অক্ষর পরিবর্তিত হয়, পুরো লাইনটি A থেকে সরানো এবং B-তে যোগ করা হিসেবে ফ্ল্যাগ করা হয়। শব্দ মোড হোয়াইটস্পেসে বিভক্ত করে এবং আরও সূক্ষ্ম diff দেখায়, যা গদ্যের জন্য ভাল। সোর্স কোড এবং কনফিগ ফাইলের জন্য, লাইন মোড প্রায় সবসময়ই আপনি যা চান।
একই রকম দেখতে লাইনগুলি কেন পরিবর্তিত হিসেবে প্রদর্শিত হয়?
সাধারণত তিনটি অদৃশ্য পার্থক্যের একটি: লাইন এন্ডিং (Windows-এ CRLF বনাম Unix-এ LF), পিছনের স্পেস, বা ফাইলের শুরুতে একটি বাইট-অর্ডার মার্ক (BOM)। প্রথম দুটি এড়িয়ে যেতে "হোয়াইটস্পেস উপেক্ষা করুন" চালু করুন। BOM-এর জন্য, ফাইলটি একটি হেক্স সম্পাদকে খুলুন বা পেস্ট করার আগে প্রথম বাইটগুলি সরিয়ে ফেলুন।
এটি কি অক্ষর-বাই-অক্ষর diff করে?
না। লাইন মোডে এটি প্রতি লাইনে diff করে; শব্দ মোডে এটি প্রতি হোয়াইটস্পেস-বিচ্ছিন্ন টোকেনে diff করে। অক্ষর-স্তরের diff বেশিরভাগ বাস্তব টেক্সটের জন্য নয়েজযুক্ত আউটপুট উৎপাদন করে। যদি আপনার ছোট স্ট্রিংগুলির জন্য অক্ষর-স্তরের তুলনা প্রয়োজন হয়, সেগুলি শব্দ মোডে পেস্ট করুন — কোনো স্পেস না থাকলে প্রতিটি অক্ষর কার্যকরভাবে তার নিজের টোকেন হবে।
ইনপুটগুলি কত বড় হতে পারে?
Diff মেমরিতে চলে, তাই ব্যবহারিক সীমা আপনার ব্রাউজারের RAM। প্রতি পাশে কয়েক MB পর্যন্ত ভাল কাজ করে; দশ MB সংক্ষিপ্তভাবে ট্যাব জমাট বাঁধতে পারে কারণ হাইলাইট করা HTML রেন্ডার করা diff নিজেই চেয়ে ধীর। খুব বড় ফাইলের জন্য, স্থানীয়ভাবে GNU diff বা git diff দিয়ে diff চালান।
আমি কি কেস বা হোয়াইটস্পেস উপেক্ষা করতে পারি?
হ্যাঁ — উভয়ই টুলবারে টগল। "হোয়াইটস্পেস উপেক্ষা করুন" হোয়াইটস্পেসের যেকোনো ধারাবাহিক সিকোয়েন্সকে সমতুল্য হিসাবে বিবেচনা করে, যা রিফর্ম্যাট করা কোডের জন্য সুবিধাজনক। "কেস উপেক্ষা করুন" "Hello" এবং "hello"-কে একই হিসাবে বিবেচনা করে। অন্তর্নিহিত মিলগুলি এখনও মূল টেক্সট দেখায়; শুধুমাত্র তুলনা শিথিল করা হয়।
আপনি কি আমি দুটি বাক্সে পেস্ট করা টেক্সট সংরক্ষণ করেন?
না। আপনি এখানে পেস্ট করা কিছুই আমরা রাখি না — না "আগে" টেক্সট না "পরে" টেক্সট। আপনি যা তুলনা করেন তা পৃষ্ঠা বন্ধ বা রিফ্রেশ করার সাথে সাথেই বাতিল হয়। কোনো লগ নেই, আপনার বিষয়বস্তুতে কোনো অ্যানালিটিক্স নেই। অতিরিক্ত আশ্বাস চাইলে, আপনার ব্রাউজারের developer tools আপনাকে কী ঘটছে তা দেখাবে।