Skip to content

Latest commit

History

75 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

介绍

该项目可用于快速部署一个 classroom 排行榜网站

其是根据 Github Classroom 里同学们的提交记录,结合 github pages 来生成一个排行网站,可以查看当前每一个作业的完成情况,搜索到自己和其他学生的排名,方便大家更快的了解到课堂的整体进度,提高同学们的参与度,督促自己的成长和进步。

shortcut

如何快速部署

1. Fork 项目

注意在 fork 时,需要将下面的 Owner 设置为 classroom 所在的组织下。

fork

2. 添加环境变量

由于 action 在部署执行过程中会获取作业的最新数据,而更新的方式需要调用 Github APIclassroom 的相关接口,因此需要配置以下两个变量获取访问接口的权限。

2.1 设置 AUTH_TOKEN

a. 首先获取组织中任意 Owner 成员的 Personal access tokens (详细参考)

pat

b. 回到项目 setting 中, 把上一步获取的 Personal access tokens 配置给 action 的环境变量 AUTH_TOKEN

pat

2.2 设置 SESSION_TOKEN

该变量的值是取登录到 classroom.github.com 网站中的 cookie._github_classroom_session 字段

pat

3 打开 workflow 开关

因为项目的 action 中有一个执行定时任务的 workflow, 需要手动开启。 该任务每小时会刷新一次排行榜数据。

fork

为什么需要手动打开 workflow

4. 配置 gh-pages

项目的 setting 中进行 pages 设置

fork

5. 修改配置

在 spider 文件夹下 src/config/index.ts 的相关配置

exportconstorganiztion: string='os-autograding';// 组织exportconstfullOrganization: string='113154735-os-autograding-classroom-a857a2';// classroom名称exportconstassignment='oskernel';// assignmentexportconstworks=['default','main'];// assignment 的不同情况 对应latest.json中的

eg: fullOrganization 要进入 github classroom 后从url 获取

完整的 classroom 名称

config

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - LearningOS/rust-rustlings-ranking · GitHub
Skip to content

Latest commit

History

75 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

介绍

该项目可用于快速部署一个 classroom 排行榜网站

其是根据 Github Classroom 里同学们的提交记录,结合 github pages 来生成一个排行网站,可以查看当前每一个作业的完成情况,搜索到自己和其他学生的排名,方便大家更快的了解到课堂的整体进度,提高同学们的参与度,督促自己的成长和进步。

shortcut

如何快速部署

1. Fork 项目

注意在 fork 时,需要将下面的 Owner 设置为 classroom 所在的组织下。

fork

2. 添加环境变量

由于 action 在部署执行过程中会获取作业的最新数据,而更新的方式需要调用 Github APIclassroom 的相关接口,因此需要配置以下两个变量获取访问接口的权限。

2.1 设置 AUTH_TOKEN

a. 首先获取组织中任意 Owner 成员的 Personal access tokens (详细参考)

pat

b. 回到项目 setting 中, 把上一步获取的 Personal access tokens 配置给 action 的环境变量 AUTH_TOKEN

pat

2.2 设置 SESSION_TOKEN

该变量的值是取登录到 classroom.github.com 网站中的 cookie._github_classroom_session 字段

pat

3 打开 workflow 开关

因为项目的 action 中有一个执行定时任务的 workflow, 需要手动开启。 该任务每小时会刷新一次排行榜数据。

fork

为什么需要手动打开 workflow

4. 配置 gh-pages

项目的 setting 中进行 pages 设置

fork

5. 修改配置

在 spider 文件夹下 src/config/index.ts 的相关配置

exportconstorganiztion: string='os-autograding';// 组织exportconstfullOrganization: string='113154735-os-autograding-classroom-a857a2';// classroom名称exportconstassignment='oskernel';// assignmentexportconstworks=['default','main'];// assignment 的不同情况 对应latest.json中的

eg: fullOrganization 要进入 github classroom 后从url 获取

完整的 classroom 名称

config

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - LearningOS/rust-rustlings-ranking · GitHub
Skip to content

