Domanda

Stavo lavorando a un progetto qualche mese fa e avevo la necessità di implementare un file sistema di premiazione.Simile a SIl sistema di badge di tackOverflow. Distintivi

Potrei non averlo implementato nel miglior modo possibile e sono curioso di sapere cosa ne diresti.


Quale potrebbe essere un buon modo per tenere traccia delle attività degli utenti, necessarie per l'assegnazione dei badge?

Il sistema di Stackoverflow deve essere a conoscenza di molte informazioni e ho anche l'impressione che ci sarebbe molta elaborazione dei dati a complicare le cose.

Presumo che SO calcoli i badge una o due volte ogni 24 e che forse vengano archiviati i registri o un server dedicato al calcolo dei badge.


Pensieri?

È stato utile?

Soluzione

Non penso che sia così complicato come pensi.Dubito fortemente che SO calcoli i badge con una sorta di registro delle attività dell'utente (sebbene tecnicamente l'intero database sia un registro delle attività dell'utente).Quando guardo gli elenchi dei badge, non vedo nulla che non possa essere implementato eseguendo una query di selezione SQL.

Alcune query potrebbero essere piuttosto complicate e potrebbe esserci una sorta di sofisticato meccanismo di memorizzazione nella cache, ma non vedo alcun motivo per cui dovresti calcolare i badge in batch.

Altri suggerimenti

In generale, distintivo / sistemi di punti può essere basata su due cose.

  • Registro attività di eventi interessanti, questa è effettivamente la carta scontrino di ciò che è happend in modo tale che è possibile ri-calcolo da zero se è sempre necessario. Può essere semplice come (user_id, timestamp, event_id, event_detail)

  • La maggior parte del tempo che hai pre-progettato il sistema di punteggio / punto in modo da sapere esattamente quali contatori per tenere su un utente. Ora è semplice come avere un grande record che contiene tutti i dettagli. (user_id, reply_points, login_points, last_login, thumbs_up_points, ecc, ecc.)

Ora è possibile schiaffo alcuni semplici metodi su tale oggetto modello e farlo gestire / memorizzare i punti in base alle esigenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top