टेक्स्ट और रोजमर्रा के टूल · टेक्स्ट टूलकिट
कंप्यूटरों के बीच क्रमबद्ध सूचियाँ भिन्न क्यों होती हैं: स्थानीय-जागरूक छँटाई की व्याख्या की गई
· यह क्यों मायने रखती है
पाठ टूल छँटाई स्थानों
कोड-पॉइंट ऑर्डर और स्थानीय मिलान के बीच अंतर बताता है, क्यों ä, é और अपरकेस अक्षर अलग-अलग मशीनों पर अलग-अलग स्थानों पर आते हैं, और बिना किसी आश्चर्य के क्रमबद्ध सूची को कैसे साझा किया जाए।
एक ही सूची, दो आदेश - एक सहकर्मी का प्रकार एंगस्ट्रॉम को कहीं और रखता है, और आप में से कोई भी गलत नहीं है
एक टीम लीडर सहभागी नामों की एक ही सूची दो देशों में सहकर्मियों को भेज सकता है और दो प्रशंसनीय वर्णमाला क्रम प्राप्त कर सकता है। उच्चारण अक्षरों वाले नाम असहमति का सामान्य बिंदु हैं, क्योंकि वर्णमाला का स्थान केवल दृश्यमान आधार अक्षर से निर्धारित नहीं होता है। ब्राउज़र परिवेश तुलना में भाग लेता है.
किसी भी सहकर्मी को मैन्युअल गलती करने की आवश्यकता नहीं है। व्यावहारिक समस्या यह है कि "वर्णानुक्रम में क्रमबद्ध करें" बहुभाषी पाठ के लिए एक सार्वभौमिक अनुक्रम की पहचान नहीं करता है। परिवर्धन या निष्कासन की समीक्षा करने से पहले, सहमत हों कि कौन सा पूरा किया गया आदेश आधिकारिक है; अन्यथा पंक्ति-दर-पंक्ति तुलना केवल अलग-अलग छँटाई निर्णयों के कारण होने वाली हलचल को दर्शाएगी।
कोड-बिंदु क्रम - क्यों एक अनुभवहीन प्रकार प्रत्येक बड़े अक्षर को प्रत्येक छोटे अक्षर से पहले रखता है और उच्चारण वाले अक्षरों को अंत तक धकेलता है
रूपरेखा एक सहज कोड-बिंदु प्रकार का वर्णन करती है जो छोटे अक्षरों से पहले बड़े अक्षरों को रखती है और अंत में उच्चारण वाले अक्षरों को रखती है, लेकिन टेक्स्ट टूलकिट इसे लागू नहीं करता है। इसका `sortLines` फ़ंक्शन लाइनों की प्रतिलिपि बनाता है और प्रत्येक जोड़ी की तुलना `localeCompare` से करता है, इसलिए कच्चे वर्ण संख्याओं के बजाय ब्राउज़र संयोजन नियमों की सलाह ली जाती है।
फ़ंक्शन विकल्पों में केस हैंडलिंग भी स्पष्ट है। केस-संवेदी सॉर्टिंग `variant` संवेदनशीलता का अनुरोध करती है, जबकि डिफ़ॉल्ट केस-संवेदनशील मोड `base` संवेदनशीलता का अनुरोध करती है। यह अलग-अलग आवरण वाले या उच्चारण किए गए रूपों की तुलना समकक्ष के रूप में कर सकता है, जिससे उनके सापेक्ष प्लेसमेंट को एक अलग ब्लॉक में राजधानियों को मजबूर करने के बजाय सॉर्टर को दिए गए स्थिर क्रम पर निर्भर किया जा सकता है।
ToolAcre सरल कोड-पॉइंट ऑर्डर का उपयोग नहीं करता है: यह प्रत्येक पंक्ति के लिए localeCompare को कॉल करता है
तुलना `undefined` को लोकेल के रूप में पास करती है, जो रनटाइम को उसके डिफ़ॉल्ट लोकेल व्यवहार का उपयोग करने के लिए कहती है। स्रोत स्वीडिश, जर्मन, अंग्रेजी या किसी अन्य नामित संयोजन का वादा नहीं करता है, और इस फ़ंक्शन द्वारा दर्शाए गए इंटरफ़ेस में कोई स्थानीय तर्क नहीं है। इसलिए यहां सटीक राष्ट्रीय आदेश प्रकाशित करना कार्यान्वयन साक्ष्य से परे होगा।
यह सीमा स्पष्ट करती है कि परिणाम भिन्न क्यों हो सकते हैं, बिना यह साबित किए कि किस सेटिंग के कारण कोई विशेष अंतर आया। जब पुनरुत्पादन मायने रखता है तो ब्राउज़र और वातावरण को रिकॉर्ड करें, लेकिन एक उच्चारण वाले नाम की स्थिति से किसी स्थान का अनुमान न लगाएं। विश्वसनीय तथ्य यह है कि टूलकिट किसी साझा भाषा को पिन करने के बजाय रनटाइम डिफ़ॉल्ट के साथ `localeCompare` को ऑर्डर सौंपता है।
ब्राउज़र डिफ़ॉल्ट लोकेल प्रदान करता है, लेकिन टूलकिट कोई लोकेल चयनकर्ता प्रदान नहीं करता है
डिजिट रन को भी विशेष उपचार मिलता है। फ़ंक्शन `numeric` को सत्य पर डिफ़ॉल्ट करता है और उस विकल्प को `localeCompare` पर अग्रेषित करता है। नतीजतन, `item2` और `item10` वाली सूची का उद्देश्य दस में वर्ण `1` की तुलना दो में वर्ण `2` से करने के बजाय छोटे संख्यात्मक रन को आरोही क्रम में पहले रखना है।
शून्य-पैडिंग तब उपयोगी रहती है जब डेटा को किसी अन्य सॉर्टर से गुजरना पड़ता है जिसका व्यवहार अज्ञात है, लेकिन यहां संख्यात्मक-जागरूक ऑर्डर प्राप्त करने की आवश्यकता नहीं है। यदि इसके बजाय एक सटीक शाब्दिक क्रम वांछित है, तो अंतर्निहित फ़ंक्शन संख्यात्मक तुलना को बंद करने का समर्थन करता है। महत्वपूर्ण सबक यह मानने के बजाय कि प्रत्येक वर्णमाला कमांड एम्बेडेड अंकों को समान मानता है, चुने गए विकल्प का दस्तावेजीकरण करना है।
अंक डिफ़ॉल्ट रूप से संख्यात्मक रूप से क्रमबद्ध होता है, इसलिए आइटम2, आइटम10 से पहले आता है
समीक्षा योग्य उदाहरण के लिए, `Ångström`, `Ana`, `Émile`, `item2`, और `item10` को अलग-अलग पंक्तियों में रखें, फिर टीम द्वारा चुने गए ब्राउज़र में एक बार सॉर्ट करें। उस आउटपुट को संदर्भ के रूप में सहेजें। यह आलेख जानबूझकर दूसरे ब्राउज़र के अपेक्षित उच्चारण-नाम क्रम को प्रकाशित नहीं करता है क्योंकि रिपॉजिटरी में इसे स्थापित करने के लिए कोई पिन किया हुआ लोकेल फिक्स्चर नहीं है।
यदि किसी सहकर्मी के पास कोई अन्य आदेश है, तो दो पूर्ण पाठों की तुलना पंक्ति-आधारित अंतर से करें। अंतर कार्यान्वयन सबसे लंबी-सामान्य-अनुवर्ती तालिका के माध्यम से बिल्कुल समान रेखाओं को संरेखित करता है और बेजोड़ पंक्तियों को जोड़े या हटाए गए के रूप में लेबल करता है। यह संरचनात्मक गतिविधि की ईमानदारी से रिपोर्ट करता है, लेकिन यह स्पष्ट नहीं करता है कि किस स्थानीय तुलना ने किसी नाम को किसी भी स्थान पर रखा है।
व्यावहारिक उदाहरण: दो स्थानीय परिणामों का आविष्कार करने के बजाय एक ब्राउज़र-निर्मित ऑर्डर की तुलना करें
सबसे सरल सहयोग नियम एक बार सॉर्ट करना और परिणामी पंक्तियों को साझा करना है, न कि केवल अवर्गीकृत इनपुट और सॉर्ट को दबाने का निर्देश। एक सादा-पाठ परिणाम उस निर्णय को सुरक्षित रखता है जिसकी वास्तव में समीक्षा की गई थी। प्राप्तकर्ता पर्यावरण-निर्भर ऑर्डर को फिर से बनाने के लिए अपने ब्राउज़र से पूछे बिना उस आर्टिफैक्ट को खोज सकते हैं, एनोटेट कर सकते हैं या अलग कर सकते हैं।
जब उद्गम का महत्व हो तो मूल सूची भी रखें। क्रमबद्ध प्रति समीक्षा के लिए एक प्रस्तुति है, जबकि मूल में सार्थक आगमन या स्रोत आदेश हो सकता है। संदर्भ फ़ाइल का नामकरण और रिकॉर्डिंग करना कि क्या सॉर्टिंग आरोही, केस-संवेदी और संख्यात्मक थी, एक अस्पष्ट वर्णमाला ऑपरेशन को एक दोहराने योग्य टीम हैंडऑफ़ में बदल देती है।
इसमें क्या शामिल नहीं है - संख्यात्मक सॉर्टिंग विकल्प, रिवर्स ऑर्डर और एक विशिष्ट कॉलम द्वारा सॉर्टिंग
मूल रूपरेखा कहती है कि संख्यात्मक सॉर्टिंग विकल्प और रिवर्स ऑर्डर शामिल नहीं हैं, लेकिन स्रोत उस सीमा का खंडन करता है। `sortLines` एक संख्यात्मक विकल्प और आरोही या अवरोही दिशा को स्वीकार करता है, जबकि `reverseLines` वर्तमान लाइन अनुक्रम को उलट सकता है। उन क्षमताओं को टूलकिट के पाठ तर्क से अनुपस्थित नहीं बताया जाना चाहिए।
किसी विशिष्ट कॉलम के आधार पर सॉर्ट करना वास्तव में इस फ़ंक्शन के बाहर है। प्रत्येक पूर्ण पंक्ति तुलनात्मक मान है, इसलिए `Paris, Ana` जैसी पंक्ति को अल्पविराम के बाद नाम के बजाय इसकी शुरुआत से क्रमबद्ध किया जाता है। फ़ील्ड महत्वपूर्ण होने पर उपयुक्त डेटा टूल के साथ संरचित पंक्तियों को पार्स करें; लाइन सॉर्टिंग को कॉलम को समझने का दिखावा नहीं करना चाहिए।
टूलकिट संख्यात्मक सॉर्टिंग और रिवर्स ऑर्डर को कवर करता है, लेकिन कॉलम द्वारा सॉर्टिंग नहीं करता है
स्थानीय-जागरूक सॉर्टिंग उपयोगी है क्योंकि मानव वर्णमाला को एक कच्चे अक्षर-संख्या नियम में सुरक्षित रूप से कम नहीं किया जा सकता है। इसका यह भी अर्थ है कि एक अनपिन किया गया डिफ़ॉल्ट लोकेल एक क्रॉस-मशीन पुनरुत्पादन अनुबंध नहीं है। टेक्स्ट टूलकिट ब्राउज़र संयोजन का उपयोग करता है, केस-असंवेदनशील और संख्यात्मक-जागरूक तुलनाओं के लिए डिफ़ॉल्ट है, और अनुरोधित दिशा को उलट सकता है।
परिवेश में फैली टीम के लिए, आउटपुट को अनुबंध बनाएं: एक ब्राउज़र सत्र चुनें, इच्छित विकल्प सेट करें, सॉर्ट करें और उस सटीक टेक्स्ट को वितरित करें। जब कोई अन्य आदेश सामने आए, तो कौन सा वर्णमाला सही है, इस पर बहस करने से पहले कलाकृतियों की तुलना करें। स्रोत तंत्र को समझाने का समर्थन करता है, जबकि सहेजा गया परिणाम स्थिर अनुक्रम प्रदान करता है कार्यान्वयन स्वयं विश्व स्तर पर गारंटी नहीं देता है।