Git Product home page Git Product logo

gatsby-oi-wiki's Introduction

Word Art

欢迎来到 OI Wiki

Gitpod Ready-to-Code GitHub Actions Uptime Robot Status Telegram QQ GitHub watchers GitHub stars


内容

编程竞赛发展多年,难度越来越高,内容越来越复杂,而网上资料大多零散,初学者往往并不知道如何系统地学习相关知识,需要花费大量时间摸索。

为了方便热爱编程竞赛的小伙伴更好地入门,2018 年 7 月份,OI Wiki 迁移至 GitHub。随着 OI Wiki 的内容不断完善,越来越多的小伙伴参与其中。

OI Wiki 致力于成为一个免费开放且持续更新的知识整合站点,大家可以在这里获取关于 编程竞赛 (competitive programming) 有趣又实用的知识,我们为大家准备了竞赛中的基础知识、常见题型、解题思路以及常用工具等内容,帮助大家更快速深入地学习编程竞赛。

目前,OI Wiki 的内容还有很多不完善的地方,知识点覆盖不够全面,存在一些低质量页面需要修改。OI Wiki 团队以及参与贡献的小伙伴们正在积极完善这些内容。

关于上述待完善内容,请参见 OI WikiIssues 以及 迭代计划

与此同时,OI Wiki 源于社区,提倡 知识自由,在未来也绝不会商业化,将始终保持独立自由的性质。


部署

本项目目前采用 MkDocs 部署在 oi-wiki.org

我们在 status.oi-wiki.org 维护了一份镜像站列表,它们的内容和 oi-wiki.org 都是相同的。

