認蚌ぞの神のアプロヌチ

1992幎にバヌゞニア倧孊でコンピュヌタヌサむ゚ンスをテヌマにした簡易圢匏のコヌスを修了したした。 単玔化されたコヌスを遞んだ理由は、バヌゞニア倧孊の通垞のCSコヌスには工孊孊校が必芁であり、数孊ず物理孊の準備ができおいなかったからです。 簡略化されたコヌスの矎しさは、興味のあるすべおの科目にアクセスでき、残りはスキップできるこずでした。



私のお気に入りのテヌマの1぀は、少なくずも䜕よりも芚えおいるこずですが、「アルゎリズム」でした。 私はい぀もこれに぀いお尋ねる人々に、この䞻題がプログラマヌずしおの私の圢成に最も圱響を䞎えたず蚀いたす。 正確な理由はわかりたせんが、数幎前に奇劙な予感があり、䜕らかの理由でRandy Pausch  同じ本の著者の ペヌゞに行きたした。 圌が圌のコヌスのために孊生を募集しおいるのを芋぀けお驚いた。 完璧な時期でした。バヌゞニア倧孊、1991幎秋、CS461アルゎリズムの分析ずコヌス内の50人の孊生。 私もその䞀人でした。



そしお、間違いなくこのコヌスに感銘を受けたした。 パりシュは非垞に玠晎らしくカリスマ的な教垫であり、叀い遞択の意味を理解しおいるので、最初に教垫を遞択する必芁がありたす。 それは珟実をずおも反映しおいたす。



アルゎリズムはプログラミングの最も重芁ではないにしおも、最も重芁な郚分の1぀であるため、優れた教垫ずテヌマの組み合わせがうたくいきたした。 新しいアルゎリズムを発明したわけではありたせんが、既存のアルゎリズムを理解し、さたざたな入力デヌタで実行速床を評䟡し、タスクに適したアルゎリズムを決定する必芁がありたした。 これらは私たちのコヌスの目暙でした。



そしお、Randy Pauschが教えおくれた最もクヌルなこずの1぀は、アルゎリズムを遞択する前に次の質問を自問するこずでした。

神はどのアルゎリズムを遞択したすか












神がリストを䞊べ替える際に、バブル゜ヌト、クむック゜ヌト、たたは人間のようなシェルの゜ヌトを遞択しなかったこずは明らかです。 圌はただちにすべおのオブゞェクトを正しい順序に䞊べたした。 ワンステップで。 ランタむムの䞋限はO1です。 特定の時間ではなく、ほんの䞀歩です。 䞀瞬で。 結局のずころ、あなたは神です。



そのような考えはその時に私の心を吹き飛ばしたした。



私は、人々が神の圹割を果たす必芁があるために、本圓のプログラマヌになるのではないかずい぀も疑っおいたした。 Randy Pauschはこの抂念を採甚し、それを䜿甚しお問題の境界を蚭定する方法を明確に瀺し、自分が䜕をしおいるのか、なぜそれに぀いお耇雑な質問をするのかを自問したした。



そのため、 Discourseの認蚌りィンドりを䜜成したずきに、このコヌスで孊習した内容に戻り、1぀の質問をしたした。

神はこのりィンドりをどのように実装したすか




もちろん、答えは明らかです。神はこのりィンドりの開発に関䞎しないでしょう。 なんで 圌は神であり、䞀床申請に登録するず、圌はあなたが誰であるかを垞に理解したす。



神は私たちの投資家ではないので、明らかな理由で、これは私たちにずっお䞍可胜な仕事です。



しかし、認蚌ぞの神聖なアプロヌチの実装にどれだけ近づくこずができたすか それは間違いなく高貎で䟡倀のある成果です。











ビル・ゲむツは、なぜすべおのプログラマヌが䜕床も䜕床もファむルを遞択するために同じりィンドりを曞く理由を尋ねたせんでしたか この問題は、認蚌に起因する堎合もありたす。 なんで 私は長い間、最高の認蚌りィンドりは完党に存圚しないず蚀っおきたしたが、これが可胜なあらゆる状況でネットワヌクドラむバヌを䜿甚した認蚌のアむデアを絶察にサポヌトしたす。 したがっお、他のサヌビスを介しおリ゜ヌスを入力する可胜性を認識しおいる堎合、私たちのチヌムは完党にあなたず連垯しおいたす。











しかし、今日は最も重芁な認蚌方法であるナヌザヌ名以䞋、ログむンずパスワヌドに泚意を向けたいず思いたす。 これは、他の方法を実装するたでサむトにアクセスする䞻な方法です。



2぀のフィヌルド、2぀のボタン、およびリンクを持぀認蚌フォヌムは、非垞にシンプルに芋えたすよね これが暙準です。 ナヌザヌがログむンに問題を起こすたで真。 考え盎しおみたしょう。



ナヌザヌがメヌルを䜿甚しおサむンむンできるようにしたす



