कैनॉनिकलाइज़ेशन: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Process for converting data into a "standard", "normal", or canonical form}}
{{Short description|Process for converting data into a "standard", "normal", or canonical form}}


{{Distinguish|Canonical link element|Canonization}}
{{Distinguish|कैनोनिकल लिंक तत्व|कैनोनिज़शन}}


[[कंप्यूटर विज्ञान]] में, कैनोनिकलाइज़ेशन (कभी-कभी मानकीकरण या [[सामान्यीकरण (सांख्यिकी)]]) [[आंकड़े]] को परिवर्तित करने की प्रक्रिया है जिसमें से अधिक संभावित प्रतिनिधित्व को मानक, सामान्य या [[कानूनी फॉर्म]] में परिवर्तित किया जाता है। यह समतुल्यता के लिए अलग-अलग अभ्यावेदन की तुलना करने, अलग-अलग डेटा संरचनाओं की संख्या की गणना करने, बार-बार की गई गणनाओं को समाप्त करके विभिन्न [[कलन विधि]] की दक्षता में सुधार करने या सार्थक [[ छँटाई ]] ऑर्डर लागू करना संभव बनाने के लिए किया जा सकता है।
[[कंप्यूटर विज्ञान]] में, '''कैनोनिकलाइज़ेशन''' (कभी-कभी '''मानकीकरण''' या [[सामान्यीकरण (सांख्यिकी)|'''सामान्यीकरण''' ('''सांख्यिकी''')]]) [[आंकड़े]] को परिवर्तित करने की प्रक्रिया है जिसमें से एक अधिक संभावित प्रतिनिधित्व को मानक, सामान्य या [[कानूनी फॉर्म|कैनोनिकल फॉर्म]] में परिवर्तित किया जाता है। यह समतुल्यता के लिए अलग-अलग रेप्रेज़ेंटेशन्स की तुलना करने, अलग-अलग डेटा संरचनाओं की संख्या की गणना करने, बार-बार की गई गणनाओं को समाप्त करके विभिन्न [[कलन विधि|एल्गोरिदम]] की दक्षता में सुधार करने या सार्थक [[ छँटाई | सॉर्टिंग]] ऑर्डर लागू करना संभव बनाने के लिए किया जा सकता है।


==उपयोग के मामले==
==उपयोग के मामले==


=== फ़ाइल नाम ===
=== फ़ाइल नाम ===
[[फाइल सिस्टम]] में फ़ाइलें अधिकांश मामलों में एकाधिक फ़ाइल नामों के माध्यम से एक्सेस की जा सकती हैं। उदाहरण के लिए [[यूनिक्स]] जैसी प्रणालियों में, string<code>/./</code>द्वारा प्रतिस्थापित किया जा सकता है<code>/</code>. C मानक लाइब्रेरी में, function <code>realpath()</code> यह कार्य करता है. फ़ाइल नामों को कैनोनिकलाइज़ करने के लिए इस फ़ंक्शन द्वारा किए गए अन्य ऑपरेशनों का प्रबंधन शामिल है <code>/..</code> मूल निर्देशिकाओं का संदर्भ देने वाले घटक, एकाधिक स्लैश के अनुक्रमों का सरलीकरण, अनुगामी स्लैश को हटाना और [[प्रतीकात्मक लिंक]] का समाधान।
[[फाइल सिस्टम]] में फ़ाइलें अधिकांश स्थितियों में एकाधिक फ़ाइल नामों के माध्यम से एक्सेस की जा सकती हैं। उदाहरण के लिए [[यूनिक्स]] जैसी प्रणालियों में, string<code>/./</code> को <code>/</code> से बदला जा सकता है। C मानक लाइब्रेरी में, function <code>realpath()</code> यह कार्य करता है। फ़ाइल नामों को कैनोनिकलाइज़ करने के लिए इस फ़ंक्शन द्वारा किए गए अन्य ऑपरेशनों में मूल निर्देशिकाओं को संदर्भित करने वाले <code>/..</code> घटकों को संभालना, एकाधिक स्लैश के अनुक्रमों का सरलीकरण, अनुगामी स्लैश को हटाना और [[प्रतीकात्मक लिंक]] का समाधान सम्मिलित है।


