Skip to content

为了 OI 比赛而生的基于 Lemon + LemonPlus 的轻量评测系统 | 三大桌面系统支持

Notifications You must be signed in to change notification settings

ZiyiGaoCN/Project_LemonLime

 
 

Repository files navigation

Project LemonLime (Beta)

为了 OI 比赛而生的基于 Lemon + LemonPlus 的轻量评测系统

A tiny judging environment for OI contest based on Lemon + LemonPlus

同时支持 Qt5 和 Qt6, 使用 -DLEMON_QT6=ON 以使用 Qt6 编译。

现已支持 Linux Ubuntu ,Windows Windows,以及 macOS MacOS

CPack - DEB - Debian CPack - DEB - Ubuntu

CPack - RPM - Fedora CPack - RPM - openSUSE Leap CPack - RPM - openSUSE TW

Linux - AppImage

FOSSA Status

Codacy Badge

AUR version AUR votes

Packaging status

曾在这些系统测试:

系统名称 版本号 架构 DE / WM
Windows 7 x86, amd64 Untitled
Windows 10 amd64 Untitled
Manjaro 20.0.1 amd64 KDE-Xorg; i3WM
Arch 2020-10-31 amd64 KDE-Xorg
Arch 2020-10-31 amd64 KDE-Wayland
Ubuntu 20.04 amd64 GNOME 3
Ubuntu 18.04.4 amd64 GNOME 3
NOI Linux (Ubuntu) * 14.04 x86 GNOME 2
Linux Mint 19.3 amd64 Cinnamon
Deepin 15.11 amd64 DDE
Deepin 20 (1000) amd64 DDE
Debian 10.3.0 amd64 LXQt; KDE-Xorg
Fedora 31-1.9 amd64 XFCE
openSUSE Leap 15.1 amd64 iceWM
openSUSE Tumbleweed amd64 KDE-Xorg

如果您在您的系统上做了测试,请前往 #49 告知

特色

以下是一些非常重要的改动:

  • Lemon 绿了!
  • LemonLime 现在支持 4 种题目类型:传统题、提交答案题、交互题,以及通信题。不过交互题和通信题暂时只确保 C++ 的支持。
  • 现在在选手栏中,每个选手的每个题目都可以单独选择,而不是只能一行一行地选。现在你可以方便地重测某道题,还支持一键测试未测试 / 未找到源文件 / 编译错误等操作。
  • 原先的 Lemon 的重测制度因为过于耗时而被废弃。现在,你可以自定义最大的重新评测次数。
  • 自带的实数比较模式现在将同时比较绝对误差和相对误差,并且对 naninf 做出了判断。
  • 在 Linux 下,默认的栈空间设置为和内存限制相同。
  • 多线程评测和自定义测试被移除。

这里是一些值得称道的新功能:

  • Subtask Skip,某些时候的刚需。
  • 现在你可以给每个测试点设置子任务依赖,而不是像以前把同一个数据加到一个又一个测试点中。
  • 在题目概要栏右键题目,可以进入增强测试点调整器。CCR 的出色功能,现在 LemonLime 也支持了。(这个功能还在测试阶段,小心使用!)
  • 增加统计栏目,对比赛分数数据进行简要的分析。还需要很多的更新。
  • 新增的整理文件功能,可以使所有的选手的子文件夹内外都有答案文件,并且删除大部分无用文件。支持在这之前备份文件。
  • 你也可以对每一个题目,选择是在子文件夹内寻找源文件还是子文件夹外。

还有一些令人舒适的小变化:

  • 支持高 DPI。
  • 选手名单上的成绩将会有背景颜色,随着分数变化而变化。导出的 HTML 文件也有颜色,默认配色方案大体来自 IOI,不过你也可以自定义(比如实现深色主题)。
  • 各种评测结果在评测时界面、结果查看界面和导出的 HTML 文件有了易于区分的不同的颜色。
  • 支持重新排列题目顺序。在有些时候它很重要。
  • 支持重命名比赛。
  • 手动保存比赛、打开比赛目录(在 文件 菜单栏中)。
  • 窗口下方新增提示栏。

以及,一点小细节:

  • 如果你在某个点得分了,那么在测试时的窗口会显示获得的分数、使用的时间和空间。
  • 逐行比较模式现在可以显示出错位置的行号了。
  • 减小了导出 HTM 的体积,并且给 HTML 添加了更多跳转。
  • 自动添加试题的时候每个点的分数不再是下取整 (总分 / 数据点个数)。
  • 改动了图标和启动横幅。
  • 无处不在的界面优化。

构建

源码下载

$ git clone https://github.com/Project-LemonLime/Project_LemonLime.git --recursive

下载的东西太大了?

git clone 的时候,使用 --depth=1 可以使下载下来的文件大小减少很多(因为默认情况下它会把所有历史记录全部下载下来)。

如果 Github 还是太慢…

你也许可以到 码云(Gitee) 去下载。

在很多地区,从 码云 下载的速度是从 Github 下载的速度的 100 倍。

这个仓库在码云下的镜像

Windows

Releases 下载就可以了。

Scoop 用户

添加第三方 bucket 即可快速安装与更新

scoop bucket add peach https://github.com/ChungZH/peach
scoop install peach/lemon

当然如果你装有 Qt 5/6,也可以下载源码编译。

NOTE: XLS 导出是默认关闭的,如需使用,请编译时附加 -DENABLE_XLS_EXPORT 启用。

非常严重的提示

由于 Windows 的特殊性,请在下载 Releases 后检查 LemonLime 的功能的完整性,比如是否能探测程序的运行时间和使用内存。不过如果使用源码构建 LemonLime 的话将不会出现这种问题,所以仍然推荐使用源码构建 LemonLime。

