NanoID үүсгэгч

NanoID утгуудыг онлайнаар үүсгээрэй: үндсэн тохиргоогоор URL-д аюулгүй 21 тэмдэгт, ойролцоогоор 126 битийн санамсаргүй байдал, өөрчлөх боломжтой урт болон тэмдэгтийн багцтай.

Формат
Үүсгэсэн ID-нууд
Бэлэн. NanoID утгуудыг өөрийн хөтөч дээр үүсгээрэй.

Энэхүү ID хэрхэн бүтдэг вэ

Бүтэц
Үндсэн тохиргоогоор A-Z, a-z, 0-9, доогуур зураас болон зурааснаас бүрдсэн URL-д аюулгүй 21 тэмдэгт.
Энтропи
Үндсэн 64 тэмдэгттэй багц болон 21 тэмдэгтийн урттай үед ойролцоогоор 126 бит байна.
Цаг
Цагийн тэмдэгт байхгүй; хэрэв та өөрөө тэмдэгтийн багцад утга оруулахгүй бол NanoID утгууд нь ямар нэгэн далд утгагүй байна.
Давхцах эрсдэл
Давхцах эрсдэл нь урт болон тэмдэгтийн багцаас хамаарч өөрчлөгдөнө. Үндсэн тохиргоо нь UUID v4-тэй ижил практик аюулгүй байдлын түвшинд байна.
Жишээ
nGbSh0sETR4DyGMZilhYM

Таны ID-нуудыг хөтчийн найдвартай санамсаргүй тоо үүсгэгчээр локал байдлаар үүсгэдэг. BroBroGo руу юу ч илгээгдэхгүй.

Түгээмэл асуултууд

Яагаад NanoID-ийг ашиглах хэрэгтэй вэ?

NanoID нь UUID-ээс богино, анхнаасаа URL-д аюулгүй бөгөөд үндсэн урт болон тэмдэгтийн багцыг хадгалах үед маш өндөр санамсаргүй чанартай байдаг.

Тэмдэгтийн багцыг өөрчилж болох уу?

Тийм ээ. NanoID хуудас нь урт болон тэмдэгтийн багцыг удирдах тохиргоог агуулдаг. Тэмдэгтийн багцыг цөөлөх эсвэл уртыг богиносгох нь давхцах эрсдэлийг нэмэгдүүлнэ.

Nano ID үүсгүүрийн хуудас: тохируулгатай, хүчтэй давтагдашгүй ID үүсгэх арга

Nano ID форматын үндэс ба тохируулгын чадвар

Энэ хуудас нь Nano ID форматыг ашиглан давтагдашгүй, авсаархан, URL-д аюулгүй тодорхойлогч үүсгэдэг. Хэрэглэгч уртыг (2-36 тэмдэгт), зөвшөөрөгдөх тэмдэгтүүдийн багцыг (цагаан толгой), мөн нэг удаад үүсгэх ID-ийн тоог (1-100) зааж өгдөг. Үр дүн нь бүрэн тохируулж болох параметртэй, хүчтэй орчин үеийн ID юм.

Nano ID-ийн анхдагч 21 тэмдэгтийн урт нь энэ хэрэгслийг онцгой болгодог гол шинж юм. UUID нь 36 тэмдэгттэй, ULID нь 26 тэмдэгттэй. Харин Nano ID нь 21 тэмдэгтээрээ тэдгээрийн мөргөлдөөний эсэргүүцэлтэй харьцуулах боломжтой түвшинд хүрдэг. Ингэснээр сансар огторгуй, дамжуулалтын хэмжээг багасгахад чухал ач холбогдолтой. Жишээлбэл, 1 сая ID хадгалах үед UUID-ийн 36 MB-тай харьцуулахад Nano ID-ийн 21 MB хэрэглэнэ. Энэ нь 42%-ийн хэмнэлт юм.

Хуудасны "Юугаараа онцлог вэ" хэсэгт тодорхой дурдсанаар, зөвхөн урт төдийгүй цагаан толгойн үсгийн багцыг бүрэн өөрчлөх боломжтой. Анхдагч тохиргоо нь URL-д аюулгүй тэмдэгтүүдийг агуулдаг: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-. Гэхдээ хэрэглэгч энэ талбарыг засварлаж, зөвхөн тоо, эсвэл зөвхөн том үсэг, эсвэл бүр өөрийн тусгай багцыг оруулж болно. Цагаан толгойд дор хаяж 2 өөр тэмдэгт байх ёстой. Хэрэв зөвхөн нэг тэмдэгт үлдвэл үр дүн арилж, ID-ийн тоо 0 болж, "Бүгдийг хуулах" товч идэвхгүй болно. Энэ нь математикийн хувьд утга учиртай: нэг тэмдэгтийн багцаас ямар ч урттай ID-г үүсгэхэд үргэлж ижил утга гарна.