Latest commit

History

75 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

介绍

该项目可用于快速部署一个 classroom 排行榜网站

其是根据 Github Classroom 里同学们的提交记录,结合 github pages 来生成一个排行网站,可以查看当前每一个作业的完成情况,搜索到自己和其他学生的排名,方便大家更快的了解到课堂的整体进度,提高同学们的参与度,督促自己的成长和进步。

shortcut

如何快速部署

1. Fork 项目

注意在 fork 时,需要将下面的 Owner 设置为 classroom 所在的组织下。

fork

2. 添加环境变量

由于 action 在部署执行过程中会获取作业的最新数据,而更新的方式需要调用 Github APIclassroom 的相关接口,因此需要配置以下两个变量获取访问接口的权限。

2.1 设置 AUTH_TOKEN

a. 首先获取组织中任意 Owner 成员的 Personal access tokens (详细参考)

pat

b. 回到项目 setting 中, 把上一步获取的 Personal access tokens 配置给 action 的环境变量 AUTH_TOKEN

pat

2.2 设置 SESSION_TOKEN

该变量的值是取登录到 classroom.github.com 网站中的 cookie._github_classroom_session 字段

pat

3 打开 workflow 开关

因为项目的 action 中有一个执行定时任务的 workflow, 需要手动开启。 该任务每小时会刷新一次排行榜数据。

fork

为什么需要手动打开 workflow

4. 配置 gh-pages

项目的 setting 中进行 pages 设置

fork

5. 修改配置

在 spider 文件夹下 src/config/index.ts 的相关配置

exportconstorganiztion: string='os-autograding';// 组织exportconstfullOrganization: string='113154735-os-autograding-classroom-a857a2';// classroom名称exportconstassignment='oskernel';// assignmentexportconstworks=['default','main'];// assignment 的不同情况 对应latest.json中的

eg: fullOrganization 要进入 github classroom 后从url 获取

完整的 classroom 名称

config

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - LearningOS/rust-rustlings-ranking · GitHub
Skip to content

Latest commit

History

75 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

介绍

该项目可用于快速部署一个 classroom 排行榜网站

其是根据 Github Classroom 里同学们的提交记录,结合 github pages 来生成一个排行网站,可以查看当前每一个作业的完成情况,搜索到自己和其他学生的排名,方便大家更快的了解到课堂的整体进度,提高同学们的参与度,督促自己的成长和进步。

shortcut

如何快速部署

1. Fork 项目

注意在 fork 时,需要将下面的 Owner 设置为 classroom 所在的组织下。

fork

2. 添加环境变量

由于 action 在部署执行过程中会获取作业的最新数据,而更新的方式需要调用 Github APIclassroom 的相关接口,因此需要配置以下两个变量获取访问接口的权限。

2.1 设置 AUTH_TOKEN

a. 首先获取组织中任意 Owner 成员的 Personal access tokens (详细参考)

pat

b. 回到项目 setting 中, 把上一步获取的 Personal access tokens 配置给 action 的环境变量 AUTH_TOKEN

pat

2.2 设置 SESSION_TOKEN

该变量的值是取登录到 classroom.github.com 网站中的 cookie._github_classroom_session 字段

pat

3 打开 workflow 开关

因为项目的 action 中有一个执行定时任务的 workflow, 需要手动开启。 该任务每小时会刷新一次排行榜数据。

fork

为什么需要手动打开 workflow

4. 配置 gh-pages

项目的 setting 中进行 pages 设置

fork

5. 修改配置

在 spider 文件夹下 src/config/index.ts 的相关配置

exportconstorganiztion: string='os-autograding';// 组织exportconstfullOrganization: string='113154735-os-autograding-classroom-a857a2';// classroom名称exportconstassignment='oskernel';// assignmentexportconstworks=['default','main'];// assignment 的不同情况 对应latest.json中的

eg: fullOrganization 要进入 github classroom 后从url 获取

完整的 classroom 名称

