web-dev-qa-db-ja.com

さまざまな落とし穴を回避しながら、ユーザーに一意で意味のある識別子を子ユーザーに割り当てる方法は?

私のアプリケーションでは、ユーザーに一意の識別子を割り当てる必要がありますが、これは思っていたよりもトリッキーであることが判明しています。

一括フィードからすべてのユーザーを読み込み、すべての割り当てをプログラムで行います。ユーザーは自分で選択することはできません。

また、特定の表示目的のために、すべてのユーザー名を同じ長さにしたいとします。

また、ユーザーは学区の生徒であり、子供であり、その一部はかなり若いので、名前は短く、適度に覚えやすいものでなければなりません。したがって、7桁のコードを生成するだけではあまりユーザーフレンドリーではありません。

私たちはそれぞれの子供の名前を知っていますが、子供を識別することに関する法律があります。たとえば、誰かが自分のユーザー名のスクリーンショットをオンラインで投稿できるようにして、誰かが自分の本名を識別できるようにしたくはありません。

このための私の最初のアイデアは、たとえば、名の最初の3文字、姓の最初の2文字を選択してから、衝突を避けるためにシーケンス番号を追加することでした。だから私のものはjosfr123

しかし、これは失敗しました。3人未満の名前を持つ子供もいるからです。しかし、もっとひどい問題は、少数のこれらの組み合わせが不名誉な言葉を生み出したことでした、そしてそれは私たちが一度でもそれを起こすことを許すことができないほど子供のためのソフトウェアでは悪いです。

これを防ぐのは驚くほど難しいことがわかります。何も綴らない文字の組み合わせがたくさんあるためですが、大声で読み込もうとすると、何かわいせつなものになります。これらすべてを確実にキャッチすることは不可能に思えます。できたとしても、そのユーザーの名前を生成する方法を見つける必要があります。

じゃあ何をすればいいの?

1
Joshua Frank

最新のシステムの場合、答えはおそらく絵文字です。

つまり、次のようなユーザー名を探しています。

  1. ユニークな
  2. 均一な長さ
  3. 思い出深い
  4. 数値だけでなく
  5. ユーザーが作成していません
  6. 書かれたり話されたりしてもわいせつではない
  7. 元に戻せない

システムがUnicodeをサポートしている限り、4つの絵文字のランダムなセットを一意のIDとして各ユーザーに割り当てることができます。 (#6の問題を回避するために)動物のシンボルを80のみに制限したとしても、4,000万を超えるIDが存在する可能性があります。幼い子供でも簡単に見つけることができるはずです????????????????彼らが探しているものを知っているか、それをログインプロンプトに入力した場合、リストに表示されます。

システム/データベースが従来のASCII文字(A-Z、0-9))に制限されている場合、いくつかの基準を緩めることができない限り、多くのオプションがない場合があります。

均一な長さはおそらく最も厳しい制限です。これは、記憶に残る文字列、または短すぎる場合はすべての値を使い果たしてしまうためです。その制限を解除できる場合は、ランダムな辞書の単語を2人ずつ各人に割り当てることができます。 #6にぶつからないように、Wordリストを再確認する必要があるかもしれませんが、それはばか者の用事かもしれません。子供たちはすべてに二重の意味を読むことができ、俗語は常に変化しています。今日の安全なユーザーIDは、学期末までに中傷的な言葉になる可能性があります。

覚えやすいことをあきらめることは、好きなランダムな文字列を使用できるため、解除する次の最も簡単な制限です。明らかに、これは推奨されるオプションではありません(そして、宿題を提出するために「ed5331aa90」を記憶することを余儀なくされた小学校の生徒にはすでに気分が悪くなっています)。

古いインフラストラクチャで絵文字ベースのソリューションを使用する場合の考えられる回避策は、ユーザーIDを絵文字としてユーザーに表示し、それをバックグラウンドでUnicode値として保存することです。ユーザー1f98a1f98b1f4221f414を追跡できますが、子供は覚えているだけですか????????????????.

3
Nathan Rabe