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

From Vigyanwiki
(Created page with "{{Short description|Process for converting data into a "standard", "normal", or canonical form}} {{Use American English|date=March 2021}} {{Use dmy dates|date=March 2021}} {{D...")
 
No edit summary
 
(8 intermediate revisions by 4 users not shown)
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}}
{{Use American English|date=March 2021}}
{{Use dmy dates|date=March 2021}}
{{Distinguish|Canonical link element|Canonization}}


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


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


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


===[[यूआरएल]]===
===[[यूआरएल]]===


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


==== Google द्वारा उपयोग ====
==== गूगल द्वारा उपयोग ====


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


कैनोनिकल डुप्लिकेट से भिन्न डोमेन में हो सकता है।<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 32: Line 29:
==== इंटरनेट ====
==== इंटरनेट ====


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


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


==== [[इंट्रानेट]] ====
==== इंट्रानेट ====


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


==== विविध ====
==== विविध ====


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


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


===खोज इंजन और एसईओ===
===खोज इंजन और एसईओ===
वेब खोज और खोज इंजन अनुकूलन (एसईओ) में, [[यूआरएल विहितीकरण]] उस वेब सामग्री से संबंधित है जिसमें एक से अधिक संभावित यूआरएल हैं। एक ही वेब सामग्री के लिए एकाधिक यूआरएल रखने से खोज इंजनों के लिए समस्याएं पैदा हो सकती हैं - विशेष रूप से यह निर्धारित करने में कि खोज परिणामों में कौन सा यूआरएल दिखाया जाना चाहिए।<ref name=cutts>{{cite web|last=Cutts|first=Matt|title=SEO advice: url canonicalization|url=http://www.mattcutts.com//blog/seo-advice-url-canonicalization/|work=Matt Cutts: Gadgets, Google, and SEO|accessdate=3 September 2013|date=January 4, 2006}}</ref> अधिकांश खोज इंजन एक संकेत के रूप में कैनोनिकल लिंक तत्व का समर्थन करते हैं कि किस यूआरएल को सही संस्करण माना जाना चाहिए। जैसा कि Google के जॉन म्यूएलर ने संकेत दिया है, किसी पृष्ठ में [[नोइंडेक्स]] तत्व जैसे अन्य निर्देश होने से खोज इंजन को कैनोनिकलाइज़ेशन को संभालने के तरीके के बारे में परस्पर विरोधी संकेत मिल सकते हैं। <ref>{{Cite web|url=http://www.thegooglecache.com/canonicalized-url-is-noindex-nofollow.html|title=कैनोनिकलाइज़्ड यूआरएल नोइंडेक्स, नोफ़ॉलो है|language=en-US|access-date=2020-04-20}}</ref>
वेब खोज और खोज इंजन अनुकूलन (एसईओ) में, [[यूआरएल विहितीकरण]] उस वेब सामग्री से संबंधित है जिसमें से अधिक संभावित यूआरएल हैं। ही वेब सामग्री के लिए एकाधिक यूआरएल रखने से खोज इंजनों के लिए समस्याएं उत्पन्न हो सकती हैं - विशेष रूप से यह निर्धारित करने में कि खोज परिणामों में कौन सा यूआरएल दिखाया जाना चाहिए।<ref name=cutts>{{cite web|last=Cutts|first=Matt|title=SEO advice: url canonicalization|url=http://www.mattcutts.com//blog/seo-advice-url-canonicalization/|work=Matt Cutts: Gadgets, Google, and SEO|accessdate=3 September 2013|date=January 4, 2006}}</ref> अधिकांश खोज इंजन संकेत के रूप में कैनोनिकल लिंक तत्व का समर्थन करते हैं कि किस यूआरएल को सही संस्करण माना जाना चाहिए। जैसा कि गूगल के जॉन म्यूएलर ने संकेत दिया है, किसी पृष्ठ में [[नोइंडेक्स]] तत्व जैसे अन्य निर्देश होने से खोज इंजन को कैनोनिकलाइज़ेशन को संभालने के विधि के बारे में परस्पर विरोधी संकेत मिल सकते हैं। <ref>{{Cite web|url=http://www.thegooglecache.com/canonicalized-url-is-noindex-nofollow.html|title=कैनोनिकलाइज़्ड यूआरएल नोइंडेक्स, नोफ़ॉलो है|language=en-US|access-date=2020-04-20}}</ref>
 
उदाहरण:
उदाहरण:
* <code>http://wikipedia.com{{cbignore}}</code>
* <code>http://wikipedia.com{{cbignore}}</code>
Line 53: Line 51:
* <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>
ये सभी यूआरएल विकिपीडिया के मुखपृष्ठ की ओर इशारा करते हैं, लेकिन एक खोज इंजन उनमें से केवल एक को ही यूआरएल का विहित रूप मानेगा।
ये सभी यूआरएल विकिपीडिया के मुखपृष्ठ की ओर इशारा करते हैं, किन्तु खोज इंजन उनमें से केवल को ही यूआरएल का कैनोनिकल रूप मानेगा।


===एक्सएमएल===
===एक्सएमएल===
एक कैनोनिकल XML दस्तावेज़ परिभाषा के अनुसार एक XML दस्तावेज़ है जो XML कैनोनिकल रूप में है, जिसे [http://www.w3.org/TR/xml-c14n11 कैनोनिकल XML विनिर्देश] द्वारा परिभाषित किया गया है। संक्षेप में, कैनोनिकलाइज़ेशन टैग के भीतर व्हाइटस्पेस को हटा देता है, विशेष वर्ण एन्कोडिंग का उपयोग करता है, नेमस्पेस संदर्भों को सॉर्ट करता है और अनावश्यक लोगों को हटा देता है, XML और DOCTYPE घोषणाओं को हटा देता है, और सापेक्ष यूआरआई को पूर्ण यूआरआई में बदल देता है।
कैनोनिकल एक्सएमएल दस्तावेज़ परिभाषा के अनुसार एक्सएमएल दस्तावेज़ है जो एक्सएमएल कैनोनिकल रूप में है, जिसे [http://www.w3.org/TR/xml-c14n11 कैनोनिकल एक्सएमएल विनिर्देश] द्वारा परिभाषित किया गया है। संक्षेप में, कैनोनिकलाइज़ेशन टैग के अन्दर व्हाइटस्पेस को हटा देता है, विशेष वर्ण एन्कोडिंग का उपयोग करता है, नेमस्पेस संदर्भों को सॉर्ट करता है और अनावश्यक लोगों को हटा देता है, एक्सएमएल और डॉकटाइप घोषणाओं को हटा देता है, और सापेक्ष यूआरआई को पूर्ण यूआरआई में बदल देता है।


एक सरल उदाहरण XML के निम्नलिखित दो स्निपेट होंगे:
सरल उदाहरण एक्सएमएल के निम्नलिखित दो स्निपेट होंगे:
# <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 कैनोनिकलाइज़ेशन के तहत केवल टैग के अन्दर के रिक्त स्थान को हटाया जाता है, टैग के बीच के रिक्त स्थान को नहीं हटाया जाता है।


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


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


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


== यह भी देखें ==
== यह भी देखें ==
* कानूनी फॉर्म
* कैनोनिकल फॉर्म
* [[ ग्राफ विमुद्रीकरण ]]
* [[ ग्राफ विमुद्रीकरण ]]
* लेम्मटाइजेशन
* लेम्मटाइजेशन
Line 99: Line 97:
* [http://www.w3.org/TR/xml-c14n.html Canonical XML Version 1.0, W3C Recommendation]
* [http://www.w3.org/TR/xml-c14n.html Canonical XML Version 1.0, W3C Recommendation]
* [http://www.owasp.org/index.php/Canonicalization,_locale_and_Unicode OWASP Security Reference for Canonicalization]
* [http://www.owasp.org/index.php/Canonicalization,_locale_and_Unicode OWASP Security Reference for Canonicalization]
[[Category: कंप्यूटिंग शब्दावली]]


[[Category: Machine Translated Page]]
[[Category:CS1 English-language sources (en)]]
[[Category:Created On 26/07/2023]]
[[Category:Created On 26/07/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:कंप्यूटिंग शब्दावली]]

Latest revision as of 11:32, 12 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, कुछ स्थितियों में कैनोनिकलाइज़ेशन की अतिरिक्त आवश्यकता का कारण बन सकती है। अर्थात्, मानक के अनुसार, यूटीएफ-8 में किसी भी यूनिकोड वर्ण के लिए केवल एक वैध बाइट अनुक्रम है,[1] किन्तु कुछ बाइट अनुक्रम अमान्य हैं यानी यूनिकोड वर्णों की किसी भी स्ट्रिंग को यूटीएफ-8 में एन्कोड करके प्राप्त नहीं किया जा सकता है। कुछ ख़राब डिकोडर कार्यान्वयन अमान्य बाइट अनुक्रमों को इनपुट के रूप में स्वीकार कर सकते हैं और ऐसे अनुक्रम के लिए आउटपुट के रूप में वैध यूनिकोड वर्ण उत्पन्न कर सकते हैं। यदि कोई ऐसे डिकोडर का उपयोग करता है, तो कुछ यूनिकोड वर्णों में प्रभावी रूप से से अधिक संगत बाइट अनुक्रम होते हैं: वैध और कुछ अमान्य। इससे पिछले अनुभाग में वर्णित जैसी सुरक्षा समस्याएं उत्पन्न हो सकती हैं। इसलिए, यदि कोई यूटीएफ-8 स्ट्रिंग्स पर कुछ फ़िल्टर (उदाहरण के लिए यूटीएफ-8 में लिखा गया रेगुलर एक्सप्रेशन) लागू करना चाहता है, जिसे बाद में डिकोडर को पास कर दिया जाएगा जो अमान्य बाइट अनुक्रमों की अनुमति देता है, तो उसे फ़िल्टर में पास करने से पहले स्ट्रिंग्स को कैनोनिकलाइज़ करना चाहिए। इस संदर्भ में, कैनोनिकलाइज़ेशन प्रत्येक स्ट्रिंग वर्ण को उसके एकल वैध बाइट अनुक्रम में अनुवाद करने की प्रक्रिया है। कैनोनिकलाइज़ेशन का विकल्प अमान्य बाइट अनुक्रम वाले किसी भी स्ट्रिंग को अस्वीकार करना है।

यूआरएल

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

गूगल द्वारा उपयोग

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

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


इंटरनेट

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

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

इंट्रानेट

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

विविध

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

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

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

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

उदाहरण:

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

एक्सएमएल

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

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

  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 कैनोनिकलाइज़ेशन के तहत केवल टैग के अन्दर के रिक्त स्थान को हटाया जाता है, टैग के बीच के रिक्त स्थान को नहीं हटाया जाता है।

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

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

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

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

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

यह भी देखें

संदर्भ

  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.


बाहरी संबंध