इस पेज का कोड चालू नहीं हुआ।

index.html को सीधे किसी फ़ोल्डर से खोलने पर ब्राउज़र JavaScript मॉड्यूल रोक देता है, इसलिए कोई फ़ाइल चुनने पर कुछ नहीं होगा। इसके बजाय फ़ोल्डर को http पर सर्व कीजिए:

powershell -ExecutionPolicy Bypass -File serve.ps1

फिर http://localhost:8080/ खोलिए।

टेक्स्ट डिफ़ — दो टेक्स्ट, अगल-बगल मिलाइए

दो टेक्स्ट भीतर, हर फ़र्क निशान लगाकर बाहर, पंक्ति-दर-पंक्ति और शब्द-दर-शब्द। कुछ भी किसी और के सर्वर में चिपकाया नहीं जाता।

भाषा: हिन्दी
कोड देखें
यह टूल टेक्स्ट कभी अपलोड नहीं करता। यहाँ कोई सर्वर है ही नहीं।

तुलना दो लाइनों पर की गई गणित है, और यहीं, इसी पेज में होती है। एल्गोरिद्म Myers का है — वही जो git diff इस्तेमाल करता है — और src/diff.js में हाथ से लिखा हुआ है, जहाँ आप उसे पढ़ सकते हैं। इस टूल में किसी भी तरह की कोई नेटवर्क सुविधा है ही नहीं, इसलिए यहाँ से कुछ मँगाया भी नहीं जा सकता और भेजा भी नहीं जा सकता। और यह बात यहाँ मायने रखती है, क्योंकि लोग जो मिलाते हैं वे अनुबंध, कॉन्फ़िग फ़ाइलें और अभी जारी न हुआ कोड होते हैं, और हमेशा जोड़े में।

लाइव जाँच: जाँच जारी…

ऑफ़लाइन: जाँच जारी…

हमारी बात पर भरोसा मत कीजिए। DevTools खोलिए, Network टैब पर नज़र रखिए, और कुछ मिलाइए। एक भी रिक्वेस्ट आपके चिपकाए हुए का एक अक्षर तक नहीं ढोती। या फिर इंटरनेट काट दीजिए और तब भी उसे मिलाकर देखिए।

1 दोनों टेक्स्ट चिपकाइए

खाली
खाली

2 पढ़ने का ढंग चुनिए

3 पढ़िए कि क्या बदला

अभी कुछ नहीं।

Markdown के रूप में देखें

दो टेक्स्ट को बिना अपलोड किए कैसे मिलाएँ

  1. दोनों टेक्स्ट चिपकाइए, या दोनों फ़ाइलें छोड़ दीजिए। असली बाईं ओर, बदला हुआ दाईं ओर। पिकर पर एक साथ छोड़ी गई दो फ़ाइलें एक-एक तरफ़ जा बैठती हैं, उसी क्रम में जिसमें आपने छोड़ीं; उलटा हो गया हो तो पक्ष अदल-बदल लीजिए।
  2. पढ़ने का ढंग चुनिए। अगल-बगल, या एक कॉलम में। फ़ोन एक कॉलम से शुरू होता है, क्योंकि अगल-बगल के लिए टेक्स्ट के दो कॉलम चाहिए और फ़ोन में जगह करीब एक ही की है; मेन्यू वैसे भी वहीं बगल में है।
  3. जो मायने नहीं रखता, उसे अनदेखा कीजिए। खाली जगह, बड़े-छोटे अक्षर, खाली पंक्तियाँ — हर एक को अलग से अनदेखा किया जा सकता है, ताकि सिर्फ़ दोबारा सजाई गई फ़ाइल सौ बदलावों जैसी न पढ़ाई दे। डिफ़ॉल्ट रूप से बिना बदला बीच का हिस्सा एक गिनती में सिमट जाता है, और हर बदलाव के दोनों ओर तीन-तीन पंक्तियाँ रखी जाती हैं।
  4. पढ़िए कि क्या बदला। हटाई गई पंक्तियाँ बाईं ओर निशान पाती हैं, जुड़ी हुई दाईं ओर, और बदली हुई पंक्ति के भीतर वे शब्द उभार दिए जाते हैं जो अलग हैं — इसलिए दो अनुच्छेदों का डिफ़ वह शब्द दिखाता है जो खिसका, न कि दो पूरे अनुच्छेद।
  5. पैच ले जाइए। डाउनलोड यूनिफ़ाइड फ़ॉर्मैट की .patch है, और कोड रिव्यू, git apply और हर डिफ़ व्यूअर यही चाहते हैं। कॉपी वही चीज़ आपके क्लिपबोर्ड पर रख देता है।

