Skip to content

Lanly109/lan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lan

License Golang Version

综合filter等工具,集清理无关文件名单检查md5生成修改时间检查查重等为一体的小工具,便于收代码后等一系列校对操作。

因为是众多工具的集合,懒人福音,故取名为lan,意为

更新日志

2024.10.8

  • 新增auto指令,一键执行整个流程,即clean -> check -> valid -> md5
  • 更新倒计时html模版

2023.2.26

  • time命令更名为valid命令,新增SourceSizeLimit参数,在检查时间戳的基础上追加代码文件大小检查
  • 更新demo

2022.11.5

  • 新增已知缺席考生特性,优化clean命令的结果描述
  • 新增gen命令,原先config命令移至到gen的子命令下,同时新增countdownshare子命令,用于生成倒计时html模板打开共享文件夹源代码文件
  • 修复了重复执行md5命令时,输出文件内容异常的情况
  • 更新demo

2022.10.28

  • 修复了moss命令时相对路径解析错误的问题
  • 修改了md5命令默认保存文件名

2022.10.15

  • v0.1版发布

流程

  1. 召集考点负责人开会,各考点确定学校和试室的缩写,方便后面汇总。
  2. 准备配置用的考生名单namelist,每个考点一份,包含考号和试室缩写。(csv, 两列, 不包含说明头)
  3. 考点负责人学习本工具的使用
  4. 考点负责人配置各试室的 toml 文件、考点的 toml 文件。

为避免跨系统带来的中文编码影响,请务必全程仅使用英文,包括csv的内容,toml配置文件。

如需使用中文,注意程序默认中文编码为UTF-8

NameList制作教程

NameList应形如

GD-00018,402
GD-00032,304
GD-00062,402,0
GD-00077,304
GD-00081,304
GD-00111,304,0
GD-00128,402
GD-00139,304,0
GD-00153,402
GD-00192,304
GD-00291,402

第一列为考生号,第二列为试室号。应避免中文。

可用excel制作,保存时请选择csv格式,不要选择csv UTF-8格式。

后者格式实际为UTF-8 BOM,与前者相比,文件头会多处EF BB BF字段,影响本程序对该文本的读取。

第三列为可选列,在各考场签到完毕后,对于缺考考生,可在其考号后增加第三列,其值为0。本程序将认为该考生为已知缺考考生,在check命令中与未知缺考考生加以区别。

工具使用指南

供学习测试用的demo

包括可执行文件如下方式放置,配置文件config.toml在下面有生成方法,raw_304为收取代码后的文件夹结构

.
├── config.toml
├── lan
├── namelist.csv
└── raw_304
    ├── GD-00032
    │   ├── expr
    │   ├── live
    │   ├── number
    │   └── power
    │       └── power.cpp
    ├── GD-00077
    └── GD-00081
        ├── expr
        ├── live
        │   └── live.cpp
        └── power
            ├── power
            └── power.cpp

安装

release中选择适合自己系统和架构的可执行文件下载。

下面假设可执行文件名为lan

linux用户需给程序添加执行权限

chmod +x lan

使用

请于终端内运行。

Windows用户在文件所在目录下按住shift键及鼠标右键选择在 xxxxxx 中打开,即可打开终端

以下命令,cmd终端不需要前面的./

Windows建议使用Windows Terminal作为终端模拟器,支持色彩显示

使用流程

# 生成配置文件,并修改
./lan gen config

# 一键执行
./lan auto
# 或者依次执行以下步骤

# 清理无关文件
./lan clean
# 检查成员名单
./lan check
# 生成md5码文件,并下发
./lan md5
# 检查文件修改时间和文件大小
./lan valid

# 查重
./lan moss

帮助

./lan help

该指令会显示帮助文案

生成配置文件

./lan gen config

该指令在当前工作路径下生成名为config.toml的配置文件,配置内容适用于demo

可接--name=<name>参数自定义配置文件名字

