《HelloGitHub》第 77 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣!

简介

HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。

//github.com/521xueweihan/HelloGitHub

这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift…让你在短时间内感受到开源的魅力,对编程产生兴趣!


以下为本期内容|每个月 28 号更新

C 项目

1、EasyLogger:超轻量级 C/C++ 日志库。占用资源少适合物联网和单片机等项目,功能简单容易上手,能够通过插件形式扩展功能。特性:

  • 支持终端、文件、串口、Flash 等多种输出方式
  • 支持多种操作系统
  • 线程安全
  • 不同颜色显示

2、foolrenderer:用 C 语言从零实现的软件渲染器。不用图形 API 仅用几千行 C 代码,实现了一套类似 OpenGL 的基本图形功能,以及应用于游戏开发的实时渲染技术,如阴影、切线空间法线映射、基于物理的材质系统等。该项目包含丰富的注释和数学计算推导过程的说明,可用于帮助理解和学习 GPU 的基本工作原理、基础渲染知识和着色器原理。

3、unicorn:轻量级的多平台、多架构 CPU 仿真器框架。基于 QEMU 开发的 CPU 模拟器,多用于逆向、执行恶意代码等。特点:

  • 多架构:ARM、ARM64、RISC-V、TriCore 等
  • 多种编程语言:Python、Rust、Java、Go、JS 等
  • 支持各种级别的细粒度检测

C# 项目

4、Bili.Uwp:非官方的 B 站桌面应用。基于 UWP 框架开发的哔哩哔哩 Windows 客户端,简单易用、界面清爽,适用于 Windows 10/11 桌面系统和 Xbox。

C++ 项目

5、Stockfish:强大的国际象棋引擎。它在众多国际象棋引擎评级列表中均名列前茅,棋艺基本上是吊打职业选手。它不仅可以对战,还支持棋局分析、评估棋艺,帮助国际象棋爱好者提升棋技。虽然这是一个引擎不能单独运行,但是社区提供了丰富的 GUI 软件下载就能用,甚至还可以用来解说国际象棋比赛。

6、annoy:用于近似最近邻搜索的算法库。近似最近邻(ANN)方法是指一系列解决最近邻查找问题的近似算法,多用于内容推荐、搜索等场景。该项目是封装好的 C++/Python Annoy 算法库。Annoy 是用树为数据结构的 ANN 算法实现,它通过随机投影创建二叉树构建索引提升查询效率,采用优先队列和“森林”查询方法提高准确率,实现海量数据下的实时搜索。

from annoy import AnnoyIndex
import random

f = 40  # Length of item vector that will be indexed

t = AnnoyIndex(f, 'angular')
for i in range(1000):
    v = [random.gauss(0, 1) for z in range(f)]
    t.add_item(i, v)

t.build(10) # 10 trees
t.save('test.ann')

# ...

u = AnnoyIndex(f, 'angular')
u.load('test.ann') # super fast, will just mmap the file
print(u.get_nns_by_item(0, 1000)) # will find the 1000 nearest neighbors

7、xbmc:强大自由的媒体中心软件。这是一个媒体播放器软件,但折腾一下就是家庭媒体娱乐中心。它不仅支持播放本地视频,还能够安装各种插件以及播放网络存储设备(NAS)、投屏、直播、电视、播客等源。能够运行在 Linux、macOS、Windows、Android、iOS 等设备,界面支持中文更多功能等待你的挖掘。

8、RedPanda-CPP:易用的轻量级 C/C++ 集成开发环境。小熊猫 C++ 是一款专为编程新手和学生准备的 IDE,它没有复杂的安装和配置过程开箱即用。支持开发所需的自动补全、语法高亮、编译运行和调试 C/C++ 程序等功能。不仅如此,它还整合了 ege、海龟作图、raylib 等多种学习库,以及试题集和 OJ 功能,便于编程新手学习和使用。

CSS 项目

9、Cnblogs-Theme-SimpleMemory:一款以阅读为主的博客园皮肤。博客园是一个博客平台,它支持用户自定义皮肤。该项目就是一款开源的博客园皮肤,文档有详细的安装步骤,一看就会立马就能用上。虽然皮肤会让博客的访问速度变慢一点,但是皮肤效果简洁好看值得一试。

Go 项目

10、bk-cmdb:腾讯开源的配置平台。面向资产及应用的企业级配置管理平台,拥有主机管理、组织架构管理、通用权限管理、操作审计等功能。该项目的代码审核很严格,此举不仅保证了项目的代码质量,还提高了代码的可读性,推荐阅读源码。

11、nightingale:开源的云原生监控系统。支持 Docker 等多种部署方式,集数据采集、监控告警、可视化为一体的企业级监控平台。借助高性能时序库,可以满足数亿时间线的采集、存储和告警分析的场景。该项目已在上千家企业部署落地,经历了各种生产环境的检验。