在很多地方,下载 Qt 的时间 + 安装 Qt 的时间 + 下载 LemonLime 源代码的时间 + 编译的时间 < 从 Github 上下载可执行文件的时间。

下载 Qt 请考虑一个快速的国内镜像。

Linux

Arch Linux 系

## 迅速安装 ##
yay -S lemon-lime # 稳定版本
yay -S lemon-lime-git # 开发版本(提前使用许多新功能!)
# 感谢 @ayalhw 的支持。

## 使用 CMake ##
sudo pacman -S gcc cmake qt5-base ninja make # 依赖环境(ninja 和 make 二选一)
cd 源代码的目录
cmake . -DCMAKE_BUILD_TYPE=Release -GNinja # 如使用 make 请删去 -GNinja
cmake --build . --parallel $(nproc)  # 获得可执行文件 lemon

## 使用 QtCreator ##
sudo pacman -S qtcreator

Debian | Ubuntu 系

## 使用 CMake ##
sudo apt install qt5-default build-essential ninja-build qtbase5-dev qttools5-dev cmake # 依赖环境, ninja 可选
cd 源代码的目录
cmake . -DCMAKE_BUILD_TYPE=Release -GNinja # 如使用 make 请删去 -GNinja
cmake --build . --parallel $(nproc)  # 获得可执行文件 lemon

cmake --install . # 将其安装到系统中,默认安装位置位于 /usr/local
# 或者直接生成 DEB 包
cmake . -DCMAKE_BUILD_TYPE=Release -GNinja -DBUILD_DEB=ON
cmake --build . --parallel $(nproc)

## 使用 QtCreator ##
sudo apt install qtcreator
* Ubuntu 18 及更老 (包括 NOI Linux 这种毒瘤

Ubuntu 18 用 apt 安装的 Qt 版本只能到 5.9。

Ubuntu 16 用 apt 安装的 Qt 版本只能到 5.5。 GCC 不支持 C++17, 可以自己去 CMakeLists.txt 把标准改成 11, 能不能编译听天由命(目前还是可以的,等到迁移 Qt6 估计就不行了

NOI Linux 是 Ubuntu 14.04 的换皮,所以用 apt 安装的 Qt 版本只能到 5.2。

arbiter 退出了群聊。

Fedora 系

## 使用 CMake ##
sudo dnf install cmake qt5-qtbase-devel qt5-linguist qt5-qtsvg-devel desktop-file-utils ninja-build make # 依赖环境(ninja 和 make 二选一)
cd 源代码的目录
cmake . -DCMAKE_BUILD_TYPE=Release -GNinja # 如使用 make 请删去 -GNinja
cmake --build . --parallel $(nproc) # 获得可执行文件 lemon

cmake --install . # 将其安装到系统中,默认安装位置位于 /usr/local

# 或者直接生成 RPM 包
sudo dnf install cmake qt5-qtbase-devel qt5-linguist qt5-qtsvg-devel desktop-file-utils ninja-build redhat-lsb-core fedora-packager rpmdevtools
cmake . -DCMAKE_BUILD_TYPE=Release -GNinja -DBUILD_RPM=ON
cmake --build . --parallel $(nproc)

openSUSE 系

## 使用 CMake ##
sudo zypper in cmake libqt5-qtbase-common-devel libQt5Core-devel libQt5Gui-devel libQt5Network-devel libQt5Widgets-devel libQt5Concurrent-devel libqt5-linguist-devel libqt5-qtsvg-devel update-desktop-files ninja # 依赖环境(ninja 和 make 二选一)
cd 源代码的目录
cmake . -DCMAKE_BUILD_TYPE=Release -GNinja # 如使用 make 请删去 -GNinja
cmake --build . --parallel $(nproc) # 获得可执行文件 lemon

cmake --install . # 将其安装到系统中,默认安装位置位于 /usr/local

# 或者直接生成 RPM 包
sudo zypper in cmake libqt5-qtbase-common-devel libQt5Core-devel libQt5Gui-devel libQt5Network-devel libQt5Widgets-devel libQt5Concurrent-devel libqt5-linguist-devel libqt5-qtsvg-devel update-desktop-files ninja lsb-release rpm-build
cmake . -DCMAKE_BUILD_TYPE=Release -GNinja -DBUILD_RPM=ON
cmake --build . --parallel $(nproc)

etc.

有 AppImage 可用(虽然丑了点

前往 Actions 或者 Release 界面下载, chmod +x xxxx.AppImage 再执行即可(注意从 Actions 下载到的是一个压缩包

PS:有可能会提示缺少 fuse, 请安装

macOS

在没有 macOS 机子的情况下写 macOS 支持是一件非常滑稽的事。

请使用 watcher_macos.cpp 编译 watcher_unix,否则内存限制会出问题。

cmake -DCMAKE_BUILD_TYPE=Release -GNinja .
cmake --build .

Credit

Copyright (c) 2019-2020 Project LemonLime.

Libraries and other files that have been used in LemonLime are listed below:

Copyright (c) 2020 Itay Grudev (@itay-grudev): SingleApplication (MIT)

Copyright (c) 2020 Qv2ray Development Group (@Qv2ray): Design of Translator/Log, Project Structure and CI files (GPLv3)

License

FOSSA Status

About

为了 OI 比赛而生的基于 Lemon + LemonPlus 的轻量评测系统 | 三大桌面系统支持

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 90.4%
  • TeX 6.0%
  • CMake 3.5%
  • Other 0.1%