Sqids एक छोटी सी ओपन-सोर्स पुस्तकालय है जो संख्याओं से छोटे, अनन्य, यादृच्छिक दिखने वाले आईडी प्रस्तुत कर सकता है।
इसके बारे में सोचने का सबसे अच्छा तरीका यह है कि इसे एक दशमलव से हेक्साडेसिमल कनवर्टर की तरह समझें, लेकिन कुछ अतिरिक्त सुविधाओं के साथ।
लिंक संक्षेपण, लॉगिंग के लिए अनन्य घटना आईडी उत्पन्न करना, वेबसाइट पर उत्पाद/वस्तुओं के लिए आईडी उत्पन्न करना (जैसा कि YouTube वीडियो के लिए करता है), मैसेज या ईमेल में पुष्टिकरण कोड के लिए छोटी आईडी उत्पन्न करना।
कोई भी सांख्यिक डेटा जो संवेदनशील नहीं है। उत्पन्न किए गए आईडी हैश नहीं हैं और उन्हें संख्याओं में वापस डिकोड किया जा सकता है। उदाहरण के लिए, ये उपयोगकर्ता आईडी के लिए अच्छा विकल्प नहीं हो सकते, क्योंकि एक बार डिकोड किया जाने पर ये आपके ऐप के उपयोगकर्ता गणना को प्रकट कर सकते हैं।
हाँ, Sqids एक से अधिक गैर-नकारात्मक संख्याओं को एक ही आईडी में एन्कोड कर सकता है। आपको कितनी संख्याओं को एन्कोड कर सकते हैं कोई सीमा नहीं है, लेकिन आपको कितनी बड़ी संख्या को एन्कोड कर सकते हैं, उसमें सीमा हो सकती है (कार्यान्वयन भाषा पर निर्भर करता है)।
इसके कई कारण हैं: आप एक UNIX टाइमस्टैम्प को एन्कोड कर सकते हैं और समाप्त होने वाली आईडी बना सकते हैं, या आप एक डेटाबेस शार्ड नंबर को प्राथमिक कुंजी के साथ एन्कोड कर सकते हैं और अतिरिक्त डेटाबेस क्वेरी पर बचा सकते हैं।
हाँ, उत्पन्न किए गए आईडी इनपुट और वर्णमाला के लिए अनन्य होते हैं।
ध्यान रखें कि डिफ़ॉल्ट वर्णमाला में छोटे और बड़े अक्षर दोनों होते हैं, इसलिए डिफ़ॉल्ट आईडीस अक्षर-संवेदनशील होते हैं।
Sqids नकारात्मक संख्याओं को एन्कोड नहीं कर सकता है।
न्यूनतम वर्णमाला लंबाई 3 अक्षर है।
वर्णमाला में कोई भी मल्टीबाइट अक्षर नहीं हो सकता है।
Sqids एक निश्चित लंबाई तक आईडी नहीं उत्पन्न कर सकता, केवल कम से कम एक निश्चित लंबाई पर। न्यूनतम लंबाई पैरामीटर श्रेणी 0 से 255 के बीच है।
Sqids वर्णमाला लंबाई में, एक कम, पुनर्जन्म करने का प्रयास कर सकता है।
पुस्तकालय एक कस्टम वर्णमाला स्वीकार करता है, जिससे वह आईडी उत्पन्न कर सकता है। सिर्फ डिफ़ॉल्ट वर्णमाला को पूर्व-शफलित करें जो प्रदान की जाती है।
कृपया ध्यान दें कि पर्याप्त प्रयास के साथ, कोई भी आपकी छानी हुई वर्णमाला को पुनः इंजीनियर कर सकता है, इसलिए यह संवेदनशील डेटा छिपाने का कोई तकनीक नहीं है।
डिफ़ॉल्ट वर्णमाला यहाँ पाई जा सकती है यहाँ ।
आप किसी भी ऑनलाइन स्ट्रिंग छानने उपकरण या हमारे प्लेग्राउंड का उपयोग कर सकते हैं।
आपके उपयोग मामले पर निर्भर करता है। एक छोटी वर्णमाला लंबी आईडी उत्पन्न करेगी, और एक लंबी वर्णमाला छोटी आईडी उत्पन्न करेगी। आप प्लेग्राउंड का उपयोग करके यह जांच सकते हैं कि आपकी आईडी किस रूप में दिख सकती है।
हाँ, ध्यान दें कि उत्पन्न किए गए आईडी फिर भी स्ट्रिंग्स हैं और वे शुरू हो सकते हैं एक शून्य के साथ।
नहीं। Sqids वर्णमाला के लिए बहुबाइट वर्णों का समर्थन नहीं करता। इसमें इमोजियों को समेत कई अन्य वर्ण शामिल हैं।
लाइब्रेरी आईडी को जंक वर्णों के साथ विस्तारित कर सकती है ताकि वे लंबे लगें। यह उपयोगी है ताकि यह स्पष्ट न लगे कि आप 1 जैसी छोटी संख्या को या 1000000 जैसी बड़ी संख्या को कोड कर रहे हैं।
डिकोडिंग पर प्रभाव नहीं पड़ता।
हाँ, लाइब्रेरी एक न्यूनतम लंबाई पैरामीटर को स्वीकार कर सकती है जो गारंटी करता है कि आईडी कम से कम उस लंबाई का होगा।
कृपया ध्यान दें कि आपकी आईडी कितनी लंबी होगी, इस पर कोई गारंटी नहीं है — बस यह है कि आपकी द्वारा निर्धारित लंबाई से छोटी नहीं होगी।
एक सीमा तक।
मैक्सिमम लंबाई निर्धारित करना असंभव है क्योंकि धीरे-धीरे आपकी आईडीज बड़े पर्याप्त इनपुट देने पर overflow हो जाएंगी। इसलिए केवल न्यूनतम लंबाई पैरामीटर का समर्थन किया जाता है, और सटीक लंबाई या अधिकतम लंबाई का समर्थन नहीं है।
ब्लॉकलिस्ट विशेष शब्दों को आपकी आईडी में न आने दे सकती है। यह उपयोगी है क्योंकि उत्पन्न हुई आईडीज URL जैसी सार्वजनिक जगहों पर दिखाई जाती हैं।
Sqids डिफ़ॉल्ट ब्लॉकलिस्ट (डिफ़ॉल्ट ब्लॉकलिस्ट ) के साथ आता है जिसमें कई भाषाओं के सबसे मूल अश्लील और अनुचित शब्द शामिल हैं। आप तो बेशक इस ब्लॉकलिस्ट को अपनी शब्दावली से विस्तारित कर सकते हैं।
ब्लॉकलिस्ट शब्द मैचिंग केस-इंसेंसिटिव होती है।
3 वर्णों से कम लंबाई के छोटे शब्द ब्लॉक नहीं होंगे। 3 वर्णों लंबे शब्दों को आईडी से सही मेल खाना होगा। 4 वर्ण या उससे लंबे शब्द आईडी के सबस्ट्रिंग हों तो मैच को ट्रिगर करेंगे।
अगर ब्लॉकलिस्ट शब्दों में अंक हैं (लीटस्पीक), तो वे केवल तब मैच को ट्रिगर करेंगे जब वे आईडी के शुरुआत या अंत में हों।
डिफ़ॉल्ट ब्लॉकलिस्ट में कई भाषाओं के सबसे सामान्य अश्लील और अनुचित शब्द शामिल हैं। आप पूरी सूची यहाँ मिल सकती है।
जब जेनरेट किया गया आईडी ब्लॉकलिस्ट में शब्द के साथ मेल खाता है, तो लाइब्रेरी उसे पुनर्जन्मित करने का प्रयास करती है।
अगर हर प्रयास आईडी को पुनर्जन्मित करने में विफल रहता है, तो एन्कोड फ़ंक्शन विफल हो जाएगा और एक त्रुटि लौटाएगा। उस त्रुटि का संबोधन उपयोगकर्ता के ऊपर होगा।
पुनर्जन्मित करने के प्रयासों की संख्या को कम करने का सबसे अच्छा तरीका एक लंबी वर्णमाला होना है, न कि न्यूनतम लंबाई सेट करना, और एक छोटी ब्लॉकलिस्ट प्रदान करना। खाली ब्लॉकलिस्ट प्रदान करने से यह सुविधा पूरी तरह से अक्षम हो जाएगी।
आईडीज डिकोड करने पर आमतौर पर कोई न कोई संख्यात्मक उत्पादन होता है, लेकिन यह जरूरी नहीं है कि आईडी कैननिकल हो। उसे जाँचने के लिए, आप डिकोड की गई संख्याओं को पुनः एनकोड कर सकते हैं और देख सकते हैं कि आईडी मैच करती है या नहीं।
इसे स्वचालित रूप से नहीं किया जाता है क्योंकि अगर भविष्य में डिफ़ॉल्ट ब्लॉकलिस्ट में परिवर्तन होता है, तो हमें पिछले में उत्पन्न किए गए आईडी को स्वचालित रूप से अमान्य नहीं करना चाहिए जो अब नए ब्लॉकलिस्ट शब्द से मेल खा रहा हो सकता है।
हम CHANGELOG को अपडेट करने के लिए निश्चित रहेंगे जब और अगर डिफ़ॉल्ट ब्लॉकलिस्ट में परिवर्तन होता है।
आपको वहाँ संविधानिक ब्लॉकलिस्ट में एक नया शब्द प्रस्तुत हो सकता है वाले परिदृश्यों के लिए हिसाब रखना होगा। इस मामले में, नंबर्स को पुनः एनकोड करने से एक अलग ID उत्पन्न हो सकता है।
आपके आईडीज़ को भविष्य के अपडेट्स के दौरान संघननात्मक बनाने का सबसे अच्छा तरीका है, वर्तमान डिफ़ॉल्ट ब्लॉकलिस्ट के समान हो या न हो, एक कस्टम ब्लॉकलिस्ट प्रदान करना।
नहीं, अलग-अलग नंबर्स को एनकोड करने से अद्वितीय आईडीज़ उत्पन्न होंगे।
हालांकि, एल्गोरिदम के डिजाइन के कारण, कभी-कभी यादृच्छिक आईडीज़ को डिकोड करने से वही संख्याएँ उत्पन्न हो सकती हैं। आईडी कैननिकल है या नहीं, यह जाँचने का सबसे अच्छा तरीका सिर्फ डिकोड की गई संख्याओं को पुनः एनकोड करके और देखने में है कि आईडी मेल खाती है।
Hashids इस पुस्तकालय का पहला संस्करण था जो लगभग 2013 में आया था। यह भी छोटी आईडीज़ उत्पन्न करता था लेकिन थोड़ा अलग तरीके से प्रयोग करता था।
Hashids कुछ बातें अलग तरीके से संभालता था।
इसने कस्टम ब्लॉकलिस्ट का समर्थन नहीं किया था, बल्कि इसने सबसे सामान्य अंग्रेजी अश्लील शब्दों पर निर्भर किया। इसने अल्फाबेट को शफ़ल करने के लिए salt पैरामीटर का भी इस्तेमाल किया जिससे यह थोड़ा भ्रांतिकरक बन गया क्योंकि पुस्तकालय का इनक्रिप्शन से कोई संबंध नहीं था। इसके अतिरिक्त, यह बहुत सारे आरक्षित वर्णों का इस्तेमाल करता था जिससे लंबी आईडीज़ उत्पन्न होती थीं।
इसलिए, हमने अपग्रेड करने और पुनर्ब्रांड करने का निर्णय लिया है। एल्गोरिदम को सरलीकृत किया गया है, कुछ फ़ीचर्स जोड़े गए हैं और कोड रिपॉजिटरी सभी एक ही छत के नीचे हैं।
salt पैरामीटर का उपयोग अल्फाबेट को शफ़ल करने के लिए किया गया था, और यह कभी भी सुरक्षा या सुरक्षा से जुड़ा होने का उद्देश्य नहीं था। दोनों Hashids और Sqids दशमलव से हेक्साडेसिमल परिवर्तन के तरीके के साथ काम करते हैं लेकिन कुछ समायोजन हैं। किसी भी प्रकार का इनक्रिप्शन नहीं होता, इसलिए भ्रांति से बचने के लिए, वह पैरामीटर पूरी तरह हटा दिया गया है।
नहीं, Sqids Hashids के कार्यक्षमता को विस्तारित करता है और विभिन्न डिज़ाइन लक्ष्यों और आवश्यकताओं को रखता है; इसलिए, उत्पन्न आईडीज़ Hashids के साथ संगत नहीं हैं।
क्योंकि Hashids और Sqids के बीच कोई संगतता नहीं है, इसलिए Hashids को बस Sqids से आसानी से बदलना संभव नहीं है।
हालांकि, आप दोनों को मर्ज कर सकते हैं और अंतर को अलग कर सकते हैं कि कौनसी आईडी किस पुस्तकालय का है।
इसके लिए एक तरीका आईडी लंबाई द्वारा है - अगर आप Sqids में स्विच कर रहे हैं, तो आप एक अधिक न्यूनतम लंबाई प्रदान कर सकते हैं। दूसरा तरीका नवीनतम उत्पन्न आईडीज़ को मैन्युअल रूप से एक कस्टम वर्ण लगाना/प्रीपेंड करना है।
अंत में, आप Hashids के साथ किसी भी आईडी को डिकोड करने का प्रयास कर सकते हैं ताकि देख सकें कि यह मान्य है या नहीं। अगर नहीं - डिकोड करें और Sqids के साथ पुनः एनकोड करें ताकि देख सकें कि काम करता है या नहीं।
इस वेबसाइट पर प्रत्येक भाषा के अनुसारीक्षण अस्तित्व में है, वहाँ आप मूल Hashids रिपॉजिटरी के लिंक पा सकते हैं।
अगर आप परियोजना का समर्थन करना चाहते हैं, तो हमें अपने Github रिपॉजिटरीज़ पर स्टार करना अत्यधिक सूचना माध्यम के लिए प्रस्तुति करेगा।
अगर आप डेवलपर हैं और किसी विशेष भाषा के लिए Sqids का कोई अनुसारीक्षण नहीं देखते हैं, तो कृपया हमें पुस्तकालय में परिवर्तन करने में हमारी सहायता करें। इसी तरह, जो प्रोग्रामिंग भाषा सूचीबद्ध नहीं है, उसके लिए भी लागू होता है।
अगर आप स्पेक में या किसी भी अनुसारीक्षण में कोई बग देखते हैं, तो कृपया उचित रिपॉजिटरी में सुझावित सुधार के साथ एक मुद्दा या पुल रिक्वेस्ट बनाएं।
यदि आप कई भाषाओं में बोलते हैं, तो यदि आप किसी भी समस्या को देखते हैं, ब्लॉकलिस्ट को संशोधित करने और वेबसाइट अनुवादों को समायोजित करने में हमारी मदद कर सकते हैं।
अंत में, यदि आपके पास Hashids/Sqids के साथ कुछ अनुभव है, तो कृपया हमारी समुदाय का मार्गदर्शन करें और किसी भी प्रश्न का उत्तर देकर मदद करें।
यदि आप Sqids को निम्नलिखित भाषाओं में (या एक नई जो यहाँ नहीं दी गई हो) लाना चाहते हैं:
D , Io , Raku , Smalltalk , T-SQL , Tcl , VBA
आधिकारिक रिपॉजिटरी को अपने खुद के Github खाते में फोर्क करें और विनिर्दिष्ट साथ सभी टेस्ट्स को लागू करें। आप किसी भी मौजूदा README का पुनः उपयोग कर सकते हैं (उदाहरण )।
एक बार पुस्तकालय तैयार हो जाए, एक पुल रिक्वेस्ट बनाएं। एक बार मर्ज किया जाए, हम वेबसाइट को अपडेट करेंगे।
अगर रिपॉजिटरी में कोई सक्रिय रखरखाव नहीं है, तो हमें खुशी होगी आपको रिपॉजिटरी का प्रबंधन करने और आधिकारिक रखरखाव करने के लिए आमंत्रित करने में।