कंप्यूटर सुरक्षा के लिए फ़ाइल नामों का कैनोनिकलाइज़ेशन महत्वपूर्ण है। उदाहरण के लिए, वेब सर्वर पर यह प्रतिबंध हो सकता है कि फ़ाइलें केवल cgi निर्देशिका के अंतर्गत हों <code>C:\inetpub\wwwroot\cgi-bin</code> निष्पादित किया जा सकता है. यह नियम यह जाँच कर लागू किया जाता है कि पथ कहाँ से शुरू होता है <code>C:\inetpub\wwwroot\cgi-bin\</code> और उसके बाद ही इसे क्रियान्वित करना। जबकि फ़ाइल <code>C:\inetpub\wwwroot\cgi-bin\..\..\..\Windows\System32\cmd.exe</code> प्रारंभ में यह सीजीआई निर्देशिका में प्रतीत होता है, यह इसका फायदा उठाता है <code>..</code> किसी फ़ाइल को बाहर निष्पादित करने के प्रयास में निर्देशिका पदानुक्रम का बैकअप लेने के लिए पथ निर्दिष्टकर्ता <code>cgi-bin</code>. की अनुमति <code>cmd.exe</code> निष्पादित करने के लिए फ़ाइल नाम को सरलतम प्रतिनिधित्व में विहित करने में विफलता के कारण होने वाली त्रुटि होगी, <code>C:\Windows\System32\cmd.exe</code>, और इसे [[ निर्देशिका ट्रैवर्सल ]] भेद्यता कहा जाता है। पथ को कैनोनिकलाइज़ करने के साथ, यह स्पष्ट है कि फ़ाइल को निष्पादित नहीं किया जाना चाहिए।
कंप्यूटर सुरक्षा के लिए फ़ाइल नामों का कैनोनिकलाइज़ेशन महत्वपूर्ण है। उदाहरण के लिए, एक वेब सर्वर पर यह प्रतिबंध हो सकता है कि केवल cgi निर्देशिका <code>C:\inetpub\wwwroot\cgi-bin</code> के अंतर्गत फ़ाइलें निष्पादित की जा सकती हैं। यह नियम यह जांच कर लागू किया जाता है कि पथ <code>C:\inetpub\wwwroot\cgi-bin\</code> से प्रारंभ होता है और उसके बाद ही इसे निष्पादित किया जाता है। जबकि फ़ाइल <code>C:\inetpub\wwwroot\cgi-bin\..\..\..\Windows\System32\cmd.exe</code> प्रारंभ में cgi निर्देशिका में प्रतीत होती है,यह <code>cgi-bin</code> के बाहर किसी फ़ाइल को निष्पादित करने के प्रयास में निर्देशिका पदानुक्रम का बैकअप लेने के लिए <code>..</code> पथ विनिर्देशक का उपयोग करता है। <code>cmd.exe</code> को निष्पादित करने की अनुमति देना फ़ाइल नाम को सबसे सरल प्रतिनिधित्व, <code>C:\Windows\System32\cmd.exe</code> में कैनोनिकलाइज़ करने में विफलता के कारण होने वाली त्रुटि होगी, और इसे [[ निर्देशिका ट्रैवर्सल |निर्देशिका ट्रैवर्सल]] वुल्नरेबिलिटी कहा जाता है। पथ को कैनोनिकलाइज़ करने के साथ, यह स्पष्ट है कि फ़ाइल को निष्पादित नहीं किया जाना चाहिए।


===[[यूनिकोड]]===
===[[यूनिकोड]]===


यूनिकोड में, कई उच्चारण अक्षरों को से अधिक तरीकों से दर्शाया जा सकता है। उदाहरण के लिए, é को यूनिकोड में यूनिकोड वर्ण U+0065 (लैटिन छोटा अक्षर E) के बाद वर्ण U+0301 (तीव्र उच्चारण का संयोजन) के रूप में दर्शाया जा सकता है, लेकिन इसे पूर्वनिर्मित वर्ण U+00E9 (तीव्र उच्चारण के साथ लैटिन छोटा अक्षर E) के रूप में भी दर्शाया जा सकता है। यह स्ट्रिंग तुलना को और अधिक जटिल बना देता है, क्योंकि ऐसे ग्लिफ़ वाली स्ट्रिंग के हर संभावित प्रतिनिधित्व पर विचार किया जाना चाहिए। इससे निपटने के लिए, यूनिकोड [[विहित तुल्यता]] की व्यवस्था प्रदान करता है। इस संदर्भ में, कैनोनिकलाइज़ेशन [[यूनिकोड सामान्यीकरण]] है।
यूनिकोड में, कई उच्चारण अक्षरों को से अधिक तरीकों से दर्शाया जा सकता है। उदाहरण के लिए, é को यूनिकोड में यूनिकोड वर्ण U+0065 (लैटिन छोटा अक्षर E) के बाद वर्ण U+0301 (तीव्र उच्चारण का संयोजन) के रूप में दर्शाया जा सकता है, लेकिन इसे पूर्वनिर्मित वर्ण U+00E9 (तीव्र उच्चारण के साथ लैटिन छोटा अक्षर E) के रूप में भी दर्शाया जा सकता है। यह स्ट्रिंग तुलना को और अधिक जटिल बना देता है, क्योंकि ऐसे ग्लिफ़ वाली स्ट्रिंग के हर संभावित प्रतिनिधित्व पर विचार किया जाना चाहिए। इससे निपटने के लिए, यूनिकोड [[विहित तुल्यता|कैनोनिकल तुल्यता]] की व्यवस्था प्रदान करता है। इस संदर्भ में, कैनोनिकलाइज़ेशन [[यूनिकोड सामान्यीकरण]] है।