Уртын гулсагч нь 2-оос 36 хүртэлх хүрээтэй. 2 тэмдэгтийн ID-г 64 тэмдэгтийн багцаар үүсгэхэд 64^2 = 4,096 боломжит хослол гарна. Энэ нь маш бага тул түр зуурын дотоод түлхүүрт л тохиромжтой. Харин 36 тэмдэгтийн ID-г 64 тэмдэгтийн багцаар үүсгэхэд 64^36 хослол гаргах бөгөөд энэ нь орчлон ертөнцийн атомын тооноос ч их юм. Хэрэглэгч өөрийн хэрэгцээнд тохируулан эдгээр хязгаарыг ашиглаж болно. Уртыг өөрчлөх, цагаан толгойг өөрчлөх, тоог өөрчлөх гэсэн гурван үйлдлийн аль нэг нь ID-г шууд шинэчлэн өөрчилдөг.

Гаралт ба хуулах механизм: бүтээмжид чиглэсэн

Гаралт нь үүсгэсэн ID-ийн жагсаалт, тоо, мөн төлөвийн мэдээллийг агуулдаг. Төлөв нь дөрвөн төлөвтэй:

  • Ready (бэлэн) – анхны төлөв
  • Generated (үүсгэсэн) – ID-үүд үүссэний дараа
  • Copied all! (бүгдийг хуулсан) – "Бүгдийг хуулах" товчийг дарсны дараа
  • Alphabet needs at least 2 different characters. (алфабетэд дор хаяж 2 өөр тэмдэгт хэрэгтэй) – алдаа

"Бүгдийг хуулах" товч нь бүх ID-г нэг дор санах ойд хуулдаг. Харин тус бүрээр нь хуулахын тулд хэрэглэгч ID дээр дарж хуулж болно. Энэхүү хоёр үе шаттай хуулах механизм нь олон ID-г нэг дор хуулах, эсвэл тус бүрийг нь тусад нь хуулах гэсэн хоёр өөр хэрэглээнд тохирсон байдаг. Жишээлбэл, 100 ID-г нэг дор хуулах үед "Бүгдийг хуулах" товч илүү тохиромжтой. Харин 5 ID-ийн жагсаалтаас зөвхөн нэгийг нь сонгох үед ID дээр дарах нь илүү хялбар юм.

Төлөвийн мэдээлэл нь хэрэглэгчид бодит цаг хугацаанд юу болж байгааг ойлгоход тусалдаг. "Ready" төлөв нь хэрэгсэл асах үед гарч ирдэг. "Generated" төлөв нь ID-үүд үүссэний дараа гарч ирдэг. "Copied all!" төлөв нь "Бүгдийг хуулах" товчийг дарсны дараа гарч ирдэг.

Collision resistance: томьёоны утга учир

Collision resistance гэдэг нь хоёр ID-ийн ижил байх магадлалыг хэлнэ. Энэ магадлалыг тооцоолохдоо дараах томьёог ашигладаг: P(k) = 1 - exp(-k(k-1)/(2 * N)). Энд k нь үүсгэсэн ID-ийн тоо, N нь бүх боломжит хослолын тоо. N нь цагаан толгойн урт-ын ID-ийн урт зэрэгтээр тооцогддог. Жишээлбэл, 64 тэмдэгтийн багц, 21 тэмдэгтийн урттай үед N = 64^21. Энэ нь ойролцоогоор 1.1 * 10^38 юм. 1 сая ID үүсгэх үед мөргөлдөөний магадлал маш бага буюу 10^-9 орчим байдаг.

Харин 36 тэмдэгтийн урттай үед N = 64^36. Энэ тоо нь орчлон ертөнцийн атомын тооноос ч их юм. Ийм учраас 36 тэмдэгтийн Nano ID нь онолын хувьд бараг мөргөлдөөн үүсгэхгүй гэж үздэг.

Гэхдээ сансар огторгуйг багасгахын тулд уртыг бууруулах нь мөргөлдөөний магадлалыг нэмэгдүүлдэг. Жишээлбэл, 8 тэмдэгтийн урттай ID-г 64 тэмдэгтийн багцаар үүсгэхэд 64^8 = 2.8 * 10^14 хослол гарна. 1 сая ID үүсгэхэд мөргөлдөөний магадлал 10^-6 орчим болно. Энэ нь зарим хэрэглээнд хүлээн зөвшөөрөгдөхүйц байж болох ч, өндөр аюулгүй байдал шаарддаг системд тохиромжгүй юм.

