Kimliklerde görsel olarak belirsiz karakterleri anlamak
- Görsel olarak belirsiz karakterler, belirli yazı tiplerinde veya el yazısında ayırt edilmesi zor olan karakterlerdir
- O/0, I/l/1/7, 5/S, 2/Z, 8/B, 6/G, 9/q/g buna dahildir
- Bu karakterler veri girişi sırasında hata ve karışıklığa yol açabilir
- Kullanıcının
O ile 0'ı ayırt edemeyip yanlış kod girmesi gibi, kötü bir kullanıcı deneyimine neden olabilir
- Kimliğin sözlü olarak iletildiği veya elle yazılması gereken durumlarda özellikle önemlidir
- müşteri desteği, indirim kodu, takip kodu, hata kimliği, ürün kimliği vb.
Büyük/küçük harf ayrımı yapılıp yapılmayacağına karar vermek
- Kimliklerde büyük/küçük harf ayrımı yapılıp yapılmayacağına karar verilmelidir
- Büyük/küçük harf ayrımı varsa, görsel belirsizlik dışlandığında seçilebilecek karakter sayısı 53'tür
- Büyük/küçük harf ayrımı yoksa seçilebilecek karakter sayısı 22'dir
- Kimlik uzunluğu 5 karakter olduğunda olası kimlik sayısı:
- Büyük/küçük harf ayrımı var: 53^5 = 418,195,493
- Büyük/küçük harf ayrımı yok: 22^5 = 5,153,632
- Ancak kimlik uzunluğu arttıkça mümkün olan kimlik sayısı geometrik olarak artar
- Bu nedenle kimlik uzunluğu ile görsel belirsizlik olasılığı arasında bir denge bulunmalıdır
- Ayrıca hem büyük hem küçük harf kullanmak, büyük/küçük harf ayrımı yapmayan üçüncü taraf sistemlerde beklenmedik sorunlara yol açabilir
Görsel olarak net karakter kümesi
- Okunabilirlik öncelikliyse, aşağıdaki karakter kümesinin kullanılması önerilir:
- [ "a", "b", "c", "d", "e", "f", "h", "i", "j", "k", "m", "n", "o", "p", "r", "s", "t", "w", "x", "y", "3", "4"]
Ek değerlendirmeler
- Belirli karakter kombinasyonları başka karakterler gibi görünebilir (
rn'in m gibi, 3'ün w gibi görünmesi gibi)
- Kimlik üretim aşamasında bu tür kombinasyonlardan kaçınmak iyi olur
- Telaffuzu benzer karakterlerden de kaçınmak iyi olur (
b ile p gibi)
- Özellikle kimliğin sözlü olarak iletildiği durumlarda önemlidir
Mevcut örnekler
- Crockford's Base32: Belirsiz karakterleri aynı değere decode eder ve istemeden küfür oluşma ihtimalini de dikkate alır
- Open Location Code:
23456789CFGHJMPQRVWX karakter kümesini kullanır. Görsel belirsizlikten kaçınmanın yanı sıra, yaygın dillerde kelime oluşumunu da önlemeyi amaçlar. Ancak 6/G ve 9/Q dahildir.
GN⁺ görüşü
- Kimlik üretiminde kullanılabilirlik ve okunabilirlik en yüksek öncelik olmalıdır. Özellikle kimliğin sözlü olarak iletildiği veya elle yazılması gereken durumlar sık yaşanıyorsa bu daha da önemlidir.
- Görsel belirsizliği en aza indirebilen bir karakter kümesi seçerken, kimlik uzunluğu ile mümkün kombinasyon sayısı arasında uygun bir denge bulmak önemlidir.
- Ayrıca üçüncü taraf sistemlerle entegrasyon sırasında beklenmedik sorunlar çıkabileceği için, büyük/küçük harf ayrımı dikkatle kararlaştırılmalıdır.
- Kimlik üretim mantığında belirli karakter kombinasyonlarını dışlamak veya telaffuzu benzer karakterlerden kaçınmak gibi ek değerlendirmeler de gereklidir.
- Crockford's Base32 veya Open Location Code gibi örneklerden yararlanarak, projenin gereksinimlerine uygun en iyi karakter kümesini tasarlamak yerinde olacaktır.
3 yorum
Bu da iyi görünüyor: https://stackoverflow.com/a/58098360/8556340
Telaffuzu bile hesaba katmış olmaları gerçekten hayranlık verici.
Hacker News yorumu
Math::Fleximal) yüzünden beklenmedik destek talepleri alınmıştı. Bunun nedeni, birinin onaltılık sayıları alfasayısal koda dönüştüren demo kodunu production'da kullanmasıydı.