• Sqids nedir?

    Sqids, sayılardan kısa, benzersiz, rastgele görünümlü kimlikler üretebilen küçük bir açık kaynaklı kütüphanedir.

    Onu düşünmenin en iyi yolu bir ondalık-hexadecimal dönüştürücüsü gibi, ancak birkaç ek özellikle.

  • Bağlantı kısaltma, kayıt için benzersiz etkinlik kimlikleri oluşturma, web sitesindeki ürün/nesne kimlikleri oluşturma (videolar için YouTube'un yaptığı gibi), metin mesajları için kısa kimlikler oluşturma, e-postalardaki onay kodları vb.

  • Hassas veriler her türlüdür. Üretilen kimlikler kripto değildir ve sayılara geri çözülebilirler. Örneğin, kullanıcı kimlikleri için iyi bir seçim olmayabilir, çünkü çözüldükten sonra uygulamanızın kullanıcı sayısını ortaya çıkarabilirler.

  • Bir seferde birden fazla sayıyı kodlayabilir miyim?

    Evet. Sqids, bir veya birden fazla negatif olmayan sayıyı tek bir kimliğe kodlayabilir. Kaç sayıyı kodlayabileceğiniz konusunda bir sınırlama yoktur, ancak kodlayabileceğiniz sayının büyüklüğüne (uygulama diline bağlı olarak) bir sınırlama vardır.

    Bu çeşitli nedenler için faydalıdır: Bir UNIX zaman damgasını kodlayabilir ve sona eren kimlikler oluşturabilir veya bir veritabanı parçacık numarasını birincil anahtarla kodlayabilir ve ekstra veritabanı sorgularında tasarruf edebilirsiniz.

  • Üretilen kimlikler benzersiz midir?

    Evet, üretilen kimlikler girdi ve alfabeye özgüdür.

    Ancak, varsayılan alfabe hem büyük harfleri hem de küçük harfleri içerdiğinden, varsayılan kimlikler büyük/küçük harfe duyarlıdır.

  • Sqids'ın hangi kısıtlamaları var?

    Sqids negatif sayıları kodlayamaz.

    Minimum alfabe uzunluğu 3 karakterdir.

    Alfabe çoklu baytlı karakter içeremez.

    Sqids, belirli bir uzunluğa kadar kimlik üretemez, sadece belirli bir uzunluğun altında. Minimum uzunluk parametre aralığı 0 ile 255 arasındadır.

    Sqids, alfabe uzunluğuna eksi bir kadar kimlik yeniden oluşturmayı deneyebilir.

  • Kimliklerimi nasıl benzersiz yapabilirim?

    Kütüphane, kimlikler oluşturabileceği özel bir alfabeyi kabul eder. Sadece sağlanan varsayılan alfabeyi önceden karıştırın.

    Lütfen yeterli çaba harcanırsa, birisi karışık alfabenizi tersine mühendislik yapabilir, bu nedenle bu hassas verileri gizlemek için bir teknik kesinlikle değildir.

  • Varsayılan alfabeyi nasıl karıştırabilirim?

    Varsayılan alfabe burada bulunabilir.

    Herhangi bir çevrimiçi dize karıştırma aracını veya oyun alanımızı kullanabilirsiniz.

  • Daha kısa mı yoksa daha uzun bir alfabe mi kullanmak daha iyidir?

    Kullanım durumunuza bağlıdır. Daha kısa bir alfabe daha uzun kimlikler üretecek, daha uzun bir alfabe ise daha kısa kimlikler üretecektir. Kimliklerinizin nasıl görünebileceğini test etmek için oyun alanını kullanabilirsiniz.

  • Alfabem yalnızca sayılardan oluşabilir mi?

    Evet. Üretilen kimlikler hala dizelerdir ve sıfır ile başlayabilirler.

  • Alfabeyi emoji olarak kullanabilir miyim?

    Hayır. Sqids, alfabede çoklu baytlı karakterleri desteklemez. Bu, emojilerin yanı sıra birçok başka karakteri de içerir.

  • Neden kimlikleri doldurmalıyım?

    Kütüphane, kimlikleri göründüklerinden daha uzun göstermek için gereksiz karakterlerle genişletebilir. Bu, 1 gibi küçük bir sayıyı kodladığınızda veya 1000000 gibi büyük bir sayıyı kodladığınızda bu kadar açık olmadığı için yararlıdır.

    Çözme etkilenmez.

  • Üretilmiş kimlikleri daha uzun yapabilir miyim?

    Evet, kütüphane, kimliklerin en az o uzunlukta olacağını garanti eden bir minimum uzunluk parametresini kabul eder.

    Lütfen kimliklerinizin ne kadar uzun olacağı konusunda bir garanti olmadığını, sadece belirttiğiniz uzunluktan daha kısa olmayacaklarını unutmayın.

  • Üretilmiş kimlikleri belirli bir uzunlukta yapabilir miyim?

    Belli bir noktaya kadar.

    Maksimum uzunluğu belirlemek mümkün değil çünkü elbet bir noktada kimlikleriniz büyük bir giriş verildiğinde taşacak. Bu nedenle yalnızca minimum uzunluk parametresi desteklenir ve kesin uzunluk veya maksimum uzunluk desteklenmez.

  • Neden bir engelleme listesi kullanmalı?

    Engelleme listesi, kimliklerinizde belirli kelimelerin görünmesini engelleyebilir. Bu, üretilen kimliklerin URL gibi halka açık yerlerde görünmesi amaçlandığı için faydalıdır.

    Sqids, çeşitli dillerden en temel küfür ve uygunsuz kelimeleri içeren varsayılan engelleme listesi ile birlikte gelir. Elbette bu engelleme listesini kendi kelimelerinizle genişletebilirsiniz.

  • Engelleme listesi nasıl çalışır?

    Engelleme listesi kelime eşleme durumu duyarlı değildir.

    3 karakterden daha kısa olan kısa kelimeler engellenmeyecek. 3 karakter uzunluğundaki kelimeler tam olarak kimliklerle eşleşmelidir. 4 karakter veya daha uzun kelimeler, kimliklerin bir alt dizisi olmaları durumunda bir eşleşme tetikleyecektir.

    Engelleme listesi kelimeleri sayılar içeriyorsa (leetspeak), yalnızca kimliklerin başında veya sonunda olduklarında bir eşleşme tetikleyeceklerdir.

  • Varsayılan engelleme listesinde hangi kelimeler var?

    Varsayılan engelleme listesi, birçok dildeki en yaygın küfürleri ve uygunsuz kelimeleri içerir. Tam listeyi burada bulabilirsiniz.

  • Tüm kimlikler engellendiğinde ne olur?

    Oluşturulan kimlik engelleme listesindeki bir kelimeyle eşleştiğinde, kütüphane kimliği yeniden oluşturmaya çalışır.

    Her bir deneme kimliği yeniden oluşturamazsa, kodlama işlevi başarısız olacak ve bir hata döndürecektir. Bu hatayı işlemek kullanıcının sorumluluğundadır.

    Yeniden oluşturma denemelerinin sayısını azaltmanın en iyi yolu, daha uzun bir alfabeye sahip olmak, minimum uzunluğu belirlememek ve daha küçük bir engelleme listesi sağlamaktır. Boş bir engelleme listesi sağlamak özelliği tamamen devre dışı bırakır.

  • Kimliklerin geçerli olup olmadığını nasıl kontrol edebilirim?

    Kimlikleri çözme genellikle bir tür sayısal çıktı üretir, ancak bu her zaman kimliğin kanonik olduğu anlamına gelmez. Kimliğin geçerli olup olmadığını kontrol etmek için, çözülmüş sayıları yeniden kodlayabilir ve kimliğin eşleşip eşleşmediğini kontrol edebilirsiniz.

    Bunun otomatik olarak yapılmamasının nedeni, varsayılan engelleme listesinin gelecekte değişmesi durumunda, geçmişte oluşturulmuş olan ve şimdi yeni bir engelleme listesi kelimesiyle eşleşen kimlikleri otomatik olarak geçersiz kılmak istememizdir.

  • Varsayılan engelleme listesi güncellendiğinde ne olur?

    Varsayılan engelleme listesi değişirse, CHANGELOG'i güncelleyeceğiz.

    Varsayılan engelleme listesine yeni bir kelimenin eklenme olasılığını hesaba katmalısınız. Bu durumda, sayıları yeniden kodlama farklı bir kimlik üretebilir.

    Gelecekteki güncellemeler boyunca kimliklerinizin tutarlı kalmasının en iyi yolu, mevcut varsayılan engelleme listesi ile aynı olsa bile özel bir engelleme listesi sağlamaktır.

  • Farklı sayıları kodlama aynı kimlikleri üretebilir mi?

    Hayır, farklı sayıları kodlamak benzersiz kimlikler üretecektir.

    Ancak, algoritmanın tasarımı nedeniyle rastgele kimlikleri çözme bazen aynı sayıları üretebilir. Kimliğin kanonik olup olmadığını kontrol etmenin en iyi yolu, basitçe çözülmüş sayıları yeniden kodlamak ve kimliğin eşleşip eşleşmediğini kontrol etmektir.

  • Hashids nedir?

    Hashids, 2013 civarında piyasaya çıkan bu kütüphanenin ilk sürümüydü. Ayrıca kısa kimlikler üretiyordu ancak biraz farklı bir yöntem kullanıyordu.

  • Hashids neden Sqids olarak yükseltildi?

    Hashids birkaç şeyi farklı ele alıyordu.

    Özel bir engelleme listesini desteklemedi, bunun yerine en yaygın İngiliz küfür kelimelerine güveniyordu. Ayrıca, kütüphane şifrelemeyle hiçbir ilgisi olmadığı için alfabeyi karıştırmak için salt parametresini kullanması biraz kafa karıştırıcıydı. Ayrıca, çok sayıda rezerve karakter kullanılması daha uzun kimliklerin üretilmesine neden oldu.

    Bu nedenle, yükseltmeye ve yeniden markalaşmaya karar verdik. Algoritma basitleştirildi, birkaç özellik eklendi ve kod depoları artık bir çatı altında toplandı.

  • salt parametresi neden kaldırıldı?

    salt parametresi alfabeyi karıştırmak için kullanılmıştı ve güvenlik veya güvenlikle ilişkilendirilmek istenmemiştir. Hem Hashids hem de Sqids, ondalık sayıdan onaltılık dönüşümün nasıl çalıştığına benzer bir şekilde çalışır, ancak bazı ayarlamalarla. Herhangi bir şifreleme yoktur, bu nedenle karışıklığı önlemek için o parametre tamamen kaldırılmıştır.

  • Hashids Sqids ile uyumlu mu?

    Hayır, Sqids, Hashids'in işlevselliğini genişletir ve farklı tasarım hedefleri ve gereksinimleri vardır; bu nedenle üretilen kimlikler Hashids ile uyumlu değildir.

  • Hashids 'den Sqids 'e nasıl güvenli bir şekilde yükseltilebilirim?

    Hashids ve Sqids arasında uyumluluk olmadığı için Hashids'i basitçe Sqids ile değiştirmek imkansızdır.

    Ancak, her bir kimliğin hangi kütüphaneye ait olduğunu ayırarak ikisini birleştirebilirsiniz.

    Bunun bir yolu, kimlik uzunluğuna göre - Sqids'e geçiyorsanız, daha yüksek bir minimum uzunluk sağlayabilirsiniz. Başka bir yol, yeni oluşturulan kimliklere manuel olarak özel bir karakter eklemektir.

    Son olarak, bir kimliği Hashids ile çözümlemeyi ve geçerli olup olmadığını görmek için deneyebilirsiniz. Değilse - Sqids ile çözümleyip yeniden kodlamayı deneyin.

  • Orijinal Hashids kütüphanelerini nereden bulabilirim?

    Bu web sitesindeki her dil uygulaması, varsa orijinal Hashids deposuna bağlantı sağlar.

  • Nasıl katkıda bulunabilirim?

    Projeyi desteklemek istiyorsanız, Github'daki depolarımızı yıldızlayarak daha fazla görünürlük sağlarız.

    Bir geliştiriciyseniz ve belirli bir dil için Sqids uygulaması bulamıyorsanız, lütfen kütüphaneyi dönüştürmemize yardımcı olun. Aynı durum listelenmeyen bir programlama dili için de geçerlidir.

    Özellikle özellikte veya uygulamalardan herhangi bir hata görürseniz, uygun depoda önerilen bir düzeltme ile bir sorun veya bir birleştirme isteği oluşturun.

    Birden fazla dil konuşuyorsanız, engelleme listesini hassas bir şekilde ayarlama ve web sitesi çevirilerini ayarlama konusunda yardımınıza ihtiyacımız varsa, lütfen herhangi bir sorun görürseniz.

    Son olarak, Hashids/Sqids ile biraz deneyiminiz varsa, lütfen topluluğumuzu herhangi birinin sorularına cevaplayarak yönlendirmemize yardımcı olun.

  • Sqids'i başka bir dile nasıl taşıyabilirim?

    Sqids'i aşağıdaki dillerden birine (veya burada listelenmeyen yeni bir dile) taşımak istiyorsanız:

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

    Resmi deposunu kendi Github hesabınıza klonlayın ve spec ile birlikte tüm testleri uygulayın. Mevcut README'lerden herhangi birini tekrar kullanabilirsiniz (örnek ).

    Kütüphane hazır olduğunda bir birleştirme isteği oluşturun. Birleştirildikten sonra, web sitesini güncelleyeceğiz.

    Eğer depoda aktif bakıcı yoksa, sizin yönetmeniz ve resmi bakıcı olmanız için sizi davet etmekten mutluluk duyarız.