兴趣是最好的老师,HelloGitHub 让你对编程感兴趣!
简介
HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。
github.com/521xueweihan/HelloGitHub
这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift...让你在短时间内感受到开源的魅力,对编程产生兴趣!
以下为本期内容|每个月 28 号更新
C 项目
1、cmus:小巧的命令行音乐播放器。这是一个专为类 Unix 系统设计的轻量级命令行音乐播放器,可以播放本地的音乐文件。它简单易用、占用资源少、启动速度快,支持多种音频格式。
地址:github.com/cmus/cmus
2、Remotery:轻量级的远程实时 CPU/GPU 分析器。该项目是用于监控 CPU 和 GPU 上多线程活动的工具。它提供了一个 C 文件,可轻松集成到项目中,并配备了一个实时监控 Web 界面,可通过浏览器远程观察和分析程序的性能。适用于监控游戏的实时运行性能和分析移动端应用的性能等场景。
地址:github.com/Celtoys/Remotery
C# 项目
3、RunCat_for_windows:在 Windows 任务栏飞奔的“小猫”。这是一个用 C# 写的小工具,它会在 Windows 任务栏显示一只奔跑的小猫动画,CPU 使用率越高它跑得越快。
地址:github.com/Kyome22/RunCat_for_windows
C++ 项目
4、caesium-image-compressor:免费的图片压缩软件。这是一款用 C++ 编写的图片压缩工具,它拥有简洁的中文界面,支持 JPG、PNG 和 WebP 格式的无损压缩,同时配备了实时预览和批量处理的功能。此外,还提供了 Windows、Linux 和 macOS 客户端,以及无需安装的 Web 版本。
地址:github.com/Lymphatus/caesium-image-compressor
5、concurrentqueue:C++ 的高性能无锁并发队列。该项目是用 C++11 编写的快速、无锁、并发队列,支持多个线程同时进行生产者和消费者操作。它具有无需使用锁和单头文件的特点,适用于需要高性能并发处理的各种场景。
#include "concurrentqueue.h"
moodycamel::ConcurrentQueue<int> q;
q.enqueue(25);
int item;
bool found = q.try_dequeue(item);
assert(found && item == 25);
地址:github.com/cameron314/concurrentqueue
6、input-overlay:显示用户操作输入的 OBS 直播插件。该项目是用来在直播中显示键盘按键、鼠标移动和游戏手柄按钮的插件,适用于 Windows 和 Linux 上的 OBS 直播软件,可用于游戏直播和教学演示等场景。
地址:github.com/univrsal/input-overlay
Go 项目
7、fscan:开源的内网安全扫描工具。该项目是用 Go 语言开发的内网扫描工具,提供了一键自动化全方位的漏洞扫描。它使用方便、功能全面,支持端口扫描、常见的服务器爆破、Web 应用漏洞扫描、NetBIOS 嗅探等功能。
地址:github.com/shadow1ng/fscan
8、go-humanize:让数字和时间更容易理解的 Go 语言库。这是一个提供人性化数字和时间的 Go 语言库,它通过提供格式化函数,帮助开发者将大小和时间等数字转化为更易于人类理解的形式,比如文件大小、相对时间、逗号分隔的数字、序数词等。来自 @DeShuiYu 的分享
fmt.Printf("That file is %s.", humanize.Bytes(82854982)) // That file is 83 MB.
fmt.Printf("This was touched %s.", humanize.Time(someTimeInstance)) // This was touched 7 hours ago.
地址:github.com/dustin/go-humanize
9、mactop:专为苹果芯片打造的 Mac 性能监控工具。该项目用不到 1k 行的 Go 代码,实现了一个类似 top 命令的工具。它可以实时显示 Apple M 系列芯片的性能指标,包括 CPU、GPU 使用率、内存、网络和硬盘等信息。
地址:github.com/context-labs/mactop
10、micro:现代化的终端文本编辑器。这个项目是用 Go 写的基于终端的文本编辑器,可作为 Nano 的替代品。它下载即用、无需配置、跨平台,支持多光标编辑、语法高亮、鼠标、插件扩展等功能,特别适合在 SSH 远程连接服务器时进行文本编辑工作。
地址:github.com/zyedidia/micro
11、superfile:非常漂亮的终端文件管理器。这是一个现代终端文件管理器,为命令行文件操作提供了一个直观且漂亮的界面。它默认采用 Vim 风格的快捷键操作,还支持插件和主题自定义。
地址:github.com/yorukot/superfile
Java 项目
12、Acode:Android 手机上的代码编辑器。这是一款专为 Android 设备设计的代码编辑工具,它是轻量级的 Web IDE,具有即时预览、控制台和丰富的插件等特点,支持 HTML、Python、Java、JavaScript 等多种编程语言。来自 @虾华 的分享
地址:github.com/deadlyjack/Acode
13、blossom:私有部署的云端双链笔记软件。这是一个支持私有部署的云端存储双链笔记软件,可以将你的所有笔记、图片、个人计划安排保存在私有服务器上,并实现跨设备的实时同步。它提供 Markdown 编辑、双链笔记、全量备份、网页转换、多账号权限和统计等功能,兼容 Windows、macOS 和网页客户端。来自 @猎隼丶止戈reNo7 的分享
地址:github.com/blossom-editor/blossom
14、JSqlParser:解析 SQL 语句的 Java 库。该项目可以读取 SQL 语句,并分解成结构化的 Java 对象,实现用 Java 代码解析或动态生成 SQL 语句,支持 SQL 标准和主流的关系型数据库。
String sqlStr = "select 1 from dual where a=b";
PlainSelect select = (PlainSelect) CCJSqlParserUtil.parse(sqlStr);
SelectItem selectItem =
select.getSelectItems().get(0);
Assertions.assertEquals(
new LongValue(1)
, selectItem.getExpression());
Table table = (Table) select.getFromItem();
Assertions.assertEquals("dual", table.getName());
EqualsTo equalsTo = (EqualsTo) select.getWhere();
Column a = (Column) equalsTo.getLeftExpression();
Column b = (Column) equalsTo.getRightExpression();
Assertions.assertEquals("a", a.getColumnName());
Assertions.assertEquals("b", b.getColumnName());
}
地址:github.com/JSQLParser/JSqlParser
15、odc:企业级数据库协同开发平台。该项目是提供数据库协同开发和数据管理的平台,专为提升 SQL 开发效率而设计。它基于 Spring Boot 和 Electron 构建,提供了 Web 和桌面客户端,支持 SQL 规范检查、变更回滚、数据生命周期管理、数据脱敏和操作审计等功能,兼容 OceanBase、Oracle、MySQL 和 Doris 等多种数据源。来自 @XiaoYangGzeyP 的分享
地址:github.com/oceanbase/odc
JavaScript 项目
16、papermark:开源的文件分享平台。该项目作为 DocSend 服务的开源替代方案,提供了自托管、简单易用的文档分享功能。它采用 Next.js+Tailwind CSS 构建,用户仅需上传文档,就能获得一个可在线访问文件内容的地址,并支持自定义域名和访问数据追踪等功能。
地址:github.com/mfts/papermark
17、plane:开源的项目管理和问题跟踪平台。该项目是开源的项目管理系统,旨在简化团队的项目管理流程。它易于使用、可自托管,支持问题跟踪、周期管理、项目分解和分析统计等功能,可作为 JIRA 的替代品。
地址:github.com/makeplane/plane
18、swr:用于数据请求的 React Hooks 库。该项目是帮助开发者简化数据请求逻辑的 React 库,支持自动处理数据的缓存、重验证、错误重试等多种功能,比如当用户重新点击/回到页面时,自动请求接口获取最新数据。
import useSWR from 'swr'
function Profile() {
const { data, error, isLoading } = useSWR('/api/user', fetcher)
if (error) return <div>failed to load</div>
if (isLoading) return <div>loading...</div>
return <div>hello {data.name}!</div>
}
地址:github.com/vercel/swr
19、undraw-ui:基于 Vue 3 的评论组件。这是一个基于 Vue 3 的 UI 组件,提供了评论、内容折叠、回复、表情等功能,以及目录、搜索等组件。来自 @Mr.King 的分享
地址:github.com/readpage/undraw-ui
20、uppy:易于集成的 JavaScript 文件上传组件。这是一个轻量级的 JavaScript 文件上传组件,它提供了一个美观的用户界面,支持从多个源导入文件、断点续传、国际化,以及预览、编辑和多文件上传的功能。
import React, { useEffect } from 'react'
import Uppy from '@uppy/core'
import Webcam from '@uppy/webcam'
import { Dashboard } from '@uppy/react'
const uppy = new Uppy().use(Webcam)
function Component () {
return <Dashboard uppy={uppy} plugins={['Webcam']} />
}
地址:github.com/transloadit/uppy
Kotlin 项目
21、Lemuroid:Android 设备上的全能游戏模拟器。这款基于 Libretro 的多合一游戏模拟器,能够让你在 Android 设备上玩各种怀旧游戏。它提供了即时存档、本地多人游戏和自定义按键等功能,支持模拟 NES、GBA、3DS、PSP 等多种游戏机。
地址:github.com/Swordfish90/Lemuroid
Python 项目
22、buku:强大的浏览器书签管理工具。这是一款开源的书签命令行管理工具,它轻量、隐私安全且易于使用,支持从主流浏览器导入书签、自动获取书签信息、跨平台同步和强大的搜索功能。
地址:github.com/jarun/buku
23、flagsmith:轻松管理功能开关和配置的平台。这是一个开源、功能齐全的特征标志(Feature flag)和远程配置平台,专为中小型团队设计。它是基于 Django REST framework 构建的 Web 应用,用于管理应用功能的开关和远程配置,支持 A/B 测试、多变量测试和组织管理等功能,适用于逐步推出新功能、进行市场测试、环境管理等场景。
地址:github.com/Flagsmith/flagsmith
24、marimo:创新的响应式 Python 笔记本。该项目是专为 Python 设计的响应式笔记本(notebook),即在与 UI 交互时自动执行并更新所依赖的代码单元格,从而保证代码和输出的一致性。它以纯 Python 文件的形式存储,便于管理和运行,支持作为脚本执行或部署为可交互的 Web 应用。
地址:github.com/marimo-team/marimo
25、umap:高维数据降维的 Python 库。该项目是用于将高维数据映射到低维空间的 Python 库,帮助研究人员理解复杂数据集。与 t-SNE 相比,它在保持数据全局结构方面更加出色,能够高效地执行高维到低维的映射,适用于数据可视化、特征提取和聚类分析等多种场景。来自 @DeShuiYu 的分享
import umap
from sklearn.datasets import load_digits
digits = load_digits()
mapper = umap.UMAP().fit(digits.data)
umap.plot(mapper, labels=digits.target)
地址:github.com/lmcinnes/umap
26、Windrecorder:你的个人屏幕记忆搜索工具。该项目是专为 Windows 设计的屏幕记录工具,并提供搜索和回放功能。它会持续录制屏幕内容,同时保证数据安全(不上传、不联网),利用 OCR 和图片识别技术,让用户可以轻松搜索和回看屏幕活动历史。
地址:github.com/yuka-friends/Windrecorder
Rust 项目
27、bacon:后台运行的 Rust 代码检查工具。这是一个专为 Rust 语言设计的后台代码检查工具,它可以在后台运行,并即时地向开发者提供关于 Rust 代码的警告、错误和测试失败的反馈,让开发者专注于编写代码,而不是频繁地手动运行检查命令。来自 @DeShuiYu 的分享
地址:github.com/Canop/bacon
28、bandwhich:查看带宽使用情况的命令行工具。这是一个开源的命令行网络带宽监控工具,它可以实时显示网络使用情况,包括进程、连接和远程地址等信息。
地址:github.com/imsnif/bandwhich
29、rust-by-practice:Rust 语言实战。该项目提供了大量的 Rust 实战练习,来帮助 Rust 新手学习和上手 Rust 语言。这里除了有大量的练习题和答案,还支持在线编辑和运行 Rust 代码。
地址:github.com/sunface/rust-by-practice
Swift 项目
30、MacSymbolicator:符号化 macOS/iOS 崩溃报告的工具。这是一个简单的 Mac 应用,它能够将 macOS/iOS 崩溃报告中的十六进制地址,转换为源码中的函数和行号,帮助开发者分析应用的崩溃原因,支持 crash 和 ips 格式的崩溃报告。
地址:github.com/inket/MacSymbolicator
其它
31、cloudflare_temp_email:免费搭建临时邮箱服务。该项目通过 CloudFlare 的免费服务,提供一个功能完备的临时邮箱服务,支持收发邮件、访问密码、自动回复、查看附件等功能。来自 @Dream Hunter 的分享
地址:github.com/dreamhunter2333/cloudflare_temp_email
32、docs-linux-kernel-labs-zh-cn:Linux 内核实验。该项目是布加勒斯特理工大学的《Linux 内核教学》课程的中文翻译版,适合对 Linux 内核感兴趣的程序员学习。课程内容分为课程和实验两部分,其中实验是在基于 QEMU 的虚拟机中进行,亲身体验 Linux 内核的开发、构建、部署及执行过程。
地址:github.com/linux-kernel-labs-zh/docs-linux-kernel-labs-zh-cn
33、LapisCV:开箱即用的简历模板。该项目提供了适用于 Obsidian 和 Typora 的简历模板,它基于 Markdown 格式、编辑方便、所见即所得,设计简洁且正式,借助编辑器可直接导出 PDF 格式的简历。
地址:github.com/BingyanStudio/LapisCV
34、OV-Watch:低成本的开源智能手表。这是一个制作成本仅需 80 元的智能手表项目,它不仅提供了基本的手表功能,还支持睡眠模式、蓝牙、计步、卡包、指南针和心率测量等功能。
地址:github.com/No-Chicken/OV-Watch
35、phonedata:手机号码归属地信息库。该项目整理了超过 40 多万条中国手机号段和归属地信息,数据均来自网上的公开数据。
地址:github.com/xluohome/phonedata
开源书籍
36、LLMBook-zh.github.io:《大语言模型》。这是一本为想入门大模型技术的程序员/学生准备的开源书籍,内容不仅涵盖了大模型的基础原理和关键技术,还提供了配套的代码工具库和大模型,帮助读者快速入门并实践。
地址:github.com/LLMBook-zh/LLMBook-zh.github.io
37、raytracing.github.io:《Ray Tracing in One Weekend》系列书籍。这是一套光线追踪技术的入门书籍,教你用 C++ 实现一个光线追踪器。光线追踪(Ray Tracing)是一种计算机图形学中的渲染技术,能够通过模拟光线在虚拟场景中的传播,生成出栩栩如生的真实感图像。
地址:github.com/RayTracing/raytracing.github.io
机器学习
38、facefusion:开源的 AI 换脸和增强工具。这是一款功能强大的人脸交换和增强工具,支持将图片/视频中的人脸替换成另一个人的脸、改善人脸和背景清晰度等功能,还提供了友好的 Web 界面(WebUI)和低门槛的 CPU 处理选项。
地址:github.com/facefusion/facefusion
39、litellm:简化大模型 API 调用的工具。该项目能够将各种 AI 大模型和服务的接口,统一转换成 OpenAI 的格式,简化了在不同 AI 服务/大模型切换和管理的工作。此外,它还支持设置预算、限制请求频率、管理 API Key 和配置 OpenAI 代理服务器等功能。
from litellm import completion
import os
## set ENV variables
os.environ["OPENAI_API_KEY"] = "your-openai-key"
os.environ["COHERE_API_KEY"] = "your-cohere-key"
messages = [{ "content": "Hello, how are you?","role": "user"}]
# openai call
response = completion(model="gpt-3.5-turbo", messages=messages)
# cohere call
response = completion(model="command-nightly", messages=messages)
print(response)
地址:github.com/BerriAI/litellm
40、llama3-from-scratch:从头开始实现 Llama 3 的教程。该项目通过逐层构建 Llama 3 的方式,帮助人们深入理解 LLM 是如何工作的。作者使用 PyTorch 框架,实现了加载模型权重、文本的分词处理、模型配置以及逐层实现 Transformer 模型中的关键组件。
地址:github.com/naklecha/llama3-from-scratch
最后
感谢参与分享开源项目的小伙伴,欢迎更多的开源爱好者来 HelloGitHub 自荐/推荐开源项目。
希望本期内容有你感兴趣的开源项目,兴趣是最好的老师,它能点燃你对开源的热情、勇敢地迈出第一步,随时欢迎你加入开源的大家庭!如果还没看过瘾,点击阅读 往期内容。
- END -
关注「HelloGitHub」第一时间收到更新
点击阅读原文可按照编程语言浏览项目