config

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - LearningOS/rust-rustlings-ranking · GitHub
Skip to content

Latest commit

History

75 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

介绍

该项目可用于快速部署一个 classroom 排行榜网站

其是根据 Github Classroom 里同学们的提交记录,结合 github pages 来生成一个排行网站,可以查看当前每一个作业的完成情况,搜索到自己和其他学生的排名,方便大家更快的了解到课堂的整体进度,提高同学们的参与度,督促自己的成长和进步。

shortcut

如何快速部署

1. Fork 项目

注意在 fork 时,需要将下面的 Owner 设置为 classroom 所在的组织下。

fork

2. 添加环境变量

由于 action 在部署执行过程中会获取作业的最新数据,而更新的方式需要调用 Github APIclassroom 的相关接口,因此需要配置以下两个变量获取访问接口的权限。

2.1 设置 AUTH_TOKEN

a. 首先获取组织中任意 Owner 成员的 Personal access tokens (详细参考)

pat

b. 回到项目 setting 中, 把上一步获取的 Personal access tokens 配置给 action 的环境变量 AUTH_TOKEN

pat

2.2 设置 SESSION_TOKEN

该变量的值是取登录到 classroom.github.com 网站中的 cookie._github_classroom_session 字段

pat

3 打开 workflow 开关

因为项目的 action 中有一个执行定时任务的 workflow, 需要手动开启。 该任务每小时会刷新一次排行榜数据。

fork

为什么需要手动打开 workflow

4. 配置 gh-pages

项目的 setting 中进行 pages 设置

fork

5. 修改配置

在 spider 文件夹下 src/config/index.ts 的相关配置

exportconstorganiztion: string='os-autograding';// 组织exportconstfullOrganization: string='113154735-os-autograding-classroom-a857a2';// classroom名称exportconstassignment='oskernel';// assignmentexportconstworks=['default','main'];// assignment 的不同情况 对应latest.json中的

eg: fullOrganization 要进入 github classroom 后从url 获取

完整的 classroom 名称

config

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - LearningOS/rust-rustlings-ranking · GitHub
Skip to content

Latest commit

History

75 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

介绍

该项目可用于快速部署一个 classroom 排行榜网站

其是根据 Github Classroom 里同学们的提交记录,结合 github pages 来生成一个排行网站,可以查看当前每一个作业的完成情况,搜索到自己和其他学生的排名,方便大家更快的了解到课堂的整体进度,提高同学们的参与度,督促自己的成长和进步。

shortcut

如何快速部署

1. Fork 项目

注意在 fork 时,需要将下面的 Owner 设置为 classroom 所在的组织下。

fork

2. 添加环境变量

由于 action 在部署执行过程中会获取作业的最新数据,而更新的方式需要调用 Github APIclassroom 的相关接口,因此需要配置以下两个变量获取访问接口的权限。

2.1 设置 AUTH_TOKEN

a. 首先获取组织中任意 Owner 成员的 Personal access tokens (详细参考)

pat

b. 回到项目 setting 中, 把上一步获取的 Personal access tokens 配置给 action 的环境变量 AUTH_TOKEN

pat

2.2 设置 SESSION_TOKEN

该变量的值是取登录到 classroom.github.com 网站中的 cookie._github_classroom_session 字段

pat

3 打开 workflow 开关

因为项目的 action 中有一个执行定时任务的 workflow, 需要手动开启。 该任务每小时会刷新一次排行榜数据。

fork

为什么需要手动打开 workflow

4. 配置 gh-pages

项目的 setting 中进行 pages 设置

fork

5. 修改配置

在 spider 文件夹下 src/config/index.ts 的相关配置

exportconstorganiztion: string='os-autograding';// 组织exportconstfullOrganization: string='113154735-os-autograding-classroom-a857a2';// classroom名称exportconstassignment='oskernel';// assignmentexportconstworks=['default','main'];// assignment 的不同情况 对应latest.json中的

eg: fullOrganization 要进入 github classroom 后从url 获取

完整的 classroom 名称

