16

私はスタックオーバーフローバッジに似たものを実装しようとしています。また、それらをゲームの成果と同一視することもできます。

しかし、それらのデータベース/コード/追跡を設計する方法がわかりません。

次のようなバッジに対して何をすべきかがわかります。

利他主義者 × 1456 他の人の質問に対して手動で授与した最初の報奨金

それらは 1 回限りのイベントであるためですが、次のような他のイベントを処理する方法は次のとおりです。

Analytical × 16389 FAQ のすべてのセクションにアクセスした
Electorate × 1783 600 の質問に投票し、合計投票の 25% 以上が質問に投票した 率直な × 188 10 人の異なるユーザーがスターを付けた 10 のメッセージをチャットに投稿した

等...

それらを処理する方法、それぞれの進行状況を追跡する方法など...それらの設計パターンを理解するのに役立つチュートリアルまたは何かがありますか?

4

1 に答える 1

17

与えられた例では、基本的に 2 つのメカニズムが必要になります。

SOでどのように行われるのかわかりません。これは単なる解決策の提案です。

最初に「分析」を見てみましょう。ユーザーが FAQ の特定の領域にアクセスしたときに、単純なフラグを使用して記録する必要があります。各 FAQ セクションのフィールドとユーザー ID を持つ DB テーブルを考えてみましょう。これは "N" (または 0、またはフラグを表現したい) として始まります。ユーザーがその領域にアクセスすると、そのフィールドを「Y」に反転するコードを呼び出します。すべてのフィールドが「Y」の場合、そのバッジを授与できます。

「有権者」と「率直」については、クエリ自体がそれほど負担にならないと仮定して、既存のデータに対するクエリを使用してこの情報を取得できます。これらのチェックをいつ実行するかを検討する必要があります。これは基本的に 2 つのオプションに要約されます。

1) バッジが授与される可能性のあるアクションが実行されたとき (つまり、FAQ のセクションにアクセスする、質問に投票する、他の人がスターを付けた質問)

2) 定期的に (毎時、毎日など)、現在のデータに対してすべてのバッジのチェックを実行します。

バッジは Stackoverflow では一方向であるため、同等にしたい場合は、バッジを「授与しない」ロジックを考慮する必要はありません。

于 2012-04-05T12:30:22.753 に答える