《HelloGitHub》第 73 期
HelloGitHub 分享 GitHub 上有趣、入门级的开源项目,每月 28 号更新一期。这里有好玩和入门级的开源项目、开源书籍、实战项目、企业级项目,让你用极短的时间感受到开源的魅力,对开源产生兴趣。
美观易用的轻量级嵌入式系统图形库
- 拥有丰富的图形组件:按键、图表、图片等
- 支持多种输入设备:触摸屏、键盘、按键等
- 最低资源占用:64 kB ROM、16 kB RAM
- 不依赖特定的硬件平台,可在多种显示屏上运行
- 支持多语种:中文、韩文、阿拉伯文等
- 丰富详细的示例

为 C 语言提供哈希表的库。由于 C 语言中没有类似字典的数据结构,该库提供了哈希表常见的查询、插入、删除、排序等函数。使用方法简单,仅需引入一个头文件
#include "uthash.h" struct my_struct { int id; /* we'll use this field as the key */ char name[10]; UT_hash_handle hh; /* makes this structure hashable */ }; struct my_struct *users = NULL; void add_user(struct my_struct *s) { HASH_ADD_INT( users, id, s ); }
开源的交易管理系统。包含了服务器端、PC 客户端、手机客户端的源码,支持中文界面、交易管理、打印小票、会员管理、统计报表等功能,适用于餐厅、超市、酒店等领域。使用和二次开发前请认真阅读开源协议

Yandex 开源的企业级分布式 SQL 数据库。具有高可用、易扩展、事务、强一致性、灾后自动恢复等特点,提供 Web 平台方便查询以及 Go、Java、Python、JavaScript 等多种编程语言 SDK

由 Go 语言实现的推荐系统引擎。无需具备推荐系统相关知识,就能轻而易举地搭建推荐系统。开发者只需将用户信息、物料信息和互动数据(例如点赞、收藏等)导入系统,Gorse 就会自动训练模型为每个用户生成推荐

平铺的监控工具。安装简单配置方便的“监控墙”,所有监控指标以平铺的方式展示,美观且一目了然。支持 Linux、macOS 和 Windows 主流操作系统

低延时流式边缘计算框架。它基于 QUIC(快速 UDP 互联网连接)协议实现,有效地提高了数据传输率和稳定性,实现在复杂网络环境下数据依然可以超低时延传输和处理。原生支持多地域分布式的部署模式,使得终端用户可就近访问节点,保证数据传输的低延时。适用于开发实时交互的应用,比如在线协作 SaaS、元宇宙、AR/VR、云游戏、物联网 IoT 等

轻量级 Java 依赖注入框架。不需要大量的模版代码,即可编写依赖注入的代码。使开发和调试更容易、更快速,适合个人开发者在小项目中使用
import javax.inject.Inject; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Module; public class Main { @Inject private HelloWorldService service;//hello service public static void main(String[] args) { Main main = new Main(); Module module = new HelloWorldModule(); Injector injector = Guice.createInjector(module); injector.injectMembers(main);//injects the implementation of the service main.testGuice(); } public void testGuice() { service.sayHello();//usage of the service } }
Flink/Spark 极速开发框架,一站式流数据处理平台。提供开箱即用的流式大数据开发体验,可在平台上统一管理配置、开发、测试、部署、监控、运维的整个过程

监控 Java、Java Web 应用程序的工具。监控包含 HTTP 请求、SQL 耗时、方法执行次数、错误百分比、Java 内存等指标,支持自定义时间维度和导出报告

小巧的汉字处理 JS 库。支持简体字拼音、多音字、笔画数等功能
let spell = cnchar.spell('你好'); let stroke = cnchar.stroke('你好'); console.log(spell, stroke);

用于生成随机 ID 的 JS 库
- 小巧:无依赖,仅 130 字节
- 快速:比 UUID 快 60%
- 安全:加密的强随机 API,可在集群中使用
- 紧凑:它使用比 UUID 更大的字母表
- 易用:已移植到 20 多种编程语言
const { nanoid } = require('nanoid'); nanoid(); //=> "U9HDHNW3BkWMEd6GV_QPa"
手绘风格的图形库。可以让你用素描、类似手绘的风格来绘制图形
const rc = rough.canvas(document.getElementById('canvas')); rc.rectangle(10, 10, 200, 200); // x, y, width, height

Android 架构蓝图。该项目是官方给出的 Android 应用设计建议,展示并讨论了如何设计 Android 应用架构,以及保证项目的可测试和可维护性。还有一个简单的 to-do 应用作为示例,方便开发人员和初学者学习和理解

强大的 macOS 自动化工具。通过该项目可以方便地用 Lua 脚本与 macOS 系统 API 进行交互,实现操作窗口、鼠标、文件系统、屏幕等功能。可用于打造各种 macOS 便捷工具
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "W", function() hs.notify.new({title="Hammerspoon", informativeText="Hello World"}):send() end)

