兴趣是最好的老师,HelloGitHub 让你对编程感兴趣!
简介
HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。
github.com/521xueweihan/HelloGitHub
这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python 、Java 、Go 、C/C++、Swift...让你在短时间内感受到开源的魅力,对编程产生兴趣!
以下为本期内容|每个月 28 号更新
C 项目
1 、sshfs:通过 SSH 挂载远程文件系统的工具。这是一个基于 SFTP 协议的文件系统工具,可通过 SSH 协议将远程文件系统挂载到本地。它操作简单,仅需一条命令,即可像访问本地文件系统一样管理远程文件和目录,兼容 Linux 、BSD 和 macOS 系统。
挂载文件系统
sshfs [user@]hostname:[directory] mountpoint
卸载文件系统
fusermount -u mountpoint
C# 项目
2 、mRemoteNG:集成多协议的远程连接管理工具。这是一款功能强大的远程连接管理工具,支持 RDP 、VNC 、SSH 等多种主流协议。它提供了标签式界面,用户可同时管理和切换多个远程连接,支持 Windows 11 、10 等系统。
3 、msstyleEditor:开箱即用的 Windows 视觉样式编辑器。这是一款用于编辑 Windows 视觉样式(.msstyles 文件)的工具,兼容 Windows 7 、8 、10 和 11 系统。它无需安装、开箱即用,支持快速查看所有组件并修改其属性,轻松自定义主题样式。
C++ 项目
4 、Memento:边看视频边学日语的视频播放器。这是一款基于 mpv 的开源视频播放器,专为学习日语而设计。它能够帮助用户在观看视频时学习日语,支持弹出式词典、字幕浏览、生成和同步生词卡等功能。
5 、mixxx:免费开源的 DJ 混音软件。该项目是一款用 C++ 开发的专业级 DJ 软件,完全免费。它提供了丰富的功能和硬件兼容性,支持自动 BPM 检测、实时效果处理、录音和直播等功能,适用于 Windows 、macOS 和 Linux 平台。
6 、parallel-hashmap:高性能的 HashMap 库。该项目提供了多种高性能、内存友好、线程安全的哈希表和 B 树容器实现。它基于 Google 的 Abseil 库进行开发和优化,支持 C++11 标准和头文件形式,无需编译即可直接使用。
#include <iostream>
#include <string>
#include <parallel_hashmap/phmap.h>
using phmap::flat_hash_map;
int main()
{
flat_hash_map<std::string, std::string> nickname =
{
{ "tom", "tomcat"},
{ "jim", "jimoby"}
};
for (const auto& n : nickname)
std::cout << n.first << "'s nickname is: " << n.second << "\n";
email["bill"] = "hellogithub";
std::cout << "bill's nickname is: " << nickname["bill"] << "\n";
return 0;
}
7 、upx:压缩可执行文件的工具。这是一款开源的可执行文件压缩工具,支持多种可执行文件格式( Windows 、Linux 、macOS )。它拥有出色的压缩比( 50-70%),压缩后的文件可直接运行,适用于程序分发和大规模存储的场景。
Go 项目
8 、bunster:一键“编译” shell 脚本的工具。该项目是一个 Shell-to-Go 转译器( Transpiler ),原理是先把 shell 脚本转换为 Go 代码,然后利用 Go 工具链将其编译为二进制可执行文件,弥补了传统 shell 脚本在性能、可移植性和安全性方面的不足。
9 、daytona:简化开发环境搭建的工具。该项目可以通过一条命令,快速创建一个配置好的开发环境,支持与主流 IDE 无缝集成,以及本地机器、远程服务器、云平台等多种基础设施。来自 @IZRINO 的分享
10 、gopher-lua:将 Lua 脚本嵌入 Go 程序。这是一个 Go 语言实现的 Lua 虚拟机和编译器,完全兼容 Lua5.1 语法。开发者可以通过简单的代码,将 Lua 脚本嵌入到 Go 应用中,适用于游戏开发、自动化工具和插件系统等需要脚本化支持的场景。来自 @两双筷子 sqldc 的分享
L := lua.NewState()
defer L.Close()
if err := L.DoString(`print("hello")`); err != nil {
panic(err)
}
11 、SamWaf:开源的轻量级 Web 应用防火墙。这是一款完全开源的轻量级 Web 应用防火墙,支持私有化部署,提供 Bot 检测、URL 白名单、CC 防护、自定义防护规则等功能,适用于小型企业、工作室和个人网站。来自 @猎隼丶止戈 reNo7 的分享
Java 项目
12 、mzt-biz-log:开箱即用的 Spring Boot 操作日志组件。这是一个为 Spring Boot 项目设计的操作日志组件,支持通过注解的方式,轻松记录业务操作日志,包括操作人、操作时间、操作内容等。来自 @FangPengbo 的分享
@LogRecord(
fail = "创建订单失败,失败原因:「{{#_errorMsg}}」",
success = "{{#order.purchaseName}}下了一个订单,购买商品「{{#order.productName}}」,测试变量「{{#innerOrder.productName}}」,下单结果:{{#_ret}}",
type = LogRecordType.ORDER,
bizNo = "{{#order.orderNo}}")
public boolean createOrder(Order order) {
log.info(" [创建订单] orderNo={}", order.getOrderNo());
// db insert order
Order order1 = new Order();
order1.setProductName("内部变量测试");
LogRecordContext.putVariable("innerOrder", order1);
return true;
}
13 、poi-tl:Java 的 Word 模板引擎。该项目是基于 Apache POI 的 Word 模板引擎,可以动态生成 Word 文档。它提供了友好的 API ,支持文本、图片、表格、条件渲染、图表等多种内容的渲染,适用于批量生成合同、报告、通知、证书等场景。
XWPFTemplate template = XWPFTemplate.compile("template.docx").render(
new HashMap<String, Object>(){{
put("title", "HelloGitHub");
}});
template.writeAndClose(new FileOutputStream("output.docx"));
JavaScript 项目
14 、openmtp:Mac 上的 Android 文件传输工具。这是一个专为 macOS 设计的开源 Android 文件传输工具。通过 USB 连接,实现 macOS 与 Android 设备之间快速稳定的文件传输,支持 macOS 11.0 及以上版本。
15 、readest:沉浸式的电子书阅读器。这是一款为热爱阅读的用户量身打造的阅读软件,将极简设计与强大功能融合,为你带来专注、沉浸的阅读体验。它基于 Next.js 和 Tauri 开发,支持跨平台运行,现已支持 macOS 、Windows 、Linux 和 Web 平台,未来还将推出 iOS 和 Android 版本,实现真正的全平台覆盖。来自 @Huang Xin 的分享
16 、sharp:高性能的 Node.js 图像处理库。这是一个基于 libvips 的高性能 Node.js 图像处理库,支持对 JPEG 、PNG 、WebP 、GIF 和 SVG 等格式的图像进行调整大小、格式转换、裁剪和旋转等操作。
const semiTransparentRedPng = await sharp({
create: {
width: 48,
height: 48,
channels: 4,
background: { r: 255, g: 0, b: 0, alpha: 0.5 }
}
})
.png()
.toBuffer();
17 、stretchly:跨平台的休息提醒助手。这是一款跨平台的 Electron 应用,旨在通过定时休息提醒,帮助用户养成健康的工作习惯,支持包括中文在内的多种语言,并提供自定义休息间隔、时长、提示音效等个性化设置。
18 、svgl:精美的 Logo 资源库。该项目是基于 SvelteKit 和 Tailwind CSS 构建的在线 Logo 库,收录了 400 多种标志和文字商标,覆盖技术、编程语言、框架、公司等分类,支持一键下载和复制代码。
Kotlin 项目
19 、AndroidEasterEggs:Android 系统彩蛋大全。该项目收集了各种 Android 系统彩蛋,包含完整的代码和体验等功能。来自 @p0ssword 的分享
20 、maestro:移动端 UI 自动化测试框架。这是一款开源的移动端和 Web 应用 UI 自动化测试工具,它采用简单易懂的 YAML 语法编写测试脚本,内置容错机制和操作延迟容忍功能,支持 Android 、iOS 、Flutter 和桌面浏览器。
Python 项目
21 、chonkie:轻量级的文本分块 Python 库。这是一个专为 RAG 应用设计的轻量级文本分块库,它简单易用、速度快,能够按固定大小分割文本,支持多种分词器、向量模型和灵活的分块策略,适用于长文本处理、构建 RAG 应用等场景。
from chonkie import TokenChunker
from tokenizers import Tokenizer
tokenizer = Tokenizer.from_pretrained("gpt2")
chunker = TokenChunker(tokenizer)
chunks = chunker("HelloGitHub! Chonkie, the chunking library is so cool! I love the tiny hippo hehe.")
for chunk in chunks:
print(f"Chunk: {chunk.text}")
print(f"Tokens: {chunk.token_count}")
22 、fonttools:操作字体文件的 Python 库。这是一个用于编辑和转换字体文件的 Python 库,支持 TrueType 和 OpenType 字体与 XML 格式( TTX )之间的相互转换,兼容多种字体格式,适用于编辑、调试和优化字体等场景。
from fontTools.afmLib import AFM
f = AFM("Tests/afmLib/data/TestAFM.afm")
print(f["A"])
# (65, 668, (8, -25, 660, 666))
f.FontName = "TestFont HelloGitHub"
f.write("testfont-hellogithub.afm")
23 、httpdbg:轻松捕获 Python 程序中 HTTP(S) 请求的工具。该项目是用于帮助开发者调试 Python 程序中的 HTTP(S) 请求的工具。通过 pyhttpdbg 命令运行程序,即可在浏览器中查看发出的 HTTP 请求,支持脚本运行、交互式控制台、单元测试多种运行模式。
24 、pwndbg:专为逆向工程设计的 GDB/LLDB 插件。这是一个专为 GDB 和 LLDB 调试器设计的插件,支持寄存器状态显示、内存搜索、内存泄漏查找等功能,适用于底层软件开发、硬件调试和逆向工程等场景。
25 、PyPSA:电力系统分析 Python 库。这是一个用于电力系统分析的 Python 库,专注于电力和多能源系统的建模与优化。它基于 Pandas 、NumPy 、GLPK 、Cbc 等库,能够高效计算最优潮流优化( OPF )、线性和非线性电力流,并支持模拟各种电力和能源系统组件的功能。
import pypsa
# create a new network
n = pypsa.Network()
n.add("Bus", "mybus")
n.add("Load", "myload", bus="mybus", p_set=100)
n.add("Generator", "mygen", bus="mybus", p_nom=100, marginal_cost=20)
# load an example network
n = pypsa.examples.ac_dc_meshed()
# run the optimisation
n.optimize()
# plot results
n.generators_t.p.plot()
n.plot()
# get statistics
n.statistics()
n.statistics.energy_balance()
Rust 项目
26 、aquascope:可视化 Rust 代码执行过程的工具。这是一个 Rust 代码可视化的工具,直观展示代码的编译和运行细节,帮助开发者理解 Rust 语言的运行机制。
27 、code2prompt:将代码库转换为 LLM 提示的工具。这是一个 Rust 写的命令行工具,能够将代码库快速转换为适用于 LLM 的提示词( Markdown 文件)。它会自动遍历目录,生成代码结构树并整合到提示词中,同时支持提示词模板、Token 计算、生成 Git 提交信息、文件筛选等功能。
28 、rpg-cli:将你的文件系统变成一个地牢游戏。这是一款用 Rust 编写的命令行 RPG 游戏,每次执行 cd 命令时,都可能遭遇敌人并触发回合制战斗(自动),游戏支持角色升级、物品、职业和宝箱等功能。
Swift 项目
29 、boring.notch:将 MacBook 的刘海变成音乐控制中心。这是一款专为 macOS 设计的应用,可将原本单调的刘海区域变成一个炫酷的音乐控制中心,支持日历、AirDrop 和音乐控制等功能。
30 、SwiftUI-Shimmer:SwiftUI 闪烁效果动效库。这是一个轻量级的 SwiftUI 动效库,可以轻松为任意 SwiftUI 视图添加闪烁效果,支持自定义动画、渐变样式、闪烁速度等,适用于加载状态、占位符、骨架屏等场景。
Text("Custom Gradient Mode").bold()
.font(.largeTitle)
.shimmering(
gradient: Gradient(colors: [.clear, .orange, .white, .green, .clear]),
bandSize: 0.5,
mode: .overlay()
)
人工智能
31 、AI-on-the-edge-device:将“旧”设备接入数字世界。该项目基于 ESP32 等便宜的硬件(不到 10 欧)和 TensorFlow Lite 框架,实现对仪表数字的自动识别和数据传输,轻松将传统设备(水表、燃气表、电表)改造成智能设备。
32 、instructor:让 LLM 输出结构化数据的 Python 库。该项目是用于处理大语言模型( LLMs )结构化输出的 Python 库。它基于 Pydantic 实现了数据验证和类型注释,能够将 LLM 的结果(自然语言)转换为结构化数据,支持多种大语言模型服务,以及自动重试、流式响应等功能。
import instructor
from pydantic import BaseModel
from openai import OpenAI
# Define your desired output structure
class UserInfo(BaseModel):
name: str
age: int
# Patch the OpenAI client
client = instructor.from_openai(OpenAI())
# Extract structured data from natural language
user_info = client.chat.completions.create(
model="gpt-4o-mini",
response_model=UserInfo,
messages=[{"role": "user", "content": "John Doe is 30 years old."}],
)
print(user_info.name)
#> John Doe
print(user_info.age)
#> 30
33 、lite.ai.toolkit:轻量级的 C++ AI 工具包。这是一个用 C++ 编写的 AI 工具包,内置超过 100 种 AI 模型,包括对象检测、人脸识别、分割、抠图等领域。它支持 ONNXRuntime 、MNN 、NCNN 、TNN 和 TensorRT 等主流推理引擎,帮助开发者快速部署和使用 AI 模型。来自 @wangzijian 的分享
#include "lite/lite.h"
int main(int argc, char *argv[]) {
std::string onnx_path = "yolov5s.onnx";
std::string test_img_path = "test_yolov5.jpg";
std::string save_img_path = "test_results.jpg";
auto *yolov5 = new lite::cv::detection::YoloV5(onnx_path);
std::vector<lite::types::Boxf> detected_boxes;
cv::Mat img_bgr = cv::imread(test_img_path);
yolov5->detect(img_bgr, detected_boxes);
lite::utils::draw_boxes_inplace(img_bgr, detected_boxes);
cv::imwrite(save_img_path, img_bgr);
delete yolov5;
return 0;
}
34 、minimind:从零开始训练小型语言模型。这不仅是一个微型语言模型的实现,更是一份入门 LLM 的教程,旨在降低学习和上手 LLM 的门槛。它提供了从数据预处理到模型训练、微调和推理的全流程代码和教程。最小模型仅 0.02B 参数,可在普通 GPU 上轻松运行。
其它
35 、flutter_slidable:Flutter 的滑动操作组件。这是一个 Flutter 的开源库,可用于快速实现列表项的滑动操作,支持多方向、滑动动画、自动关闭等功能。
36 、inky-dashboard:电子墨水屏的待办事项和日历管理工具。这是一款低功耗的电子墨水屏待办事项和日历管理工具,硬件采用 Raspberry Pi Pico W 和 Inky Frame 7.3 英寸七色电子墨水屏,同时使用 LVGL 实现界面布局,支持多种颜色显示、待办事项、日历同步等功能。
37 、nginx-proxy:为 Docker 容器自动配置 Nginx 反向代理。该项目可以自动为 Docker 容器提供 Nginx 反向代理服务。它能够实时监听 Docker 容器的启动和停止事件,自动为每个 Docker 容器配置 Nginx 反向代理,无需手动干预,极大简化了容器环境下的 Nginx 配置流程。
# 第一步启动 nginx-proxy
docker run --detach \
--name nginx-proxy \
--publish 80:80 \
--volume /var/run/docker.sock:/tmp/docker.sock:ro \
nginxproxy/nginx-proxy:1.6
# 第二步启动应用
docker run --detach \
--name your-proxied-app \
--env VIRTUAL_HOST=hellogithub.com \
nginx
38 、reference:为开发者准备的速查表。这是一份专为开发者准备的快速参考手册( cheat sheet )集合,旨在为开发者提供简洁、直观的速查表,内容涵盖多种编程语言、框架、Linux 命令和数据库等。来自 @databook 的分享
39 、VoxelSpace:不到 20 行的地形渲染算法。这是一个用于地形渲染的算法,核心代码不到 20 行。它复现了经典游戏 Comanche 所采用的渲染技术( Voxel Space ),为开发者提供了一个学习和参考的示例。
def Render(p, height, horizon, scale_height, distance, screen_width, screen_height):
# Draw from back to the front (high z coordinate to low z coordinate)
for z in range(distance, 1, -1):
# Find line on map. This calculation corresponds to a field of view of 90°
pleft = Point(-z + p.x, -z + p.y)
pright = Point( z + p.x, -z + p.y)
# segment the line
dx = (pright.x - pleft.x) / screen_width
# Raster line and draw a vertical line for each segment
for i in range(0, screen_width):
height_on_screen = (height - heightmap[pleft.x, pleft.y]) / z * scale_height. + horizon
DrawVerticalLine(i, height_on_screen, screen_height, colormap[pleft.x, pleft.y])
pleft.x += dx
# Call the render function with the camera parameters:
# position, height, horizon line position,
# scaling factor for the height, the largest distance,
# screen width and the screen height parameter
Render( Point(0, 0), 50, 120, 120, 300, 800, 600 )
40 、zh-style-guide:中文技术文档写作风格指南。这是一个开源的中文技术文档写作规范指南,旨在为中文技术文档的语言风格、结构样式、内容元素、标点符号、格式排版等方面提供参考规范。
开源书籍
41 、Foundations-of-LLMs:《大模型基础》。该书是由浙江大学 DAILY 实验室开源的大语言模型教材,内容涵盖传统语言模型、大语言模型架构演化、Prompt 工程、参数高效微调、模型编辑、检索增强生成等方面。来自 @无间之钟 的分享
42 、pytorch-deep-learning:《学习 PyTorch 进行深度学习:从零到精通》。该项目提供了丰富的图文教程、代码示例、视频讲解和实战项目,旨在通过实践的方式帮助初学者掌握 PyTorch 框架和深度学习技术。
最后
感谢您的阅读 ❤️
|