config

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - LearningOS/rust-rustlings-ranking · GitHub
Skip to content

Latest commit

History

75 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

介绍

该项目可用于快速部署一个 classroom 排行榜网站

其是根据 Github Classroom 里同学们的提交记录,结合 github pages 来生成一个排行网站,可以查看当前每一个作业的完成情况,搜索到自己和其他学生的排名,方便大家更快的了解到课堂的整体进度,提高同学们的参与度,督促自己的成长和进步。

shortcut

如何快速部署

1. Fork 项目

注意在 fork 时,需要将下面的 Owner 设置为 classroom 所在的组织下。

fork

2. 添加环境变量

由于 action 在部署执行过程中会获取作业的最新数据,而更新的方式需要调用 Github APIclassroom 的相关接口,因此需要配置以下两个变量获取访问接口的权限。

2.1 设置 AUTH_TOKEN

a. 首先获取组织中任意 Owner 成员的 Personal access tokens (详细参考)

pat

b. 回到项目 setting 中, 把上一步获取的 Personal access tokens 配置给 action 的环境变量 AUTH_TOKEN

pat

2.2 设置 SESSION_TOKEN

该变量的值是取登录到 classroom.github.com 网站中的 cookie._github_classroom_session 字段

pat

3 打开 workflow 开关

因为项目的 action 中有一个执行定时任务的 workflow, 需要手动开启。 该任务每小时会刷新一次排行榜数据。

fork

为什么需要手动打开 workflow

4. 配置 gh-pages

项目的 setting 中进行 pages 设置

fork

5. 修改配置

在 spider 文件夹下 src/config/index.ts 的相关配置

exportconstorganiztion: string='os-autograding';// 组织exportconstfullOrganization: string='113154735-os-autograding-classroom-a857a2';// classroom名称exportconstassignment='oskernel';// assignmentexportconstworks=['default','main'];// assignment 的不同情况 对应latest.json中的

eg: fullOrganization 要进入 github classroom 后从url 获取

完整的 classroom 名称

config

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - LearningOS/rust-rustlings-ranking · GitHub
Skip to content

Latest commit

History

75 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

介绍

该项目可用于快速部署一个 classroom 排行榜网站

其是根据 Github Classroom 里同学们的提交记录,结合 github pages 来生成一个排行网站,可以查看当前每一个作业的完成情况,搜索到自己和其他学生的排名,方便大家更快的了解到课堂的整体进度,提高同学们的参与度,督促自己的成长和进步。

shortcut

如何快速部署

1. Fork 项目

注意在 fork 时,需要将下面的 Owner 设置为 classroom 所在的组织下。

fork

2. 添加环境变量

由于 action 在部署执行过程中会获取作业的最新数据,而更新的方式需要调用 Github APIclassroom 的相关接口,因此需要配置以下两个变量获取访问接口的权限。

2.1 设置 AUTH_TOKEN

a. 首先获取组织中任意 Owner 成员的 Personal access tokens (详细参考)

pat

b. 回到项目 setting 中, 把上一步获取的 Personal access tokens 配置给 action 的环境变量 AUTH_TOKEN

pat

2.2 设置 SESSION_TOKEN

该变量的值是取登录到 classroom.github.com 网站中的 cookie._github_classroom_session 字段

pat

3 打开 workflow 开关

因为项目的 action 中有一个执行定时任务的 workflow, 需要手动开启。 该任务每小时会刷新一次排行榜数据。

fork

为什么需要手动打开 workflow

4. 配置 gh-pages

项目的 setting 中进行 pages 设置

fork

5. 修改配置

在 spider 文件夹下 src/config/index.ts 的相关配置

exportconstorganiztion: string='os-autograding';// 组织exportconstfullOrganization: string='113154735-os-autograding-classroom-a857a2';// classroom名称exportconstassignment='oskernel';// assignmentexportconstworks=['default','main'];// assignment 的不同情况 对应latest.json中的

eg: fullOrganization 要进入 github classroom 后从url 获取

完整的 classroom 名称

config

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages