UOJ Logo vfleaking的博客

博客

UOJ系统更新啦

2021-04-02 03:55:03 By vfleaking

趁着大家睡觉更新一波UOJ

UOJ终于支持 C++ 14、C++ 17、C++ 20 了。。。按照之前大家在 UOJ 用户群的投票,选择把之前所有语言为 C++ 的记录更名为 C++ 03。

第一个 C++ 20 的提交记录!https://uoj.ac/submission/466125

操作系统升级到了 Ubuntu 20.04,编译器升级到了 g++ 10.2.0。

测评机变成了一台双核的测评机,目前只开了一个核,之后会把另一个核也开起来的。希望以后测评能更稳定一点吧。。。

新版编译器编译出来的 C++ 程序好像内存会大一些,跑 A+B 好像也不能稳定地做到 0ms。。。不明觉厉

非传统题的测评程序需要重新编译,除了509和569之外都搞好了,这两个就先隐藏了 QwQ4月2日下午六点更新:修好了)

如果最近发现了 UOJ 的啥 BUG,不要犹豫!赶紧告诉我哦……

(啊困困,感觉上面都是在随机码字。。)

4月4日更新:现在测评是双核的啦!为了测评稳定性我现在关掉了超线程。

4月8日更新:原来的老测评机现在永久地关闭了。一路走好 QwQ

UOJ开始记录测评历史

2021-02-19 19:41:16 By vfleaking

14年,vfk 在写 UOJ 的时候

  • 大家还在争论 C++ 和 Pascal 孰优孰劣;g++ 最新版还是 4.8;C++ 11 还没有什么人写;
  • 大家在为 NOI Linux 换成 Ubuntu 12.04 的内核而欢呼雀跃;Ubuntu 14.04 LTS 还是非常新潮的操作系统;
  • Chrome 还没有满地跑;IE 还没有退出历史舞台;
  • Bootstrap 4 还没有出;HTML 5 和 CSS 3 还有很多浏览器不支持;
  • 王宏老师在 WC 上关于IOI近年的非传统题演讲还言犹在耳;OI 界掀起了一波出非传统题的风潮;提交答案题我记得还只有 Contest Hunter 一家能测……

vfk 当时以为,我们 OIer 只要固定一组系统配置,那么对大家的程序就都是公平的。。并且 vfk 当时不知为何还产生了 “计算机的世界过去迭代了这么多轮了,所以未来变化不大了” 的错觉。。所以当时就固定下来了在当时看来还很新潮但现在看来已经有点老旧的配置。。。

所以怎么办呢?vfk 最近决定升级一下操作系统、编译器版本等等。。并支持下大家心心念念的 C++ 14、C++ 17、C++ 20。。。

捂脸熊

但是这样的话以前的测评记录结果可能重测后就会变化了。为了即将到来的升级,vfk 先码了一个支持记录测评历史的功能,这样以前的历史可以被保留下来(吼吼,所以以后有人瞎 hack 的话,也容易回滚历史了!)

例子: UOJ 的第一个测评记录 https://uoj.ac/submission/1 现在存了上一次测评的结果(这时候有人就要问了,诶,为什么这个记录上一次的测评时间不是 14 年哇?这是因为 vfk 老是为了调 bug 而偷偷重测这个记录 233333)

升级不知道什么时候能搞好,有进展我就在这里吼一嗓子 QAQ

一嗓子: https://vfleaking.blog.uoj.ac/blog/6666

UOJ NOI Round #4 排行榜

2020-08-13 18:10:25 By vfleaking

下面宣布 UOJ NOI Round #4 总排行榜!(自动鼓掌,瓜几瓜几瓜几瓜几……

因为参赛人数比预期多,所以金银铜牌数量都进行了扩充。

祝取得高分的选手在 NOI 中继续保持高水平!

没参加笔试还拿到牌牌的选手在 NOI 中一定要记得参加笔试哦(大雾)

(知乎吐槽传送门: https://www.zhihu.com/question/413718499

阅读更多……

深切哀悼逝世同胞

2020-04-04 01:50:05 By vfleaking

2020 年 4 月 4 日,是中华传统节日清明节,也是纪念所有因此次新冠肺炎疫情逝世的同胞的全国哀悼日。

在这个充满哀思的日子里,UOJ 全站切换为了黑白色,以表达深切的哀悼。

我是土生土长的武汉人,UOJ 也是在湖北武汉备案的网站。曾经武汉是那么的热闹,清晨的热干面铺子,总是人挤人。

但不知何时,这场天灾悄悄地来到人世间,突然在我的家乡爆发。我看到了很多身边人受苦受难,看到了现代文明是如此地不堪一击。

愿每一个因疫情离开我们的人都能被人铭记。

愿每一个因疫情陷入窘迫的小人物都能早日走出困境。

愿我们弱小而无知的人类,能从这段历史中不断反思、总结。

愿我们弱小而无知的人类,永远保持谦虚,永远敬畏自然,永远相信科学和理性。

最后,愿我们每一个热爱计算机科学的 OIer,退役之后仍能走在科技的最前沿,成为人类技术进步浪潮中的一朵浪花。

毕竟,能对抗天灾的,不是傲慢,而是科学。

与君共勉。

近期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

2020.9.22 更新

  • Markdown 支持表格、引用用户名

2020.12.29 更新

  • 增加 IOI 赛制的完整支持

2020.12.31 更新

  • 如果 subtask 内分数是 min 的,那么碰到 0 分的就自动跳过后面的(之前是全部测完)

2021.01.07 更新

  • 管理员可以看见测评机记录是由哪个测评机测的
  • 优化了下对测评记录表的数据库查询。。。(也可能会起反作用。。。欢迎报告)
  • 自动禁止比赛期间的 hack(很久很久以前 vfk 以为 uoj 以后会有比赛期间可以互相 hack 的比赛,现在发现并没有。。所以默认关掉 hack 好了)

2021.01.29 更新

  • 突然发现两台测评机上 libc 和 linux 内核版本不一致,于是均升级到了 apt-get 能升级到的最新版本

2021.02.02 更新

  • 增加超管隐藏评论的功能

2021.02.09 更新

  • 比赛迟到10分钟会弹出参赛提醒

2021.02.13 更新

  • 首页显示 6 条公告

2021.02.14 更新

  • 翻页的范围在原本的 $[x - 5, x + 5] \cap [1, n]$ 基础上增加特判。如果 $x \le 5$ 那么范围固定为 $[1, 11] \cap [1, n]$;如果 $x > n - 5$ 那么范围固定为 $[n - 10, n] \cap [1, n]$($x$ 为当前页编号,$n$ 为总页数)。

2021.02.19 更新

2021.03.13 更新

  • 发现有位机智的小同学对着一个测评记录的历史版本hack了一发:https://uoj.ac/hack/10489 。。。哦豁,赶紧修了这个 bug

2021.03.16 夜里更新

  • 以前说好“关于我”页面要给定制功能的,可是一直咕咕着,好难过。经群友提醒突然想起来了这个坑,并想起了本科的种种忙碌。。然而现在vfk依然忙忙,短时间内可能没机会来码这个功能了。所以。。暂时让这个页面显示用户信息页的东西了,不至于让这个坑太突兀。

2021.04.01 夜里更新

2021.04.04

  • ouuan 发现带有某些特殊字符的评论并不能正常发表。查了下发现是因为 MySQL 字符集的问题,现在什么都可以发啦(包括 🤔😜😀😊😃)
vfleaking Avatar