本文档提供了《免费编程书籍》仓库结构的技术概述,详细介绍了仓库中文件和目录的组织方式。有关仓库中包含的特定资源类型的信息,请参阅资源类型。
《免费编程书籍》仓库以 Markdown 文件集合的形式组织,其中包含免费编程资源的链接。这些资源按类型(书籍、课程、播客等)分类,并进一步按自然语言细分,从而创建了一个全面的多语言教育材料目录。
仓库遵循基于资源类型的直接组织方式,每种类型都包含在自己的顶级目录中。
| 目录 | 目的 |
|---|---|
books/ | 包含列出免费编程书籍的 Markdown 文件 |
courses/ | 包含列出免费在线课程的 Markdown 文件 |
casts/ | 包含免费播客和截屏视频的 Markdown 文件 |
more/ | 包含其他资源类型(互动教程、编程游乐场等) |
docs/ | 供贡献者使用的文档,包括指南和操作说明 |
.github/ | GitHub 特定的配置文件和工作流定义 |
仓库使用一致的文件命名模式,便于按类型和语言查找资源。文件根据以下约定命名:
| 资源类型 | 文件命名模式 | 示例 |
|---|---|---|
| 书籍 | free-programming-books-{lang_code}.md | free-programming-books-ro.md, free-programming-books-zh.md |
| 书籍(英文) | free-programming-books-langs.mdfree-programming-books-subjects.md | 按编程语言组织 按主题组织 |
| 课程 | free-courses-{lang_code}.md | free-courses-en.md, free-courses-my.md |
| 播客/截屏视频 | free-podcasts-screencasts-{lang_code}.md | free-podcasts-screencasts-en.md |
| 互动教程 | free-programming-interactive-tutorials-{lang_code}.md | free-programming-interactive-tutorials-en.md |
| 编程练习平台 | free-programming-playgrounds-{lang_code}.md | free-programming-playgrounds.md(英文) |
来源:README.md76-123 books/free-programming-books-ro.md books/free-programming-books-te.md courses/free-courses-my.md casts/free-podcasts-screencasts-my.md
仓库提供超过 40 种自然语言的资源,每种资源类型都包含按语言代码组织的文件。英文资源通常具有特殊的组织结构,而非英文资源则按文件名中的语言代码组织。
来源:README.md80-123 README.md129-168 README.md187-209 README.md172-178 README.md212-218
每个资源文件都遵循一致的内部结构,旨在方便资源的导航和发现。
资源文件示例
### Index
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/a0ff9b41/Ajax" undefined file-path="Ajax">Hii</FileRef>
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/a0ff9b41/C" undefined file-path="C">Hii</FileRef>
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/a0ff9b41/HTML and CSS" undefined file-path="HTML and CSS">Hii</FileRef>
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/a0ff9b41/Javascript" undefined file-path="Javascript">Hii</FileRef>
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/a0ff9b41/MySQL" undefined file-path="MySQL">Hii</FileRef>
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/a0ff9b41/PHP" undefined file-path="PHP">Hii</FileRef>
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/a0ff9b41/Scratch" undefined file-path="Scratch">Hii</FileRef>
### Ajax
* [Ajax](http://etutoriale.ro/articles/1483/1/Tutorial-Ajax/)
### C
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/a0ff9b41/Ghidul Beej pentru Programarea in Retea - Folosind socket de internet" undefined file-path="Ghidul Beej pentru Programarea in Retea - Folosind socket de internet">Hii</FileRef>
来源:books/free-programming-books-ro.md1-19 books/free-programming-books-te.md1-15 courses/free-courses-my.md1-10
仓库采用多个 GitHub 工作流来维护资源质量和一致性。
| 工作流文件 | 目的 |
|---|---|
check-urls.yml | 自动检查更改文件中的 URL,以确保所有链接有效 |
detect-conflicting-prs.yml | 识别存在合并冲突的拉取请求并相应地添加标签 |
stale.yml | 通过自动添加标签和关闭来管理陈旧的问题和拉取请求 |
awesomebot-gh-summary-action | 生成 URL 检查摘要报告的自定义操作 |
来源:.github/workflows/check-urls.yml .github/workflows/detect-conflicting-prs.yml .github/workflows/stale.yml .github/actions/awesomebot-gh-summary-action/action.yml
仓库提供了多种用户访问资源的方式:
来源:README.md11-13 README.md15-21
《免费编程书籍》仓库遵循清晰、一致的组织模式,便于查找和贡献资源。其结构主要按资源类型组织,然后按自然语言细分,并全程保持一致的命名约定和内部文件结构。
仓库的组织结构能够有效地管理数千种跨多种语言的教育资源,同时通过自动化工作流保持质量。