विस्तार से

दो JSON फ़ाइलों की तुलना कैसे करें दोनों फ़ाइलें एक ही तरह फ़ॉर्मैट कीजिए, कुंजियाँ क्रम में लगाइए, फिर मिलाइए। कच्चा JSON डिफ़ लगभग पूरा शोर क्यों है, ब्राउज़र में दोनों पक्षों को मानक रूप में कैसे लाएँ, और पैच तक क्या बचता है।

सवाल

क्या मेरे टेक्स्ट कहीं अपलोड होते हैं?

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

तुलना असल में करती क्या है?

वह संपादनों का सबसे छोटा समूह ढूँढ़ती है जो बाएँ वाले टेक्स्ट को दाएँ वाले में बदल दे, और इसके लिए Myers का वही एल्गोरिद्म इस्तेमाल करती है जो git diff इस्तेमाल करता है। सबसे छोटा होना ही डिफ़ को पढ़ने लायक बनाता है। बीच में जोड़ी गई एक पंक्ति एक जोड़ के रूप में दिखनी चाहिए, न कि उसके बाद की हर पंक्ति के बदल जाने के रूप में। बदली हुई पंक्ति के भीतर जो शब्द अलग हैं उन पर भी निशान लग जाता है, इसलिए दो पैराग्राफ़ की तुलना दो पूरे पैराग्राफ़ नहीं, वह शब्द दिखाती है जो हिला।

क्या यह दो चिपकाए हुए टेक्स्ट के बजाय दो फ़ाइलें मिला सकता है?

हाँ। दोनों को एक साथ पिकर पर छोड़ दीजिए और वे एक-एक तरफ़ जा बैठती हैं, उसी क्रम में जिसमें आपने छोड़ीं। उन्हें आपका ब्राउज़र पढ़कर इसी पेज में लाता है, और वही अकेली जगह है जहाँ वे जाती हैं। अगर आपने उन्हें उलटी तरफ़ छोड़ दिया हो तो पक्ष अदल-बदल लीजिए।

तुलना में से क्या निकलता है, और क्या मैं उसे लागू कर सकता हूँ?

डाउनलोड एक यूनिफ़ाइड डिफ़ है, यानी वही @@ -3,5 +3,5 @@ वाला फ़ॉर्मैट जिसे git apply, patch और हर कोड रिव्यू टूल पढ़ता है। कॉपी वही चीज़ आपके क्लिपबोर्ड में डाल देता है। स्क्रीन पर जो है वह उसी का एक रूप है, यानी आमने-सामने या एक ही कॉलम में, और जब तक आप पूरा न माँगें तब तक न बदले हिस्से एक गिनती में सिमटे हुए।

क्या यह खाली जगह, बड़े-छोटे अक्षर या खाली पंक्तियाँ अनदेखी कर सकता है?

हाँ, हर एक अलग से। खाली जगह अनदेखी करने पर सिर्फ़ दोबारा सजाई गई फ़ाइल बिना बदलाव की निकलती है; बड़े-छोटे अक्षर अनदेखे करने पर Error और error एक ही शब्द गिने जाते हैं; खाली पंक्तियाँ अनदेखी करने पर वे पंक्तियाँ छूट जाती हैं जिनमें कुछ है ही नहीं। तब नतीजे के ऊपर की गिनती कहती है कि जिन फ़र्कों को आपने अनदेखा करने को कहा उन्हें अनदेखा करते ही दोनों बराबर हैं — जो हूबहू एक जैसा होने के दावे से अलग दावा है, और पेज दोनों दावों को अलग ही रखता है।

यह कितनी बड़ी तुलना सँभाल सकता है?

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

क्या यह मुफ़्त है, और क्या मुझे खाता चाहिए?

यह मुफ़्त है, और यहाँ न कोई खाता है, न साइन-इन, न ट्रायल, और न इस पर कोई सीमा कि आप कितना चिपकाएँ। साइट पर विज्ञापन हैं, और वही इसका खर्च उठाते हैं; विज्ञापनों को आपके टेक्स्ट के बारे में कुछ नहीं दिया जाता।

क्या यह ऑफ़लाइन चलता है?

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