ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

《HelloGitHub》第 61 期开源项目精选:从编译器自举到实时人像消除的 35 个入门级项目

《HelloGitHub》第 61 期开源项目精选:从编译器自举到实时人像消除的 35 个入门级项目 技术博客文档知识库【免费下载链接】HelloGitHub:octocat: 分享 GitHub 上有趣、入门级的开源项目。Share interesting, entry-level open source projects on GitHub.项目地址https://gitcode.com/GitHub_Trending/he/HelloGitHub点击查看免费下载本期《HelloGitHub》月刊以“兴趣是最好的老师”为理念精选了 35 个有趣、入门级的开源项目覆盖 C、C#、Go、Java、JavaScript、PHP、Python、Rust、Swift、人工智能等多个语言与领域。阅读完本篇你将系统了解这些项目的核心能力与典型用法包括可直接运行的命令行示例如 zstd 压缩、chanify 消息推送、apkleaks 敏感信息扫描、fselect 文件查询与关键代码片段并掌握 HelloGitHub 仓库中月刊内容的组织方式与再生成机制便于按图索骥找到适合自己上手学习的开源项目。一、本期概览与月刊形态《HelloGitHub》第 61 期 是 HelloGitHub 开源项目精选月刊中的一期全仓库每期以独立 Markdown 文件存放在 content 目录下如HelloGitHub61.md并在 README.md 中按月汇总索引官方每月28 号更新发布。从仓库结构看script/make_content/make_content.py 通过python make_content.py 期数或all重新生成所有期的方式将各期的通用模板与具体内容合并生成最终月刊文件这解释了为什么每一期文档都保持高度一致的排版结构目录提示、分类标题、项目清单、示例代码块与页脚导航。因此阅读任意一期即可快速掌握整套月刊的阅读与检索方式本仓库还提供了英文版 content/en/HelloGitHub61.md 便于跨语言阅读。二、C 项目编译器自举与高性能无损压缩1. acwj —— 教你写 C 语言编译器的实战教程acwj 是一份注重实战、循序渐进的教程型项目一步步引导你用 C 语言编写一个可以自己编译自己自举、并且能够在真实硬件上运行的 C 语言编译器。对于想深入理解编译原理、词法分析、语法分析、代码生成等底层机制的开发者这是一条以工程实践驱动理论学习的路径。2. zstd —— Zstandard 无损压缩算法的实现zstd 是 Facebook 开源的快速、无损数据压缩算法 Zstandard 的实现。文档指出其压缩比接近 lzma、lzham 和 ppmx而性能优于 lza 或 bzip2在相近压缩比下它的解压缩速度比同类算法更快因而被许多知名项目和游戏采用。原文档给出了一个完整的压缩示例函数核心调用链如下static void compress_orDie(const char* fname, const char* oname) { size_t fSize; void* const fBuff mallocAndLoadFile_orDie(fname, fSize); size_t const cBuffSize ZSTD_compressBound(fSize); void* const cBuff malloc_orDie(cBuffSize); /* Compress. * If you are doing many compressions, you may want to reuse the context. * See the multiple_simple_compression.c example. */ size_t const cSize ZSTD_compress(cBuff, cBuffSize, fBuff, fSize, 1); CHECK_ZSTD(cSize); saveFile_orDie(oname, cBuff, cSize); /* success */ printf(%25s : %6u - %7u - %s \n, fname, (unsigned)fSize, (unsigned)cSize, oname); free(fBuff); free(cBuff); }该示例完整展示了 Zstd 的典型编程模型先用ZSTD_compressBound根据原始大小计算压缩后缓冲区的上界再调用ZSTD_compress一次性完成压缩最后将结果落盘并打印压缩前后的大小对比。注释还提示如果需要进行多次压缩可以复用 context参见multiple_simple_compression.c示例避免重复分配压缩上下文的开销。三、C# 项目新一代文件管理器与 NoSQL 数据库3. Files —— 采用 Fluent Design 的全新文件管理器Files 是一款基于 Fluent Design 和 Windows 平台最新 API 实现的文件管理器设计风格“简约但不简单”适合希望体验 Windows 现代化界面交互的用户也适合想学习 WinUI/Fluent Design 桌面应用开发模式的开发者作为参考项目。4. ravendb —— 快速、可靠的开源 NoSQL 数据库ravendb 是一款开源的 NoSQL 数据库强调快速与可靠性。它面向需要文档型数据存储、全文检索、事务等能力的应用场景是学习 NoSQL 数据库设计、索引机制与分布式部署的入门素材。四、Go 项目刷题模板、消息推送、游戏引擎与图像处理5. algorithm-pattern —— LeetCode 刷题集合与解题套路algorithm-pattern 是一套 LeetCode 刷题集合项目。它从 Go 语言入门讲起总结了一套刷题模板和解题套路示例代码均使用 Go 编写。对准备算法面试、或想用 Go 语言系统练习数据结构的读者非常友好。6. chanify —— 基于 Go 的 iOS 消息推送服务chanify 是一个用 Go 实现的消息推送服务目标设备为 iOS。使用流程为手机上安装配套的 iOS 应用用 Docker 方式部署服务端之后即可通过一条命令把消息推送到 APP。原文档给出了两条可直接使用的 curl 示例# 发送文本消息 $ curl --form-string texthello http://address:port/v1/sender/token # 发送文本文件 $ cat message.txt | curl -H Content-Type: text/plain --data-binary - http://address:port/v1/sender/token第一条命令以--form-string直接携带文本内容发送消息第二条命令通过管道把本地文件内容作为请求体发送。两处都需要替换为实际的address:port服务地址与端口与token设备令牌非常适合个人服务器、脚本通知等场景。7. ebiten —— Go 语言的 2D 游戏引擎库ebiten 是一个用 Go 语言编写的 2D 游戏引擎库可轻松制作支持多平台的 2D 游戏。仓库内附带大量示例代码从渲染精灵、处理输入到音频播放均有覆盖是学习 Go 游戏开发与 Ebitengine 架构的良好起点。8. imaging —— Go 语言的图像处理库imaging 提供调整大小、旋转、剪切、亮度调整等常见图像处理能力API 简洁。原文档中的两行示例即可展示其用法// 调整 dstImage128 : imaging.Resize(srcImage, 128, 128, imaging.Lanczos) // 锐化 dstImage : imaging.Sharpen(srcImage, 0.5)imaging.Resize接收源图像、目标宽高与重采样滤波器此处使用imaging.Lanczos以获得较高缩放质量imaging.Sharpen通过强度参数控制锐化程度。这类库非常适合在服务端做图片缩放、水印与预处理流水线。9. jql —— 用 Go 写的 JSON 数据查询工具jql 是一个用 Go 实现的 JSON 命令行查询工具安装方便、语法简单。原文档给出的示例展示了如何查询文件中所有国家的名称# 查询 test.json 文件中所有国家的名称 cat test.json | jql (elem countries (elem (keys) (elem name))) [ Poland, United States, Germany ]其核心思路是以elem组合表达式逐层抽取 JSON 结构先取countries字段再对其每个元素取name键最终输出数组。相比 jq 的过滤器语法jql 采用类似 Lisp 的括号式组合对熟悉函数式表达式的开发者更为直观。五、Java 项目实时推荐系统、覆盖率、代码搜索与数据清理10. flink-recommandSystem-demo —— 基于 Flink 的商品实时推荐系统这是一个基于 Flink 实现的商品实时推荐系统示例用于学习和理解推荐系统的完整设计与流程。其整体架构为Flink 处理日志并统计商品热度处理结果写入Redis 缓存用户画像标签与实时记录写入HBase当用户请求推荐时系统根据用户画像生成商品热度榜并结合协同过滤与标签两个推荐模块返回最终的推荐商品列表。对学习流式计算Flink、缓存Redis、列式存储HBase与推荐算法结合的读者是一份极佳的工程参考。11. jacoco —— Java 代码测试覆盖率库jacoco 是 Java 生态中广泛使用的测试覆盖率收集库可统计行覆盖、分支覆盖等指标并与构建工具、CI 流程集成用于衡量单元测试对代码的覆盖程度。12. kooder —— 开源的代码搜索服务kooder 是一个开源代码搜索服务为 GitLab、Gitea 等代码托管系统提供源码、仓库、Issue的搜索能力适合企业内部搭建统一的代码检索入口。13. OpenRefine —— 可视化数据清理桌面工具OpenRefine 是一款用于数据清理的桌面工具通过可视化方式分析、整理数据支持 Windows、Linux、Mac。它提供查询、过滤、去重、分析等功能可以把杂乱数据整理成“整洁”的电子表格并将结果导出为多种格式。对于不会编程和 SQL 的用户也能借助它分析海量数据。六、JavaScript 项目绘图、短链接、导航站与 3D 引擎14. drawio —— 简洁强大的开源绘图工具drawio 是一款免费开源的绘图工具可自行部署也可在线使用功能上对标 Microsoft Visio。支持流程图、序列图、网络拓扑图、甘特图、思维导图、模型图等并可导出 PNG、SVG、PDF、HTML 和VSDXMicrosoft Visio 图形格式等多种格式。15. kutt —— 免费开源的短链接服务kutt 是基于 Node.js Express React 实现的短链接服务提供链接管理、自定义短链接、链接密码设置、访问统计等功能适合自建短链平台或学习全栈 Web 开发。16. nav —— 支持 SEO 的静态导航网站nav 是一个不依赖后端的纯前端静态导航网站项目开箱即用、简单清爽同时支持 SEO适合个人或团队快速搭建网址导航首页。17. npkill —— 快速查找并删除 node_modules 的工具npkill 用于快速查找和轻松删除磁盘上的node_modules文件夹解决 node_modules 占用大量磁盘空间、以及难以手动定位无用依赖目录的痛点。它以交互式列表展示候选目录可一键清理。18. taro —— Web 轻量级 3D 游戏引擎taro 是一款 Web 轻量级 3D 游戏引擎底层基于 three.js 与 cannon-es支持 3D 刚体物理引擎适合在浏览器中开发 3D 交互与游戏场景。七、PHP 项目免费开源的问答平台19. question2answer —— 采用 PHP MySQL 实现的问答平台question2answerQ2A是免费开源的问答平台采用 PHP MySQL 构建。原文档明确列举了其核心能力支持回答投票、评论、最佳回答、关注和关闭问题完备的用户和权限管理多语言支持搜索时的相似问题匹配它覆盖了主流问答平台的主要功能适合作为搭建社区问答系统的起点也是研究 PHP 服务端应用架构的参考项目。八、Python 项目APK 安全扫描、GraphQL 集成与调试可视化20. apkleaks —— 扫描 APK 敏感信息的命令行工具apkleaks 是用于扫描 APK 文件是否包含敏感信息的命令行工具通过自定义规则正则匹配密钥、Token 等敏感内容。原文档给出的规则文件与调用方式如下// custom-rules.json { Amazon AWS Access Key ID: AKIA[0-9A-Z]{16}, ... } $ apkleaks -f /path/to/file.apk -p rules.json -o ~/Documents/apkleaks-results.txt其中-f指定 APK 文件路径-p指定自定义规则文件-o指定结果输出文件。规则文件以“名称 → 正则”的键值对形式定义敏感信息的匹配模式例如示例中用AKIA[0-9A-Z]{16}匹配 AWS Access Key ID可用于移动应用安全自查。21. graphene-django —— 将 GraphQL 整合进 Django 的库graphene-django 是 GraphQL 的 Python 实现graphene与 Django 的集成库让你可以轻松地在 Django 项目中定义 Schema、Query 与 Mutation把 GraphQL API 无缝接入既有 ORM 体系。22. tomato-clock —— 命令行番茄工作法定时器tomato-clock 是一个用 Python 编写的命令行番茄工作法定时器代码仅 100 多行不依赖任何第三方库。原文档展示了其运行时输出 tomato 25 minutes. CtrlC to exit ---------------------------------------------- [8%] 23:4 ⏰它以纯文本进度条展示番茄钟的进行状态如[8%]与剩余时间非常适合作为阅读小型 Python 源码、学习终端交互与时间管理工具实现的入门项目。23. vardbg —— 把 Python 执行过程导出为视频/动图的调试工具vardbg 能够把 Python 程序的执行过程导出成视频或动图可用于动画演示算法、制作代码讲解视频等场景。对教学、技术分享与可视化调试非常有价值。九、Rust 项目用类 SQL 语法查找文件24. fselect —— 类 SQL 的命令行文件查找工具fselect 是一个用 Rust 编写的命令行工具允许用类似 SQL 的语法查找文件兼顾查询表达能力与易用性。原文档给出了三条可直接运行的示例fselect size, path from /home/user where name *.cfg or name *.tmp fselect size, abspath from ./tmp where size gt 2g fselect hsize, abspath from ./tmp where size lt 8k第一条按名称模式*.cfg或*.tmp在/home/user下查找并输出文件大小与路径第二条筛选大于 2G 的文件并输出绝对路径第三条筛选小于 8k 的文件并以人类可读大小hsize展示。gt/lt等比较运算符让条件过滤贴近 SQL 直觉适合在终端中做精细化的文件检索。十、Swift 项目iOS 资源集合、抓包工具与 SwiftUI 入门25. awesome-ios —— 超棒的 iOS 开源项目集合awesome-ios 是非常全面的 iOS 开源项目集合涵盖 Objective-C 与 Swift 项目按网络、UI、JSON、数据库、音视频等分类组织是 iOS 初学者寻找开源项目与轮子资源的好去处。26. Knot —— iOS 抓包工具Knot 是一款 iOS 抓包工具实现了 HTTP(S) 解析、流量解析、多格式导出、证书管理以及过程分析等功能可用于移动端接口调试与流量分析。27. SwiftUITodo —— 用 SwiftUI 实现的 Todo 示例项目SwiftUITodo 是一个用 SwiftUI 实现的 Todo 应用示例项目帮助新手掌握 SwiftUI 的状态管理、列表渲染与交互设计等基础能力。十一、人工智能学习路线图与浏览器实时人像消除28. AI-Expert-Roadmap —— 人工智能学习路线图AI-Expert-Roadmap 以路线图的形式梳理人工智能领域的学习路径涵盖数学基础、机器学习、深度学习、计算机视觉、自然语言处理等方向的知识体系与进阶顺序适合规划 AI 学习路线。29. Real-Time-Person-Removal —— 在浏览器中实时移除人像Real-Time-Person-Removal 采用 JavaScript TensorFlow.js 实现 Web 浏览器中的实时人像移除——“凭空消失”效果。它演示了如何在浏览器端完成人体分割Person Segmentation等深度学习推理是学习 TensorFlow.js 与实时视觉应用的优秀示例。十二、其它领域音乐插件、BT 下载与游戏源码30. cloudmusic-vscode —— 网易云音乐 VS Code 插件cloudmusic-vscode 是基于网易云网页 API 实现的 VS Code 插件支持歌曲播放、收藏、喜欢心动模式、私人 FM评论单曲、歌单等歌词显示搜索热搜/单曲/专辑/歌手等让开发者在不离开编辑器的前提下听歌、看歌词也是学习 VS Code 插件 API 与第三方音乐接口对接的实例。31. LIII —— 免费开源的 BT 下载工具LIII 是一款免费开源的 BT 下载工具主打无广告、无 VIP 提速限制提供简单好用的下载体验适合厌倦商业下载器打扰的用户。32. shapez.io —— Steam 游戏《异形工厂》源码shapez.io 是 Steam 上模拟建造游戏《异形工厂》的开源代码。玩法是在无边地图上开采资源、放置设施、组合图形、相互搭配扩建自己的异形工厂。游戏轻松但富有挑战性源码对研究游戏开发、图形渲染与模拟经营逻辑很有参考价值。十三、开源书籍贝叶斯方法、TensorFlow 2 与 64 位操作系统本期还推荐了 3 本开源书籍均可免费阅读源码与在线版本Probabilistic-Programming-and-Bayesian-Methods-for-Hackers《黑客的贝叶斯方法以 Python 为例》以实战代码讲解概率编程与贝叶斯方法。tensorflow-handbook《简明的 TensorFlow 2》面向 TensorFlow 2 的简明教程手册可在线阅读。The-design-and-implementation-of-a-64-bit-os《一个 64 位操作系统的设计与实现》通过工程实践讲解 64 位操作系统的设计与实现过程。十四、如何在仓库中继续深入本期内容全部收录于 content/HelloGitHub61.md你可以在仓库中按以下方式继续探索跨期阅读README.md 的“内容”表格按期刊索引了全部已发布期号如第 124 期、第 123 期等点击对应路径即可切换阅读其他各期月刊。英文版对照content/en/HelloGitHub61.md 提供了本期的英文版本适合对照学习或用于国际交流。理解月刊生成机制script/make_content/make_content.py 是月刊生成脚本支持python make_content.py 期数或python make_content.py all两种用法需在仓库根目录下运行其配套说明见 script/make_content/README.md。脚本通过{{ hello_github_content }}与{{ hello_github_num }}两个占位符把模板和每期内容拼接成最终文件这也是各期格式高度统一的原因。了解项目素材收集方式script/github_bot/github_bot.py 及其说明 script/github_bot/README.md 展示了作者如何通过 GitHub API 收集关注项目的 star 动态、过滤并汇总热点项目可作为选品与素材采集流程的参考。综上第 61 期覆盖了从底层编译器、压缩算法、操作系统书籍到应用层推送、绘图、下载、抓包、游戏引擎的完整技术光谱每一类都提供了可复现的示例代码或命令。无论你是初学者寻找第一个上手项目还是进阶者想研究某个领域的具体实现都可以从这份清单中按图索骥、循序渐进地展开学习。赞分享技术博客文档知识库【免费下载链接】HelloGitHub:octocat: 分享 GitHub 上有趣、入门级的开源项目。Share interesting, entry-level open source projects on GitHub.项目地址https://gitcode.com/GitHub_Trending/he/HelloGitHub点击查看免费下载相关推荐HelloGitHub 第107期开源项目精选从 C 到 AI 的 43 个入门级宝藏项目HelloGitHub 第107期开源项目精选从 C 到 AI 的 43 个入门级宝藏项目 HelloGitHub 是一份每月 28 号发布的 GitHub技术博客文档知识库OpenProject 双因素认证2FA管理指南TOTP、WebAuthn 与 MessageBird / Amazon SNS 短信策略OpenProject 双因素认证2FA管理指南TOTP、WebAuthn 与 MessageBird / Amazon SNS 短信策略 本篇围绕 Op技术博客文档知识库Pwndbg 贡献指南从提交 PR 到通过 Lint、测试与文档校验的完整工作流Pwndbg 贡献指南从提交 PR 到通过 Lint、测试与文档校验的完整工作流 Pwndbg 是一个面向 GDB 与 LLDB 的 Exploit 开发与逆技术博客文档知识库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表