Хэрэглээний бодит жишээнүүд

  1. Богино холбоос: Nano ID-г богино холбоос үүсгэхэд ашиглаж болно. 7-8 тэмдэгтийн урттай ID нь 64 тэмдэгтийн багцаар үүсгэхэд хангалттай хослол гаргадаг. Жишээлбэл, a3bC9xZ гэх мэт.

  2. API түлхүүр: API түлхүүр нь өндөр түвшний аюулгүй байдал шаарддаг. 21 тэмдэгтийн урттай ID нь UUID-тэй төстэй хамгаалалт өгдөг. j7kL8pQr2sT9vWxYzAbCd гэх мэт.

  3. Мэдээллийн сангийн үндсэн түлхүүр: Мэдээллийн санд ID-г урт байлгах нь сансар огторгуйг ихэсгэдэг. 16 тэмдэгтийн урттай Nano ID нь уртын хувьд UUID-ийн тал хувь байдаг. 4fGt8yHb3cWx9ZvE гэх мэт.

  4. Нэг удаагийн токен: Нэг удаагийн токен нь илүү урт байх шаардлагатай байж болно. 32 тэмдэгтийн урттай ID нь маш өндөр аюулгүй байдал өгдөг. mN9bVcXz5qR7tYwK2jFhLpS6gD8aBsE гэх мэт.

  5. QR код: QR код дээр тэмдэгт бүр кодлогддог. Богино ID нь QR кодыг жижиг, уншихад хялбар болгодог. 10 тэмдэгтийн урттай ID тохиромжтой. 2qR5tYwK9j гэх мэт.

Хэрэглэгчийн тусламжтай алдааны горим

Цагаан толгойн талбарт нэг тэмдэгт оруулсан тохиолдолд хэрэгсэл нь үр дүнг арилгаж, ID-ийн тоог 0 болгож, "Бүгдийг хуулах" товчийг идэвхгүй болгодог. Мөн алдааны мессеж гарч ирдэг: "Alphabet needs at least 2 different characters." Энэ алдааны горим нь хэрэглэгчид утга учиргүй үйлдэл хийхээс хамгаалдаг.

Анхдагч цагаан толгойн багц нь 64 тэмдэгттэй: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-. Хэрэв хэрэглэгч үүнийг өөрчлөх юм бол эхний тэмдэгтүүдийг ашиглахгүй байх нь чухал. Жишээлбэл, зөвхөн тоо ашиглахыг хүсвэл 0123456789 гэж оруулах хэрэгтэй. Хэрэв хэрэглэгч 0-9 гэж оруулбал энэ нь 0, -, 9 гэсэн гурван тэмдэгт гэж тайлбарлагдана. Энэ нь тооцоололд алдаа гаргаж болзошгүй.

Нийтлэг асуултууд (FAQ)

Nano ID-ийн анхдагч урт яагаад 21 тэмдэгт байдаг вэ? Nano ID-ийн зохиогчид 21 тэмдэгт нь UUID-тай харьцуулах боломжтой мөргөлдөөний эсэргүүцэлд хүрэх хамгийн богино урт гэж тогтоосон. 21 тэмдэгт нь 64 тэмдэгтийн багцаар 64^21 ≈ 1.1 * 10^38 хослол гаргадаг бөгөөд энэ нь UUID-ийн 2^122 ≈ 5.3 * 10^36 хослолтой төстэй юм. Ийм учраас 21 тэмдэгт нь стандарт болсон.

Хэрэв би цагаан толгойн багцыг өөрчилвөл мөргөлдөөний магадлал хэрхэн нөлөөлдөг вэ? Цагаан толгойн багцыг багасгах нь мөргөлдөөний магадлалыг нэмэгдүүлдэг. Жишээлбэл, 64 тэмдэгтийн багцад 21 тэмдэгтийн ID нь 64^21 хослолтой. Харин зөвхөн 20 тэмдэгтийн багцад 21 тэмдэгтийн ID нь 20^21 хослолтой бөгөөд энэ нь 64^21-ээс хамаагүй бага юм. Ийм учраас цагаан толгойн багцыг багасгах үед ID-ийн уртыг нэмэгдүүлэх нь зүйтэй.

Нэг удаад хэдэн ID үүсгэж болох вэ? Нэг удаад 1-ээс 100 хүртэлх ID үүсгэж болно. Энэ хязгаар нь хэрэглэгчид олон ID-г нэг дор үүсгэх боломжийг олгодог. 100 ID нь олон хэрэглээнд хангалттай юм. Хэрэв илүү олон ID хэрэгтэй бол хэд хэдэн удаа үүсгэж болно.

Nano ID-г ямар програмчлалын хэл дээр ашиглаж болох вэ? Nano ID нь JavaScript, Python, Go, Rust, Java, C#, Swift, Kotlin гэх мэт олон програмчлалын хэлэнд зориулсан сангуудтай. Энд үүсгэсэн ID-г текст хэлбэрээр хуулж, ямар ч хэл дээр ашиглаж болно.

Хэрэв би ID-г хуулахад ямар нэгэн алдаа гарвал яах вэ? Хуулах үйлдэл нь хөтөчийн API-г ашигладаг. Хэрэв хуулах үйлдэл амжилтгүй болвол төлөвийн мэдээлэл "Copied all!" биш хэвээр үлдэнэ. Энэ тохиолдолд хэрэглэгч гар аргаар хуулахыг оролдож болно.