• Ứng dụng Sqids là gì?

    Sqids là một thư viện mã nguồn mở nhỏ có thể tạo ra các ID ngắn, duy nhất và có vẻ ngẫu nhiên từ các số.

    Cách tốt nhất để nghĩ về nó là như một trình chuyển đổi từ thập phân sang hệ thống số Hexadecimal, nhưng có một vài tính năng bổ sung.

  • Rút ngắn liên kết, tạo ID sự kiện duy nhất cho việc ghi nhật ký, tạo ID cho sản phẩm/đối tượng trên trang web (như YouTube làm cho video), tạo ID ngắn cho tin nhắn văn bản, mã xác nhận trong email, v.v.

  • Bất kỳ dữ liệu nào nhạy cảm. Các ID được tạo ra không phải là các mã băm và có thể giải mã trở lại thành số. Ví dụ, chúng có thể không phải là lựa chọn tốt cho ID người dùng, vì khi giải mã, chúng có thể tiết lộ số lượng người dùng của ứng dụng của bạn.

  • Tôi có thể mã hóa nhiều số cùng một lúc không?

    Có. Sqids có thể mã hóa một hoặc nhiều số không âm thành một ID duy nhất. Không có giới hạn về số lượng số bạn có thể mã hóa, nhưng có giới hạn về số lớn bạn có thể mã hóa (tùy thuộc vào ngôn ngữ triển khai).

    Điều này hữu ích với một số lý do: bạn có thể mã hóa một dấu thời gian UNIX và tạo ID có hạn, hoặc bạn có thể mã hóa một số khu vực cơ sở dữ liệu cùng với một khóa chính và tiết kiệm số lần truy vấn cơ sở dữ liệu.

  • Các ID được tạo ra có duy nhất không?

    Có, các ID được tạo ra là duy nhất đối với đầu vào và bảng chữ cái.

    Nhớ rằng bảng chữ cái mặc định chứa cả chữ hoa và chữ thường, vì vậy ID mặc định là có phân biệt chữ hoa, chữ thường.

  • Hạn chế nào mà Sqids có?

    Sqids không thể mã hóa các số âm.

    Độ dài tối thiểu của bảng chữ cái là 3 ký tự.

    Bảng chữ cái không thể chứa bất kỳ ký tự đa byte nào.

    Sqids không thể tạo ra ID đến một độ dài cụ thể, chỉ đạt ít nhất một độ dài cụ thể. Phạm vi tham số độ dài tối thiểu nằm giữa 0 và 255.

    Sqids có thể cố gắng tái tạo các ID đến độ dài bảng chữ cái, trừ một.

  • Làm thế nào để xáo trộn bảng chữ cái mặc định?

    Thư viện chấp nhận bảng chữ cái tùy chỉnh từ đó có thể tạo ra các ID. Đơn giản là trộn trước bảng chữ cái mặc định được cung cấp.

    Xin hãy nhớ rằng với đủ nỗ lực, ai đó có thể phục hồi bảng chữ cái đã trộn của bạn, vì vậy điều này hoàn toàn không phải là một kỹ thuật để ẩn dữ liệu nhạy cảm.

  • Nên sử dụng bảng chữ cái ngắn hay dài hơn?

    Bảng chữ cái mặc định có thể được tìm thấy tại đây .

    Bạn có thể sử dụng bất kỳ công cụ trộn chuỗi trực tuyến nào hoặc sân chơi của chúng tôi .

  • Bảng chữ cái của tôi có thể chỉ bao gồm các số không?

    Tùy thuộc vào trường hợp sử dụng của bạn. Bảng chữ cái ngắn sẽ tạo ra ID dài hơn và bảng chữ cái dài sẽ tạo ra ID ngắn hơn. Bạn có thể sử dụng sân chơi để kiểm tra xem ID của bạn có thể trông như thế nào.

  • Tôi có thể sử dụng biểu tượng cảm xúc như là bảng chữ cái không?

    Có. Nhớ rằng các ID được tạo ra vẫn là chuỗi và chúng có thể bắt đầu bằng số không.

  • Tại sao phải thêm giá trị đệm cho các ID?

    Không. Sqids không hỗ trợ các ký tự đa byte cho bảng chữ cái. Điều này bao gồm cả biểu tượng cảm xúc cũng như nhiều ký tự khác.

  • Tại sao phải thêm giá trị đệm cho các ID?

    Thư viện có thể mở rộng các ID với các ký tự rác để làm cho chúng trở nên dài hơn. Điều này hữu ích để không dễ nhận ra liệu bạn có đang mã hóa một số nhỏ như 1 hay một số lớn như 1000000.

    Việc giải mã không bị ảnh hưởng.

  • Tôi có thể làm cho các ID được tạo ra dài hơn không?

    Có, thư viện chấp nhận một tham số độ dài tối thiểu đảm bảo rằng các ID sẽ ít nhất có độ dài đó.

    Vui lòng lưu ý rằng không có đảm bảo về độ dài của ID của bạn - chỉ là chúng sẽ không ngắn hơn độ dài bạn chỉ định.

  • Tôi có thể làm cho các ID được tạo ra có độ dài cụ thể không?

    Đến một mức độ.

    Thiết lập độ dài tối đa là không thể vì sớm muộn, ID của bạn sẽ tràn khi có đầu vào đủ lớn. Đó là lý do tại sao chỉ hỗ trợ tham số độ dài tối thiểu và độ dài chính xác hoặc độ dài tối đa không được hỗ trợ.

  • Tại sao sử dụng danh sách chặn?

    Một danh sách chặn có thể ngăn các từ cụ thể không xuất hiện trong ID của bạn. Điều này có ích vì các ID được tạo ra dự kiến sẽ xuất hiện ở những nơi công cộng, như URL.

    Sqids đi kèm với danh sách chặn mặc định chứa những từ tục tĩu và không phù hợp cơ bản từ nhiều ngôn ngữ. Bạn có thể mở rộng danh sách đó bằng các từ của riêng bạn, tất nhiên.

  • Làm thế nào để danh sách chặn hoạt động?

    So khớp từ trong danh sách chặn không phân biệt hoa thường.

    Các từ ngắn ít hơn 3 ký tự sẽ không bị chặn. Từ dài 3 ký tự phải trùng khớp chính xác với ID. Từ dài 4 ký tự trở lên sẽ kích hoạt khớp nếu chúng là một phần của ID.

    Nếu từ trong danh sách chặn chứa số (leetspeak), chúng chỉ kích hoạt khớp nếu chúng ở đầu hoặc cuối ID.

  • Có những từ nào trong danh sách chặn mặc định?

    Danh sách chặn mặc định chứa những từ tục tĩu và không phù hợp phổ biến từ nhiều ngôn ngữ. Bạn có thể tìm danh sách đầy đủ tại đây .

  • Điều gì xảy ra khi tất cả các ID đều bị chặn?

    Khi ID được tạo ra trùng với một từ trong danh sách chặn, thư viện sẽ cố gắng tái tạo nó.

    Nếu mọi nỗ lực tái tạo ID đều thất bại, hàm mã hóa sẽ thất bại và trả về một lỗi. Việc xử lý lỗi đó là trách nhiệm của người dùng.

    Cách tốt nhất để giảm số lần tái tạo là có một bảng chữ cái dài hơn, không thiết lập độ dài tối thiểu và cung cấp một danh sách chặn nhỏ hơn. Cung cấp một danh sách chặn trống sẽ tắt tính năng hoàn toàn.

  • Làm thế nào để kiểm tra xem các ID có hợp lệ không?

    Giải mã các ID thường tạo ra một loại đầu ra số, nhưng điều đó không nhất thiết có nghĩa là ID đó là chuẩn. Để kiểm tra xem ID có hợp lệ hay không, bạn có thể mã hóa lại các số đã giải mã và kiểm tra xem ID có trùng khớp không.

    Lý do không tự động là nếu danh sách chặn mặc định thay đổi trong tương lai, chúng tôi không muốn tự động vô hiệu hóa ID đã được tạo ra trong quá khứ và có thể hiện đang trùng khớp với từ mới trong danh sách chặn.

  • Điều gì xảy ra khi danh sách chặn mặc định được cập nhật?

    Chúng tôi sẽ chắc chắn cập nhật CHANGELOG khi và nếu danh sách chặn mặc định thay đổi.

    Bạn phải tính đến các tình huống có thể xuất hiện từ khóa mới trong danh sách chặn mặc định. Trong trường hợp này, việc mã hóa lại các số có thể tạo ra một ID khác nhau.

    Cách tốt nhất để đảm bảo ID của bạn giữ nguyên trong các cập nhật tương lai là cung cấp một danh sách chặn tùy chỉnh, ngay cả khi nó giống với danh sách chặn mặc định hiện tại.

  • Mã hóa các số khác nhau có thể tạo ra các ID giống nhau không?

    Không, mã hóa các số khác nhau sẽ tạo ra các ID duy nhất.

    Tuy nhiên, do thiết kế của thuật toán, giải mã các ID ngẫu nhiên đôi khi có thể tạo ra cùng các số. Cách tốt nhất để kiểm tra xem ID có phải là chuẩn là đơn giản là mã hóa lại các số đã giải mã và kiểm tra xem ID có trùng khớp không.

  • Ứng dụng Hashids là gì?

    Hashids là phiên bản đầu tiên của thư viện này được phát hành khoảng năm 2013. Nó cũng tạo ra các ID ngắn nhưng sử dụng một phương pháp hơi khác.

  • Tại sao Hashids đã được nâng cấp thành Sqids?

    Hashids xử lý một số điều khác nhau.

    Nó không hỗ trợ một danh sách chặn tùy chỉnh, mà thay vào đó dựa vào những từ tục tĩu tiếng Anh phổ biến nhất. Nó cũng sử dụng tham số salt để xáo trộn bảng chữ cái, điều này làm cho nó hơi khó hiểu vì thư viện không liên quan đến việc mã hóa. Ngoài ra, nó sử dụng quá nhiều ký tự dành riêng dẫn đến việc tạo ra các ID dài hơn.

    Do đó, chúng tôi đã quyết định nâng cấp và đổi tên. Thuật toán đã được đơn giản hóa, một vài tính năng đã được thêm và các kho mã nguồn đều được tập trung ở một nơi .

  • Tại sao tham số salt đã bị loại bỏ?

    Tham số salt được sử dụng để xáo trộn bảng chữ cái, và không bao giờ được dùng để liên kết với bảo mật. Cả Hashids và Sqids hoạt động tương tự như cách chuyển đổi từ hệ thập phân sang hệ hexa nhưng với một số điều chỉnh. Không có việc mã hóa nào cả, vì vậy để tránh hiểu lầm, tham số đó đã bị loại bỏ hoàn toàn.

  • Liệu Hashids có tương thích với Sqids không?

    Không, Sqids mở rộng tính năng của Hashids và có các mục tiêu thiết kế & yêu cầu khác nhau; do đó, các ID được tạo ra không tương thích với Hashids.

  • Làm thế nào để nâng cấp từ Hashids lên Sqids một cách an toàn?

    Vì không có tính tương thích giữa Hashids và Sqids, việc đơn giản là thay thế Hashids bằng Sqids là không thể.

    Tuy nhiên, bạn có thể kết hợp cả hai bằng cách phân biệt xem ID nào thuộc về thư viện nào.

    Một trong các cách để làm điều đó là bằng độ dài ID - nếu bạn chuyển sang Sqids, bạn có thể cung cấp một độ dài tối thiểu cao hơn. Một cách khác là thêm/bổ sung thủ công một ký tự tùy chỉnh vào các ID mới được tạo ra.

    Cuối cùng, bạn cũng có thể thử giải mã một ID với Hashids để xem xem có hợp lệ không. Nếu không - giải mã và mã hóa lại với Sqids để xem xem có hoạt động không.

  • Ở đâu có thể tìm thấy các thư viện Hashids gốc?

    Mỗi phiên bản ngôn ngữ trên trang web này đều liên kết đến kho mã nguồn gốc của Hashids nếu có.

  • Làm thế nào để đóng góp?

    Nếu bạn muốn hỗ trợ dự án, chúng tôi rất đánh giá việc bạn đánh dấu các kho của chúng tôi trên Github để tăng hiển thị.

    Nếu bạn là một nhà phát triển và không thấy bản triển khai của Sqids cho một ngôn ngữ cụ thể, vui lòng giúp chúng tôi chuyển đổi thư viện. Điều tương tự cũng áp dụng cho một ngôn ngữ lập trình không được liệt kê.

    Nếu bạn thấy lỗi trong thông số kỹ thuật hoặc bất kỳ bản triển khai nào, vui lòng tạo một vấn đề hoặc yêu cầu kéo với một sửa đổi đề xuất trong kho mã nguồn tương ứng.

    Nếu bạn nói nhiều ngôn ngữ, chúng tôi có thể cần sự giúp đỡ của bạn để điều chỉnh danh sách chặn điều chỉnh bản dịch trang web nếu bạn nhận thấy bất kỳ vấn đề nào.

    Cuối cùng, nếu bạn có kinh nghiệm với Hashids/Sqids, vui lòng hỗ trợ cộng đồng của chúng tôi bằng cách trả lời bất kỳ câu hỏi nào mà bất kỳ ai có thể có.

  • Làm thế nào để chuyển Sqids sang một ngôn ngữ khác?

    Nếu bạn muốn chuyển đổi Sqids sang một trong những ngôn ngữ sau đây (hoặc một ngôn ngữ mới không được liệt kê ở đây):

    ActionScript , D , Elm , Haxe , Io , PostgreSQL , Raku , Smalltalk , T-SQL , Tcl , VBA

    Fork kho chính thức đến tài khoản Github của bạn & thực hiện thông số kỹ thuật cùng với tất cả các bài kiểm tra. Bạn có thể tái sử dụng bất kỳ README nào có sẵn (ví dụ ).

    Khi thư viện đã sẵn sàng, tạo một yêu cầu kéo. Khi hợp nhất, chúng tôi sẽ cập nhật trang web.

    Nếu kho không có người duy trì hoạt động, chúng tôi rất vui mừng mời bạn tham gia quản lý kho và trở thành người duy trì chính thức.