用 Python 操作 Docker 的库。Docker 官方出品的 Python 库,可以用来批量、自动管理镜像
import docker client = docker.from_env() client.images.pull('nginx') # <Image 'nginx'> client.containers.run("ubuntu:latest", "echo hello world") # 'hello world\n' client.containers.list() # [<Container '45e6d2de7c54'>, <Container 'db18e4f20eaa'>, ...]
Python 的内存分析器。帮你分析 Python 应用的内存使用情况,找到内存泄漏的原因、占用内存多的代码、内存使用率高的原因。支持生成内存报告(火焰图、表格、树状图)和实时报告等模式,以及统计结果等功能
- 表格报告:memray table [options] <results>
- 实时报告:memray run --live application.py
- 统计结果:memray stats [options] <results>

更快、类似 pandas 的数据处理和分析库。底层通过 Ray 或 Dask 加速计算,上层兼容大部分 pandas API。所以使用起来十分简单,仅需更改一行代码即可从 pandas 无缝切换到 Modin,同时获得更快的数据处理速度
# import pandas as pd import modin.pandas as pd import numpy as np frame_data = np.random.randint(0, 100, size=(2**10, 2**8)) df = pd.DataFrame(frame_data)

用于读取和写入 PDF 文件的 Python 库
import pikepdf with pikepdf.open('input.pdf') as pdf: num_pages = len(pdf.pages) del pdf.pages[-1] pdf.save('output.pdf')

分享图片的开源网站。该项目前后端分离采用 Vue.js + Django 等技术栈,网站以平铺的方式展示图片,支持浏览、上传和搜索图片以及管理后台、个人页、增加标签等功能

用 Rust 从头写一个 DNS 服务的教程
加速训练 NeRF 模型的项目。英伟达开源的最快只需 5 秒,训练出一只狐狸 NeRF 模型的技术。即根据静态的 2D 图片通过神经网络建模,快速训练出可以放大且从任何角度观察都清晰的图片

开箱即用的免费邮件服务器。通过该项目可以快速在 Linux/BSD 上部署邮件服务,除此之外还拥有 Web 管理平台,数据均存储在服务器上,即保证了数据隐私还易于迁移和备份
《AWK 程序设计语言》中文翻译
用 Rust 语言从零开始写一个基于 RISC-V 架构的类 Unix 内核。清华大学开源的中文教程,从计算机发展历史开始科普,一步步说到为何操作系统会诞生,以及现代操作系统必须具备的特性。实践方面也是从空文件夹开始,像搭乐高积木一样,慢慢将操作系统的核心开发出来,教程读起来简直像看小说一样让人欲罢不能。在线阅读

《TensorFlow 内核剖析》通过剖析 TF 源码的方式,介绍它的架构、领域模型、工作原理等知识。虽然讲解的 1.2 版本已经过时,但仍然可以用来了解知名机器学习框架的内部原理
- C 项目
- C# 项目
- C++ 项目
- CSS 项目
- Go 项目
- Java 项目
- JavaScript 项目
- Kotlin 项目
- Objective-C 项目
- Python 项目
- Ruby 项目
- Rust 项目
- Swift 项目
- 人工智能
- 其它
- 开源书籍