यूनिकोड मानक में परिवर्तनीय-चौड़ाई एन्कोडिंग, विशेष रूप से [[यूटीएफ-8]], कुछ स्थितियों में कैनोनिकलाइज़ेशन की अतिरिक्त आवश्यकता का कारण बन सकती है। अर्थात्, मानक के अनुसार, UTF-8 में किसी भी यूनिकोड वर्ण के लिए केवल वैध बाइट अनुक्रम है,<ref>[http://www.ietf.org/rfc/rfc2279.txt RFC 2279: UTF-8, a transformation format of ISO 10646]</ref> लेकिन कुछ बाइट क्रम अमान्य हैं, यानी। इ। यूनिकोड वर्णों की किसी भी स्ट्रिंग को UTF-8 में एन्कोड करके प्राप्त नहीं किया जा सकता। कुछ ख़राब डिकोडर कार्यान्वयन अमान्य बाइट अनुक्रमों को इनपुट के रूप में स्वीकार कर सकते हैं और ऐसे अनुक्रम के लिए आउटपुट के रूप में वैध यूनिकोड वर्ण उत्पन्न कर सकते हैं। यदि कोई ऐसे डिकोडर का उपयोग करता है, तो कुछ यूनिकोड वर्णों में प्रभावी रूप से से अधिक संगत बाइट अनुक्रम होते हैं: वैध और कुछ अमान्य। इससे पिछले अनुभाग में वर्णित जैसी सुरक्षा समस्याएं उत्पन्न हो सकती हैं। इसलिए, यदि कोई UTF-8 स्ट्रिंग्स पर कुछ फ़िल्टर (उदाहरण के लिए UTF-8 में लिखा गया रेगुलर एक्सप्रेशन) लागू करना चाहता है, जिसे बाद में डिकोडर को पास कर दिया जाएगा जो अमान्य बाइट अनुक्रमों की अनुमति देता है, तो उसे फ़िल्टर में पास करने से पहले स्ट्रिंग्स को कैनोनिकलाइज़ करना चाहिए। इस संदर्भ में, कैनोनिकलाइज़ेशन प्रत्येक स्ट्रिंग वर्ण को उसके एकल वैध बाइट अनुक्रम में अनुवाद करने की प्रक्रिया है। कैनोनिकलाइज़ेशन का विकल्प अमान्य बाइट अनुक्रम वाले किसी भी स्ट्रिंग को अस्वीकार करना है।
यूनिकोड मानक में परिवर्तनीय-चौड़ाई एन्कोडिंग, विशेष रूप से [[यूटीएफ-8]], कुछ स्थितियों में कैनोनिकलाइज़ेशन की अतिरिक्त आवश्यकता का कारण बन सकती है। अर्थात्, मानक के अनुसार, UTF-8 में किसी भी यूनिकोड वर्ण के लिए केवल वैध बाइट अनुक्रम है,<ref>[http://www.ietf.org/rfc/rfc2279.txt RFC 2279: UTF-8, a transformation format of ISO 10646]</ref> लेकिन कुछ बाइट क्रम अमान्य हैं, यानी। इ। यूनिकोड वर्णों की किसी भी स्ट्रिंग को UTF-8 में एन्कोड करके प्राप्त नहीं किया जा सकता। कुछ ख़राब डिकोडर कार्यान्वयन अमान्य बाइट अनुक्रमों को इनपुट के रूप में स्वीकार कर सकते हैं और ऐसे अनुक्रम के लिए आउटपुट के रूप में वैध यूनिकोड वर्ण उत्पन्न कर सकते हैं। यदि कोई ऐसे डिकोडर का उपयोग करता है, तो कुछ यूनिकोड वर्णों में प्रभावी रूप से से अधिक संगत बाइट अनुक्रम होते हैं: वैध और कुछ अमान्य। इससे पिछले अनुभाग में वर्णित जैसी सुरक्षा समस्याएं उत्पन्न हो सकती हैं। इसलिए, यदि कोई UTF-8 स्ट्रिंग्स पर कुछ फ़िल्टर (उदाहरण के लिए UTF-8 में लिखा गया रेगुलर एक्सप्रेशन) लागू करना चाहता है, जिसे बाद में डिकोडर को पास कर दिया जाएगा जो अमान्य बाइट अनुक्रमों की अनुमति देता है, तो उसे फ़िल्टर में पास करने से पहले स्ट्रिंग्स को कैनोनिकलाइज़ करना चाहिए। इस संदर्भ में, कैनोनिकलाइज़ेशन प्रत्येक स्ट्रिंग वर्ण को उसके एकल वैध बाइट अनुक्रम में अनुवाद करने की प्रक्रिया है। कैनोनिकलाइज़ेशन का विकल्प अमान्य बाइट अनुक्रम वाले किसी भी स्ट्रिंग को अस्वीकार करना है।
Line 24: Line 24:
==== Google द्वारा उपयोग ====
==== Google द्वारा उपयोग ====


कैनोनिकल यूआरएल उस पेज का यूआरएल है जिसे Google आपकी साइट पर डुप्लिकेट पेजों के सेट से सबसे अधिक प्रतिनिधि मानता है। उदाहरण के लिए, यदि आपके पास ही पृष्ठ के लिए यूआरएल हैं (उदाहरण के लिए)। <code>https://example.com/?dress=1234</code> और <code>https://example.com/dresses/1234</code>), Google किसी को विहित के रूप में चुनता है। ध्यान दें कि पृष्ठों का बिल्कुल जैसा होना ज़रूरी नहीं है; सूची पृष्ठों को क्रमबद्ध करने या फ़िल्टर करने में मामूली परिवर्तन पृष्ठ को अद्वितीय नहीं बनाते हैं (उदाहरण के लिए, मूल्य के आधार पर क्रमबद्ध करना या आइटम के रंग के आधार पर फ़िल्टर करना)।
कैनोनिकल यूआरएल उस पेज का यूआरएल है जिसे Google आपकी साइट पर डुप्लिकेट पेजों के सेट से सबसे अधिक प्रतिनिधि मानता है। उदाहरण के लिए, यदि आपके पास ही पृष्ठ के लिए यूआरएल हैं (उदाहरण के लिए)। <code>https://example.com/?dress=1234</code> और <code>https://example.com/dresses/1234</code>), Google किसी को कैनोनिकल के रूप में चुनता है। ध्यान दें कि पृष्ठों का बिल्कुल जैसा होना ज़रूरी नहीं है; सूची पृष्ठों को क्रमबद्ध करने या फ़िल्टर करने में मामूली परिवर्तन पृष्ठ को अद्वितीय नहीं बनाते हैं (उदाहरण के लिए, मूल्य के आधार पर क्रमबद्ध करना या आइटम के रंग के आधार पर फ़िल्टर करना)।


कैनोनिकल डुप्लिकेट से भिन्न डोमेन में हो सकता है।<ref>{{Cite web|url=https://support.google.com/webmasters/answer/139066?hl=en|title=Consolidate Duplicate URLs with Canonicals &#124; Google Search Central}}</ref>
कैनोनिकल डुप्लिकेट से भिन्न डोमेन में हो सकता है।<ref>{{Cite web|url=https://support.google.com/webmasters/answer/139066?hl=en|title=Consolidate Duplicate URLs with Canonicals &#124; Google Search Central}}</ref>
Line 43: Line 43:
कैनोनिकल यूआरएल आमतौर पर वे यूआरएल होते हैं जिनका उपयोग शेयर कार्रवाई के लिए किया जाता है।
कैनोनिकल यूआरएल आमतौर पर वे यूआरएल होते हैं जिनका उपयोग शेयर कार्रवाई के लिए किया जाता है।


चूंकि कैनोनिकल यूआरएल का उपयोग खोज इंजनों के खोज परिणाम में किया जाता है, वे ज्यादातर मामलों में [[लैंडिंग पृष्ठ]] होते हैं।
चूंकि कैनोनिकल यूआरएल का उपयोग खोज इंजनों के खोज परिणाम में किया जाता है, वे ज्यादातर स्थितियों में [[लैंडिंग पृष्ठ]] होते हैं।


===खोज इंजन और एसईओ===
===खोज इंजन और एसईओ===
Line 52: Line 52:
* <code>http://www.wikipedia.com/{{cbignore}}</code>
* <code>http://www.wikipedia.com/{{cbignore}}</code>
* <code>http://www.wikipedia.com/?source=asdf{{cbignore}}</code>
* <code>http://www.wikipedia.com/?source=asdf{{cbignore}}</code>
ये सभी यूआरएल विकिपीडिया के मुखपृष्ठ की ओर इशारा करते हैं, लेकिन खोज इंजन उनमें से केवल को ही यूआरएल का विहित रूप मानेगा।
ये सभी यूआरएल विकिपीडिया के मुखपृष्ठ की ओर इशारा करते हैं, लेकिन खोज इंजन उनमें से केवल को ही यूआरएल का कैनोनिकल रूप मानेगा।


===एक्सएमएल===
===एक्सएमएल===
Line 60: Line 60:
# <code><node1 x='1' a="1" a="2">Data</node1&nbsp;&nbsp;&nbsp;&nbsp;>&nbsp;<node2>Data</node2></code>
# <code><node1 x='1' a="1" a="2">Data</node1&nbsp;&nbsp;&nbsp;&nbsp;>&nbsp;<node2>Data</node2></code>
# <code><node1 a="2" x="1">Data</node1>&nbsp;<node2>Data</node2></code>
# <code><node1 a="2" x="1">Data</node1>&nbsp;<node2>Data</node2></code>
पहले उदाहरण में पहले नोड के समापन टैग में अतिरिक्त स्थान हैं। दूसरा उदाहरण, जिसे विहित किया गया है, इन रिक्त स्थानों को हटा दिया गया है। ध्यान दें कि W3C कैनोनिकलाइज़ेशन के तहत केवल टैग के भीतर के रिक्त स्थान को हटाया जाता है, टैग के बीच के रिक्त स्थान को नहीं।
पहले उदाहरण में पहले नोड के समापन टैग में अतिरिक्त स्थान हैं। दूसरा उदाहरण, जिसे कैनोनिकल किया गया है, इन रिक्त स्थानों को हटा दिया गया है। ध्यान दें कि W3C कैनोनिकलाइज़ेशन के तहत केवल टैग के भीतर के रिक्त स्थान को हटाया जाता है, टैग के बीच के रिक्त स्थान को नहीं।


विहितीकरण परिवर्तनों का पूरा सारांश नीचे सूचीबद्ध है:
विहितीकरण परिवर्तनों का पूरा सारांश नीचे सूचीबद्ध है:
Line 80: Line 80:


=== कम्प्यूटेशनल भाषाविज्ञान ===
=== कम्प्यूटेशनल भाषाविज्ञान ===
आकृति विज्ञान (भाषाविज्ञान) और [[शब्द]]ावली में, [[लेम्मा (आकृति विज्ञान)]] शब्दों के समूह का विहित रूप है। उदाहरण के लिए, [[अंग्रेजी भाषा]] में, रन, रन, रन और रनिंग ही शब्द के रूप हैं, इसलिए हम उनमें से का चयन कर सकते हैं; पूर्व। सभी रूपों का प्रतिनिधित्व करने के लिए चलाएँ। [[लेक्सिकल डेटाबेस]] जैसे [http://www-igm.univ-mlv.fr/~unitex/index.php?page=7 Unitex] इस प्रकार के प्रतिनिधित्व का उपयोग करते हैं।
आकृति विज्ञान (भाषाविज्ञान) और [[शब्द]]ावली में, [[लेम्मा (आकृति विज्ञान)]] शब्दों के समूह का कैनोनिकल रूप है। उदाहरण के लिए, [[अंग्रेजी भाषा]] में, रन, रन, रन और रनिंग ही शब्द के रूप हैं, इसलिए हम उनमें से का चयन कर सकते हैं; पूर्व। सभी रूपों का प्रतिनिधित्व करने के लिए चलाएँ। [[लेक्सिकल डेटाबेस]] जैसे [http://www-igm.univ-mlv.fr/~unitex/index.php?page=7 Unitex] इस प्रकार के प्रतिनिधित्व का उपयोग करते हैं।


[[लेम्मटाइजेशन]] किसी शब्द को उसके विहित रूप में परिवर्तित करने की प्रक्रिया है।
[[लेम्मटाइजेशन]] किसी शब्द को उसके कैनोनिकल रूप में परिवर्तित करने की प्रक्रिया है।


== यह भी देखें ==
== यह भी देखें ==

Revision as of 11:57, 2 August 2023

कंप्यूटर विज्ञान में, कैनोनिकलाइज़ेशन (कभी-कभी मानकीकरण या सामान्यीकरण (सांख्यिकी)) आंकड़े को परिवर्तित करने की प्रक्रिया है जिसमें से एक अधिक संभावित प्रतिनिधित्व को मानक, सामान्य या कैनोनिकल फॉर्म में परिवर्तित किया जाता है। यह समतुल्यता के लिए अलग-अलग रेप्रेज़ेंटेशन्स की तुलना करने, अलग-अलग डेटा संरचनाओं की संख्या की गणना करने, बार-बार की गई गणनाओं को समाप्त करके विभिन्न एल्गोरिदम की दक्षता में सुधार करने या सार्थक सॉर्टिंग ऑर्डर लागू करना संभव बनाने के लिए किया जा सकता है।

उपयोग के मामले

फ़ाइल नाम

फाइल सिस्टम में फ़ाइलें अधिकांश स्थितियों में एकाधिक फ़ाइल नामों के माध्यम से एक्सेस की जा सकती हैं। उदाहरण के लिए यूनिक्स जैसी प्रणालियों में, string/./ को / से बदला जा सकता है। C मानक लाइब्रेरी में, function realpath() यह कार्य करता है। फ़ाइल नामों को कैनोनिकलाइज़ करने के लिए इस फ़ंक्शन द्वारा किए गए अन्य ऑपरेशनों में मूल निर्देशिकाओं को संदर्भित करने वाले /.. घटकों को संभालना, एकाधिक स्लैश के अनुक्रमों का सरलीकरण, अनुगामी स्लैश को हटाना और प्रतीकात्मक लिंक का समाधान सम्मिलित है।

कंप्यूटर सुरक्षा के लिए फ़ाइल नामों का कैनोनिकलाइज़ेशन महत्वपूर्ण है। उदाहरण के लिए, एक वेब सर्वर पर यह प्रतिबंध हो सकता है कि केवल cgi निर्देशिका C:\inetpub\wwwroot\cgi-bin के अंतर्गत फ़ाइलें निष्पादित की जा सकती हैं। यह नियम यह जांच कर लागू किया जाता है कि पथ C:\inetpub\wwwroot\cgi-bin\ से प्रारंभ होता है और उसके बाद ही इसे निष्पादित किया जाता है। जबकि फ़ाइल C:\inetpub\wwwroot\cgi-bin\..\..\..\Windows\System32\cmd.exe प्रारंभ में cgi निर्देशिका में प्रतीत होती है,यह cgi-bin के बाहर किसी फ़ाइल को निष्पादित करने के प्रयास में निर्देशिका पदानुक्रम का बैकअप लेने के लिए .. पथ विनिर्देशक का उपयोग करता है। cmd.exe को निष्पादित करने की अनुमति देना फ़ाइल नाम को सबसे सरल प्रतिनिधित्व, C:\Windows\System32\cmd.exe में कैनोनिकलाइज़ करने में विफलता के कारण होने वाली त्रुटि होगी, और इसे निर्देशिका ट्रैवर्सल वुल्नरेबिलिटी कहा जाता है। पथ को कैनोनिकलाइज़ करने के साथ, यह स्पष्ट है कि फ़ाइल को निष्पादित नहीं किया जाना चाहिए।

यूनिकोड

यूनिकोड में, कई उच्चारण अक्षरों को से अधिक तरीकों से दर्शाया जा सकता है। उदाहरण के लिए, é को यूनिकोड में यूनिकोड वर्ण U+0065 (लैटिन छोटा अक्षर E) के बाद वर्ण U+0301 (तीव्र उच्चारण का संयोजन) के रूप में दर्शाया जा सकता है, लेकिन इसे पूर्वनिर्मित वर्ण U+00E9 (तीव्र उच्चारण के साथ लैटिन छोटा अक्षर E) के रूप में भी दर्शाया जा सकता है। यह स्ट्रिंग तुलना को और अधिक जटिल बना देता है, क्योंकि ऐसे ग्लिफ़ वाली स्ट्रिंग के हर संभावित प्रतिनिधित्व पर विचार किया जाना चाहिए। इससे निपटने के लिए, यूनिकोड कैनोनिकल तुल्यता की व्यवस्था प्रदान करता है। इस संदर्भ में, कैनोनिकलाइज़ेशन यूनिकोड सामान्यीकरण है।

यूनिकोड मानक में परिवर्तनीय-चौड़ाई एन्कोडिंग, विशेष रूप से यूटीएफ-8, कुछ स्थितियों में कैनोनिकलाइज़ेशन की अतिरिक्त आवश्यकता का कारण बन सकती है। अर्थात्, मानक के अनुसार, UTF-8 में किसी भी यूनिकोड वर्ण के लिए केवल वैध बाइट अनुक्रम है,[1] लेकिन कुछ बाइट क्रम अमान्य हैं, यानी। इ। यूनिकोड वर्णों की किसी भी स्ट्रिंग को UTF-8 में एन्कोड करके प्राप्त नहीं किया जा सकता। कुछ ख़राब डिकोडर कार्यान्वयन अमान्य बाइट अनुक्रमों को इनपुट के रूप में स्वीकार कर सकते हैं और ऐसे अनुक्रम के लिए आउटपुट के रूप में वैध यूनिकोड वर्ण उत्पन्न कर सकते हैं। यदि कोई ऐसे डिकोडर का उपयोग करता है, तो कुछ यूनिकोड वर्णों में प्रभावी रूप से से अधिक संगत बाइट अनुक्रम होते हैं: वैध और कुछ अमान्य। इससे पिछले अनुभाग में वर्णित जैसी सुरक्षा समस्याएं उत्पन्न हो सकती हैं। इसलिए, यदि कोई UTF-8 स्ट्रिंग्स पर कुछ फ़िल्टर (उदाहरण के लिए UTF-8 में लिखा गया रेगुलर एक्सप्रेशन) लागू करना चाहता है, जिसे बाद में डिकोडर को पास कर दिया जाएगा जो अमान्य बाइट अनुक्रमों की अनुमति देता है, तो उसे फ़िल्टर में पास करने से पहले स्ट्रिंग्स को कैनोनिकलाइज़ करना चाहिए। इस संदर्भ में, कैनोनिकलाइज़ेशन प्रत्येक स्ट्रिंग वर्ण को उसके एकल वैध बाइट अनुक्रम में अनुवाद करने की प्रक्रिया है। कैनोनिकलाइज़ेशन का विकल्प अमान्य बाइट अनुक्रम वाले किसी भी स्ट्रिंग को अस्वीकार करना है।

यूआरएल

कैनोनिकल यूआरएल डुप्लिकेट सामग्री के लिए सत्य के एकल स्रोत को परिभाषित करने के लिए यूआरएल है।

Google द्वारा उपयोग

कैनोनिकल यूआरएल उस पेज का यूआरएल है जिसे Google आपकी साइट पर डुप्लिकेट पेजों के सेट से सबसे अधिक प्रतिनिधि मानता है। उदाहरण के लिए, यदि आपके पास ही पृष्ठ के लिए यूआरएल हैं (उदाहरण के लिए)। https://example.com/?dress=1234 और https://example.com/dresses/1234), Google किसी को कैनोनिकल के रूप में चुनता है। ध्यान दें कि पृष्ठों का बिल्कुल जैसा होना ज़रूरी नहीं है; सूची पृष्ठों को क्रमबद्ध करने या फ़िल्टर करने में मामूली परिवर्तन पृष्ठ को अद्वितीय नहीं बनाते हैं (उदाहरण के लिए, मूल्य के आधार पर क्रमबद्ध करना या आइटम के रंग के आधार पर फ़िल्टर करना)।

कैनोनिकल डुप्लिकेट से भिन्न डोमेन में हो सकता है।[2]


इंटरनेट

कैनोनिकल यूआरएल की मदद से, खोज इंजन को पता चलता है कि क्वेरी परिणाम में कौन सा लिंक प्रदान किया जाना चाहिए।

कैनोनिकल लिंक तत्व का उपयोग कैनोनिकल यूआरएल को परिभाषित करने के लिए किया जा सकता है।

इंट्रानेट

इंट्रानेट में, जानकारी के लिए मैन्युअल खोज प्रमुख है। इस मामले में, कैनोनिकल यूआरएल को गैर-मशीन-पठनीय रूप में भी परिभाषित किया जा सकता है। उदाहरण के लिए दिशानिर्देश में.

विविध

कैनोनिकल यूआरएल आमतौर पर वे यूआरएल होते हैं जिनका उपयोग शेयर कार्रवाई के लिए किया जाता है।

चूंकि कैनोनिकल यूआरएल का उपयोग खोज इंजनों के खोज परिणाम में किया जाता है, वे ज्यादातर स्थितियों में लैंडिंग पृष्ठ होते हैं।

खोज इंजन और एसईओ

वेब खोज और खोज इंजन अनुकूलन (एसईओ) में, यूआरएल विहितीकरण उस वेब सामग्री से संबंधित है जिसमें से अधिक संभावित यूआरएल हैं। ही वेब सामग्री के लिए एकाधिक यूआरएल रखने से खोज इंजनों के लिए समस्याएं पैदा हो सकती हैं - विशेष रूप से यह निर्धारित करने में कि खोज परिणामों में कौन सा यूआरएल दिखाया जाना चाहिए।[3] अधिकांश खोज इंजन संकेत के रूप में कैनोनिकल लिंक तत्व का समर्थन करते हैं कि किस यूआरएल को सही संस्करण माना जाना चाहिए। जैसा कि Google के जॉन म्यूएलर ने संकेत दिया है, किसी पृष्ठ में नोइंडेक्स तत्व जैसे अन्य निर्देश होने से खोज इंजन को कैनोनिकलाइज़ेशन को संभालने के तरीके के बारे में परस्पर विरोधी संकेत मिल सकते हैं। [4] उदाहरण:

ये सभी यूआरएल विकिपीडिया के मुखपृष्ठ की ओर इशारा करते हैं, लेकिन खोज इंजन उनमें से केवल को ही यूआरएल का कैनोनिकल रूप मानेगा।

एक्सएमएल

कैनोनिकल XML दस्तावेज़ परिभाषा के अनुसार XML दस्तावेज़ है जो XML कैनोनिकल रूप में है, जिसे कैनोनिकल XML विनिर्देश द्वारा परिभाषित किया गया है। संक्षेप में, कैनोनिकलाइज़ेशन टैग के भीतर व्हाइटस्पेस को हटा देता है, विशेष वर्ण एन्कोडिंग का उपयोग करता है, नेमस्पेस संदर्भों को सॉर्ट करता है और अनावश्यक लोगों को हटा देता है, XML और DOCTYPE घोषणाओं को हटा देता है, और सापेक्ष यूआरआई को पूर्ण यूआरआई में बदल देता है।

सरल उदाहरण XML के निम्नलिखित दो स्निपेट होंगे:

  1. <node1 x='1' a="1" a="2">Data</node1    > <node2>Data</node2>
  2. <node1 a="2" x="1">Data</node1> <node2>Data</node2>

पहले उदाहरण में पहले नोड के समापन टैग में अतिरिक्त स्थान हैं। दूसरा उदाहरण, जिसे कैनोनिकल किया गया है, इन रिक्त स्थानों को हटा दिया गया है। ध्यान दें कि W3C कैनोनिकलाइज़ेशन के तहत केवल टैग के भीतर के रिक्त स्थान को हटाया जाता है, टैग के बीच के रिक्त स्थान को नहीं।

विहितीकरण परिवर्तनों का पूरा सारांश नीचे सूचीबद्ध है:

  • दस्तावेज़ UTF-8 में एन्कोड किया गया है
  • पार्सिंग से पहले, इनपुट पर लाइन ब्रेक को #xA पर सामान्यीकृत किया जाता है
  • विशेषता मानों को सामान्यीकृत किया जाता है, जैसे कि मान्य प्रोसेसर द्वारा
  • चरित्र और पार्स किए गए इकाई संदर्भ बदल दिए गए हैं
  • सीडीएटीए अनुभागों को उनकी चरित्र सामग्री से बदल दिया गया है
  • XML घोषणा और दस्तावेज़ प्रकार की घोषणा हटा दी गई है
  • खाली तत्वों को स्टार्ट-एंड टैग जोड़े में बदल दिया जाता है
  • दस्तावेज़ तत्व के बाहर और प्रारंभ और अंत टैग के भीतर रिक्त स्थान को सामान्यीकृत किया गया है
  • वर्ण सामग्री में सभी रिक्त स्थान बरकरार रखे गए हैं (लाइन फ़ीड सामान्यीकरण के दौरान हटाए गए वर्णों को छोड़कर)
  • विशेषता मान सीमांकक उद्धरण चिह्नों (दोहरे उद्धरण) पर सेट हैं
  • विशेषता मूल्यों और चरित्र सामग्री में विशेष वर्णों को चरित्र संदर्भों द्वारा प्रतिस्थापित किया जाता है
  • प्रत्येक तत्व से अनावश्यक नामस्थान घोषणाएँ हटा दी जाती हैं
  • प्रत्येक तत्व में डिफ़ॉल्ट विशेषताएँ जोड़ी जाती हैं
  • का फिक्सअप xml:base विशेषताएँ निष्पादित की जाती हैं
  • लेक्सिकोग्राफ़िक क्रम प्रत्येक तत्व के नामस्थान घोषणाओं और विशेषताओं पर लगाया जाता है

कम्प्यूटेशनल भाषाविज्ञान

आकृति विज्ञान (भाषाविज्ञान) और शब्दावली में, लेम्मा (आकृति विज्ञान) शब्दों के समूह का कैनोनिकल रूप है। उदाहरण के लिए, अंग्रेजी भाषा में, रन, रन, रन और रनिंग ही शब्द के रूप हैं, इसलिए हम उनमें से का चयन कर सकते हैं; पूर्व। सभी रूपों का प्रतिनिधित्व करने के लिए चलाएँ। लेक्सिकल डेटाबेस जैसे Unitex इस प्रकार के प्रतिनिधित्व का उपयोग करते हैं।

लेम्मटाइजेशन किसी शब्द को उसके कैनोनिकल रूप में परिवर्तित करने की प्रक्रिया है।

यह भी देखें

संदर्भ

  1. RFC 2279: UTF-8, a transformation format of ISO 10646
  2. "Consolidate Duplicate URLs with Canonicals | Google Search Central".
  3. Cutts, Matt (January 4, 2006). "SEO advice: url canonicalization". Matt Cutts: Gadgets, Google, and SEO. Retrieved 3 September 2013.
  4. "कैनोनिकलाइज़्ड यूआरएल नोइंडेक्स, नोफ़ॉलो है" (in English). Retrieved 2020-04-20.


बाहरी संबंध