私がこのサヌビスをサむトに入る方法ずしお本圓に気に入っおいたずいう事実にもかかわらず、重倧なOpenID゚ラヌは、ナヌザヌがURLを識別子ずしお䜿甚できるず仮定したこずでした。 これは奇劙で間違った決定であり、長い目で芋ればOpenIDが将来の暙準にならない理由ずなりたした。



ログむン時のナヌザヌIDはメヌルのみです。 シンプルで明確。 パスワヌドを忘れるずどうなりたすか メヌルを䜿甚しお埩元したすか 圌女はあなたの識別子です。 䞀郚の人はそれを認蚌する唯䞀の方法にするこずさえ提案したす。











もちろん、䞀意のナヌザヌ名を持぀こずは良いこずですが、垞にナヌザヌがサむトに入る方法を電子メヌルたたは䞀意の名前を䜿甚しお遞択できるようにしたす。 これは、100の確率で、ナヌザヌがパスワヌドを忘れた堎合、パスワヌドをリセットたたは埩元するために、いずれにしおもメヌルを䜿甚する必芁があるず蚀えるからです。 メヌルずパスワヌドは、垞に䞀緒に䜿甚される関連性の高い抂念です。 い぀も



そしお、自分のメヌルを䞀意の識別子ずしお䜿甚するこずを蚱可しおいないサヌビスで、fuを衚明したいず思いたす。私はあなたをフォロヌしおいたす。



メヌルのあるアカりントが存圚しない堎合、ナヌザヌに通知したす。



さお、今では、メヌルはほずんどの人にずっお事実䞊の識別基準であり、これは論理的か぀必芁な事態であるこずがわかっおいたす。 しかし、あなたのサむトで私の倚くのメヌルのどれを䜿うべきですか



これにより、他のナヌザヌがパスワヌド回埩の圢匏でメヌルを入力するずきに、他のナヌザヌの個人デヌタを衚瀺するかどうかに぀いおの談話に関する倚くの議論が生じたした。 倚くのサむトでは、パスワヌド回埩フォヌムにメヌルを入力するず、次のメッセヌゞが衚瀺されたす。

このアドレスのアカりントが存圚する堎合、パスワヌドをリセットする手順が電子メヌルで送信されおいたす。




この問題のキヌワヌドはifです。これは、リ゜ヌスのナヌザヌの個人デヌタを開瀺する可胜性を完党に排陀したす 。



談話を開発する際にこれらのこずを真剣に考えおいるため、倖郚ぞのメヌルデヌタの開瀺にさらされるこずはありたせん。 しかし、倚くのナヌザヌがメヌルを掚枬しようずするず、「今回はどのような皮類のメヌルを入力したすか」ずいう通知を受け取りたした。











そのため、サヌビスに存圚しない通知メヌルに衚瀺するこずが決定されたした。 この゜リュヌションは、完党に安党でナヌザヌフレンドリヌです。 必芁に応じお、サヌビスの蚭定でメヌルを䜿甚したこのような操䜜を犁止できたす。



ナヌザヌがい぀でもログむンフォヌムず登録フォヌムを切り替えられるようにする



倚くのサむトでは、ログむンボタンず登録が隣り合わせに衚瀺されたす。 これは私を困惑させたした。認蚌プロセスず登録プロセスがたったく異なるからです。



たあ、ナヌザヌの芳点から、これは完党に真実ではないかもしれたせん。 有名な雑誌The Vergeのサむトにあるログむンフォヌムは、ログむンフォヌムず登録フォヌムがどれだけ近いかを瀺しおいたす。











これらのプロセス間に特定の類䌌性が存圚するこずを認識しおいるため、スむッチを介しお実装するこずで䞡方のフォヌムを同時に利甚できるようにしたした。











これらのフォヌムは䞡方ずもポップアップりィンドりを介しお実装され、画面から簡単に削陀したり、ログむンたたは登録ボタンを抌しお再び衚瀺したりできたす。











簡単な蚀葉を遞ぶ



これは倧きな蚀語の問題です。 同じこずを意味する蚀葉がたくさんありたす。





これらの蚀葉のどれが最も適切ですか ナヌザヌデヌタずそのナヌザヌ動䜜の調査結果も誀っお解釈され、さらに゚ラヌが発生する可胜性がありたす。



私は簡朔さず簡朔さが奜きなので、できるだけ短い蚀葉を䜿甚するこずを奜みたす。 しかし、これらのこずは非垞に頻繁に状況ずナヌザヌの奜みに䟝存したす 。











ログむンは最も䞀般的で盎感的にタスクに適しおいたすが、ログむンはコンピュヌタシステムに固有の歎史的に発展した特定の意味を持っおいるため、この蚀葉も䟡倀がありたす。



数幎前、私はアメリカずむギリスで最も人気のあるサむトに぀いお、どの蚀葉が䜿われおいるかに぀いお調査したした。 サむンむンの䜿甚量が普及しおおり、垞に増加しおいるこずに気付きたした。 そしお、これは人気のあるサむトで特に顕著です。











䞀般的なブラりザのパスワヌドマネヌゞャヌず連携する



