• Apa itu Sqids?

    Sqids adalah perpustakaan kecil sumber terbuka yang dapat menghasilkan ID pendek, unik, dengan penampilan acak dari angka.

    Cara terbaik untuk memahaminya adalah seperti konverter desimal ke heksadesimal, tetapi dengan beberapa fitur tambahan.

  • Pemendekan tautan, menghasilkan ID unik acara untuk logging, menghasilkan ID untuk produk/objek di sebuah situs web (seperti yang dilakukan YouTube untuk video), menghasilkan ID pendek untuk pesan teks, kode konfirmasi dalam surel, dll.

  • Setiap data yang sensitif. ID yang dihasilkan bukanlah hash dan bisa didekode kembali menjadi angka. Sebagai contoh, mungkin bukan pilihan yang baik untuk ID pengguna, karena setelah didekode, ID tersebut bisa mengungkap jumlah pengguna aplikasi Anda.

  • Dapatkah saya mengkodekan beberapa angka sekaligus?

    Ya. Sqids dapat mengkodekan satu atau banyak angka non-negatif menjadi satu ID. Tidak ada batasan jumlah angka yang dapat Anda kodelkan, tetapi ada batasan pada seberapa besar angka yang dapat Anda kodelkan (tergantung pada bahasa implementasi).

    Ini berguna untuk beberapa alasan: Anda dapat mengkodekan cap waktu UNIX dan membuat ID yang kedaluwarsa, atau Anda dapat mengkodekan nomor shard database bersama dengan kunci primer dan menghemat permintaan basis data tambahan.

  • Apakah ID yang dihasilkan unik?

    Ya, ID yang dihasilkan unik untuk input dan abjad.

    Namun, perlu diingat bahwa abjad default mengandung huruf besar dan kecil, sehingga ID default bersifat case-sensitive.

  • Apa batasan yang dimiliki oleh Sqids?

    Sqids tidak dapat mengkodekan angka negatif.

    Panjang abjad minimum adalah 3 karakter.

    Abjad tidak dapat mengandung karakter multibyte.

    Sqids tidak dapat menghasilkan ID hingga panjang tertentu, hanya setidaknya panjang tertentu. Rentang parameter panjang minimum adalah antara 0 dan 255.

    Sqids dapat mencoba untuk menghasilkan kembali ID hingga panjang abjad, dikurangi satu.

  • Bagaimana cara membuat ID saya unik?

    Perpustakaan menerima abjad kustom dari mana ia dapat menghasilkan ID. Cukup pra-mengocok abjad default yang disediakan.

    Harap diingat bahwa dengan cukup usaha, seseorang bisa menerjemahkan kembali abjad yang sudah diacak, jadi ini bukanlah teknik untuk menyembunyikan data sensitif.

  • Bagaimana cara mengacak abjad default?

    Abjad default dapat ditemukan di sini .

    Anda dapat menggunakan salah satu alat pengacakan string online atau playground kami.

  • Lebih baik menggunakan abjad yang lebih pendek atau lebih panjang?

    Tergantung pada kasus penggunaan Anda. Abjad yang lebih pendek akan menghasilkan ID yang lebih panjang, dan abjad yang lebih panjang akan menghasilkan ID yang lebih pendek. Anda dapat menggunakan playground untuk menguji bagaimana penampilan ID Anda mungkin.

  • Bisakah abjad saya terdiri hanya dari angka?

    Ya. Harap diingat bahwa ID yang dihasilkan masih merupakan string dan mungkin dimulai dengan nol.

  • Dapatkah saya menggunakan emoji sebagai abjad?

    Tidak. Sqids tidak mendukung karakter multibyte untuk abjad. Ini termasuk emoji serta banyak karakter lainnya.

  • Mengapa perlu padding ID?

    Perpustakaan dapat memperpanjang ID dengan karakter sampah untuk membuatnya terlihat lebih panjang. Ini berguna agar tidak terlalu jelas apakah Anda mengkodekan nomor kecil seperti 1 atau nomor besar seperti 1000000.

    Dekode tidak terpengaruh.

  • Dapatkah saya membuat ID yang dihasilkan menjadi lebih panjang?

    Ya, perpustakaan menerima parameter panjang minimum yang menjamin bahwa ID akan setidaknya memiliki panjang tersebut.

    Harap dicatat bahwa tidak ada jaminan seberapa lama panjang ID Anda — hanya bahwa mereka tidak akan lebih pendek dari panjang yang Anda tentukan.

  • Dapatkah saya membuat ID yang dihasilkan menjadi panjang secara spesifik?

    Hingga pada suatu titik.

    Mengatur panjang maksimal tidak mungkin karena suatu saat nanti ID Anda akan meluap dengan input yang cukup besar. Itulah mengapa hanya parameter panjang minimum yang didukung, dan panjang eksak atau panjang maksimal tidak.

  • Mengapa menggunakan daftar blokir?

    Daftar blokir dapat mencegah beberapa kata muncul dalam ID Anda. Ini bermanfaat karena ID yang dihasilkan dimaksudkan untuk muncul di tempat-tempat publik, seperti URL.

    Sqids datang dengan daftar blokir default yang berisi kata-kata kasar dan tidak pantas paling dasar dari beberapa bahasa. Tentu saja Anda dapat memperluas daftar blokir itu dengan kata-kata Anda sendiri.

  • Bagaimana cara daftar blokir bekerja?

    Pencocokan kata daftar blokir tidak peka huruf besar atau kecil.

    Kata-kata pendek kurang dari 3 karakter tidak akan diblokir. Kata-kata 3 karakter harus cocok persis dengan ID. Kata-kata 4 karakter atau lebih akan memicu pencocokan jika mereka menjadi substring dari ID.

    Jika kata-kata daftar blokir mengandung angka (leetspeak), mereka hanya akan memicu pencocokan jika mereka berada di awal atau akhir ID.

  • Kata-kata apa saja yang ada di daftar blokir default?

    Daftar blokir default berisi kata-kata kasar dan tidak pantas paling umum dari beberapa bahasa. Anda dapat menemukan daftar lengkap di sini .

  • Apa yang terjadi ketika semua ID diblokir?

    Ketika ID yang dihasilkan cocok dengan kata dalam daftar blokir, perpustakaan akan mencoba untuk menghasilkan kembali.

    Jika setiap percobaan gagal untuk menghasilkan kembali ID, fungsi enkode akan gagal dan mengembalikan kesalahan. Menangani kesalahan itu terserah pada pengguna.

    Cara terbaik untuk mengurangi jumlah percobaan regenerasi adalah dengan memiliki abjad yang lebih panjang, tidak menetapkan panjang minimum, dan menyediakan daftar blokir yang lebih kecil. Menyediakan daftar blokir kosong akan menonaktifkan fitur tersebut sepenuhnya.

  • Bagaimana cara memeriksa apakah ID valid?

    Dekode ID biasanya akan menghasilkan output numerik tertentu, tetapi itu tidak selalu berarti ID tersebut konsisten. Untuk memeriksa apakah ID konsisten, Anda dapat mengodekan kembali angka yang didekode dan memeriksa apakah ID cocok.

    Alasan ini tidak dilakukan secara otomatis adalah jika daftar blokir default berubah di masa depan, kami tidak ingin secara otomatis membuat ID yang dihasilkan sebelumnya menjadi tidak valid dan mungkin cocok dengan kata baru dalam daftar blokir.

  • Apa yang terjadi ketika daftar blokir default diperbarui?

    Kami pasti akan memperbarui CHANGELOG ketika dan jika daftar blokir default berubah.

    Anda harus mempertimbangkan skenario di mana kata baru mungkin ditambahkan ke daftar blokir default. Dalam hal ini, mengodekan ulang angka mungkin menghasilkan ID yang berbeda.

    Cara terbaik untuk memastikan ID Anda tetap konsisten dalam pembaruan di masa depan adalah dengan menyediakan daftar blokir kustom, bahkan jika identik dengan daftar blokir default saat ini.

  • Dapatkah pengkodean angka yang berbeda menghasilkan ID yang identik?

    Tidak, mengkodekan angka yang berbeda akan menghasilkan ID yang unik.

    Namun, karena desain algoritma, kadang-kadang mendekode ID acak dapat menghasilkan angka yang sama. Cara terbaik untuk memeriksa apakah ID konsisten adalah dengan hanya mengodekan ulang angka yang didekode dan memeriksa apakah ID cocok.

  • Apa itu Hashids?

    Hashids adalah versi pertama dari perpustakaan ini yang keluar sekitar tahun 2013. Itu juga menghasilkan ID yang pendek tetapi menggunakan metode yang sedikit berbeda.

  • Mengapa Hashids ditingkatkan menjadi Sqids?

    Hashids menangani beberapa hal secara berbeda.

    Perpustakaan ini tidak mendukung daftar blokir kustom, namun bergantung pada kata-kata kasar Bahasa Inggris yang paling umum. Perpustakaan ini juga menggunakan parameter salt untuk mengacak abjad, yang membuatnya sedikit membingungkan karena perpustakaan ini tidak ada hubungannya dengan enkripsi. Selain itu, perpustakaan ini menggunakan terlalu banyak karakter yang direserve yang menghasilkan ID yang lebih panjang.

    Oleh karena itu, kami memutuskan untuk melakukan peningkatan dan rebranding. Algoritma telah disederhanakan, beberapa fitur ditambahkan, dan repositori kode semuanya ada di satu tempat sekarang .

  • Mengapa parameter salt dihapus?

    Parameter salt digunakan untuk mengacak abjad, dan tidak pernah dimaksudkan untuk terkait dengan keamanan atau keselamatan. Baik Hashids maupun Sqids bekerja secara mirip dengan cara konversi desimal ke heksadesimal namun dengan beberapa penyesuaian. Tidak ada enkripsi dari jenis apapun, jadi untuk menghindari kebingungan, parameter itu telah dihapus sepenuhnya.

  • Apakah Hashids kompatibel dengan Sqids?

    Tidak, Sqids memperluas fungsionalitas dari Hashids dan memiliki tujuan desain & kebutuhan yang berbeda; oleh karena itu, ID yang dihasilkan tidak kompatibel dengan Hashids.

  • Bagaimana cara mengupgrade dari Hashids ke Sqids dengan aman?

    Karena tidak ada kompatibilitas antara Hashids dan Sqids, tidak mungkin untuk secara sederhana menggantikan Hashids dengan Sqids.

    Namun, Anda dapat menggabungkan kedua hal tersebut dengan membedakan ID mana yang berasal dari perpustakaan mana.

    Salah satu cara untuk melakukannya adalah dengan panjang ID - jika Anda beralih ke Sqids, Anda dapat memberikan panjang minimum yang lebih tinggi. Cara lain adalah dengan secara manual menambahkan/memperlihatkan karakter kustom ke ID yang baru dihasilkan.

    Terakhir, Anda juga dapat mencoba mendekode ID dengan Hashids untuk melihat apakah itu valid. Jika tidak - dekode dan kode ulang dengan Sqids untuk melihat apakah itu berhasil.

  • Dimana saya bisa menemukan perpustakaan Hashids asli?

    Setiap implementasi bahasa pada situs web ini menghubungkan ke repositori Hashids asli jika ada.

  • Bagaimana cara saya berkontribusi?

    Jika Anda ingin mendukung proyek ini, kami akan menghargai bintang repositori kami di Github untuk mendapatkan lebih banyak visibilitas.

    Jika Anda seorang pengembang dan tidak melihat implementasi Sqids untuk bahasa tertentu, silakan bantu kami mengonversi perpustakaannya. Hal yang sama berlaku untuk bahasa pemrograman yang tidak terdaftar.

    Jika Anda menemukan bug dalam spesifikasi atau salah satu implementasi, silakan buat isu atau permintaan tarik dengan perbaikan yang disarankan di repositori yang sesuai.

    Jika Anda bisa berbicara dalam beberapa bahasa, kami bisa menggunakan bantuan Anda dalam menyempurnakan daftar blokir dan menyesuaikan terjemahan situs web jika Anda menemui masalah.

    Terakhir, jika Anda memiliki pengalaman dengan Hashids/Sqids, silakan bantu komunitas kami dengan menjawab pertanyaan dari siapa pun.

  • Bagaimana cara memindahkan Sqids ke bahasa lain?

    Jika Anda ingin memporting Sqids ke salah satu bahasa berikut (atau yang baru yang tidak tercantum di sini):

    D , Io , Raku , Smalltalk , T-SQL , Tcl , VBA

    Fork repositori resmi ke akun Github Anda sendiri & implementasikan spesifikasinya bersama dengan semua tesnya. Anda dapat menggunakan kembali salah satu README yang sudah ada (contohnya ).

    Setelah perpustakaan siap, buat permintaan tarik. Setelah digabungkan, kami akan memperbarui situs web.

    Jika repositori tidak memiliki pengelola aktif, kami akan senang untuk mengundang Anda untuk mengelola repositori tersebut dan menjadi pengelola resmi.