free-programming-books 马拉地语(mr)免费在线课程清单:完整目录、格式规范与自动化维护机制
本文以 courses/free-courses-mr.md 为主,完整梳理该文档收录的 12 个技术领域、共 26 个马拉地语(मराठी)免费编程课程,并结合仓库的 docs/CONTRIBUTING.md、README.md 与 GitHub Actions 工作流,解析这类语言子列表的命名约定、Markdown 格式规则、YouTube 课程收录标准以及 fpb-lint、awesome_bot 等自动化校验机制。读完本文,你可以准确使用这份目录、理解其维护规则,并知道按仓库规范扩展新条目需要经过哪些校验。
文档在仓库中的定位
free-programming-books 是一个按语言与资源类型组织免费学习资料的仓库,所有列表文件按类型分目录存放:books/、courses/、casts/、more/。根据 docs/CONTRIBUTING.md,仓库共维护 6 类列表(Books、Courses、Interactive Tutorials、Playgrounds、Podcasts and Screencasts、Problem Sets),本文档属于 Courses 一类。其定义是“不是书籍的学习材料”(learning material which is not a book),典型特征是包含讲座、练习、测验与教学笔记;仓库特别强调“单独的讲座或视频不构成一门课程”。
courses/ 目录下的文件遵循统一的命名约定 free-courses-<locale>.md,其中 <locale> 是语言代码。马拉地语的 ISO 639-1 代码是 mr,因此文件名为 courses/free-courses-mr.md。该文件在 README.md 的 “Free Online Courses” 章节中被登记为 Marathi / मराठी,与中文(zh)、印地语(hi)、泰卢固语(te)等 40 余种语言版本并列。
从仓库的 _config.yml 可以看到,整个仓库同时是一个 Jekyll 站点:使用 pages-themes/minimal@v0.2.0 远程主题,Markdown 转换引擎为 kramdown,并启用了 jekyll-relative-links 插件。这意味着每个 .md 列表文件都会被渲染为静态站点中的一个网页,而列表文件内部以 ### 组织的分类标题、锚点链接会直接体现到渲染后的页面导航中。
文档结构与格式约定
courses/free-courses-mr.md 共 89 行,结构上完全遵循 docs/CONTRIBUTING.md 的 Formatting 章节要求:
- 顶部 Index:文件开头是一个
### Index区块,以无序列表链接全部 12 个分类的页内锚点(#android、#angular、#arduino、#c、#csharp、#cpp、#datascience、#databases、#html-and-css、#java、#javascript、#python),且锚点按字母序排列。 - 分类使用三级标题
###:每个分类是一个独立的 H3 小节;条目使用* 标题 - 创作者的标准行内格式。 - 空行规则(docs/CONTRIBUTING.md):上一分类最后一个链接与新分类标题之间留 2 个空行,标题与该分类第一个链接之间留 1 个空行,两个链接之间 0 空行,每个文件末尾保留 1 个空行。
- 标点细节:
]与(之间不留空格;作者信息用前后各一个空格的-(破折号)分隔;作者名写在格式标注之前。 - 条目按字母序插入:同字母前缀的标题按第二字符继续比较,
fpb-lint会在 CI 中强制这一点(见下文“自动化校验”)。
值得注意的实现细节是 C、C#、C++ 三个分类标题携带了显式锚点,例如文档第 34 行的 ### <a id="c"></a>C、第 40 行的 ### <a id="csharp"></a>C#、第 45 行的 ### <a id="cpp"></a>C++。由于 C#、C++ 含有非字母数字字符,在 kramdown 渲染与 GitHub 标题 slug 化行为上可能存在差异,显式 <a id> 锚点保证了顶部 Index 中的 #csharp、#cpp 链接在两种渲染环境下都能稳定命中,这是一个针对多渲染器兼容性的防御性写法。
完整课程目录:12 个分类、26 门课程
下表汇总了各分类的条目数量与创作者分布(依据 courses/free-courses-mr.md 全文统计)。全部 26 个条目均为 YouTube 播放列表(playlist)链接,无单个视频链接、无缩短链接,这与仓库对 YouTube 资源的收录规则一致:
| 分类 | 条目数 | 创作者 |
|---|---|---|
| Android | 1 | उत्तर |
| Angular | 2 | Finishing School、Developers Marathi |
| Arduino | 2 | Marathi Computer、Asawari Shiposkar |
| C | 2 | MaRaTHi ProGrammer、M Computers |
| C# | 1 | The Pro Code |
| C++ | 2 | Prasad Computer、MaRaTHi ProGrammer |
| Data Science | 1 | Rajesh MORE |
| Databases | 2 | Dnyaneshwar Cholke、Code Marathi |
| HTML and CSS | 2 | SA Infolines、MaRaTHi ProGrammer |
| Java | 3 | JavaKatta、Learn with Ajit More、I.T. मंडळ |
| JavaScript | 2 | Shodkk Shantanu、AMIT GAIKWAD |
| Python | 4 | MITU Skillologies、I.T. मंडळ、Marathi ProGamer、Code Marathi |
Android
Angular
- Angular in Marathi - Finishing School
- Angular Tutorials in Marathi - Developers Marathi
Arduino
- Arduino Advanced मराठीमध्ये - Marathi Computer
- Arduino Programming in Marathi - Asawari Shiposkar
C
- C Language Tutorial Videos | Krushna Pise | MaRaTHi ProGrammer - MaRaTHi ProGrammer
- C Programming tutorials in Marathi - M Computers
C#
- C# basic To advance in Marathi - The Pro Code
C++
- C++ Full Course in Marathi Live Teaching (Oct 2021 Batch) - Prasad Computer
- C++ Programming | Krushna Pise | MaRaTHi ProGrammer - MaRaTHi ProGrammer
Data Science
- Data Science Mentorship (Marathi) - Rajesh MORE
Databases
- Database Management System - Dnyaneshwar Cholke
- SQL Tutorial For Beginners in Marathi | SQL Structured Query Language Full Course in Marathi Basics To Advance - Code Marathi
HTML and CSS
- CSS Tutorial In Marathi - SA Infolines
- HTML | HTML For Beginners | Krushna Pise | Marathi Programmer - MaRaTHi ProGrammer
Java
- Core Java in Marathi - JavaKatta
- Java Programming In Marathi - Learn with Ajit More
- Java Programming in Marathi ( मराठी ) - I.T. मंडळ
JavaScript
- Javascript Series Marathi | Zero to Hero - Shodkk Shantanu
- Javascript Tutorials with examples in Marathi - AMIT GAIKWAD
Python
- Python in Marathi - MITU Skillologies
- Python Programming in Marathi (मराठी) - I.T. मंडळ
- Python Programming Python for Beginners in Marathi Python introduction - Marathi ProGamer
- Python Tutorial for Beginners In Marathi {आता आपल्या भाषेत कोडिंग } From Basic TO Advance - Code Marathi
从目录结构可以观察到几个特征:
- 创作者跨分类复用:MaRaTHi ProGrammer 同时提供 C、C++ 和 HTML and CSS 课程,Code Marathi 覆盖 Databases(SQL)与 Python,I.T. मंडळ 覆盖 Java 与 Python。这说明该列表以“创作者(子平台)”而非“YouTube”为组织单元。
- 覆盖范围:分类集中在入门级全栈与系统编程方向(C/C++/Java/Python、前端 HTML+CSS、Android、Angular、Arduino、SQL/数据库、数据科学),没有单列 Node.js/React 等 JavaScript 子框架分类。对比同目录的 courses/free-courses-te.md,其 JavaScript 分类下还细分为 ExpressJS、NextJS、NodeJS、ReactJS、VueJs 等 H4 子节,可见各语言列表的分类粒度由内容贡献决定,仓库规范允许 H4 子节但本文件未使用。
- 多语言标题混排:部分标题同时使用天城文(Devanagari)与英文,如
C++ Full Course in Marathi Live Teaching (Oct 2021 Batch)、Python Tutorial for Beginners In Marathi {आता आपल्या भाषेत कोडिंग },标题忠实取自资源自身命名,符合 docs/CONTRIBUTING.md “标题不虚构、不用全大写”的要求。
内容收录规则:什么样的课程能进入这份列表
courses/free-courses-mr.md 中的每一条都满足 docs/CONTRIBUTING.md 的几条硬性规则,理解这些规则有助于判断该列表的可信度与边界:
- 课程定义(docs/CONTRIBUTING.md):课程通常包含讲座、练习、测验、讲义等教学辅助材料;单独的讲座、单节视频或一份 PowerPoint 不构成课程。本文件全部条目为结构化播放列表,符合该定义。
- YouTube 平台规则(docs/CONTRIBUTING.md):仓库不将 “YouTube” 记为平台,而是记其创作者(creator);除非单个视频超过一小时且结构上像一门完整课程,否则不链接单个视频;禁止
youtu.be/xxxx形式的缩短链接。本文件 26 个条目全部为/playlist?list=形式的播放列表链接,尾部作者字段均为创作者名称(如- MaRaTHi ProGrammer、- I.T. मंडळ),与规则完全一致。 - 免费且可持续(docs/CONTRIBUTING.md):不收录有期限的限时免费课程、限时注册或试用类资源——六个月后需要删除的东西不进入列表。
- URL 质量(docs/CONTRIBUTING.md):禁止缩短 URL;URL 中的跟踪参数必须去除;同一内容优先
https版本;不收录 Google Drive、Dropbox、Mega 等文件托管平台链接。本文件中youtube.com与www.youtube.com两种写法并存,属同一域名的可接受变体。 - 书写方向:马拉地语使用天城文书写、自左向右(LTR)。仓库针对阿拉伯语、希伯来语、波斯语、乌尔都语(
*-ar.md、*-he.md、*-fa.md、*-ur.md)另有专门的 RTL/LTR linter(见下文),.github/workflows/rtl-ltr-linter.yml 中的触发条件明确只匹配这四类文件,因此free-courses-mr.md不需要插入‏/‎方向控制实体。
自动化校验:修改该文档会触发哪些检查
该文档不是一次性写就的静态文件,提交改动后会经过多道 CI 校验。相关配置可在仓库中逐一对应:
-
格式与字母序校验(fpb-lint):.github/workflows/fpb-lint.yml 在每个
pull_request上安装free-programming-books-lint并执行:fpb-lint books casts courses more命令显式覆盖了
courses/目录,因此对 courses/free-courses-mr.md 的新增条目会检查:条目是否按字母序插入、](是否留空、-作者分隔符、空行数量等 Formatting 规则。结果会清理路径前缀后上传为工件(artifact),便于在 PR 中查看错误定位(工作流第 23-35 行)。 -
URL 有效性校验(awesome_bot):.github/workflows/check-urls.yml 用
tj-actions/changed-files检出本次变更的文件,对每个.md/.yml文件并行运行(max-parallel: 10):awesome_bot <file> --allow-redirect --allow-dupe --allow-ssl各文件的检查结果以 JSON 工件形式上传,最终由
reporter作业汇总为 PR 报告(.github/workflows/check-urls.yml)。此外,docs/CONTRIBUTING.md 提供了手动触发方式:在 commit message 中包含check_urls=courses/free-courses-mr.md即可单独对该文件做 URL 校验;多文件用单个空格分隔,且多个文件时构建结果以最后一个文件为准,需要自行查看 build log。 -
RTL/LTR linter(不适用于本文件):.github/workflows/rtl-ltr-linter.yml 基于 Python 脚本 scripts/rtl_ltr_linter.py 与配置文件 scripts/rtl_ltr_linter_config.yml,仅在 PR 带
RTL标签或变更文件命中ar|he|fa|ur时运行,用于在 RTL 文本中纠正 LTR 关键词(如HTML、JavaScript,需追加‏)与 LTR 符号(如C#、C++,需追加‎)。马拉地语为 LTR 书写系统,此流程对free-courses-mr.md不生效——这也是该文档可以包含C#、C++等符号标题而无需方向控制标记的原因。 -
渲染一致性:_config.yml 启用
jekyll-remote-theme、jemoji、jekyll-relative-links插件,Markdown 经kramdown转换。列表文件中的锚点链接在渲染后的静态站点中可用,这也是 Index 区块显式使用<a id>锚点(针对 C/C#/C++)的原因。
使用与扩展方式
- 查阅入口:仓库根 README.md 的 “Free Online Courses” 章节是所有语言版课程列表的导航入口,马拉地语条目位于 README.md;courses/free-courses-mr.md 顶部的 Index 锚点则是文件内的快速导航。
- 横向对比:如需对照其他语言的覆盖范围,可参考 courses/free-courses-en.md(英语)、courses/free-courses-hi.md(印地语)、courses/free-courses-te.md(泰卢固语)等文件,它们的命名与格式约定完全一致,均受同一套
fpb-lint规则约束。 - 按规范补充条目:遵循 docs/CONTRIBUTING.md 的流程,通过 Fork + Pull Request 提交:将新条目按字母序插入对应
###分类(必要时新增分类并同步更新顶部 Index)、使用* 标题 - 创作者格式、遵守空行与标点规则;提交后 CI 会自动运行fpb-lint(格式与字母序)与awesome_bot(URL 有效性)两道检查,必要时可用check_urls=courses/free-courses-mr.md的 commit message 单独触发 URL 校验。
小结
courses/free-courses-mr.md 是 free-programming-books 仓库多语言课程列表体系中的一个完整实例:它以 12 个 ### 分类组织了 26 个马拉地语 YouTube 播放列表课程,覆盖 Android、Angular、Arduino、C、C#、C++、Data Science、Databases、HTML and CSS、Java、JavaScript、Python 方向;其结构(Index 锚点 + 字母序条目 + 显式 <a id>)、内容标准(结构化播放列表、创作者署名、免费且可持续)与 CI 校验链路(fpb-lint、awesome_bot、渲染配置)共同保证了这份目录的可维护性与长期可用性。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0624
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00