UOJ Logo vfleaking的博客

博客

近期UOJ的一些改动

2020-03-29 17:08:56 By vfleaking

大扎吼,我四渣渣k,贪玩懒J,介四里没有挽过的船新版本。挤需体验三番钟,里造会赶我一样,爱象节款OJ!(大雾)

咳咳,说人话。就是最近觉得 UOJ 实在是太年久失修了!强迫症的我这两周改了一发各种不爽。

当然在强迫症的眼里不爽的地方太多了,与我自身能付出的时间极度不匹配。所以我只能先改一部分了。。。

已经完成的改动

题目中的图片问题

由于有些题目时间比较久了,图挂掉了。这是因为有些图片是放在奇奇怪怪的网站的,然后有些没能经受起大风大浪,就倒闭了。。。

所以我通过各种方式先把挂掉的图找了回来(主要是找出题人要),然后把所有现存的题目中的图片移动到了 UOJ 的图床 img.uoj.ac 下。

这样只要 UOJ 不倒,图片就不会挂啦!

Mathjax 的问题

博客评论里面,如果对一个评论的回复超出了一页,那么翻页的时候 Mathjax 不会被重新加载。去年 9 月 就有良心用户报告过这个问题。这显然是个 bug,现在已经修好辣!

以及 UOJ 使用的 Mathjax 原来是 2.6.0,有点老了。为了紧跟潮流,现在升级到 2.7.7 辣。当然如果 Mathjax 3 更好用的话会考虑再升级一下。

CE 时的错误信息长度

原来 UOJ 存储时为了节省空间,在大家 CE 的时候会把错误信息只截取前 500 个字节保存下来。

但我寻思着你交个代码就几 KB 没了,何必节省这种空间。。毕竟通常来说只截取前 500 个字节会看得人一脸懵逼。

所以现在把长度限制改成 10KB 了,感觉肯定够用了。

Markdown 教程的链接

UOJ 博客编辑器右上方会有个 “这玩意儿怎么用” 的链接,链到 UOJ博客使用教程

里面附了一个完整的 Markdown 教程链接,但是不知什么时候链接挂掉了。去年 8 月就有良心用户报告过这个问题。

现在我已经把该链接从 http://wowubuntu.com/markdown/ 更换为了 https://www.w3cschool.cn/markdownyfsm/

如果你是考古爱好者,可以在这里找到原来的链接的存档。

即将上线

HTTPS

如果你戳戳 https://uoj.ac 就会发现 UOJ 已经可以通过 HTTPS 访问勒。。

当然我还没有设置把 HTTP 强制跳转到 HTTPS,估计在某个夜深人静的晚上我就会设置了。

交互库加密

UOJ 一直以来都是使用输出 token 的策略来防止交互库被 hack 的,但 UOJ 上有些 CTF 选手水平非常高超,一眼就看穿了怎么把 UOJ 的交互库给 hack 掉,程序跑得比谁都快:#277631, #352160

为了防止世界被破坏,我研究了下怎么更好地防御攻击,做了一个小小的带加密的交互库(见 #509 下方的说明,mt19937_64 未来会改为 AES)。

当然肯定不能杜绝交互库被 hack 的行为,因为你的程序和交互库编译在了一起,熟悉存储结构的 CTF 选手可能仍然有很多绕开密码学的攻击方式。例如 #388739 曾经就获得了满分,还有这种直接改交互库的 srand 的 #205655。。我也会再研究下怎么更好地防御这些攻击。。不过我觉得这里的哲学应该是:只要我们让交互库被 hack 的难度和代码量足够大,大到选手觉得 hack 交互库还不如直接写个正解的话,这种行为就自然被杜绝了。即使真的被 hack 了,我们也会移除此类提交,保证他们不在 AC 的排行榜上出现。

当然有同学就会问了:为什么不直接使用标准输入输出进行交互?这里的主要问题其实是效率问题。如果交互量不大(比如 #545),当然可以采取这种方式。但如果交互量大到了 $10^7$,效率其实是非常低的。所以为了支持所有可能的题目,UOJ 未来将把通过函数交互和通过标准输入输出交互两类题目的支持做得更好。

等到我确定 #509 的有效防御方式之后将会把 UOJ 上所有函数交互的题目加上此类防御,欢迎大家最近踊跃尝试一下有哪些 hack 掉 #509 的交互库的方式并及时告诉我。

准备解决的问题

  • 仿照 UOJ 社区版直接通过 UOJ 系统生成时间空间限制以及样例下载链接,避免出题人手打出错
  • 题库搜索
  • 支持 C++ 14、C++ 17
  • 邮箱认证
  • Runtime Error 和使用危险系统调用的时候给予更多的提示信息
  • ……

解决不了的问题

题目中的维基链接

UOJ 上有些题目(#75, #83, #475)上面有指向维基的链接,但由于众所周知的原因,你不用“一些网络技术”,是没法直接访问的。这些题目链接了维基,主要是因为当时传题的时候维基还是个可以正常访问的网站。为了保持历史的原始风貌,就只能让这些不能直接访问的链接留着了(不过之后可能会换上个镜像。。。吧)

2020.6.6 更新

有点鸽,默默地把标题上的“【持续更新】”去掉了

2020.8.19 更新

  • 评论回复上限从140个字节改为500个字节(因为现在这个时代模仿微博没有任何意义。。)
  • 新增博客按最后回复时间排序的功能

2020.8.24 更新

  • 题面和博客中的列表增加两格缩进,被包含于列表、引用、表格等之内的段落取消自动缩进
  • 博客总览页显示评论数和点赞数

2020.8.30 更新

  • 终于加上了题库搜索。。。之前一直没加的原因其实是我想做个比较完整的站内搜索功能,但我也并没有多少开发时间。意识到这一点之后,我今天趁着有空快速写了个简易的题库搜索功能凑合凑合,参考了点 UOJ 社区版的代码 orz

2020.9.14 更新

  • 所有 http 请求强制跳转到 https

评论

AThousandMoon
前排资磁!
MagicDuck
前排资磁!
EntropyIncreaser
期待资词 c++17
837951602
强行CTF 选手还行(
r_64
中排资磁!
zhouziheng
中排兹磁!
moyusteve
【该评论包含无意义的降低页面加载速度的内容,已被管理员删除】
are_you_cxk
uoj啥时候能封禁一下在博客区发谔谔内容的小学生啊
are_you_cxk
uoj啥时候能封禁一下在博客区发谔谔内容的小学生啊
are_you_cxk
uoj啥时候能封禁一下在博客区发谔谔内容的小学生啊
are_you_cxk
uoj啥时候能封禁一下在博客区发谔谔内容的小学生啊
I_am_China
资瓷
YuHaoXiang
uoj 啥时候滋磁一下修改/删除评论/回复啊 qwq
837951602
> 只要我们让交互库被 hack 的难度和代码量足够大,大到选手觉得 hack 交互库还不如直接写个正解的话,这种行为就自然被杜绝了。 并不。经过hack之后,即使代码量增加,耗时正常也会下降,已经达到霸榜目的了。
foreverlasting
uoj 啥时候滋磁一下修改/删除评论/回复啊 qaq
suncongbo
中排资瓷!
837951602
【该评论没有包含无意义的降低页面加载速度的内容,尚未被管理员删除】
englandmen
【该评论包含无意义的降低页面加载速度的内容,已被管理员删除】
yx20201301
【该评论包含有意义的膜拜VFK的内容,已被管理员删除】
foreverlasting
话说能不能改下比赛算rating的机制啊,就改成报名了比赛没交代码就不改变rating。

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。