The code is up at http://github.com/onemanbucket/alleg-leaderboard
If you want to commit code, the best way would be to fork my project, make the changes and push to your github repo and then do a pull request on the commit. If you really really really hate git, it's fine to send me patch files I suppose
I've imported ~180k unique player stat snapshots that i got from Fwiffo (thanks!) on the production server. I think there are some test data and a fwiffo-converter and upload script in the repo.
This is how the board works:
* It's divided into javascript frontend (jquery, jquery-ui + flot for graphs)
* Backend is a jersey webservice that runs on google appengine. I tried to use JDO for persistence layer abstraciton, but GAE support for JDO is $#@!ed up to put it mildly.
There is a cron task that scrapes the official leaderboard once every hours and stores players that have been updated (compute a hash on volatile stats and check against latest hash when parsing the board).
The webservice allows anyone (i.e. the javascript GUI app) to query players by callsign + time range. The WS responds with JSON. Try it out if you want: http://alleg-leaderboard.appspot.com/ws/pl...belFish/history
The basic architectural idea is that the backend is a lean and mean datastore and *ALL* graph rendering and as much computation as possible is done on the client with JS. As an example, I don't store k/e or even compute it on the server since it can just as easily be calculated by the client as long as it gets hours and kills. The only non-information bearing field i store from the leaderboard is rank.
Next on todo list is:
* monthly killboard / monthly stats
Then I'll pick from these:
* hider detection
* nicer looking gui?
* local storage of player snapshots (i.e. you only fetch stuff that hasn't been downloaded to your web browser)