diff --git a/.github/workflows/webpage.yml b/.github/workflows/webpage.yml new file mode 100644 index 00000000..be04471b --- /dev/null +++ b/.github/workflows/webpage.yml @@ -0,0 +1,117 @@ +name: 部署文档 + +on: + push: + branches: ["main"] # 确保这是你正在使用的分支名称 + workflow_dispatch: + +permissions: + contents: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + deploy-gh-pages: + runs-on: ubuntu-latest + steps: + - name: 环境 - 构建库 + uses: actions/checkout@v4 + with: + fetch-depth: 1 + repository: LincZero/LincZero.github.io + ref: 'main' # 分支,旧raw + + - name: 环境 - 安装 pnpm + uses: pnpm/action-setup@v2 + with: + run_install: true + version: 8 + + - name: 环境 - 设置 Node.js + uses: actions/setup-node@v3 + with: + node-version: 20 + cache: pnpm + + # 获取仓库的相关配置 + # https://docs.github.com/zh/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#default-environment-variables + # TODO:若 “仓库无前缀名” 是.github.io结尾,则设置为"/" + - name: 配置 - 获取仓库配置 + id: config1 # 用于给其他步骤引用 + working-directory: ./scripts/ + run: | + > git_config.json # 先清空 + echo "{" >> git_config.json + echo " \"GITHUB_WORKSPACE\": \"${GITHUB_WORKSPACE}\"," >> git_config.json # 工作路径 + echo " \"GITHUB_ACTION_PATH\": \"${GITHUB_ACTION_PATH}\"," >> git_config.json # action路径 + echo " \"GITHUB_ACTION_REPOSITORY\": \"${GITHUB_ACTION_REPOSITORY}\"," >> git_config.json # action仓库 + echo " \"GITHUB_REPOSITORY_OWNER\": \"${GITHUB_REPOSITORY_OWNER}\"," >> git_config.json # 仓库所属(格式: 可以是组织) + echo " \"GITHUB_ACTOR\": \"${GITHUB_ACTOR}\"," >> git_config.json # 仓库作者(格式: 不会是组织) + echo " \"GITHUB_REPOSITORY\": \"${GITHUB_REPOSITORY}\"," >> git_config.json # 仓库标识(格式: 个人或组织/仓库名) + echo " \"CALC_URL\": \"${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/\"," >> git_config.json # 仓库url + REPO_NAME=$(echo "${GITHUB_REPOSITORY}" | cut -d"/" -f2) + echo " \"CALC_REPO_NAME\": \"${REPO_NAME}\"" >> git_config.json # 仓库无前缀名 + echo "}" >> git_config.json + echo "::set-output name=REPO_NAME::$REPO_NAME" + + - name: 文档 - 文档库克隆 + working-directory: ./src/ + run: | + rm -f README.md + + # 文档的克隆、构建、部署。注意 `clone --depth 1` 只拉最近一次提交,减少时间 + # git clone --depth 1 https://github.com/${GITHUB_REPOSITORY}.git # 如果有多个clone项则替换成这个,避免冲突 + git clone --depth 1 https://github.com/${GITHUB_REPOSITORY}.git temp_repo + + # 该仓库为代理仓库,使用链接仓库而非此仓库 + if [ -f temp_repo/agency ]; then + GIT_LINK=$(head -n 1 temp_repo/agency) + rm -rf temp_repo + git clone --depth 1 $GIT_LINK temp_repo + echo "with agency" + else + echo "without agency" + fi + + - name: 文档 - 文档库docs文件夹的处理 + working-directory: ./src/ + run: | + if [ -d temp_repo/docs ]; then + find temp_repo/* -maxdepth 0 -name docs -prune -o -exec rm -rf {} \; + mv temp_repo/docs/* . + rm -rf temp_repo + echo "with docs" + else + rsync -a temp_repo/ . + rm -rf temp_repo + echo "without docs" + fi + + # [!code] 根据实际情况修改 (需要在仓库配置写入以及和文档仓库clone这两个步骤的后面) + - name: 配置 - 设置 + working-directory: ./ + run: | + # sed -i 's/base: \"\/\"/base: \"\/${{steps.config1.outputs.REPO_NAME}}\/\"/g' ./src/.vuepress/config.ts + cat ./scripts/git_config.json + rm -f ./src/.vuepress/config_cover.js + rm -f ./src/.vuepress/theme_cover.js + pnpm run gen-config + + - name: 文档 - 构建 + env: + NODE_OPTIONS: --max_old_space_size=20480 + run: |- + node -e 'console.log(v8.getHeapStatistics())' + pnpm run docs:build + > src/.vuepress/dist/.nojekyll + + - name: 文档 - 部署 + uses: JamesIves/github-pages-deploy-action@v4 + with: + # 这是文档部署到的分支名称 + branch: gh-pages + folder: src/.vuepress/dist diff --git a/01. DesignAndDevelop/Develop/04. Project/Type/Doc/MarkdwonAbout/01. Soft And Frame/Obsidian/README.md b/01. DesignAndDevelop/Develop/04. Project/Type/Doc/MarkdwonAbout/01. Soft And Frame/Obsidian/README.md index bcf225c7..b1e63e4f 100644 --- a/01. DesignAndDevelop/Develop/04. Project/Type/Doc/MarkdwonAbout/01. Soft And Frame/Obsidian/README.md +++ b/01. DesignAndDevelop/Develop/04. Project/Type/Doc/MarkdwonAbout/01. Soft And Frame/Obsidian/README.md @@ -18,13 +18,13 @@ create_time: 2022‎-11‎-‎11‎ (只翻译了一部分,看原文很有必要。像Vault这种东西翻译版就没有) - 推荐链接 - **由 Obsidian 团队提供的资源:** - - [Obsidian Sample Plugin](https://github.com/obsidianmd/obsidian-sample-plugin) - - [Obsidian API](https://github.com/obsidianmd/obsidian-api) + - [Obsidian Sample Plugin](https://github.com/obsidianmd/obsidian-sample-plugin) + - [Obsidian API](https://github.com/obsidianmd/obsidian-api) - **由社区成员提供的资源:** - - [for Plugin Developers](https://publish.obsidian.md/hub/04+-+Guides%2C+Workflows%2C+%26+Courses/for+Plugin+Developers) in Obsidian Hub - - [Plugins mini FAQ](https://forum.obsidian.md/t/plugins-mini-faq/7737) - - [How to create a plugin for Obsidian](https://www.youtube.com/watch?v=XaES2G3PVpg) by [@phibr0](https://github.com/phibr0) - - [Create Your Own Obsidian Plugin](https://www.youtube.com/watch?v=9lA-jaMNS0k) by [Antone Heyward](https://www.youtube.com/channel/UC9w43btR2UUsfR6ZUf3AlqQ) - - [Unofficial API FAQ](https://liamca.in/Obsidian/API+FAQ/index) by [Liam Cain](https://liamca.in) - - [Obsidian Tools](https://github.com/obsidian-tools/obsidian-tools) - - [Getting Started with CodeMirror 6](https://github.com/nothingislost/obsidian-cm6-attributes#getting-started-with-codemirror-6) by [NothingIsLost](https://github.com/nothingislost) \ No newline at end of file + - [for Plugin Developers](https://publish.obsidian.md/hub/04+-+Guides%2C+Workflows%2C+%26+Courses/for+Plugin+Developers) in Obsidian Hub + - [Plugins mini FAQ](https://forum.obsidian.md/t/plugins-mini-faq/7737) + - [How to create a plugin for Obsidian](https://www.youtube.com/watch?v=XaES2G3PVpg) by [@phibr0](https://github.com/phibr0) + - [Create Your Own Obsidian Plugin](https://www.youtube.com/watch?v=9lA-jaMNS0k) by [Antone Heyward](https://www.youtube.com/channel/UC9w43btR2UUsfR6ZUf3AlqQ) + - [Unofficial API FAQ](https://liamca.in/Obsidian/API+FAQ/index) by [Liam Cain](https://liamca.in) + - [Obsidian Tools](https://github.com/obsidian-tools/obsidian-tools) + - [Getting Started with CodeMirror 6](https://github.com/nothingislost/obsidian-cm6-attributes#getting-started-with-codemirror-6) by [NothingIsLost](https://github.com/nothingislost) diff --git "a/01. DesignAndDevelop/Develop/04. Project/Type/Doc/MarkdwonAbout/01. Soft And Frame/Obsidian/\344\274\230\347\247\200\346\217\222\344\273\266/\344\274\230\347\247\200\346\217\222\344\273\266.md" "b/01. DesignAndDevelop/Develop/04. Project/Type/Doc/MarkdwonAbout/01. Soft And Frame/Obsidian/\344\274\230\347\247\200\346\217\222\344\273\266/\344\274\230\347\247\200\346\217\222\344\273\266.md" index e69de29b..ba109a09 100644 --- "a/01. DesignAndDevelop/Develop/04. Project/Type/Doc/MarkdwonAbout/01. Soft And Frame/Obsidian/\344\274\230\347\247\200\346\217\222\344\273\266/\344\274\230\347\247\200\346\217\222\344\273\266.md" +++ "b/01. DesignAndDevelop/Develop/04. Project/Type/Doc/MarkdwonAbout/01. Soft And Frame/Obsidian/\344\274\230\347\247\200\346\217\222\344\273\266/\344\274\230\347\247\200\346\217\222\344\273\266.md" @@ -0,0 +1,13 @@ +# 优秀插件 + +这里指的不是在使用上的“优秀插件”,而是指可以供学习和参考的“优秀插件” + +即: + +- 代码风格好、架构简单、易于读懂和学习 +- 代码涉及的功能多,涉及常用功能,可供查看插件是如何使用api/如何实现某功能的 + +这一部分我主要是clone并做代码注释,没有记在文本笔记里 + +(现在想来,我应该建一个学习用的组织,然后fork到该组织中,然后进行代码注释。这样会更好,更容易日后复习和查阅。clone做不到这点) + diff --git "a/01. DesignAndDevelop/Develop/04. Project/Type/Doc/MarkdwonAbout/01. Soft And Frame/Obsidian/\346\217\222\344\273\266\345\274\200\345\217\221/\346\217\222\344\273\266\351\227\264\351\200\232\344\277\241.md" "b/01. DesignAndDevelop/Develop/04. Project/Type/Doc/MarkdwonAbout/01. Soft And Frame/Obsidian/\346\217\222\344\273\266\345\274\200\345\217\221/\346\217\222\344\273\266\351\227\264\351\200\232\344\277\241.md" new file mode 100644 index 00000000..4c86ecc5 --- /dev/null +++ "b/01. DesignAndDevelop/Develop/04. Project/Type/Doc/MarkdwonAbout/01. Soft And Frame/Obsidian/\346\217\222\344\273\266\345\274\200\345\217\221/\346\217\222\344\273\266\351\227\264\351\200\232\344\277\241.md" @@ -0,0 +1,171 @@ +--- +create_time: 2025-01-14 +Author: LincZero +--- +# 插件间通信 + +## GPT调研 + +kimi gpt: + +::: note + +Obsidian 插件之间可以互相通信,但需要通过一定的方法和 API 来实现。以下是一些相关的方法和 API: + +### 直接插件间通信 + +- **插件 API**:Obsidian 提供了一个插件 API,允许插件之间进行通信和交互。插件可以通过 API 访问其他插件的功能和数据。例如,插件可以注册命令、监听事件、访问其他插件的状态等- 。 +- **插件状态共享**:插件可以将数据存储在 Obsidian 的全局状态中,其他插件可以访问和修改这些状态。这样,不同插件之间可以共享数据,实现通信。 + +### 通过外部API通信 + +- **Local REST API 插件**:这个插件为 Obsidian 提供了一个本地的 REST API 服务,允许外部工具和插件通过 HTTP 请求与 Obsidian 进行交互。例如,一个插件可以通过发送 HTTP 请求调用另一个插件提供的 API,实现功能的调用和数据的交换- 。 +- **APIRequest 插件**:这个插件允许 Obsidian 向外部 API 发送请求,并以 JSON 块或 Obsidian 变量的格式接收响应。插件之间可以通过调用外部 API 来实现间接的通信和数据交换。 + +### 通过事件监听通信 + +- **事件系统**:Obsidian 的插件 API 提供了一个事件系统,插件可以监听和触发各种事件。例如,一个插件可以触发一个自定义事件,另一个插件监听该事件并执行相应的操作。通过这种方式,插件之间可以实现基于事件的通信。 + +### 通过插件扩展通信 + +- **编辑器扩展**:对于编辑器相关的插件,可以通过扩展 Obsidian 的编辑器来实现通信。例如,一个插件可以创建一个编辑器扩展,并通过该扩展与其他插件进行交互。 + +总之,Obsidian 插件之间可以通过插件 API、外部 API、事件系统和插件扩展等多种方式实现互相通信。开发者可以根据具体的需求和场景选择合适的方法来实现插件之间的通信和协作 + +::: + +后来又问了一遍 + +::: note + +在Obsidian中,插件之间可以通过以下几种方式实现通信: + +### 1. 使用事件系统 + +Obsidian的API提供了一个事件系统,插件可以注册监听特定的事件,也可以触发事件。当一个插件触发事件时,其他插件可以监听到这个事件并作出相应的响应 + +- **注册事件监听器**:插件可以注册一个事件监听器,当特定事件发生时,执行相应的回调函数。 +- **触发事件**:插件可以在适当的时候触发一个事件,通知其他插件某个动作已经发生或即将发生。 + +### 2. 使用插件API + +Obsidian的API为插件提供了许多可以调用的方法和属性,插件可以通过这些API与其他插件进行通信。 + +- **获取插件实例**:插件可以通过API获取其他插件的实例,然后调用这些插件提供的方法或访问其属性。 +- **调用插件方法**:如果一个插件公开了一些方法,其他插件可以直接调用这些方法来实现通信。 + +### 3. 使用全局状态 + +Obsidian提供了一些全局状态,插件可以读取或修改这些状态,从而实现插件之间的通信。 + +- **读取全局状态**:插件可以读取全局状态中的数据,了解其他插件的状态或行为。 +- **修改全局状态**:插件可以修改全局状态,其他插件可以通过监听状态的变化来做出响应。 + +### 4. 使用插件之间的协议 + +一些插件可能会定义自己的通信协议,其他插件可以通过遵循这些协议来实现通信。 + +- **定义协议**:一个插件可以定义一套通信协议,包括数据格式、通信方式等。 +- **遵循协议**:其他插件在与该插件通信时,需要遵循其定义的协议。 + +### 5. 使用HTTP API接口 + +对于一些需要与其他系统或插件进行复杂通信的场景,插件可以通过HTTP API接口实现。 + +- **提供API接口**:插件可以提供HTTP API接口,其他插件或系统可以通过这些接口发送请求。 +- **调用API接口**:插件可以调用其他插件提供的HTTP API接口,获取数据或触发动作。 + +通过以上几种方式,Obsidian的插件之间可以实现灵活的通信,从而扩展和增强Obsidian的功能。开发者可以根据具体的需求和场景选择合适的通信方式。 + +::: + +## 可供参考的插件/文档 + +这里对之前调研的方式做一些归纳,以及补充 + +### Http方式 + +这里有两个可供参考的插件: + +- Local Rest API +- APIRequest + +这两个插件我会在后面进行剖析、原理分析 + +### 事件注册方式 + +- + +### 获取其他插件实例 + +- + +### 全局状态方式 + +暂时不研究,因为不打算使用这种方式。 + +全局状态一般只适合分享一些比较小且固定、预定好的几个状态变量,不满足我的当前需求。 + +## 参考插件深入剖析 + +#### Local Rest API - 插件 + +- 接收外部的http请求,以执行一些操作。可用于自动化 +- github: https://github.com/coddingtonbear/obsidian-local-rest-api star 712 +- 其文档: https://coddingtonbear.github.io/obsidian-local-rest-api/ + +#### Local Rest API - 原理分析 + +- + +#### APIRequest - 插件 + +- 发送http请求到外部,并获取响应值 +- 官网 + - github: https://github.com/Rooyca/obsidian-api-request star 126 + - 文档: https://rooyca.github.io/obsidian-api-request/ +- 我的fork (中文注释) + - github: https://github.dev/LincDemo/obsidian-api-request + - 文档: https://lincdocs.github.io/obsidian-api-request/ + +#### APIRequest - 原理分析 + +(部分在注释fork中) + +[dir] + +- .github/ +- docs/ +- src/ + - functions/ + - HtmlSanitizer.js + - frontmatterUtils.ts | 解析前辅文 + - general.ts + - mdparse.js + - regx.ts + - settings/ + - settingsData.ts | 设置项定义 + - settingsTab.ts | 设置菜单,class APRSettings extends PluginSettingTab + - main.ts +- (some files)/ + - README.md + - README.es.md + - README.zh.md + +依赖 (package.json),并没有使用什么特别的库 + +```json +"devDependencies": { + "@types/node": "^16.11.6", + "@typescript-eslint/eslint-plugin": "^5.59.2", + "@typescript-eslint/parser": "5.29.0", + "builtin-modules": "3.3.0", + "esbuild": "0.17.3", + "obsidian": "latest", + "tslib": "2.4.0", + "typescript": "4.7.4" +} +``` + +## 详细文档 + diff --git "a/02. SubjectAndKnowledge/07. \347\220\206\345\255\246/01. \346\225\260\345\255\246/README.md" "b/02. SubjectAndKnowledge/07. \347\220\206\345\255\246/01. \346\225\260\345\255\246/README.md" new file mode 100644 index 00000000..d850241f --- /dev/null +++ "b/02. SubjectAndKnowledge/07. \347\220\206\345\255\246/01. \346\225\260\345\255\246/README.md" @@ -0,0 +1,5 @@ +# 数学.重定向.README + +这里的记录可能有所欠缺,如果你对数学部分感兴趣,可以见另一个网站: + +https://pkm-er.github.io/Pkmer-Math/ diff --git a/ProductDoc/AnyBlock/README.show.md b/ProductDoc/AnyBlock/README.show.md index f8dbf8ee..a5f336c3 100644 --- a/ProductDoc/AnyBlock/README.show.md +++ b/ProductDoc/AnyBlock/README.show.md @@ -2,11 +2,6 @@ ## General (通用) -### Chinese problem (中文语言问题和网站访问问题) - -- 语言问题:文档是多语言的(zh/en),不用担心 -- 访问失败/被墙:本文的默认网站链接指向 github.io,如果国内有不能访问的朋友,将网站链接部分的 *linczero.github.io* 替换成 *linczero-github-io.pages.dev* 就可以了 - ### More Links (相关链接) Related links:(tutorial、use skill、contribution、secondary development) @@ -14,6 +9,11 @@ Related links:(tutorial、use skill、contribution、secondary development) - [Online Wiki - github.io](https://linczero.github.io/MdNote_Public/%E4%BA%A7%E5%93%81%E6%96%87%E6%A1%A3/AnyBlock/) - [Online Wiki - cloudflare](https://linczero-github-io.pages.dev/MdNote_Public/%E4%BA%A7%E5%93%81%E6%96%87%E6%A1%A3/AnyBlock/) +Chinese problem (文档的语言问题、网站访问问题) + +- 语言问题:文档是多语言的(zh/en),不用担心 +- 访问失败/被墙:本文的默认网站链接指向 github.io,如果国内有不能访问的朋友,将网站链接部分的 *linczero.github.io* 替换成 *linczero-github-io.pages.dev* 就可以了 + ## Effects warrior (效果展示) (推荐使用暗黑模式进行查看) @@ -22,19 +22,10 @@ Related links:(tutorial、use skill、contribution、secondary development) ::: tabs -@tab en +@tab 中文 -- Plugin effect - - Effect: It is the result of the actual rendering after using the plugin, not the screenshot - - It will show: Plugin real effect -- No plugin effect - - Effect: Render the result after you close the plugin - - It will show: The plugin syntax is almost non-intrusive, and in a plugin-free environment, md documents remain elegantly readable rather than becoming code boxes -- Md source code - - Effect: Open with Notepad/See the result in Ob's source mode - - It will show: Convenient for you to see how this effect is written, showing the elegant and efficient plugin syntax - -@tab zh +与一般的插件仅展示 `源码` + `效果` 不同,这里还多了一个 `无插件效果`。 +旨在告诉你该插件不会过于影响你的写作习惯,并且哪怕你不再使用该插件,原来的内容依然不会变得“丑陋”,即 “低插件依赖” - 插件效果 - 效果:是使用插件后真实渲染出来的结果而不是图片截图 @@ -46,6 +37,21 @@ Related links:(tutorial、use skill、contribution、secondary development) - 效果:用记事本打开/在Ob的源码模式中看到的结果 - 展示了: 方便你看这种效果是怎么写出来的,表现了插件语法的优雅高效 +@tab English + +Unlike the general plug-in that only shows the `source code` + `effect`, there is also a `no plug-in effect`. +The goal is to tell you that the plugin will not affect your writing habits too much, and that even if you no longer use the plugin, the original content will not become "ugly", that is, "low plugin dependency". + +- Plugin effect + - Effect: It is the result of the actual rendering after using the plugin, not the screenshot + - It will show: Plugin real effect +- No plugin effect + - Effect: Render the result after you close the plugin + - It will show: The plugin syntax is almost non-intrusive, and in a plugin-free environment, md documents remain elegantly readable rather than becoming code boxes +- Md source code + - Effect: Open with Notepad/See the result in Ob's source mode + - It will show: Convenient for you to see how this effect is written, showing the elegant and efficient plugin syntax + ::: ### list2table (列表转多叉表格) @@ -1373,6 +1379,8 @@ demo:描述一下树设计的脑图 #### to nodes (转节点树图,AnyBlock版思维导图) +在obsidian环境中,如果这部分显示不正确,可以鼠标悬浮在上面并点击右上角的刷新按钮 + ::: tabs @tab Plugin effect (插件效果) @@ -1861,15 +1869,7 @@ min 样式,更紧凑、样式上也更像 markmap ::: tabs -@tab en - -- There are dozens of different processors, not given here, that can be self-explored: -- Older documentation for V2 contains more information about the processor: https://linczero.github.io/MdNote_Public/ProductDoc/AnyBlock/v2%20old%20docs/ -- You can install 'Any Block' in Ob and open the plug-in's Settings panel to see all supported processors - (Except for the new processor and mdit instructions that are not added in the new version, the instructions in the old version are actually more complete) -- After installation in Obsidian, you can also view all supported processors through the '[info]' processor - -@tab zh +@tab 中文 - 有几十个不同的处理器,这里没有给出,可以自探索: - V2的旧文档包含更多处理器的介绍: https://linczero.github.io/MdNote_Public/ProductDoc/AnyBlock/v2%20old%20docs/ @@ -1877,23 +1877,31 @@ min 样式,更紧凑、样式上也更像 markmap (除了没有新版本增加的新处理器和mdit说明外,旧版文档的说明其实会更全) - 在Obsidian中安装以后,也可以通过 `[info]` 处理器,以查看所有支持的处理器 +@tab English + +- There are dozens of different processors, not given here, that can be self-explored: +- Older documentation for V2 contains more information about the processor: https://linczero.github.io/MdNote_Public/ProductDoc/AnyBlock/v2%20old%20docs/ +- You can install 'Any Block' in Ob and open the plug-in's Settings panel to see all supported processors + (Except for the new processor and mdit instructions that are not added in the new version, the instructions in the old version are actually more complete) +- After installation in Obsidian, you can also view all supported processors through the '[info]' processor + ::: ## Selector (选择器) ::: tabs -@tab en +@tab 中文 -**This part is very important! Recommended to finish!** +**这部分内容非常重要!推荐看完!** -url: [Selector](docs/en/03.%20Selector.md) +链接: [Selector](docs/zh/03.%20选择器.md) -@tab zh +@tab English -**这部分内容非常重要!推荐看完!** +**This part is very important! Recommended to finish!** -链接: [Selector](docs/zh/03.%20选择器.md) +url: [Selector](docs/en/03.%20Selector.md) ::: diff --git a/ProductDoc/AnyBlock/docs/dev docs/Support Me.md b/ProductDoc/AnyBlock/docs/dev docs/Support Me.md index 2ace893b..c0de42c8 100644 --- a/ProductDoc/AnyBlock/docs/dev docs/Support Me.md +++ b/ProductDoc/AnyBlock/docs/dev docs/Support Me.md @@ -14,7 +14,7 @@ This is sponsored links (Alipay、Wechat、Paypl): https://github.com/LincZero#t ## 赞助名单 (Sponsor list) -(此处不再维护,转由 https://github.com/LincZero/LincZero/blob/main/Sponsors.md 页面进去更新) +(此处不再维护,转由 https://github.com/LincZero/LincZero/blob/main/Sponsors.md 页面进行更新) [table]