GithubHelp home page GithubHelp logo

klenin / cats-main Goto Github PK

View Code? Open in Web Editor NEW
43.0 43.0 35.0 7.69 MB

Programming contest control system

Home Page: https://imcs.dvfu.ru/cats?lang=en

License: GNU General Public License v2.0

Shell 0.97% Perl 90.57% Makefile 0.10% C 0.43% PLSQL 0.75% CSS 2.69% JavaScript 2.95% Batchfile 1.26% Raku 0.01% PLpgSQL 0.26%
competitive-programming contest online-judge perl

cats-main's People

Contributors

aleksandrazh avatar anunknowperson avatar brigaccess avatar cher-nov avatar etharner avatar foobarrior avatar getjump avatar gorbunov-dmitry avatar harmlessevil avatar helviett avatar idkravitz avatar klenin avatar koninka avatar lukaviy avatar mesenev avatar nblkblta avatar olegatorfed avatar pinkslot avatar rotanov avatar shigidono avatar tldmain avatar tonichoff avatar uskamicadze 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cats-main's Issues

Use more AJAX

This is an umbrella issue for moving using AJAX requests in various parts of UI.

[UX] Global

User expierence improvance regarding whole system

  • Move everything to AJAX isn't bad idea, jquery-pjax is probably best way
  • We shouldn't display any system information, an example "Access Prohibited", "Incorrect.." blah blah, as like responses with error code 500, that definitely helps attacker detect system breaches
  • Is json option in some places realy needed? If it realy needed, we should change src keys, so they will not equal keys in database, and return same information, that could be fetched from page if it was html
  • As for now current contest doesn't saves(if you logout and them log-in you will be selected Archive contest)(isn't it?), why doesn't save it?

[UX] Teams in contest

User expierence improvance for teams page

  • It was really hard for me to locate pagination, intuitively it should be in down-right corner(why not just put a copy of it?) ex

[UX] Console

User expierence improvance for console

  • Currently, it displays all runs for same task, why just not display last from that, or if needed make something like "spoiler"
  • Auto-opening new run is useless, since modern browsers will block popup windows if them wasn't open with one of functions that originate from user event(click etc.), we can exclude domain from that behavior, but it's makes no sense

Pinned-only mode for judges

Change 'lock_counter' into 'accept_mode' tristate with values 'any', 'pinned', 'none'.
'pinned' mode should accept only requests pinned to this judge.

Remove stdChecker

Use links to modern checkers instead.
Maybe mass-modify old problems.
select count(*) from problems where std_checker is not null
196

Proxy configuration for git

We need to set http.proxy for git to access external repositories.
I have added the proxy variable to Config.pm.template.
Unfortunately, git config --global invocation fails at least on Debian due to the fact
that www-data user does not have a HOME set.
Options are:

  1. Figure out how to config Apache for setting HOME
  2. Use git config --system in installation script
  3. Use something like http_proxy=$proxy; git ... for git invocation

Visualize spent resources in request details

The goal is to display graphs of memory/time depending on input size.
Since problem packages do not currently contain explicit input size data,
the method used should work even in the absence of such data.

"Resources" in question are user time, wallclock time, peak memory, written bytes and
anything else measured by Spawner.

  1. Calculate standard solution resources for every test -- can be currently done by selecting last standard solution request, will also be useful for relative time limits.
  2. Optionally, cache standard solution resources in tests.
  3. (?) Add input_size field to tests, containing an arbitrary string
  4. (?) Add more detailed keywords in o namespace, e.g. o.poly.n2, 'o.nlogn` etc.
  5. (?) Add algorithmic_complexity field to problem_sources, assign it based on keywords and/or attributes in problem package.
  6. Import some JS graphing library (also use it for console graphs)
  7. On req_details page, add graph of resource/input_size
  8. Add 'Resource' selector
  9. Add 'input size source' selector of: explicit, checker comment, generator param + input file, guess by standard solution time
  10. For the first three sources add sub-selector for integer value P. For each test, select P-th integer parsed from string -- so multi-parametric problems and imported problems with verbose checkers are automatically supported.
  11. For "guess by standard time" add sub-selector or "algorithmic complexity", fill it with explicit data if available. Then, calculate approximate input size by fitting the complexity function to actual times.
  12. Display calculated data on graph, with various visual controls, in particular linear/logarithmic axes, usage of test number instead of size, displaying several graphs at once.

UX improvance

So, i have the following proposals regarding UX.

I will update this issue ASAP.

I'm suggest to use following legend :
[D] - Declined
[A] - Accepted
[R] - Realised
[W] - In Work
Put it in start of suggestion.

Task page for authenticated users :

  • Storing last user selected compiler on uploading task solve (as i promised i will implement this by myself)
  • Select task by double click on it's row (it's really hard to reach radio button of that size)
  • Will be nice if we have ability to upload task solve from other places (at least way to main system from task-view page, task page for contest for ex.)
  • Drag-and-Drop?

Run details page :

  • Definitely, "Compare" button shouldn't display for users, who don't have that ability
  • Some information from other users runs display even if not jury, we should check that case completely
  • By default, will be better if that page(from console for ex.) will open in new window, like this ex
  • It will be nice, if we have option to watch testcase for failed test if some contest flag nor contest is not official(for ex.)
  • Would be nice in case of runtime error or security violation display number of string that caused error, i think it is possible to do that