12、CasaOS:简单易用的家庭云系统。只需一键即可安装在 NAS、树莓派等各种家庭智能设备上,让你可以随时随地管理个人数据和设备。

13、ddns-go:简单易用的 DDNS 工具。众所周知域名解析中域名对应的是固定 IP,但是本地机器的 IP 一般是动态的,所以无法完成域名解析实现公网访问。动态 DNS(DDNS) 技术就是用来解决动态 IP 的域名解析问题,该项目能够自动获取你本机的公网 IP,并自动更新到域名服务商,从而实现公网访问本地机器。

14、colly:可能是最知名的 Go 爬虫框架。它拥有友好的 API 和丰富代码示例,短时间内即可上手。性能方面单核能达到 1K 请求/秒,还可以轻松管理请求方式、间隔和最大并发数,功能强大且优雅。

func main() {
	c := colly.NewCollector()

	// Find and visit all links
	c.OnHTML("a[href]", func(e *colly.HTMLElement) {
		e.Request.Visit(e.Attr("href"))
	})

	c.OnRequest(func(r *colly.Request) {
		fmt.Println("Visiting", r.URL)
	})

	c.Visit("//go-colly.org/")
}

Java 项目

15、plantuml:从文本描述生成 UML 图的工具。该项目可根据简单的文字描述画出 UML 图,支持顺序图、用例图、时序图等,除此之外还支持架构图、甘特图、思维导图、实体关系图等非 UML 图。支持在线、命令行、桌面应用等多种使用方式,可根据情况自行选择。

java -jar plantuml.jar 文本文件
将得到一个同名的 png 文件

16、doris:高性能的分析数据库。一个基于 MPP 架构的高性能、实时的分析型数据库,尤其是在海量数据和高并发场景下表现优异。目前,在众多知名企业中均有使用,可用来构建用户分析、日志检索分析、用户画像等应用。

JavaScript 项目

17、koodo-reader:先进的电子书阅读工具。该阅读器支持 EPUB、Kindle、PDF、漫画等多种常见文本格式,界面清爽功能丰富,拥有自定义字体、添加笔记、书签、划词翻译、导入图书、数据同步等功能。提供了 Windows、macOS 和 Linux 客户端,还支持网页版可在线使用。

18、video.js:流行的 HTML5 视频播放器。一款开箱即用的 Web 视频播放器,它支持 HTML5 视频和流媒体格式,至今有超过 45 万个网站在使用它。

19、vue-idle-game:挂机放置类小游戏。用 Vue.js 写的在线 RPG 游戏,装备完全随机全靠刷,没有任务就是刷。

20、nocobase:易扩展的无代码开发平台。这个项目可以让你不写代码,仅通过点击和拖拽,分分钟搭建出协作和内部管理系统。项目还处于早期开发阶段,请勿用于生产环境。

21、van-blog:实用的一站式个人博客系统。一款简洁优雅的博客系统,追求极致响应速度和博客体验。前后台均为响应式,支持 Docker 一键部署。前台为静态页面并支持增量渲染,按需构建更新页面。拒绝花里胡哨的功能,专注于个人博客场景。

Kotlin 项目

22、Unciv:一款类似《文明》的单机策略手游。仅 6M 的回合制策略游戏,玩家可以在游戏中模拟创建帝国文明,相当于开源版的《文明》安卓手游。虽然游戏画面是像素风格,但并未影响游戏体验,游戏支持中文、内容丰富可玩性非常高。

Python 项目

23、dooit:命令行待办事项工具。用 Python 写的交互式命令行 todo 工具,操作简单支持快捷键和鼠标,界面精致可自定义主题和图标。

24、gradio:用 Python 为模型创建演示界面。这是一个用于构建机器学习和数据科学演示的 Python 库,它包含多种输入和展示的组件,使用起来极其方便,只用几行代码就可以创建出演示机器学习模型的 Web 界面。

import gradio as gr
def sketch_recognition(img):
    pass# Implement your sketch recognition model here...

gr.Interface(fn=sketch_recognition, inputs="sketchpad", outputs="label").launch()

25、label-studio:开源的数据标注工具。支持音频、文本、图像、视频、时间序列等,多种类型数据的标注和注释工具。

# 安装
pip install -U label-studio
# 运行
label-studio

26、whoogle-search:自架纯净谷歌搜索服务。这是一个注重保护用户隐私的元搜索引擎,它会返回过滤掉广告后的 Google 搜索结果,而且不追踪 IP、不存 Cookie。支持 Docker 部署既简单又快速,适合注重隐私的用户。

27、nas-tools:NAS 媒体库资源自动整理工具。支持资源检索和订阅、媒体库整理和通知服务的 NAS 媒体库工具,这是一个用爱发电的项目,可以不爱但请不要伤害。

