unnamed 使用指南
1. 这是一个什么站点?
- 在浏览器里写代码、编译、运行、判题。
- 本地沙箱支持 C++ 与 Python 3。
- 编译与运行都在你的设备上,代码不出本机。
- 不用注册,不用登录。
- 可以装成独立窗口的应用,断网也能用。
默认:侧边栏在左,编辑器在右。
侧边栏里放着资源管理器与评测样例两个面板。
2. 怎么在浏览器里跑代码?
- 下载本地运行时。点侧边栏页头的齿轮图标,打开设置页签, 进入本地运行环境。
- 给 C++ 或 Python 3 点下载。 分别约 50MB 与 24MB,只下一次。
- 等按钮变成已就绪。下载期间会播报当前阶段。
- 确认评测里的引擎是本地 WASM 沙箱。新访客默认就是它, 不用填服务地址。
- 按 ⌘/Ctrl + Enter,或点评测样例面板页脚的 ▶。
跑之前侧边栏会自动展开,并切到评测样例。
想腾出空间:已就绪那行右侧有卸载。
- 运行时只用下一次,之后刷新页面命中缓存。
- 下载过一次就能离线跑:编辑器、样例、沙箱都在本机。
- 清掉浏览器数据后要重新下载。
- Python 不编译,直接解释执行。
- C++ 只编译当前打开的这个文件,本地头文件不会被包含。
- Python 能 import 同目录的模块。
- 沙箱里的文件读写都在内存里,不会写回工作区。
3. 评测引擎怎么选?
在设置 › 评测 里切换。
| 引擎 | 在哪里运行 | 要填服务地址吗 | 要联网吗 |
|---|---|---|---|
| 本地 WASM 沙箱(默认) | 你自己的浏览器,支持 C++ 与 Python 3 | 不用,它是内置引擎 | 首次要下运行时,之后离线可用 |
| Piston | 你自建的评测服务 | 要 | 要 |
| Judge0 | 你自建的评测服务 | 要 | 要 |
| 自检(不执行代码) | 本机演示 | 不用 | 不要 |
远端引擎要你自己部署服务,并把地址填进评测。
- 切到 Piston 或 Judge0 之后,代码会发到你填的那个地址。
- 自检不执行代码,只把标准输入原样回显,用来联调界面。
4. 在浏览器里跑有多快?
没有统一的缩放系数。
下面是实测数据:Apple M5,无头 Chrome。
两侧都开 -O2。
沙箱是 clang 8.0.1,本机是 clang。
沙箱那一列取运行段,与卡片上的耗时同口径。
| 用例 | 沙箱运行段 | 本机原生 | 倍率 |
|---|---|---|---|
| 纯计算 5×10⁷ 轮 xorshift | 132 ms | 74.4 ms | 1.77× |
| 顺序访存 8×10⁶ 个 int | 26 ms | 7.4 ms | 3.51× |
| 排序 50 万个数 | 60 ms | 11.8 ms | 5.08× |
| 排序 200 万个数 | 247 ms | 36.7 ms | 6.73× |
- 倍率随访存密度涨,从约 1.8× 到约 6.7×。
- 越吃内存带宽,慢得越多。
- 倍率不能外推,别拿 5× 去估别的代码。
- 5 次采样极差 ≤3 ms,输出与本机逐字一致,不是噪声。
- 两列都含启动开销:本机是进程启动,沙箱是 WASI 实例化。
- 耗时越短的用例,倍率越会被这两个常数拉平。
- 换一台设备,绝对值与倍率都会变。
空程序那个对照为什么不算数?
空程序的对照是假象。
本机那 4.4 ms 全是进程启动开销。
沙箱那 3.0 ms 是 WASI 实例化。
两个数都不含计算,比了也没意义。
要对照,就只看真在算的那几行。
5. 怎么把题目抓进来?
用本站分发的浏览器插件 CC for Web。
- 打开设置 › 浏览器插件:那一栏会认出你的浏览器,只给你一条对应的装法 —— Firefox 给Firefox 版一键安装,其他 Chromium 内核的浏览器给下载按钮加手动加载步骤。
- (Chromium 内核)解压下载到的压缩包。
-
(Chromium 内核)地址栏打开
chrome://extensions(Edge 是edge://extensions),打开右上角的开发者模式。 - (Chromium 内核)点加载已解压的扩展程序,选中刚解压出来的目录。
- 回到本站,点那一组的重新检测。状态会显示版本号。
- 打开任意 OJ 题目页,点浏览器工具栏上的插件图标。
- 题目落进
<年月>/<OJ>/未分类/(工作区根目录下)。 - 样例整体替换进评测样例面板,不用手抄。
- 代码文件里只有一行
// your code here,题解归你写。 - 难度要自己填:右键文件 › 题目信息。
- 重抓同一道题只刷新样例与元数据,你的题解一个字都不动。
- 认题靠题目链接,不靠文件名。
- 本站要开着,插件才送得进来。
- Firefox 已上架 Mozilla 附加组件商店,一键即可装;Chrome 与 Edge 的商店版都还没上架,只能按上面那几步手动加载。
- 手机 / 平板上目前只有安卓的 Firefox 能装这个插件(安卓的 Edge 已支持扩展,但本插件还没上架 Edge 加载项);Chrome 的手机版完全不支持扩展 —— 移动端用户建议改用 Firefox。
6. 判定码和时限怎么算?
每个用例一张卡片,内有输入与期望输出。
下方那块实际输出只读,右上角可以复制。
卡片中间那条空白就是「只跑这一个用例」的按钮。
| 判定码 | 含义 |
|---|---|
AC |
程序正常结束,输出与期望输出一致 |
WA |
程序正常结束,输出与期望输出不一致 |
CE |
编译失败 |
TLE |
运行时间超过当前时限 |
RE |
运行时错误,程序非正常退出 |
ERR |
评测服务连不上之类的环境问题,不是你的代码有问题 |
改动代码或输入后,上一轮结论会标成「结果待刷新」。
时限与耗时的口径是什么?
- 只计运行段,不含编译与排队。
- 运行段含沙箱启动的固定开销,量级几毫秒。
- 卡片上的耗时同口径。程序没跑起来就不显示耗时。
- 面板页头显示当轮最慢的那个用例。
- 默认 1 秒。改它:设置 › 评测 › 运行时限, 档位 1 / 2 / 5 / 10 秒。
- 题目自带时限时优先用它:右键文件 › 题目信息 › 时限(秒)。
- Python 额外给 0.5 秒启动余量,所以 TLE 最多晚半秒报出来。
7. 文件树怎么用?
- 页头有两颗按钮:新建文件与新建文件夹。
- 建在哪个目录,看树里选中的那一行:点一下目录就选中它(新建落在它里面),点树里的空白处就是「什么都没选中」(新建落在根目录)。
- 想指定目录:右键该目录 › 新建文件 / 新建文件夹。
- 输入名字后回车。输入框只选中主干,改完不用补后缀。
右键文件还有重命名与删除。
新建文件的初始正文是什么?
新建文件时会按扩展名归到语言,把该语言的模板填进去:.cpp 用 C++ 模板、.py 用 Python 模板、.md 用题解模板。插件抓题时生成的代码文件也一样,打开就是模板内容。
认不出的扩展名(比如 .c、.txt)给一份空文件。三份模板在设置 › 模板里改,内容原样写入、不做变量替换;改坏了点每份右上角的恢复默认。那一节顶部的启用模板开关可以整体关掉模板:关掉后新建文件与抓题的代码文件都是空的,模板文本原样留着,再打开就能接着用。开关与模板都会随云端同步跟人走。
题目信息填什么?
- 五项:题目链接、OJ、难度、日期、时限(秒)。
- 难度跟着 OJ 走,两套口径不通用。
- Codeforces 与 AtCoder 用分数段,800 到 3500。
- 洛谷用官方八级。
- 牛客、LeetCode 与其它是自由文本。
- 换 OJ 会清空难度,省得留下对不上的值。
抓来的题目按 <年月>/<OJ>/<难度> 分层,直接放在工作区根目录下,题名就是文件名。
题目信息与抓到的样例挂在代码文件自己身上,树里不会多出别的条目。
题解(Markdown / LaTeX)怎么写?
题解就是一个 .md 文件:页头点「新建文件」,把名字改成「题解.md」再回车。打开它,编辑器上方会多出一行工具栏,右端是字数与视图按钮。
- 工具栏 14 颗按钮:加粗、斜体、删除线、行内代码、标题、引用、无序列表、有序列表、代码块、链接、图片、公式、表格、分割线。悬停能看到键位,比如加粗是 Mod + B。
- 右端三颗视图按钮(仅编辑 / 双栏 / 仅预览)随时切换摆法,Mod + \ 挨个轮换;旁边那颗全屏按钮让编辑区占满窗口,按 Esc 退出。
- 公式写
$行内$与$$独占一段$$,预览会渲染成 LaTeX。
预览要先下载一次渲染器(marked + KaTeX,约 578KB),和本地运行环境一样只下一次、可随时卸载。
题解不参与评测:打开 .md 时运行按钮会置灰,按 Mod + Enter 也不会进编译。
同一时刻添加测试样例也一并置灰 —— 样例是挂在当前文件上的,题解这类文件没有能跑它们的地方;灰掉的原因写在评测栏页脚。
8. 有哪些快捷键?
macOS 上 Mod 是 ⌘,其它平台是 Ctrl。
| 动作 | 默认组合键 |
|---|---|
| 运行全部用例 | Mod + Enter |
| 显示 / 隐藏侧边栏 | Mod + B |
| 切换侧栏面板 | Mod + Shift + E |
| 侧边栏左右对调 | Mod + Shift + B |
| 新增一条测试用例 | Mod + Alt + Enter |
| 打开 / 收起设置 | Mod + , |
- 这些键在编辑器里也生效,会抢过编辑器自己的同款键位。
- 改绑:设置 › 快捷键,点右侧输入框后按下新组合键。
- 按 Delete 清除绑定,按 Esc 取消录制。
- 与浏览器自带快捷键冲突时会拒绝绑定,并给出原因。
- 恢复默认把上表整个还原。
- 改过之后,编辑器底部状态栏的运行提示会跟着变。
9. 界面怎么调?
- 切面板:点侧边栏页头左侧那枚胶囊开关。
- 开关设置页签:点页头那颗齿轮。
- 收起侧边栏:单击两栏中间的分隔条,再点一次展开。
- 也可以按住分隔条拖到贴边,往外拖回来即展开。
- 换边:设置 › 外观 › 侧边栏位置。
- 放大界面:设置 › 外观 › 界面缩放,默认 100%。
- 换配色:设置 › 外观 › 主题,深色 / 浅色。
收起只是不显示。用例与文件树的展开状态都不会丢。
键盘:Tab 聚焦分隔条后,用 ← / → 微调宽度。
触屏上分隔条的热区会自动加宽,手指更好抓。
拖到贴边才折叠,离开边缘 60px 才展开,两个阈值错开。
10. 怎么装到设备、离线用?
- 打开设置 › 应用。
- 浏览器判定可安装时,安装按钮才是亮的。
- 点安装,按提示确认。
- 之后从桌面或主屏图标打开,就是独立窗口,没有地址栏。
- 装好之后按钮变成已安装,不会再提示。
- iPhone / iPad 的 Safari 没有这个按钮,要手动走「分享 → 添加到主屏幕」。
- 工具链按需缓存:用过一次的那种语言才能离线跑。
- 离线时编辑器、样例、本地沙箱照常;只有 Piston 与 Judge0 会失效。
另外,除了网页版,macOS / Windows / Android 的原生版本正在开发中:编译与运行都在本机完成, 不再依赖浏览器沙箱,因此更快、也能用上完整的本地工具链。网页版不受影响、会继续维护; 原生版本能发布时,会在这里补上获取方式。
桌面版还会多出第二种工作区。在设置 › 工作区里可以直接打开本机的
一个文件夹:文件树画的就是那个目录本身,新建、改名、删除动的都是磁盘上真实的文件,在别的编辑器里
改了它也会自动更新。题目信息与抓到的样例存在目录里的 .unnamed/ 下(不在文件正文里),
目录搬到哪台机器都跟着走。想换回来,在同一个地方点回到虚拟工作区即可,界面会重新加载。
11. 常见问题
代码会上传到服务器吗?
用本地沙箱不会,代码不离开这台设备。
切到 Piston 或 Judge0 时,代码会发到你填的地址。
需要联网吗?
第一次要下运行时,约 50MB。
下过之后常驻缓存,可以断网用。
清了浏览器数据就要重下一次。
支持哪些语言?
本地沙箱支持 C++ 与 Python 3。
其它语言请切到 Piston 或 Judge0。
支持范围取决于你所连的那台服务。
编辑器有自动补全吗?
有,但只给 C / C++ / Python 三种语言的代码文件(.c、.cpp、.py)。打几个字母候选框会自动弹出:方向键翻动,Tab 采用当前那条,Esc 关掉。
候选分三类:关键字、常用标准库(vector、sort、printf、print)与代码片段(main、fori、ifmain)。片段带占位符,采用后按 Tab 在占位符之间跳。
它是查表,不是语言服务:不认变量名与类型、不能跳转定义,也不会实时报错;同一个文件里出现过的词也会一起建议。.md 等其它文件不参与。
为什么第一次运行明显更慢?
首次要下运行时。
之后每份新代码的第一个用例要付一次编译开销。
同一份代码连续跑多个用例只编译一次。
后台还会生成一份 STL 预编译头,排在空闲时间,不阻塞操作。
它只覆盖最常用的 5 个标准库头,失败也不影响正常编译。
为什么耗时和别的评测服务对不上?
这里的耗时只计运行段,不含编译与排队。
所以数字比按总耗时统计的平台小。
不同引擎与不同设备之间也不适合直接比。
数据存在哪里?
偏好、草稿、样例与两栏比例存在 localStorage 里。
文件树与文件正文在 IndexedDB 里。
预编译头也在 IndexedDB 里。
都只在这台设备的这个浏览器里,清除浏览器数据会一并清掉。
上传到云端的设置是公开的吗?
是。读取不需要登录,有两条路:在设置 › 云端同步里填上 Codeforces 用户名、点导入;或者把用户名接在站点网址后面,形如 https://www.998244353.best/he-jie。装成独立窗口的应用(PWA)没有地址栏,用前者。
导入与登录是两件事:导入只是取回一份公开的配置,不用取码验证,也不会把这台设备绑到那个用户名上。
导入、上传或登录成功之后,地址栏会自动变成 网址/用户名 的形式(形如 https://www.998244353.best/he-jie)—— 这条地址记的就是「我现在用的是这套配置」,可以直接收藏,也可以原样发给别人。
所以点上传本机设置就等于同意公开这份配置。
上传的只有偏好类项:主题、快捷键、界面缩放、侧边栏位置、两栏比例、运行时限这些。
判题服务器地址、手写的测试用例、文件树与文件正文都不会上传。
插件抓不到题目怎么办?
先确认本站这个页面是开着的。
再看浏览器插件里是否显示了版本号。
没显示就点重新检测;仍不行就刷新本页。
插件被重载过而页面一直没刷新时,会失联。
12. 致谢与开源许可
感谢下面这些项目的作者与维护者。
本站自己写的只有界面、交互与判题逻辑。
完整授权文档(含每个组件的版本号、许可证与落点): 第三方开源组件与许可。
| 组件 | 许可 | 在这里负责什么 |
|---|---|---|
| Vue | MIT | 界面的框架 |
| Monaco Editor(微软,VS Code 的编辑器内核) | MIT | 代码编辑器;随它一并分发进来的还有 marked(MIT)与 DOMPurify(MPL-2.0 或 Apache-2.0 双许可) |
runno(@runno/wasi) |
MIT | 本地沙箱的 WASI 运行时:起实例、喂输入,以及超时(TLE)时把它中断掉 |
| LLVM / clang 与 lld | Apache-2.0 WITH LLVM-exception | 本地编译 C++ 的编译器与链接器(wasm 版,8.0.1) |
| wasi-libc | Apache-2.0 WITH LLVM-exception | 上面那套 clang 用的 C 标准库与启动代码 |
| libc++ / libc++abi | MIT | C++ 标准库(<vector>、<string> 这些) |
| compiler-rt | Apache-2.0 WITH LLVM-exception | 编译器运行时里那些内建函数 |
| CPython | PSF License | 本地跑 Python 3.11(wasm 构建) |
| seti-ui | MIT | 文件树里的 C++ 图标 |
| Competitive Companion | MIT | 浏览器插件 CC for Web 的上游项目(本站用的是改造版) |
- 界面全部使用你设备上的系统字体,没有自托管或第三方的网络字体;代码区另内置三款开源等宽字体(JetBrains Mono / Fira Code / Cascadia Code),只在你于「设置 › 编辑器 › 字体」里选中时才下载,同样不依赖任何第三方服务。
- 应用图标与分享图是本站自制。
- 上表里的 C++ 工具链与 Python 解释器都是上游现成的预编译产物(分别出自 binji 的 wasm-clang 与 CPython 官方构建,经 runno 的项目分发),本站只是把它们放到自己服务器上供下载,没有改动。
- Piston(MIT)与 Judge0(GPL-3.0)是本站对接的外部评测服务,它们的代码不在本站里, 服务端要你自己部署。你填的服务地址决定了代码会被发到哪里。
-
完整清单在 第三方开源组件与许可 那一页(由仓库根目录的
NOTICE.md生成),含每个组件的版本号、许可证与落点。 - 想把这里的工具链、图标或代码用到别处,请遵守上表对应上游项目的许可条款。