䜜成する認蚌の各圢匏は、次のような䞀般的なブラりザのパスワヌドマネヌゞャヌず互換性があり、機胜する必芁がありたす。





これは必芁最小限です。 ブラりザヌの1぀で次に認蚌を詊行するず、ナヌザヌIDずパスワヌドのフィヌルドが入力されたす。











ナヌザヌはブラりザに組み蟌たれたこれらのものに䟝存しおおり、認蚌の実装ではこの事実を尊重し、それを考慮しお実装する必芁がありたす。 たずえば、HTMLコヌドでは、パスワヌドフィヌルドに次の属性が必芁です。type= passwordず、このフィヌルドをパスワヌドフィヌルドずしお識別する名前。



LastPassなど、サヌドパヌティのパスワヌドマネヌゞャヌも倚数ありたすが、ほずんどの堎合、人気のあるブラりザヌの組み蟌みマネヌゞャヌず連携するこずに集䞭する䟡倀がありたす。 フォヌムがそれらで機胜する堎合、サヌドパヌティのマネヌゞャヌで機胜する可胜性が最も高くなりたす。



最も䞀般的なナヌザヌ゚ラヌを凊理する



ナヌザヌはCaps Lockでパスワヌドを入力したすか 圌にそれに぀いお譊告しおください。











圌はname@gmail.comの代わりにname@gmail.coを䜿甚しおメヌルを入力したしたか あるいは、name @ hotmail.comの代わりにname@hotmail.cmを曞いたのでしょうか たた、これらの゚ラヌを修正し、これに぀いおナヌザヌに譊告する必芁がありたす。



 パスワヌドスヌヌピング機胜の倧ファンでもありたす。ナヌザヌはパスワヌドを正しく入力したかどうかを確認できたす。InternetExplorerのみがSafariでこの機胜をサポヌトしおいるようですが、他の人もサポヌトする必芁がありたす。



ナヌザヌが正しいパスワヌドを遞択できるようにする



password123、Iloveyouなどのように 、発音が難しくなく困難ではないパスワヌドを遞択する正しい方法を教える倚くの方法がありたす。



入力䞭にパスワヌドの匷床を枬定する簡単な方法がありたす。 そしお、それを䜿甚するこずをお勧めしたす。

これは良い考えですが、䞀郚のサむトでは邪魔に芋えたす。 パスワヌドの匷床の基準はサヌビス自䜓によっお決定されるため、これを実装するこずも望たれおいたす。 あるサむトでは、パスワヌドは信頌できたすが、別のサむトでは、しきい倀を入力するこずさえ蚱可されたせん。











したがっお、 談話では、別の方法で行うこずにしたした。 パスワヌドの最小の長さを8文字にし、そのハッシュによっお䞖界で最も人気のある10,000個のパスワヌドに含たれるかどうか決定したした 。











キヌボヌドを忘れないでください



キヌボヌドを䜿甚しおサむトずやり取りするナヌザヌは死にかけおいたすが、ただ生きおいる人にずっおは、キヌボヌドを䜿甚しおフォヌムの芁玠をナビゲヌトできるようにするこずは䟡倀がありたす。











そしお、意図したずおりに動䜜するこずを確認しおください。



詊行回数をすべおの可胜なアクションに制限したす





サむトで可胜なアクションを実行しようずするナヌザヌの詊行回数を制限する必芁がありたす。 これは特に認蚌フォヌムに圓おはたりたす。



誰かがパスワヌドを忘れお、サむトぞの入力たたはパスワヌドのリセットを3回詊みた堎合、これは正垞です。 しかし、誰かがこれを1000回行った堎合、これはかなり奇劙です。 私はこれが人ではないこずを提案するためにベンチャヌしたす。











アカりントを䞀時的にブロックしたり、耇数回ログむンに倱敗した堎合にキャプチャを衚瀺するなど、面癜いこずを行うこずができたす。 しかし、そのようなものに倢䞭になりすぎないでください。



同じIPアドレスからパスワヌドを入力たたは回埩するために、暙準の䞀時停止を適床に間隔を空けお䜿甚するこずをお勧めしたす。 そしお、私たちのサむトでやった。



蚀及し忘れたもの



私は、 談話の理想的なフォヌムを開発する際に経隓したこずをすべお思い出そうずしたしたが、䜕かを忘れたり、十分な詳现を䌝えなかったず確信しおいたす。 私たちの談話プロゞェクトは100オヌプンであり、垞に進化しおいたす。 い぀でも実装を確認しおテストできたす。



認蚌りィンドりには、2぀のフィヌルド、リンク、2぀のボタンがある単玔なフォヌムが含たれおいたす。 それでも、䞊蚘のすべおを読んだ埌、この単玔さが欺かれおいるこずに同意するず思いたす。 最善の解決策は、認蚌フォヌムをれロから蚭蚈するのではなく、可胜な限りサヌドパヌティの認蚌゜ヌスに䟝存するこずです。



この蚘事は翻蚳です。 このリンクで元の蚘事を芋぀けるこずができたす。



All Articles