Console :

  • Currently, it displays all runs for same task, why just not display last from that, or if needed make something like "spoiler"
  • Auto-opening new run is useless, since modern browsers will block popup windows if them wasn't open with one of functions that originate from user event(click etc.), we can exclude domain from that behavior, but it's makes no sense

Results :

  • Would be cool to see what language did used participants

Users of contest:

  • It was really hard for me to locate pagination, intuitively it should be in down-right corner(why not just put a copy of it?) ex

Global update :

  • Move everything to AJAX isn't bad idea, though
  • We shouldn't display any system information, an example "Access Prohibited", "Incorrect.." blah blah, as like responses with error code 500, that definitely helps attacker detect system breaches
  • Is json option in some places realy needed? If it realy needed, we should change src keys, so they will not equal keys in database, and return same information, that could be fetched from page if it was html
  • Currently, current contest doesn't store(isn't it?), why doesn't store it?

Something can be overthinked, other can be lost.
Almost of them is pretty good concept.

Несуществующая кафедра

В системе CATS указано название уже 1,5 года как несуществующей кафедры - "кафедры информатики ДВФУ".
Между прочим, на сайте http://imcs.dvgu.ru/works слова "кафедра информатики" выделены более крупным шрифтом, чем слова "математического и компьютерного моделирования".
Информатики "захватили власть" на кафедре!

"Модуль spawner" --> "Программа spawner"

На главной странице CATS написано "модуль spawner". Для CATS это модуль, но для пользователя CATS это просто программа.
Это мелочь, но использование простых и понятных терминов - это тоже важно.

Code viewer: unused button or a bug?

There is a button in the solution code viewer, placed nearly from the top right corner, with "?" char as a caption. This button looks so strange - when I press it, CATS pushes me a little window with the single "@ABOUT@" string in.
Is this button a something like unused feature of implemented code viewer control? Or this is a localization bug?

[UX] Results

User expierence improvance for results page

  • Would be cool to see what language did used participants

[UX] Task page for authenticated users

User expierence improvance for task page that can be seen by authenticated users

  • Storing last user selected compiler on uploading task solve (as i promised i will implement this by myself)
  • Select task by double click on it's row (it's really hard to reach radio button of that size)
  • Will be nice if we have ability to upload task solve from other places (at least way to main system from task-view page, task page for contest for ex.)
  • Drag-and-Drop?

[UX] Run details page

User expierence improvance for run details page

  • Definitely, "Compare" button shouldn't display for users, who don't have that ability
  • Some information from other users runs display even if not jury, we should check that case completely
  • By default, will be better if that page(from console for ex.) will open in new window, like this ex
  • It will be nice, if we have option to watch testcase for failed test if some contest flag nor contest is not official(for ex.)
  • Would be nice in case of runtime error or security violation display number of string that caused error, i think it is possible to do that

"Прилинковать" вместо "переместить"

При нажатии на кнопку "переместить" открывается страница для выбора задачи. Если переключиться на другую страницу (я имею в виду нажатие на ссылку с номером, например, "2"), кнопка "переместить" меняется на кнопку "прилинковать".

Теоретические турниры

Что, если сделать в CATS ещё одну разновидность турниров -- теоретические турниры, когда решением задачи является текст?
Текст можно либо вводить в поле ввода (оно в CATS уже есть), либо отправлять в виде файла (pdf или doc, например).
Жюри ставит оценки за решения, оценки отображаются в турнирной таблице.
И ещё, кстати, было бы неплохо добавить к системе CATS форум, в качестве форума можно использовать группу Google.
Ещё есть вот такой сайт: http://vk.com/mathmachine.
Хорошо бы использовать его в учебном процессе со студентами и школьниками.
Там, кстати, можно проводить творческие конкурсы, как на Физтех.Радио (http://vk.com/radiof).
Уже пробовали играть там в "Поле чудес" (на математические темы) и в игру типа "Кто хочет стать миллионером", когда участникам предлагаются опросы.
Этот сайт может также служить площадкой для различных обсуждений.
На сайте есть разные картинки с так называемой матмашиной и просто интересные картинки на математические темы.

Scored run selection

Options of contest:

  1. Score last run -- as is
  2. Score best run
  3. Score chosen run
  4. Score chosen run with tokens (a-la ROI)

Maintainance of repository

I suggest to use powerful github thing in 'Issues' called Labels, so if issue bout 'bug' we can assign 'bug' and etc. As you can see i had marked few last issues with '[UX]', labels is better way to do that.

I suggest for now :

  • Features request
  • Bug
  • Security
  • Improvance
  • Discussion

Среда для обсуждений

В системе CATS проводится много различных тренировок, в которых потенциально может участвовать (официально либо вне конкурса) любой желающий. Участие в тренировке представляет собой, в первую очередь, «общение» с тестирующей системой CATS.
Я считаю, что для полноценного изучения информатики необходимо общение друг с другом и с преподавателем. Такое общение в очной форме организовать сложно, тем более что количество общающихся достаточно велико.
Отсюда вытекает следующий вывод: необходимо создать (разумеется, на базе системы CATS) среду для обсуждений и обмена опытом.
За основу можно, конечно, взять опыт проекта codeforces, но нам всё же нужен региональный проект для наших студентов и школьников.

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.