28、libtmux:用 Python 操作 tmux 的库。通过该项目就可以使用 Python 代码,自动操控 tmux 应用的会话、窗口、窗格。

import libtmux
server = libtmux.Server()
server.list_sessions()
# [Session($3 foo), Session($1 libtmux)]

Rust 项目

29、cheats.rs:Rust 编程语言小抄。这里不仅有 Rust 基础语法,还有执行顺序详解和编写时需要关注的注意事项。如果你觉得还不够,该项目还包含了示例代码(EX)、书籍(BK)、标准库(STD) 等 Rust 相关资料。

30、py-spy:用 top 的方式分析 Python 程序性能的工具。一款 Python 程序性能分析工具,它可以让你在不重启程序或修改代码的情况,直观地看到 Python 程序中每个函数花费的时间。

# 安装
pip install py-spy

# record 命令将配置文件记录到文件中,可用来生成火焰图
py-spy record -o profile.svg --pid 进程ID

# top 命令实时展示函数花费时间
py-spy top --pid 进程ID

# dump 命令显示每个 Python 线程的当前调用堆栈
py-spy dump --pid 进程ID

31、reqwest:Rust 语言的 HTTP 客户端。纯 Rust 编写的 HTTP 客户端,简单好用、支持异步、API 友好。

use std::collections::HashMap;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let resp = reqwest::blocking::get("//httpbin.org/ip")?
        .json::<HashMap<String, String>>()?;
    println!("{:#?}", resp);
    Ok(())
}

Swift 项目

32、SwiftMessages:一个非常灵活的 iOS 消息库。用 Swift 编写的消息组件,它可以将消息灵活地显示在屏幕顶部、底部、中央,还提供了几款好看的布局和主题,拿来即用十分方便。

// 例化一个消息视图
let view = MessageView.viewFromNib(layout: .cardView)

// 带有警告样式的主题消息元素
view.configureTheme(.warning)

// 增加阴影
view.configureDropShadow()

// 设置消息标题、正文和图标
let iconText = ["🤔", "😳", "🙄", "😶"].randomElement()!
view.configureContent(title: "Warning", body: "Consider yourself warned.", iconText: iconText)

// 增加卡片周围的外部边距
view.layoutMarginAdditions = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)

// 显示消息
SwiftMessages.show(view: view)

33、MonitorControl:控制 macOS 外接显示器的工具。一款 macOS 多显示器控制工具,有了它就能够在菜单栏或使用快捷键,轻松地控制外接显示器的音量、亮度、对比度。

其它

34、sql-injection-payload-list:关于 SQL 注入知识的集合。该项目解释了什么是 SQL 注入和一些常见的例子,以及如何发现、利用、防范各种 SQL 注入漏洞。

35、system-design:系统设计从入门到面试。该教程从基础协议讲起,然后介绍常见的数据库、消息队列等服务,最后是面试和实际的案例分析。内容循序渐进、图文并茂,强烈推荐大家学习。

36、all-contributors:表彰非代码贡献者的工具。这是一个 GitHub 机器人,可以在 issues 使用指令,将贡献者增添到项目首页,进行展示和表彰。

37、gibMacOS:macOS 系统下载工具。通过 Python 脚本直接下载 macOS 系统文件,可用来制作 macOS 安装镜像。

38、mackup:自动同步应用程序设置的工具。能够帮你快速备份、同步 macOS 和 Linux 上应用配置文件的工具,包括 Zsh、Vim、iTerm2、MySQL 在内的多种开发相关应用,还支持 Dropbox、iCloud、Git 等丰富的同步方式。

# 安装
brew install mackup
# 备份
mackup backup
# 恢复
mackup restore

开源书籍

39、EffectiveModernCppChinese:《Effective Modern C++》中文翻译版。教你如何写出正确、高效、可维护的 C++ 代码的书,该项目为中文翻译版本(已完成)。

40、babel-handbook:Babel 使用手册。内容分为「用户手册」如何安装和配置 Babel 和「插件手册」如何为 Babel 创建插件 两部分。

机器学习

41、mmdetection:OpenMMLab 开源的目标检测工具箱。基于 PyTorch 的目标检测开源工具箱,支持 Faster R-CNN、Mask R-CNN、RetinaNet 等主流算法。

42、fauxpilot:自建 GitHub Copilot 服务。它采用 NVIDIA 的 Triton Inference Server 的 SalesForce CodeGen 模型,自建 AI 编码辅助服务。支持接入 VSCode Copilot 插件,使用起来十分方便。

最后

如果你发现了 GitHub 上有趣的项目,就点击分享给大家伙吧。

以上就是本期的所有内容了,往期内容点击阅读

感谢您的阅读,如果觉得本期内容还不错的话 求赞、求分享 ❤️