Trình tạo ULID – ULID generator

Trang chủ / Công cụ / Tiện ích / Trình tạo ULID – ULID generator
★ 4.8/5 | 156 đánh giá
▼
Đánh giá công cụ:
★ ★ ★ ★ ★
Trình tạo ULID – ULID generator

Trình tạo ULID (ULID Generator) là công cụ chuyên dụng giúp lập trình viên khởi tạo nhanh các mã định danh duy nhất có khả năng sắp xếp theo thứ tự thời gian. Với cấu trúc 26 ký tự an toàn và thuật toán sinh ngẫu nhiên mạnh mẽ, hệ thống cung cấp giải pháp tạo khóa chính (Primary Key) tối ưu cho cơ sở dữ liệu phân tán, đảm bảo hiệu suất truy vấn cao và loại bỏ hoàn toàn rủi ro trùng lặp.

⏱️ Trình Tạo ULID (ULID Generator)

Tạo mã định danh duy nhất (Universally Unique Lexicographically Sortable Identifier). Có thể sắp xếp theo thời gian, 26 ký tự (Crockford's Base32).

⚙️ Tùy chỉnh số lượng


💡 Đặc điểm của ULID:

  • Tương thích 128-bit với UUID.
  • 1.21e+24 ULID duy nhất mỗi mili-giây.
  • Sắp xếp được theo thời gian (Lexicographically sortable).
  • Sử dụng Crockford's Base32 (loại bỏ I, L, O, U để tránh nhầm lẫn).
  • An toàn với URL, không cần mã hóa.

🚀 Danh sách ULID

Hướng dẫn nhanh ⏱ Thời gian: 30 giây

Hướng dẫn sử dụng Trình tạo ULID - ULID generator

Thực hiện theo 3 bước dưới đây để chọn số lượng, tạo danh sách ULID và sao chép các mã để sử dụng.

Bước1

Nhập số lượng ULID cần tạo

Nhập số từ 1 đến 1000 vào ô “Số lượng ULID cần tạo:” hoặc kéo thanh trượt bên dưới để chọn từ 1 đến 100 mã.

💡 Mẹo: Công cụ tự tạo sẵn 5 mã khi mở trang và cập nhật danh sách ngay khi bạn thay đổi số lượng.
Bước2

Xem danh sách và tạo lại

Xem kết quả trong “Danh sách ULID”, mỗi mã gồm 26 ký tự và nằm trên một dòng. Nhấn “Tạo Lại” nếu muốn tạo danh sách mới với số lượng đã chọn.

Bước3

Sao chép toàn bộ mã ULID

Nhấn “Sao Chép Tất Cả” để sao chép toàn bộ danh sách. Khi nút hiện “Đã Copy Hết!”, bạn có thể dán các mã vào nơi cần sử dụng.

Nội Dung

Trình tạo ULID là gì?

Trình tạo ULID là công cụ tạo mã định danh bằng cách kết hợp thời gian hiện tại với dữ liệu ngẫu nhiên. ULID viết đầy đủ là Universally Unique Lexicographically Sortable Identifier, một dạng định danh được thiết kế để có không gian giá trị lớn và hỗ trợ sắp xếp theo thời gian thông qua cách so sánh chuỗi. Đây là kiến thức nền về ULID; khả năng cụ thể của công cụ cần được phân biệt với những đặc điểm chung của định dạng.

Trong phần triển khai được cung cấp, mỗi mã đầu ra là một chuỗi 26 ký tự gồm chữ số và chữ cái viết hoa, không có dấu gạch nối. Công cụ tạo được một danh sách nhiều mã, trình bày mỗi mã trên một dòng và cho phép sao chép toàn bộ danh sách. Nhu cầu mà nó giải quyết là lấy nhanh các định danh để gán cho bản ghi, tài nguyên hoặc dữ liệu mẫu, thay vì tự nghĩ ra từng mã.

ULID không phải phép mã hóa nội dung, chữ ký số hay mật khẩu. Công cụ không nhận một thông điệp để biến thành dữ liệu bí mật và cũng không xác minh danh tính người tạo mã. Thành phần ngẫu nhiên phục vụ việc giảm khả năng trùng định danh, không tự biến mã thành thông tin xác thực.

Từ “duy nhất” trong tên ULID thể hiện mục tiêu thiết kế, không phải cam kết tuyệt đối cho từng kết quả. Công cụ không kiểm tra mã vừa tạo với danh sách trước đó hoặc với dữ liệu trong hệ thống của bạn. Vì vậy, yêu cầu không trùng trong ứng dụng quan trọng vẫn cần được bảo vệ tại nơi lưu trữ.

ULID là mã định danh 26 ký tự viết theo Crockford Base32, có thể sắp xếp theo thời gian tạo để các bản ghi dữ liệu tăng dần theo thứ tự thời gian
ULID (Universally Unique Lexicographically Sortable Identifier) là chuỗi 26 ký tự được thiết kế để sắp xếp theo thời gian bằng cách so sánh chuỗi.

Đầu vào và kết quả của trình tạo ULID

Số lượng cần tạo và phạm vi lựa chọn

Đầu vào do người dùng lựa chọn là số lượng mã mỗi lượt. Giá trị mặc định là 5; khi giao diện được khởi tạo, logic tạo danh sách tự thực hiện với giá trị này. Thanh trượt cho phép chọn từ 1 đến 100, còn ô nhập số cho phép yêu cầu số lượng lớn hơn, với mức tối đa được xử lý là 1000 mã mỗi lượt.

Hai cách nhập có phạm vi khác nhau nhưng cùng điều khiển việc tạo danh sách. Khi ô nhập chứa một số lớn hơn 100, thanh trượt được đặt ở mức 100; điều đó không có nghĩa số lượng tạo bị giảm xuống 100. Số lượng hiệu lực vẫn được tính từ ô nhập, sau khi áp dụng quy tắc xử lý số nguyên và giới hạn.

Người dùng không cung cấp nội dung để mã hóa. Hai dữ liệu còn lại được lấy tự động: thời gian hiện tại từ đồng hồ thiết bị và dữ liệu ngẫu nhiên từ API mật mã của trình duyệt. Giao diện được cung cấp không có trường nhập thời gian, seed, tiền tố hoặc hậu tố riêng.

Cách đọc danh sách kết quả

Kết quả là văn bản gồm một mã trên mỗi dòng, mỗi mã dài 26 ký tự. Số dòng phản ánh số lượng thực sự được dùng khi tạo, không nhất thiết trùng với con số còn hiển thị trong ô nhập. Điều này đáng lưu ý khi nhập giá trị ngoài phạm vi hoặc một giá trị phải được chuyển thành số nguyên.

Thay đổi số lượng hoặc yêu cầu tạo lại đều tạo một danh sách mới và thay thế toàn bộ danh sách trước, không nối thêm vào cuối. Nếu cần giữ kết quả cũ, bạn nên lưu phần văn bản đó trước khi thay đổi lựa chọn.

Thao tác sao chép lấy toàn bộ nội dung đang hiển thị, bao gồm dấu xuống dòng giữa các mã. Vùng kết quả là vùng chỉ đọc; công cụ không cung cấp chỉnh sửa từng mã trong vùng này. Không có chức năng xuất tệp, JSON hay CSV trong giao diện được cung cấp.

Giao diện trình tạo ULID với thanh trượt chọn số lượng từ 1 đến 100, ô nhập tối đa 1000 mã mỗi lượt, mặc định 5 mã và danh sách kết quả kèm nút sao chép từng mã
Thanh trượt chọn 1-100 mã, ô nhập số xử lý tối đa 1000 mã mỗi lượt; mặc định trình tạo tạo sẵn 5 mã.

ULID được tạo từ thời gian và dữ liệu ngẫu nhiên như thế nào?

Cấu trúc 10 ký tự thời gian và 16 ký tự ngẫu nhiên

Công thức cấu trúc của kết quả là ULID = 10 ký tự thời gian + 16 ký tự ngẫu nhiên. Với mỗi mã, thời gian được lấy theo đơn vị mili giây kể từ mốc Unix. Giá trị đó được chuyển sang cơ số 32 bằng cách liên tiếp lấy số dư khi chia cho 32, rồi tiếp tục với phần nguyên của thương. Các ký tự được đặt từ phải sang trái để tạo phần đầu có độ dài cố định 10 ký tự, với số 0 ở phía trước khi cần.

Phần sau sử dụng 16 byte lấy qua API mật mã của trình duyệt. Mỗi byte được lấy số dư khi chia cho 32 để chọn một ký tự trong bảng chữ cái. Vì một byte có 256 giá trị và 256 chia hết cho 32, cách ánh xạ này không tự gây thiên lệch giữa các ký tự nếu các byte đầu vào phân bố đều. Đây là mô tả cơ chế, không phải kết quả kiểm thử chất lượng ngẫu nhiên.

Mười sáu ký tự Base32 có 3216 = 280 tổ hợp, xấp xỉ 1,21 × 1024. Con số đó là kích thước không gian phần ngẫu nhiên, không phải tốc độ tạo mã mỗi mili giây hoặc số mã được bảo đảm không trùng.

Vì sao có thể sắp xếp theo thời gian?

Phần thời gian nằm trước và có độ dài cố định, nên với quy tắc so sánh ký tự phù hợp, tiền tố ứng với thời gian nhỏ hơn đứng trước tiền tố ứng với thời gian lớn hơn. Tuy nhiên, khi hai mã cùng mili giây, phần ngẫu nhiên quyết định thứ tự giữa chúng. Công cụ không điều chỉnh phần này để bảo đảm tăng theo thứ tự tạo.

Danh sách được hiển thị theo thứ tự sinh mã, không trải qua bước sắp xếp. Thời gian cũng được đọc riêng cho từng mã, nên một lượt tạo có thể chứa nhiều dấu thời gian khác nhau.

Quy tắc chuẩn hóa số lượng

Logic lấy phần số nguyên của đầu vào; chẳng hạn 3.9 được xử lý thành 3, không làm tròn thành 4. Nếu kết quả là 0 hoặc không phân tích được thành số, công cụ dùng 5. Sau đó, số lượng dưới 1 được giới hạn thành 1 và số lượng trên 1000 được giới hạn thành 1000.

Việc hiệu chỉnh số lượng không đồng thời ghi lại giá trị đã hiệu chỉnh vào ô nhập. Do đó, hãy phân biệt số đang nhìn thấy trong ô với số lượng hiệu lực dùng để tạo danh sách.

Cấu trúc ULID gồm 10 ký tự thời gian tương ứng 48 bit mili giây Unix cộng 16 ký tự ngẫu nhiên tương ứng 80 bit, tổng 26 ký tự và 128 bit mã hóa Crockford Base32
ULID = 10 ký tự thời gian + 16 ký tự ngẫu nhiên. Phần thời gian đứng trước giúp mã sắp xếp theo thời gian.

Các thuật ngữ cần hiểu khi sử dụng ULID

Dấu thời gian Unix

Dấu thời gian Unix là số đo thời gian tính từ mốc 00:00:00 UTC ngày 1 tháng 1 năm 1970. Công cụ sử dụng đơn vị mili giây và đưa giá trị này vào phần đầu của mã. Nó giúp liên hệ định danh với lúc mã được tạo, nhưng không chứng minh lúc một sự kiện nghiệp vụ xảy ra. Chẳng hạn, mã tạo khi nhập lại một đơn hàng cũ phản ánh lúc tạo mã, không phải ngày khách đặt hàng.

Crockford Base32

Crockford Base32 là cách biểu diễn dữ liệu bằng bảng 32 ký tự. Bảng dùng trong công cụ gồm chữ số và chữ cái viết hoa, bỏ I, L, O, U để hạn chế một số nhầm lẫn khi đọc. Cách biểu diễn này quyết định hình thức cả phần thời gian lẫn phần ngẫu nhiên. Đừng nhầm “mã hóa Base32” với mã hóa bảo mật: đổi dữ liệu sang một bảng ký tự khác không làm dữ liệu trở thành bí mật hay chống đọc được.

Thứ tự từ điển

Thứ tự từ điển là cách so sánh chuỗi từ trái sang phải, dựa trên thứ tự của các ký tự. Với ULID, phần đầu biểu diễn thời gian giúp việc so sánh này phản ánh thứ tự thời gian khi hệ thống dùng quy tắc phù hợp. Điểm dễ nhầm là coi đó như thứ tự tạo tuyệt đối. Hai mã có cùng phần thời gian vẫn được so sánh bằng phần sau, và quy tắc đối chiếu của nơi lưu trữ cần được xem xét.

Monotonic ULID

Monotonic ULID là cách sinh có điều chỉnh phần sau để duy trì thứ tự tăng khi nhiều mã được tạo trong cùng dấu thời gian. Đây là kiến thức nền để phân biệt các cách tạo ULID, không phải một chế độ có trên công cụ này. Phần triển khai được cung cấp lấy dữ liệu ngẫu nhiên mới cho từng mã và không giữ cơ chế tăng phần sau. Vì vậy, thứ tự sinh trong một mili giây có thể khác thứ tự sau khi sắp xếp.

Va chạm định danh

Va chạm định danh xảy ra khi hai lần tạo cho ra cùng một giá trị mã. Không gian ngẫu nhiên lớn giúp giảm xác suất này, nhưng không thể thay thế một kiểm tra tính duy nhất trong ứng dụng cần bảo đảm không trùng. Công cụ không dò hoặc loại bỏ mã trùng trong danh sách. Với dữ liệu quan trọng, ràng buộc duy nhất tại nơi lưu trữ và cách xử lý khi bị từ chối là lớp bảo vệ riêng cần có.

Năm thuật ngữ ULID gồm dấu thời gian Unix từ năm 1970, Crockford Base32, thứ tự từ điển, Monotonic ULID tăng dần và va chạm định danh khi hai mã trùng nhau
Dấu thời gian Unix, Crockford Base32, thứ tự từ điển, Monotonic ULID và va chạm định danh là năm khái niệm nền khi dùng ULID.

Có thể sử dụng danh sách ULID vào những việc nào?

Định danh bản ghi và sự kiện

Danh sách ULID có thể được dùng làm nguồn mã tham khảo để gán cho bản ghi, sự kiện hoặc tài nguyên trong hệ thống chấp nhận định dạng này. Chuỗi có độ dài cố định giúp thống nhất trường văn bản; việc không có dấu gạch nối thuận tiện trong những ngữ cảnh yêu cầu mã liền nhau. Bảng ký tự cũng không chứa khoảng trắng hay dấu phân cách đặc biệt, nhưng nơi tiếp nhận vẫn phải chấp nhận quy tắc đặt tên tương ứng.

Với dữ liệu cần được sắp xếp gần với thời gian tạo mã, tiền tố thời gian có thể hữu ích. Điều kiện là đồng hồ thiết bị phù hợp và cách so sánh chuỗi của hệ thống giữ đúng thứ tự ký tự. Không nên dùng đặc điểm đó để suy ra thời gian nghiệp vụ chính xác hoặc thứ tự xử lý giữa các thiết bị.

Trong cơ sở dữ liệu, bạn vẫn cần quyết định kiểu lưu trữ, quy tắc đối chiếu và ràng buộc duy nhất. Công cụ chỉ tạo văn bản; nó không tạo bảng, nhập bản ghi hay tích hợp sẵn với hệ quản trị dữ liệu của bạn.

Tạo dữ liệu mẫu cho thử nghiệm

Một danh sách mã có thể phục vụ việc điền dữ liệu mẫu vào bảng tính, biểu mẫu thử nghiệm hoặc tập bản ghi giả lập. Mỗi dòng riêng biệt thuận tiện cho việc chuyển các mã sang môi trường khác có hỗ trợ nhận văn bản theo dòng. Khi tạo lại, danh sách cũ bị thay thế, nên cần giữ bản đã dùng nếu muốn duy trì liên kết giữa các dữ liệu mẫu.

Không nên gán cho các mã vai trò bí mật truy cập. ULID có thành phần thời gian có thể tiết lộ thông tin về lúc tạo; mục đích định danh và mục đích xác thực là hai yêu cầu khác nhau.

Các ứng dụng của ULID làm mã định danh cho bản ghi cơ sở dữ liệu, sự kiện hệ thống, tài nguyên qua API và dữ liệu mẫu cho thử nghiệm, dùng chuỗi 26 ký tự liền nhau không dấu gạch nối
Danh sách ULID có thể dùng làm mã tham khảo cho bản ghi, sự kiện, tài nguyên và làm dữ liệu mẫu khi thử nghiệm.

Ví dụ đọc kết quả và xử lý số lượng ULID

Tạo ít mã và tạo hơn 100 mã

Giả sử bạn nhập số lượng 3 và trình duyệt cung cấp được thời gian cùng dữ liệu ngẫu nhiên. Logic sẽ tạo 3 dòng kết quả, mỗi dòng chứa một mã 26 ký tự. Không thể xác định trước nội dung cụ thể của ba mã, vì cả thời gian và phần ngẫu nhiên đều được lấy tại lúc tạo.

Nếu nhập 150, số lượng nằm trong giới hạn tạo nhưng vượt phạm vi thanh trượt. Kết quả là 150 mã, còn thanh trượt hiển thị ở mức 100. Đây là sự khác nhau về phạm vi điều khiển, không phải dấu hiệu 50 mã bị bỏ qua. Các kết quả trong ví dụ là suy luận từ logic được cung cấp, không phải báo cáo chạy thử.

Những giá trị số lượng dễ gây hiểu nhầm

Bảng sau xét giá trị được chuyển tới logic tạo danh sách. Với đầu vào thập phân, giả định ô nhập chuyển được giá trị đó đến phần xử lý; cách trình duyệt cho phép nhập có thể phụ thuộc môi trường.

Giá trị đầu vào Số mã hiệu lực Cách xử lý
0 5 Kích hoạt giá trị dự phòng.
-2 1 Được giới hạn ở mức tối thiểu.
1001 1000 Được giới hạn ở mức tối đa.
3.9 3 Lấy phần nguyên, không làm tròn.

Để minh họa cấu trúc mã, giả định riêng thời gian bằng 32 mili giây kể từ mốc Unix và 16 byte ngẫu nhiên đều bằng 0. Số 32 trong cơ số 32 được viết là 10; bổ sung đủ độ dài cho tiền tố 0000000010. Phần sau là 16 ký tự 0. Đây là giả định toán học, không phải thời gian hay dữ liệu ngẫu nhiên mà người dùng có thể chọn trên giao diện.

Hai mã cùng mili giây có thể đổi thứ tự khi sắp xếp

Giả sử hai mã có cùng dấu thời gian. Mã được tạo trước nhận 16 byte đều bằng 255; mã tạo sau nhận 16 byte đều bằng 0. Do 255 chia 32 dư 31, phần sau của mã đầu gồm toàn chữ Z, còn mã sau gồm toàn chữ số 0.

Khi so sánh theo thứ tự ký tự thông thường, mã có phần sau toàn 0 đứng trước mã có phần sau toàn Z. Như vậy, mã tạo sau có thể đứng trước khi sắp xếp. Ví dụ này minh họa giới hạn thứ tự, không nói rằng những chuỗi giả định đó đã xuất hiện trong một lần sử dụng thực tế.

Ba ví dụ dùng trình tạo ULID: nhập 3 tạo ra 3 mã 26 ký tự, nhập 150 vẫn tạo đủ 150 mã dù thanh trượt tối đa 100, và hai mã tạo cùng mili giây có thể đổi thứ tự khi sắp xếp
Nhập 150 vẫn tạo đủ 150 mã dù thanh trượt dừng ở 100; các mã cùng mili giây không bảo đảm giữ nguyên thứ tự khi sắp xếp.

ULID khác gì UUID và mã số tăng dần?

ULID và UUID v4

Về kiến thức nền, ULID chuẩn có cấu trúc 128 bit, gồm 48 bit thời gian và 80 bit ngẫu nhiên, thường biểu diễn bằng 26 ký tự Base32. UUID cũng là định danh 128 bit, nhưng dạng văn bản phổ biến dùng các chữ số thập lục phân và dấu gạch nối. Cùng độ rộng dữ liệu không có nghĩa hai dạng văn bản có thể thay thế trực tiếp trong mọi trường hoặc thư viện.

UUID v4 là đối chiếu cụ thể hữu ích vì không có tiền tố thời gian phục vụ việc sắp xếp như ULID. Tuy nhiên, không nên mở rộng nhận xét đó thành “mọi UUID đều không chứa thời gian”; các phiên bản UUID khác có cấu trúc khác nhau.

Phần triển khai này cho thấy cách ghép thời gian với dữ liệu ngẫu nhiên, nhưng chưa có kiểm thử tương thích với các thư viện ở ngôn ngữ khác. Mã cũng không kiểm tra miền thời gian 48 bit, nên không thể coi mô tả cấu trúc là xác nhận tuân thủ đầy đủ ở mọi giá trị thời gian biên.

ULID và mã số tăng dần

Mã số tăng dần thường cần một cơ chế phối hợp cấp số để tránh nhiều nơi nhận cùng số. ULID kết hợp thời gian với không gian ngẫu nhiên, nên việc tạo không dựa vào một bộ đếm chung trong công cụ này. Đổi lại, nó không cung cấp bảo đảm không trùng như một cơ chế cấp số được kiểm soát.

Số tăng dần dễ bộc lộ thứ tự cấp; ULID cũng không che giấu hoàn toàn thời gian vì có tiền tố thời gian. Nếu cần thứ tự tăng ngay trong cùng mili giây, cách sinh monotonic là một lựa chọn về thiết kế riêng. Công cụ không có tùy chọn chuyển giữa sinh ngẫu nhiên thông thường và monotonic.

Bảng so sánh ULID 128 bit dạng 26 ký tự Base32 sắp xếp theo thời gian, UUID v4 128 bit dạng thập lục phân có dấu gạch nối không có tiền tố thời gian, và mã số tăng dần tuần tự dễ đoán phụ thuộc hệ thống cấp số
ULID và UUID v4 cùng rộng 128 bit nhưng khác dạng biểu diễn và khả năng sắp xếp; mã tăng dần đơn giản nhưng dễ đoán.

Giới hạn và lưu ý trước khi dùng ULID trong hệ thống

Tính duy nhất và độ tin cậy của đồng hồ

Công cụ không kiểm tra trùng lặp trong một lượt hoặc đối chiếu với kho mã đã tồn tại. Nếu việc trùng mã gây mất hoặc ghi đè dữ liệu, hãy bảo vệ tính duy nhất tại nơi lưu trữ thay vì chỉ dựa vào xác suất. Công cụ cũng không bảo đảm thứ tự tăng giữa các mã cùng mili giây.

Thời gian phụ thuộc đồng hồ thiết bị. Đồng hồ sai, bị điều chỉnh hoặc chạy lùi có thể làm thứ tự tiền tố không phản ánh đúng diễn tiến thực tế. Vì vậy, thứ tự ULID không thay thế nhật ký thời gian đáng tin cậy, đặc biệt khi tổng hợp dữ liệu từ nhiều thiết bị.

Khả năng trình duyệt và phạm vi chưa xác minh

Việc tạo mã phụ thuộc API mật mã của trình duyệt; phần tạo không có nhánh dự phòng hay xử lý lỗi riêng nếu API này không khả dụng. Sao chép phụ thuộc một API khác là Clipboard, nên lỗi sao chép không nhất thiết có nghĩa việc tạo mã đã thất bại.

Giao diện được cung cấp không có lựa chọn chữ thường, thời gian tùy chỉnh, giải mã, kiểm tra mã đầu vào hoặc xuất tệp. Mức 1000 mã là giới hạn được triển khai cho mỗi lượt, không phải kết luận đo đạc hiệu năng. Việc sử dụng API ngẫu nhiên mật mã cũng không phải chứng nhận bảo mật cho toàn công cụ.

Chưa có đủ thông tin để xác nhận hoạt động trên mọi trình duyệt, chính sách quyền tại trang đang triển khai hoặc tính tương thích với các thư viện khác. Tương tự, không thể cam kết toàn trang không lưu dữ liệu hay không có hoạt động mạng chỉ từ những đoạn mã được cung cấp; các thành phần khác của trang chưa được xác minh.

Ba giới hạn khi dùng ULID: công cụ không kiểm tra trùng lặp nên cần bảo vệ tính duy nhất tại nơi lưu trữ, thứ tự mã cùng mili giây không được bảo đảm, đồng hồ thiết bị sai hoặc chạy lùi làm sai thứ tự thời gian
Không nên chỉ dựa vào xác suất chống trùng mã; cần khóa duy nhất tại nơi lưu trữ và lưu ý độ tin cậy của đồng hồ thiết bị.

Câu hỏi thường gặp

Vì sao thanh trượt chỉ đến 100 nhưng tôi vẫn tạo được 150 ULID?

Vì thanh trượt và ô nhập số có phạm vi khác nhau. Thanh trượt chỉ hỗ trợ lựa chọn đến 100, trong khi số lượng từ ô nhập được xử lý đến tối đa 1000 mã. Khi nhập 150, thanh trượt nằm ở điểm cuối nhưng số lượng hiệu lực vẫn là 150. Bạn nên đọc nó như trạng thái của một điều khiển có phạm vi hẹp hơn, không phải chỉ báo chính xác cho mọi số lượng có thể nhập. Giới hạn này áp dụng cho từng lượt tạo, không phải tổng số mã qua nhiều lượt.

Tại sao nhập số lượng 0 lại nhận được 5 mã?

Vì logic dùng 5 làm giá trị dự phòng khi kết quả phân tích đầu vào bằng 0 hoặc không phải số có thể sử dụng. Quy tắc dự phòng được áp dụng trước bước giới hạn số lượng tối thiểu, nên 0 không được chuyển thành 1. Đây là hành vi xử lý đầu vào, không phải việc tạo danh sách rỗng rồi tự thêm mã. Ô nhập có thể vẫn hiện 0 vì phần tạo không ghi lại giá trị hiệu chỉnh; số dòng kết quả mới phản ánh số lượng đã dùng.

Công cụ có tạo ULID chữ thường không?

Không, phần triển khai được cung cấp chỉ sinh mã bằng bảng ký tự gồm chữ số và chữ cái viết hoa, không có lựa chọn chuyển sang chữ thường. Nếu nơi nhận dữ liệu yêu cầu dạng chữ thường, cần kiểm tra quy tắc chấp nhận của nơi đó thay vì coi công cụ đã hỗ trợ sẵn. Việc thay đổi cách viết có thể ảnh hưởng đến so sánh chuỗi hoặc kiểm tra định dạng trong hệ thống phân biệt hoa và thường. Chưa có bằng chứng tương thích với mọi thư viện nhận ULID.

Các ULID tạo trong cùng một mili giây có luôn tăng theo thứ tự không?

Không. Khi dấu thời gian giống nhau, thứ tự so sánh phụ thuộc phần ngẫu nhiên và phần này được tạo mới cho từng mã, không được điều chỉnh để luôn tăng. Danh sách trên màn hình vẫn giữ thứ tự tạo, nhưng một hệ thống sắp xếp lại theo chuỗi có thể đưa các mã đó sang thứ tự khác. Nếu ứng dụng cần phân biệt chính xác trình tự các thao tác diễn ra cùng mili giây, chỉ dùng các mã này là chưa đủ; cần một thông tin thứ tự được quản lý riêng.

ULID được tạo có chắc chắn không bao giờ trùng không?

Không có bảo đảm tuyệt đối như vậy trong công cụ. Thành phần ngẫu nhiên có không gian giá trị lớn, nhưng phần triển khai không tìm mã trùng hoặc so sánh với các mã đã sử dụng trước đây. Tên gọi “duy nhất” không nên được hiểu là mỗi mã đã trải qua kiểm chứng trên toàn bộ hệ thống. Khi một ứng dụng không chấp nhận trùng định danh, cơ sở dữ liệu hoặc nơi tiếp nhận cần từ chối giá trị trùng và ứng dụng cần có cách xử lý phù hợp.

Vì sao thao tác sao chép toàn bộ danh sách có thể thất bại?

Thao tác này có thể thất bại vì trình duyệt hoặc môi trường trang không cho phép truy cập Clipboard, quyền bị từ chối hoặc API không được hỗ trợ trong điều kiện sử dụng hiện tại. Phần xử lý có thông báo lỗi khi yêu cầu ghi bộ nhớ tạm không thành công, nhưng chưa đủ dữ liệu để xác định nguyên nhân cho một thiết bị cụ thể. Nếu danh sách vẫn hiển thị, lỗi đó không chứng minh mã bị sai. Khi đã được sao chép, nội dung gồm toàn bộ mã và dấu xuống dòng giữa chúng.

Có nên dùng ULID này làm mật khẩu hoặc token truy cập không?

Không nên coi ULID từ công cụ này là mật khẩu hay token truy cập chỉ vì nó chứa dữ liệu ngẫu nhiên. Mã được thiết kế cho mục đích định danh, đồng thời phần đầu có thể cho biết thông tin về thời gian tạo. Một cơ chế truy cập cần được thiết kế riêng, bao gồm yêu cầu về tính bí mật, thời hạn, thu hồi và cách kiểm tra quyền. Việc lấy ngẫu nhiên qua API mật mã không tự xác nhận rằng toàn bộ quy trình đáp ứng các yêu cầu đó hoặc đã được đánh giá bảo mật.

17 bình luận

  • Đặng Văn Thành

    Danh sách ULID được trình bày rõ ràng, dễ kiểm tra và sao chép. Đây là một công cụ nhỏ nhưng rất hữu ích.

  • Dương Ngọc Hà

    Giao diện đẹp, thao tác đơn giản, không có quảng cáo che màn hình. Mong có thêm chức năng sao chép từng ULID bằng một nút riêng.

  • Trần Hữu Bình

    Công cụ rất nhẹ, mở trên điện thoại vẫn thao tác được. Phần nhập số lượng cũng dễ nhìn và không bị rối.

  • Ngô Hải Nam

    Nếu có thêm tùy chọn xuất danh sách ULID thành file TXT hoặc CSV thì sẽ tuyệt vời hơn.

  • Lý Quốc Châu

    Trang này có nhiều tiện ích thực tế, từ tạo ULID đến tính ETA. Không cần mở nhiều tab để tìm từng công cụ riêng.

  • Dương Đức Ngọc

    Hơi tiếc là mình chưa thấy giải thích ngắn về ULID dành cho người mới. Thêm phần hướng dẫn thì sẽ thân thiện hơn.

  • Bùi Quốc Thảo

    Tạo 100 ULID trong vài giây, quá tiện cho dev cần dữ liệu mẫu. Mong website giữ tốc độ như hiện tại.

  • Võ Tiến Yến

    ulid generator xài ok lắm, tạo số lượng bao nhiêu cũng nhanh, giao diện nhìn sạch sẽ nữa.

  • Huỳnh Minh Hoàng

    Các tiện ích như Bcrypt, Emoji picker và ETA calculator được đặt cạnh nhau khá hợp lý, lúc làm việc cần gì là tìm được ngay.

  • Võ Tiến Trang

    Công cụ hoạt động ổn định, các ULID tạo ra nhìn đúng định dạng và rất tiện cho việc kiểm thử dữ liệu.

  • Trần Hữu Thắng

    Mình góp ý nên có nút làm mới hoặc xóa nhanh danh sách ULID để thao tác thuận tiện hơn khi tạo nhiều lần.

  • Mình thường dùng Bcrypt để băm mật khẩu, nay thấy thêm ULID generator và các công cụ khác trên cùng website khá tiện.

  • Lý Quốc Trang

    Mình thích phần Trình tạo ULID vì không cần đăng nhập hay cài thêm phần mềm. Mở lên là dùng được luôn.

  • Hồ Hữu Hương

    Tính năng tùy chỉnh số lượng rất hữu ích, tạo một lúc vài chục ULID đỡ mất công thao tác nhiều lần.

  • Vũ Minh Nhung

    Cho mình hỏi ULID được tạo ra có đảm bảo sắp xếp theo thời gian không? Mình đang muốn dùng cho mã định danh trong cơ sở dữ liệu.

  • Phan Văn Ngọc

    ULID generator này tiện hơn mình nghĩ, đặc biệt là danh sách kết quả có thể xem liên tục mà không phải bấm từng lần.

  • Vũ Quốc Mai

    Công cụ tạo ULID dùng rất nhanh, giao diện gọn và dễ hiểu. Mình chỉ cần nhập số lượng là có ngay danh sách ULID để dùng.

Bình luận vui vẻ - Yêu cầu nâng cấp