当然,也可以在本地部署。(需要安装 Python3 和 Pipenv

如果遇到问题,可以查阅 F.A.Q. 来了解更多信息。

git clone https://github.com/OI-wiki/OI-wiki.git --depth=1

cd OI-wiki

# 安装 mkdocs
pipenv install --pypi-mirror https://pypi.tuna.tsinghua.edu.cn/simple/

# 使用我们的自定义主题(Windows 下请使用 Git Bash 执行)
# 安装主题时将连接网络下载资源,可通过以下配置项控制下载链接
# .gitmodules:
# - url
# scripts/pre-build/install-theme-vendor.sh:
# - MATHJAX_URL
# - MATERIAL_ICONS_URL
./scripts/pre-build/install-theme.sh

# 两种方法(选其一即可):
# 1. 运行一个本地服务器,访问 http://127.0.0.1:8000 可以查看效果
pipenv run mkdocs serve -v

# 2. 在 site 文件夹下得到静态页面
pipenv run mkdocs build -v

# 获取 mkdocs 的命令行工具的说明(解释了命令和参数的含义)
pipenv run mkdocs --help

我们现在在服务器端渲染 MathJax,如果希望实现类似效果,可以参考 build.yml。(需要安装 Node.js)

镜像

# Gitee 码云 上的镜像仓库和 GitHub 仓库的内容相同
git clone https://gitee.com/OI-wiki/OI-wiki.git

离线版

可以使用 gh-pages 分支的内容

git clone https://gitee.com/OI-wiki/OI-wiki.git -b gh-pages

本地启动一个 http 服务器可能会更方便一些。

# 如果是 python3
python3 -m http.server
# 如果是 python2
python2 -m SimpleHTTPServer
# 有些环境下找不到名叫 python3/python2 的可执行文件,不妨运行 python 试试

如何参与完善 OI Wiki

我们非常欢迎你为 OI Wiki 编写内容,将自己的所学所得与大家分享。

具体的贡献方式在 如何参与


版权声明

知识共享许可协议
除特别注明外,项目中除了代码部分均采用(Creative Commons BY-SA 4.0) 知识共享署名 - 相同方式共享 4.0 国际许可协议及附加的 The Star And Thank Author License 进行许可。

换言之,使用过程中您可以自由地共享、演绎,但是必须署名、以相同方式共享、分享时没有附加限制,

而且应该为 GitHub 仓库点赞(Star)。

而如果你想要引用这个 GitHub 仓库,可以使用如下的 bibtex:

@misc{oiwiki,
  author = {OI Wiki Team},
  title = {OI Wiki},
  year = {2016},
  publisher = {GitHub},
  journal = {GitHub Repository},
  howpublished = {\url{https://github.com/OI-wiki/OI-wiki}},
}

鸣谢

本项目受 CTF Wiki 的启发,在编写过程中参考了诸多资料,在此一并致谢。

非常感谢一起完善 OI Wiki小伙伴们 和为 OI Wiki 捐赠的 朋友们

特别感谢 24OI 的朋友们的大力支持!

感谢 北大算协 和 Hulu 的支持!

gatsby-oi-wiki's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

gatsby-oi-wiki's Issues

预取链接

希望能在 hover 站内链接的时候即发起请求,减少等待时间。

tabs 的点击动画和下划线动画在视觉上有些冲突

切换标签页时同时有点击按钮的动画 image
与切换标签页的动画
image

这两个动画同时进行,一个在点击处发生,一个从远处开始,在视觉上会使人有点找不到焦点。

我的建议是选择下面两种方案其一:

  1. 去掉点击按钮的动画。
  2. 用其它方式(如 tab 的字体,像主站那样)表示当前标签页,不给这个新的方式添加切换动画,或者使用不与点击按钮动画冲突的动画。

需求:添加伪代码语法

目前通过 mathjax 的实现太复杂了,维护起来压力太大

期望行为是来个纯文本的

```pseudo

可能需要类似 details 那样搞,来一组 remark 和 rehype 侧的工具来支持

文档兼容性问题

#247

在试图添加 OI-Wiki 的文档进入本项目测试时出现了大量无法解决的问题,因此在这里开一个 issue 等待解决方案。

正在阻塞本 issue 调试的问题

  • 构建速度过于缓慢,在不处理图片的情况下仍需要半小时左右的时间生成页面
  • 生成页面时的 trace 信息没有过多参考价值

目前已知问题

  • [fixable] html 的自闭合标签在新框架中需要妥善关闭
    <img > -> <img />, <br> -> <br />
    受影响页面: index.md hulu.md etc.
  • 打包后过大 (> 500KB), babel 停止优化打包
  • 在 inlineCode 中的 <> <ESC> 等内容似乎仍会被识别成标签 (lang/editor/vim.md)
  • 需要正确处理文档头部的 author 等信息 (应在 migrator 处理)
  • 无法识别的代码块语言 tex latex python3 pas text 等等
  • 待定位: 生成失败原因

... 其他问题

其他注意事项

  • 转移后的文档不应该包含任何内联 Javascript 代码 (index.md)

题目引用卡

  • 用来表示一道题目的组件
  • 可以从预定义的几种来源按题号增加或是直接使用链接
  • 使用方法也许可以从 note 上魔改
    一种可能的方法:
    ???+problem luogu P1001 ....
  • 支持显示题目来源、题号,点击跳转到相应OJ、题目描述
  • 题目标程、空间时间限制...?

如何支持 glossary

简单点,类似 (key, 内链) 的 pair
image

想到的思路好像需要往 meta 里面塞 keywords 啥的,或者正文里面插自定义语法 🤔

推荐文章功能

脑洞:在页面尾部展示一些同 topic 的文章推荐(不是站内,比如优秀题解、总结之类的)

image

  • 允许网页上直接提交 / 存 Github 上通过 Github 提交
  • 滋兹 vote,类似 hacker news?

image

以上似乎可以进一步拓展为例题、习题的推荐。。 🤔

暗色模式在首次访问时产生闪动

由于 js 会在 html 之后加载,因此写在 js 中的暗色模式的相关逻辑往往会在网页元素显示出来之后才能得到加载。而在进行服务端渲染时,默认的主题是亮色主题。因此,如果用户设置了暗色模式,在首次访问的时候,会先看到亮色的页面,然后在 js 加载完毕后才会变成暗色。

解决这个问题,需要在页面的头部加载一个较为轻量的 js 来处理暗色模式的相关逻辑。

取消 CSS 的内联

目前,在build生成的html中,css类内联在head里面,每一个html都有一份相同的内联格式,这些css无法被缓存,可能存在性能损失。

因此希望能把css单独拿出来。

对评论打 tag

因为评论区有一些订正类型的,在 fix 之后失效了,但是目前似乎只能删掉而没啥更好的形式

一点建议

在标题后面都会出现一个链接符号,看起来挺丑的,不知道能不能像以前一样鼠标放上去再显示呢

添加 setting 页

有一些东西不太适合我们替用户做决定,可以做成设置页,让用户自己选择:

  • 主题色和强调色
  • 暗色模式是否启用/定时启用/根据偏好启用
  • 暗色模式下图片亮度
  • 是否启用滚动动画

待补充...

改改顶部图标布局偏移

修改后效果图:
image

做法大概是改下 .MuiToolbar-gutterspadding-left,个人实测可以设成 5px6px 这个范围。

但是目前这个属性似乎是模板提供的,得强行 override(?

mathjax SSR

Margatroid, [04.05.20 20:33]
现在点击链接之后,应该会去请求数据,等数据到了之后再显示

Ir1d XD+, [04.05.20 20:40]
[In reply to Margatroid]
对我感觉是这样的,然后因为我这里网络比较卡貌似这个请求会拖一阵子 😂 就是看起来点击了链接但是没有跳转

Xiaodai Dai, [04.05.20 20:41]
+1

Ir1d XD+, [04.05.20 20:41]
感觉可能是 gatsby 的 feature


Margatroid, [04.05.20 20:42]
那感觉这个问题可以通过加进度条—或者说更广义的,通过与 react 交互来实现?

Margatroid, [04.05.20 20:42]
比如点了之后,立即把正文的内容变成骨架屏

i18n support

  • 可以考虑加个 button 切换站点(类似 zh.javascript.info
  • 或者是 ctf wiki 那样直接站内换 url

仅在CI构建时安装图片相关的包

图片相关的包需要挂代理,安装build tools,在 Linux 以外的设备上都存在一定的安装难度。因此,希望能把图片相关的包移出开发时的工作流,仅在 CI 构建时安装、使用。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.