Code Monkey home page Code Monkey logo

scoreboard's Introduction

DOMJudge scoreboard parser

A graphical tool for revealing the results of the final hour from running ACM ICPC style programming contests. Compatible with DOMjudge and any contest server implementing the CLICS API spec.

Screenshot of the scoreboard for NWERC 2017

To replay the final hour of an example contest in a console try running:

bazel run scoreboards/console -- \
    --url https://www.domjudge.org/demoweb/api/ \
    --groups "NWERC - Eindhoven University of Technology" \
  resolver

More information about how to download contests for later, as well as the other build targets for Android and desktop apps, are available in each of the directories under scoreboards/*.

The code is organised into a self-contained library and can be used without much in the way of boilerplate for any kind of scripting task involving contests. For example, the following image representing NWERC 2007 scores was generated from a standalone Java program:

Score progression for NWERC 2007

scoreboard's People

Contributors

hex539 avatar jbransen avatar ragnargrootkoerkamp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

scoreboard's Issues

Customizable `ytick_distance` in `language_stats.tex`

If there's more than 100 submissions in a language, the default 20 tick size is too low.

Really one tick is enough, so you could round the actual number of submissions down to a multiple of 100 (or 10 if it's less than 100).

Warn when running in signed-out mode

The contest downloader has to do a lot of guesswork when it's run without credentials. It can mostly work things out, but some things like WA/RTE/TLE distinction are msising and there may be other bugs as it doesn't get a lot of testing in reality.

We should warn if a user runs the tool like this, just in case they have credentials available to plug in.

Output `--solvestats` as a file

For BAPC I created a run.sh script as follows (login params omitted)

bazel run analysis:activity -- \
~/git/bapc/2019/bapc/solve_stats

bazel run analysis:activity -- \
--solvestats > ~/git/bapc/2019/bapc/solve_stats/problem_stats.tex

It would be really nice to directly create the problem_stats.tex (or probably solve_stats.tex) when running analysis:activity. The output I used was:

\newcommand{\solvestatsD}{\printsolvestats{26}{1}{11}}
\newcommand{\solvestatsH}{\printsolvestats{100}{26}{29}}
\newcommand{\solvestatsB}{\printsolvestats{57}{56}{0}}
\newcommand{\solvestatsL}{\printsolvestats{3}{2}{0}}
\newcommand{\solvestatsF}{\printsolvestats{100}{20}{27}}
\newcommand{\solvestatsC}{\printsolvestats{1}{1}{0}}
\newcommand{\solvestatsI}{\printsolvestats{20}{1}{7}}
\newcommand{\solvestatsJ}{\printsolvestats{80}{56}{0}}
\newcommand{\solvestatsE}{\printsolvestats{124}{23}{37}}
\newcommand{\solvestatsA}{\printsolvestats{15}{3}{8}}
\newcommand{\solvestatsG}{\printsolvestats{52}{10}{22}}

Support i18n

The default language out-of-the-box if locale isn't set should be some kind of universal emoji-based theme using "๐Ÿ•", "๐ŸŽˆ", "โœ”", and "โœ˜".

OpenGL exception while trying to run the resolver

Running bazel run scoreboards/resolver -- --url https://www.domjudge.org/demoweb/api/ --groups="NWERC - Eindhoven University of Technology" gives:

Fetching https://www.domjudge.org/demoweb/api/contests...
Fetching https://www.domjudge.org/demoweb/api/contests/nwerc18/state...
Fetching https://www.domjudge.org/demoweb/api/contests/nwerc18/scoreboard...
Fetching https://www.domjudge.org/demoweb/api/contests/nwerc18/judgement-types...
Fetching https://www.domjudge.org/demoweb/api/contests/nwerc18/languages...
Fetching https://www.domjudge.org/demoweb/api/contests/nwerc18/problems...
Fetching https://www.domjudge.org/demoweb/api/contests/nwerc18/groups...
Fetching https://www.domjudge.org/demoweb/api/contests/nwerc18/organizations...
Fetching https://www.domjudge.org/demoweb/api/contests/nwerc18/teams...
Fetching https://www.domjudge.org/demoweb/api/contests/nwerc18/submissions...
Fetching https://www.domjudge.org/demoweb/api/contests/nwerc18/judgements...
Exception in thread "main" java.lang.IllegalStateException: There is no OpenGL context current in the current thread.
	at org.lwjgl.opengl.GL.createCapabilities(GL.java:378)
	at org.lwjgl.opengl.GL.createCapabilities(GL.java:322)
	at me.hex539.resolver.ResolverWindow.run(ResolverWindow.java:62)
	at me.hex539.resolver.Executive.main(Executive.java:64)

btw. all the example command lines need to be updated since we updated our demoweb instance recently. Also the resolver from the end of this command line needs to be removed:
https://github.com/hex539/scoreboard/tree/master/scoreboards/resolver

Need Document

Please provide more detailed document, cause i am not very familiar with java.

Optimise use of OpenGL

Performance is OK when running as a standalone desktop app connected to HDMI. Still, things get a little bit choppy if casting the screen to another device at the same time, and this is one of the main use cases for the program.

flame

On an i7-6770HQ iwth software rendering, the desktop app can do 4K60fps but the above flame graph shows that it spends a lot more time than it should rendering fonts and using OpenGL 1.1 immediate mode APIs.

Next steps are to:

  1. Add a benchmark target for rendering N frames and then exiting.
  2. Switch all of the glBegin/glEnd usage into VBOs.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.