./lan gen config --name=myconfig.toml

该指令在当前工作路径下生成名为myconfig.toml的配置文件,配置内容适用于demo


后续指令默认读取config.toml配置文件,如需更改,可接--config=<name>参数自定义读取配置文件

一键执行

./lan auto

此命令将依次执行clean -> check -> valid -> md5指令,配置读取推荐为配置文件。

清理无关文件

./lan clean

配置说明:

CodePath : 过滤后的文件夹路径
Problems : 比赛题目
SourcePath : 待清理文件夹
Extensions : 保留的扩展名
IgnoreExtensions : 忽略的扩展名

该操作会将所有位于SourcePath文件夹里的形如GD-xxxx/problem/problem.extext文件复制到CodePath文件夹。

有异常文件(如代码名不是题目名代码文件的路径深度不正确,有考生文件夹但有效代码,有对应题目文件夹但题目代码等会有警告信息)


后续指令均默认文件夹已经过清理,无无关文件(如姓名.txt,*.pdf,*.in,*.out,*.ans,*.exe)等

名单检查

./lan check

配置说明:

CodePath : 待检查的文件夹路径
Room : 检查的试室, all 为全部
NameList : 名单文件

该操作会将NameList中为Room的考号与CodePath中考号比对,给出缺少考号以及不应存在的考号列表,同时会分别给出已知缺考(从签到表里得知缺考)和未知缺考的考号

md5生成

./lan md5

配置说明:

CodePath : 待生成md5的文件夹路径
Md5File : md5文件名,非必要不更改

该操作会将CodePath的所有文件生成一份md5表单,配合checker使用,

修改时间和文件大小检查

./lan valid

配置说明:

CodePath : 待检查的文件夹路径
StartTime : 比赛开始时间
EndTime : 比赛结束时间
SourceSizeLimit : 文件最大大小(单位:byte)
AbnormalLog : 修改时间异常的学生清单

该操作会将CodePath的所有修改时间不在比赛时间内以及大小超出限制的文件列一份清单,保存在AbnormalLog中。

查重

./lan moss

配置说明:

CodePath : 待检查的文件夹路径
ReviewProblem : 查重题目
ReviewUserID : 账号
ReviewComment : 查重注释
ReviewLanguage : 代码语言
ReviewMaxLimit : 当同样的代码出现文件数大于该次数时,认为不是抄袭代码
ReviewExperimental : 启用新特性检查
ReviewNumberResult : 显示的结果数

该操作会将CodePathReviewProblem代码进行查重


上述命令的参数均可在命令行设置,具体用法参见help指令

与上述配置文件配置等效的命令行如下

./lan clean 304 raw_304 --problems=expr,live,number,power --extensions=.cpp,.c,.pas --ignoreexts=.txt,.in,.out,.ans,.pdf,.exe
./lan check 304 --room=304 --namelist=namelist.csv
./lan md5 304
./lan valid 304 --starttime="2021-11-20 08:30:00" --endtime="2021-11-17 13:00:00" --sizelimit=102400
./lan moss 304 --problem=expr --language=cc --maxlimit=10 --numberresult=250 --userid=xxxx

各参数的优先级:命令行参数 > 配置文件 > 默认值

生成打开共享文件夹的脚本

./lan gen share

该指令在当前工作路径下生成名为sharing.cpp的脚本代码,修改27行\\\\10.78.30.99\\b404为对应路径(在Windows的资源管理器的路径输入\\10.78.30.99\b404即可访问到共享文件夹,注意\的转义),然后编译出可执行文件下发。

可接--name=<name>参数自定义脚本文件名字

生成比赛倒计时的网页

./lan gen countdown

该指令在当前工作路径下生成名为countdown.html的html网页,修改7,8,9行对应参数,注意时间的格式。

注意修改文件后,浏览器要刷新才能生效。

可接--name=<name>参数自定义脚本文件名字

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages