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

简介

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

github.com/521xueweihan/HelloGitHub

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


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

C 项目

1、fluent-bit:高效轻量的日志收集与处理工具。这是一个轻量级、高效的日志收集、处理和转发工具,支持实时收集和处理来自不同来源的日志数据,具有低内存和 CPU 占用的特性。

地址:github.com/fluent/fluent-bit

2、write-a-hash-table:从零用 C 语言实现哈希表。该项目是讲解如何用 C 语言实现一个开放寻址和双重哈希的哈希表,代码约为 200 行,预计学习时间为 1 到 2 小时。

地址:github.com/jamesroutley/write-a-hash-table

C# 项目

3、ArchiSteamFarm:开源的 Steam 挂卡工具。这是一个用 C# 开发的工具,可以管理多个 Steam 账号并自动收集卡牌,无需安装或运行 Steam 客户端,支持 VAC 免疫、交易等功能,适用于 Windows、Linux 和 macOS 系统。

地址:github.com/JustArchiNET/ArchiSteamFarm

4、qttabbar:为 Windows 资源管理器增加标签页功能的工具。这是一个用 C# 开发的小工具,允许用户在 Windows 资源管理器(Explorer)中使用标签页功能,支持以标签页的形式同时打开和管理多个文件夹。

地址:github.com/indiff/qttabbar

C++ 项目

5、love:完全免费的 2D 游戏引擎。这是一款免费、开源、可商用的 2D 游戏开发框架,支持使用 Lua 语言开发跨平台的 2D 游戏,兼容 Windows、macOS、Linux、Android 和 iOS 平台。

地址:github.com/love2d/love

6、WLED:无线控制 LED 灯带。该项目是一个运行在 ESP32 和 ESP8266 上的 Web 服务器,可实现通过 WiFi 控制 LED 灯带的颜色和效果,支持 100 种特效、50 种调色板、250 个用户自定义预设等功能。

地址:github.com/Aircoookie/WLED

CSS 项目

7、latex-css:LaTex 文档风格的 CSS 库。这是一个能够让你的网站看起来像 LaTex 文档的 CSS 样式库,支持定理、定义、引理和证明的标签,以及作者、副标题、摘要等可选的类名。

地址:github.com/vincentdoerig/latex-css

Go 项目

8、gofakeit:快速生成假数据的 Go 库。该项目是用于生成各种假数据的 Go 语言库,支持随机生成名字、地址、电话和日期等格式的数据。它默认不支持生成中文假数据,但可以通过自定义方式扩展或调整生成逻辑实现。来自 @DeShuiYu 的分享

gofakeit.Name()             // Markus Moen
gofakeit.Email() // alaynawuckert@kozey.biz
gofakeit.Phone() // (570)245-7485
gofakeit.BS() // front-end
gofakeit.BeerName() // Duvel
gofakeit.Color() // MediumOrchid
gofakeit.Company() // Moen, Pagac and Wuckert
gofakeit.CreditCardNumber() // 4287271570245748
gofakeit.HackerPhrase() // Connecting the array won't do anything, we need to generate the haptic COM driver!
gofakeit.JobTitle() // Director
gofakeit.CurrencyShort() // USD

地址:github.com/brianvoe/gofakeit

9、hertz:字节跳动开源的 Go 微服务 HTTP 框架。该项目是由 CloudWeGo 团队开发的高性能、易扩展的 Go 语言 Web 框架,可用于构建 RESTful API、微服务以及需要高吞吐量的 Web 应用。在字节跳动内部,Hertz 已被广泛应用,表现稳定可靠。来自 @DeShuiYu 的分享

地址:github.com/cloudwego/hertz

10、lima:在 macOS 上轻松运行 Linux 虚拟机。这是一款在 macOS 上创建和管理 Linux 虚拟机的工具,它通过 QEMU 和 macOS 原生虚拟化技术,提供一个开箱即用、轻量级的 Linux 虚拟机环境,支持运行各种 Linux 应用和工具,以及 Docker、Podman、K8s 等容器。

# 安装
brew install lima
# 启动
limactl start
# 运行 Linux 命令
lima sudo apt-get install -y neofetch
lima neofetch
# 运行容器
lima nerdctl run --rm hello-world
kubectl apply -f ...

地址:github.com/lima-vm/lima

11、primitive:用几何图形生成图像。该项目是用 Go 语言开发的命令行工具,它通过图像处理算法,可将任意图像转换为仅由单一几何图形组成的图像。

地址:github.com/fogleman/primitive

12、zap:快速、结构化的 Go 日志库。该项目是 Uber 开发的一款高性能日志库,专为那些需要快速、结构化日志记录的场景而设计。与其他 Go 语言的日志库相比,zap 的性能更为优越,尤其是在需要频繁记录日志的高并发环境中。来自 @两双筷子sqldc 的分享

logger, _ := zap.NewProduction()
defer logger.Sync() // flushes buffer, if any
sugar := logger.Sugar()
sugar.Infow("failed to fetch URL",
// Structured context as loosely typed key-value pairs.
"url", url,
"attempt", 3,
"backoff", time.Second,
)
sugar.Infof("Failed to fetch URL: %s", url)

地址:github.com/uber-go/zap

Java 项目

13、async-profiler:Java 性能分析工具。这是一个低开销的 Java 采样分析器,可用于对 Java 应用进行性能分析。它能够帮助开发者追踪 CPU 消耗的热点代码路径、定位内存泄漏,以及分析线程锁争用和线程间的同步等问题。来自 @塔咖 的分享

地址:github.com/async-profiler/async-profiler

14、javaparser:强大的 Java 代码解析库。这是一个纯 Java 实现的解析库,专为解析、分析和生成 Java 代码而设计。它能够将 Java 代码解析为抽象语法树(AST),支持从 Java 1.0 到 Java 21 版本。可用于开发代码分析工具、重构工具、编译器等。

地址:github.com/javaparser/javaparser

15、kestra:事件驱动的声明式编排平台。这是一个基于 Java 开发的事件驱动编排平台,旨在简化计划性和事件驱动工作流。它提供直观的 Web 界面,内置代码编辑器和数百个插件,用户可以通过 YAML 代码轻松构建可靠的工作流,支持编排微服务、批处理任务、临时脚本、SQL 查询、数据同步等多种任务。来自 @啊gBAfV 的分享

地址:github.com/kestra-io/kestra

JavaScript 项目

16、Dexie.js:轻量级的 IndexedDB 库。这一个轻量级的 JavaScript 库,封装了浏览器原生的 IndexedDB API,使得在客户端浏览器中进行数据存储和查询变得更加容易,支持存储大量数据、事务和索引等功能。

const db = new Dexie('MyDatabase');

// Find some old friends
const oldFriends = await db.friends
.where('age').above(75)
.toArray(); // or make a new one
await db.friends.add({
name: 'HelloGitHub',
age: 25,
street: 'East 13:th Street',
picture: await getBlob('HelloGitHub.png')
});

地址:github.com/dexie/Dexie.js

17、gitstars:你的 GitHub Star 管家。这是一个用于管理 GitHub 上 Star 项目的工具,支持根据标签和编程语言对项目进行分类。来自 @cfour 的分享

地址:github.com/cfour-hi/gitstars

18、jitsi-meet:开源的视频会议平台。这是一个基于 WebRTC 构建的视频会议平台,提供高清音视频质量,支持私聊、举手、投票和虚拟背景等多种功能,兼容所有主流浏览器和移动平台。

地址:github.com/jitsi/jitsi-meet

19、mermaid:用类似 Markdown 的语法绘制图表。这是一个开源的图表绘制工具,支持通过类似 Markdown 的语法生成多种类型的图表,如流程图、序列图和甘特图等。

地址:github.com/mermaid-js/mermaid

20、semantic-release:自动化的版本管理和发布工具。这是一个基于 Node.js 开发的自动化版本管理和发布工具,旨在通过语义化版本控制(Semantic Versioning)简化项目发布流程。它通过分析 Git 提交信息,自动推导版本号,并生成相应的变更日志。

地址:github.com/semantic-release/semantic-release

Kotlin 项目

21、ChinesePinyin-CodeCompletionHelper:支持拼音输入法自动补全的 JetBrains 插件。这是一个专为 JetBrains 系列 IDE 设计的插件,支持拼音和五笔输入法的代码补全功能。

地址:github.com/tuchg/ChinesePinyin-CodeCompletionHelper

Python 项目

22、grip:GitHub README 文件本地预览工具。这是一款用于本地预览 GFM(GitHub Flavored Markdown)文件的工具。它通过 Flask 和 GitHub Markdown API,能在本地环境中渲染并显示与 GitHub 完全一致的 Markdown 文件效果。

$ cd myrepo
$ grip
* Running on http://localhost:6419/

地址:github.com/joeyespo/grip

23、ha_xiaomi_home:小米开源的 HA 插件。该项目是由小米开源的 Home Assistant 集成插件,可实现小米 IoT 智能设备与 Home Assistant 的无缝集成,支持设备发现、状态同步、远程控制等功能。来自 @魔羽Magic 的分享

地址:github.com/XiaoMi/ha_xiaomi_home

24、pex:相见恨晚的 Python 项目打包工具。这是一个开源的 Python 项目打包工具,专为跨环境部署和无法访问公网的部署场景设计。它能够将 Python 项目及其所有依赖,甚至是 Python 解释器(可选),打包成单个可执行文件(.pex),让开发者无需安装运行环境,即可直接运行 Python 程序,支持 Linux 和 macOS 系统。

$ pex "uvicorn[standard]" -c uvicorn --inject-args 'example:app --port 8888' -ohellogithub-app.pex
$ ./hellogithub-app.pex
INFO: Started server process [2014]
INFO: Waiting for application startup.
INFO: ASGI 'lifespan' protocol appears unsupported.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8888 (Press CTRL+C to quit)
^CINFO: Shutting down
INFO: Finished server process [2014]

地址:github.com/pex-tool/pex

25、runlike:快速获取 Docker 容器启动命令的工具。这是一个用于解析运行中容器的工具,可自动生成对应的 docker run 启动命令。它能够提取容器的配置信息,包括包括端口绑定、映射卷、环境变量、网络设置等,适用于复制、调试或迁移容器的场景。来自 @猎隼丶止戈reNo7 的分享

$ runlike -p redis

docker run \
--name=redis \
-e "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
-e "REDIS_VERSION=2.8.9" \
-e "REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-2.8.9.tar.gz" \
-e "REDIS_DOWNLOAD_SHA1=003ccdc175816e0a751919cf508f1318e54aac1e" \
-p 0.0.0.0:6379:6379/tcp \
--detach=true \
myrepo/redis:7860c450dbee9878d5215595b390b9be8fa94c89 \
redis-server --slaveof 172.31.17.84 6379

地址:github.com/lavie/runlike

26、viztracer:开箱即用的 Python 性能分析工具。这是一款高效、易用的 Python 程序性能分析工具,帮助开发者调试代码和分析性能瓶颈。它针对性能追踪做了优化,尽可能减少对被分析程序的性能影响,支持时间线追踪、多进程分析和模块化追踪等功能,并生成直观、交互式的分析报告。来自 @孤胆枪手 的分享

# 安装
pip install viztracer
# 生成分析报告
viztracer my_script.py arg1 arg2
# 可视化查看报告
vizviewer result.json

地址:github.com/gaogaotiantian/viztracer

Rust 项目

27、himalaya:管理邮件的命令行工具。这是一个用 Rust 开发的命令行电子邮件客户端,支持多账户、邮件收发、多种邮件协议(如 IMAP 和 SMTP)和 PGP 加密等功能。

地址:github.com/pimalaya/himalaya

28、zoxide:更智能的 cd 命令。这是一个用 Rust 编写的高效 cd 命令工具,灵感来自 z 和 autojump。它能够根据用户访问频率自动排序目录,快速定位最可能的目标目录,并支持模糊匹配和交互选择。来自 @啊gBAfV 的分享

地址:github.com/ajeetdsouza/zoxide

Swift 项目

29、ConfettiSwiftUI:五彩纸屑动画效果的 Swift 库。这是一个用于添加五彩纸屑动画效果的 Swift 库,支持自定义纸屑形状、爆炸半径和角度。

地址:github.com/simibac/ConfettiSwiftUI

30、MarkEdit:专为 macOS 设计的极简 Markdown 编辑器。这是一款适用于 macOS 的免费开源 Markdown 编辑器,体积小巧(仅 3 MB)。它提供干净清爽的界面和专注于写作的编辑环境。作者认为 Markdown 语法非常直观,因此未提供 Markdown 预览功能。

地址:github.com/MarkEdit-app/MarkEdit

人工智能

31、garak:开源的 LLMs 漏洞扫描工具。该项目是 NVIDIA 开源的用于扫描 LLMs 漏洞的工具,支持检测 LLM 可能存在的安全问题和不良行为,包括幻觉、数据泄漏、提示注入、错误信息、有毒内容生成和越狱等。

地址:github.com/NVIDIA/garak

32、letta:为 LLM 应用注入记忆能力的开发框架。该项目是用于构建具有记忆功能的 LLM 应用的 Python 框架,支持创建拥有长期记忆和持久状态的智能体(Agent),并能够集成多种 LLM API 服务。

地址:github.com/letta-ai/letta

33、MagicMirror:零门槛 AI 换脸应用。这是一款轻量级、开箱即用的 AI 换脸工具,无需 GPU、可离线使用,一键轻松尝试新形象(发型、穿搭等)。来自 @Del 的分享

地址:github.com/idootop/MagicMirror

34、vllm:更高效的 LLMs 推理和服务引擎。这是一个高效易用的大型语言模型推理引擎,专为解决推理速度慢、资源利用率低等问题而设计。它基于 PyTorch 和 CUDA,并结合内存优化算法(PagedAttention)、计算图优化和模型并行技术,大幅降低 GPU 内存占用,并充分利用多 GPU 资源提升推理性能。同时,vLLM 与 HF 模型无缝兼容。支持在 GPU、CPU、TPU 等多种硬件平台上高效运行,适用于实时问答、文本生成和推荐系统等场景。来自 @Caleb 的分享

from vllm import LLM

prompts = ["Hello, my name is", "The capital of France is"]  # Sample prompts.
llm = LLM(model="lmsys/vicuna-7b-v1.3") # Create an LLM.
outputs = llm.generate(prompts) # Generate texts from the prompts.

地址:github.com/vllm-project/vllm

35、zerox:使用视觉模型将 PDF 转换为 Markdown。该项目基于视觉模型 API 服务,提供了将 PDF 文档转化为 Markdown 的功能。其原理是先将原文件(如 pdf、docx)转换为图片,然后把图片发给视觉模型处理,最后汇总所有结果生成完整的 Markdown 文件。

import path from "path";
import { zerox } from "zerox"; const result = await zerox({
filePath: path.resolve(__dirname, "./hellogithub.pdf"),
openaiAPIKey: process.env.OPENAI_API_KEY,
});

地址:github.com/getomni-ai/zerox

其它

36、awesome-low-level-design:系统详细设计的学习资源合集。这是一份帮助开发者学习和掌握 LLD(Low-Level Design)的资源集合,包含各种系统的实现细节、示例代码和接口定义等,非常适合准备面试和提升技术水平。

地址:github.com/ashishps1/awesome-low-level-design

37、bocker:仅用百行 shell 实现的 Docker。该项目通过大约 100 行 Bash 代码实现了 Docker 的基本功能,适合用于学习如何使用简单的脚本语言实现容器的核心功能。

地址:github.com/p8952/bocker

38、docker-xiaoya:一键部署 Alist+Emby+Jellyfin 服务。该项目提供了一键部署 Alist、Emby 和 Jellyfin 服务的解决方案,帮你轻松构建完整的家庭多媒体中心,支持 Linux、macOS、Windows 等平台。

地址:github.com/monlor/docker-xiaoya

39、domain-driven-hexagon:学习领域驱动设计与六边形架构的最佳实践。这是一个结合领域驱动设计(DDD)与六边形架构(Hexagonal Architecture)的示例项目,旨在帮助开发者理解如何设计高质量、可扩展、可维护的应用程序。

地址:github.com/Sairyss/domain-driven-hexagon

40、Racer:自制开源小赛车。该项目是基于 ESP32-H2 构建的小型赛车,仅有五六厘米大小。它能够识别颜色并作出反应(神经网络),同时支持键盘控制。来自 @孤胆枪手 的分享

地址:github.com/StuckAtPrototype/Racer

最后

感谢参与分享开源项目的小伙伴们,欢迎更多的开源爱好者来 HelloGitHub 自荐/推荐开源项目。如果你发现了 GitHub 上有趣的项目,就点击这里分享给大家伙吧!

本期有你感兴趣的开源项目吗?如果有的话就留言告诉我吧~如果还没看过瘾,可以点击阅读往期内容。

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

《HelloGitHub》第 105 期的更多相关文章

  1. 《HelloGitHub月刊》第01期

    <HelloGitHub月刊> 因为现在这个项目只有我自己做,只敢叫"月刊",希望有志同道合者,快点加入到这个项目中来!同时,如果您有更好的建议或者意见,欢迎联系我.联 ...

  2. 《HelloGitHub月刊》第 01 期

    <HelloGitHub月刊> 因为现在这个项目只有我自己做,只敢叫"月刊",希望有志同道合者,快点加入到这个项目中来!同时,如果您有更好的建议或者意见,欢迎联系我.联 ...

  3. 家里蹲大学数学杂志 Charleton University Mathematics Journal 官方目录[共七卷493期,6055页]

    家里蹲大学数学杂志[官方网站]从由赣南师范大学张祖锦老师于2010年创刊;每年一卷, 自己有空则出版, 没空则搁置, 所以一卷有多期.本杂志至2016年12月31日共7卷493期, 6055页.既然做 ...

  4. HelloGithub

    <HelloGithub月刊>第一期   <HelloGithub月刊> 因为现在这个项目只有我自己做,只敢叫“月刊”,希望有志同道合者,快点加入到这个项目中来!同时,如果您有 ...

  5. 在 GitHub 学习,成长为自己想要的样子|HelloGitHub 访谈

    万事开头难,我们经过长期的策划和筹备,终于推出了 HelloGitHub 采访系列「开源项目作者的访谈」.这是一个采访个人开源项目作者的栏目,内容侧重于开源项目作者与开源的故事. 我们深知想要做好一个 ...

  6. 2017广东工业大学程序设计竞赛初赛 题解&源码(A,水 B,数学 C,二分 D,枚举 E,dp F,思维题 G,字符串处理 H,枚举)

    Problem A: An easy problem Description Peter Manson owned a small house in an obscure street. It was ...

  7. GitHub 热点速览 Vol.17:在?各家视频会员要不要?

    作者:HelloGitHub-小鱼干 摘要:经济实用,用作上周的 GitHub 热点的横批再合适不过.先不说 GitHub Trending 上不止一个的会员共享项目,免你找好友刷脸要会员,这项目实在 ...

  8. 有备无患「GitHub 热点速览 v.21.38」

    作者:HelloGitHub-小鱼干 数据库最重要的一个功能是容灾备份,备份不只是对数据库重要,对日常工作生活的我们一样重要,比如花了一个工作日写的代码没有备份(虽然可能只有 1 行-)总归是一个让人 ...

  9. 《HelloGitHub月刊》第09期

    <HelloGitHub>第09期 兴趣是最好的老师,<HelloGitHub>就是帮你找到兴趣! 前言 转眼就到年底了,月刊做到了第09期,感谢大家一路的支持和帮助

  10. 《HelloGitHub月刊》第06期

    前言 <HelloGitHub>月刊做到第06期了(已经做了6个月了),在GitHub上获得了100+的stars,虽然不多,但是我很知足了,说明有人觉得这个项目是有价值的.同时园子中的' ...

随机推荐

  1. NVM使用说明

    下载:https://github.com/coreybutler/nvm-windows/releases 切换镜像源:  settting.txt文件后面添加 node_mirror: https ...

  2. ES6箭头函数和普通函数的区别

    书写形式不同,箭头函数的定义方式更加简单 : this指向不同 箭头函数使用父级作用域的this 普通函数执行 window 箭头函数不能使用 new 生成实例对象 : 普通函数的参数是argumen ...

  3. day02-json字符串和js对象

    Web1.0时代 早期网站的登录,如果失败,需要刷新页面才能重新登录; 如果不点击提交按钮,就不知道自己密码输错了: 现在大多数的网站,都是局部刷新,在不刷新整个页面的情况下,实现页面更新: 注册的时 ...

  4. 云原生爱好者周刊:使用树莓派组建 K8s 集群 | 2022-08-08

    开源项目推荐 Raspberry Pi Kubernetes Cluster 这是一个教育项目,旨在探索如何在家中使用树莓派构建 Kubernetes 集群,并使用 Ansible 来自动化部署和配置 ...

  5. 使用 ollama 在本地试玩 LLM

    在 chatGPT 的推动下.LLM 简直火出天际,各行各业都在蹭.听说最近 meta 开源的 llama3 模型可以轻松在普通 PC 上运行,这让我也忍不住来蹭一层.以下是使用 ollama 试玩 ...

  6. Flink 状态编程

    概念 在Flink架构体系中,有状态计算可以说是Flink非常重要的特性之一 Flink优势: 支持高吞吐.低延迟.高性能 支持事件时间Event_time概念 支持有状态计算 有状态计算是指: 在程 ...

  7. games101_Homework1

    本次作业的任务是填写一个旋转矩阵和一个透视投影矩阵.给定三维下三个 点 v0(2.0, 0.0, −2.0), v1(0.0, 2.0, −2.0), v2(−2.0, 0.0, −2.0), 你需要 ...

  8. Nuxt.js 应用中的 schema:extend事件钩子详解

    title: Nuxt.js 应用中的 schema:extend事件钩子详解 date: 2024/11/10 updated: 2024/11/10 author: cmdragon excerp ...

  9. Qml 中的那些坑(七)---ComboBox嵌入Popup时,滚动内容超过其可见区域不会关闭ComboBox弹窗

    [写在前面] 最近在写信息提交 ( 表单 ) 的窗口时发现一个奇怪的 BUG: 其代码如下: import QtQuick 2.15 import QtQuick.Controls 2.15 impo ...

  10. Python如何根据给定模型计算权值

    在机器学习和深度学习中,模型的权值(或参数)通常是通过训练过程(如梯度下降)来学习和调整的.然而,如果我们想根据一个已经训练好的模型来计算或提取其权值,Python 提供了许多工具和库,其中最常用的是 ...