兴趣是最好的老师,HelloGitHub 让你对编程感兴趣!
简介
HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。
https://github.com/521xueweihan/HelloGitHub
这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift...让你在短时间内感受到开源的魅力,对编程产生兴趣!
以下为本期内容|每个月 28 号更新
C 项目
1、freeswitch:运营商级的开源电话平台。这是一个支持 SIP、WebRTC 等多种通信协议的开源通信框架,它作为一个多用途的软交换机,可以用来创建各种语音和消息服务,比如企业电话系统、虚拟呼叫中心、视频会议服务等。
2、NetHack:一款历史悠久的 Roguelike 游戏。这是一款经典的 Roguelike 单机游戏,玩家将扮演一位地下城的探险者去寻找神秘的 Yendor 项链。游戏的界面由 ASCII 字符组成,具有*度高、难度大、地图随机生成和永久死亡的特点,被玩家称为可以玩一辈子的游戏。
3、rt-thread:小而美的物联网操作系统。这是一个由国人发起的开源物联网操作系统,具有优秀的可裁剪性和可扩展性。可以运行在 ARM Cortex-M0 芯片上的极小内核,到中等的 ARM Cortex-M3/4/7 系统,甚至是多核 64 位的 ARM Cortex-A、MIPS32/64 等不同架构的处理器。同时还提供了功能丰富的组件和软件包,可帮助开发者快速构建嵌入式系统产品。来自 @阿基米东 的分享
C# 项目
4、g-helper:一款轻量级的华硕奥创中心替代品。该项目是华硕笔记本奥创控制中心(游戏本控制软件)的开源替代品。它拥有简洁的界面和极低的系统资源占用等特点,支持无缝切换显卡模式、调节屏幕刷新率、风扇曲线、电源功耗、键盘灯光等功能。
5、WingetUI:带界面的 Windows 包管理器。该项目是一个为 Windows 常用的命令行包管理工具设计的用户界面,如 Winget、Scoop、Pip、NPM、.NET Tool 等。它的界面友好、设计美观、支持中文,通过它你可以轻松下载、安装、更新和卸载包管理器上发布的任何软件以及其它日常应用,如浏览器、PDF 阅读器等。
C++ 项目
6、cppinsights:从编译器的视角看 C++ 的代码。这是一个基于 Clang 的开发工具,它可以将源代码转化成编译器的推导结果,让用户从编译器的视角深入了解代码的内部机制,可以用来展示和讲解抽象语法树(AST)和 C++ 语言的新特性。
7、stellarium:一款开源的天象模拟软件。该项目是天文爱好者必备神器,它能够精确地模拟/展示出头顶星空的景象,包括恒星、星座、行星、彗星等天体,支持选择时间和地点、放大观察、图解星座等功能,提供了 Windows、Linux、macOS、iOS 和 Android 在内的多个平台客户端。
8、VideoPipe:跨平台的视频结构化和分析框架。这是一个用于视频分析和结构化的框架,采用 C++ 编写、依赖少、易上手。它就像一个管道每个节点相互独立,可自行搭配构建出不同类型的视频分析管道,适用于视频结构化、图片搜索、人脸识别、安防领域的行为分析(如交通事件检测)等场景。来自 @周智 的分享
Go 项目
9、freeze:生成代码图片的终端工具。该项目可以将代码片段和终端输出,转换成 PNG、SVG 和 WebP 格式的图片,它采用 Go 语言开发,特点是安装简单和易于使用,支持一条命令生成图片,也可以通过交互模式生成定制的图片。
# macOS or Linux
brew install charmbracelet/tap/freeze
# Arch Linux (btw)
pacman -S freeze
# Nix
nix-env -iA nixpkgs.charm-freeze
10、jaeger:开源的分布式链路追踪平台。该项目是受到 Dapper 和 OpenZipkin 的启发,由 Uber 创建并开源的分布式调用链追踪平台。它可用于监控和诊断分布式应用(微服务),功能包括支持多语言、全链路追踪、上下文传递、性能指标、可视化和告警等。来自 @塔咖 的分享
11、opengist:GitHub Gist 的开源替代品。该项目将代码或文本片段存储于 Git 仓库中,用户可以通过 Git 命令或 Web 查看和修改内容,类似 GitHub 的 Gist 服务。它开源、可自托管,支持创建公开/私人片段、语法高亮、搜索代码、嵌入其它网站和修改历史等功能。
Java 项目
12、CompreFace:免费、开源的人脸识别系统。该项目提供了用于人脸识别、检测、验证、头部姿势检测、性别和年龄识别的 REST API 服务,不用懂机器学习就能轻松集成到任何系统中。它后端采用 Java 编写,人脸识别是基于 FaceNet 和 InsightFace 实现,同时支持 Docker 部署。
13、fdroidclient:免费、开源的 Android 应用商店。该项目是 F-Droid 的 Android 客户端,专门收集各类开源安卓软件(FOSS)的应用商店。它里面大部分是免费且无广告的应用,如遇到资源加载慢的情况,可通过设置镜像源解决。
JavaScript 项目
14、cmdk:快速、无样式的命令菜单 React 组件。该项目可以帮助开发者轻松实现一个直观且功能丰富的命令菜单,类似于 ⌘K 快捷键唤起的交互式菜单,从而提升用户的交互体验,适用于各种 Web 应用。来自 @Daaihang Wong 的分享
import { Command } from 'cmdk'
const CommandMenu = () => {
return (
<Command label="Command Menu">
<Command.Input />
<Command.List>
<Command.Empty>No results found.</Command.Empty>
<Command.Group heading="Letters">
<Command.Item>a</Command.Item>
<Command.Item>b</Command.Item>
<Command.Separator />
<Command.Item>c</Command.Item>
</Command.Group>
<Command.Item>Apple</Command.Item>
</Command.List>
</Command>
)
}
15、outline:开源的文档和团队知识库管理工具。这是一款用 React 和 Node.js 开发的在线文档编辑和协作工具,它界面美观、功能丰富、兼容 Markdown 的特点,支持中文和 Docker 部署。此外,它还提供了 Windows、macOS、iOS 和 Android 客户端,可作为私人 wiki 或中小型公司的内部文档和知识库平台。
16、Photo-Sphere-Viewer:用于显示 360° 球体全景的 JavaScript 库。这是一个基于 Three.js 开发的全景照片查看器,提供了友好的交互和丰富的功能。它支持多种全景图格式和功能,包括 2:1 全景图、六面体全景图、全景图分片、显示文本、视频全景等。来自 @wanzij 的分享
17、strapi:全球领先的开源无头 CMS。这是一款完全免费、采用 JavaScript/TypeScript 开发的无头内容管理系统。它拥有开箱即用的 API 和友好的管理面板,自带权限管理、默认安全、SEO 友好等特点。Strapi 作为目前 GitHub 上最流行的开源内容管理系统之一,已成为多家世界 500 强公司的首选 CMS。来自 @greatYe 的分享
18、tailwind-landing-page-template:免费、开源的落地页模板。该项目是基于 TailwindCSS、React 和 Next.js 构建的落地页模板,它界面美观、代码简单、设计在线,适用于快速制作公司主页、活动落地页等。
git clone 项目
yarn install
yarn dev
# http://localhost:3000
Kotlin 项目
19、breezy-weather:极简风格的 Android 天气应用。这是一款非常注重设计的天气应用程序,采用了 Material Design 设计语言。它简约干净、免费无广告、同时支持中文,可显示未来一小时的降水情况、空气质量、小时预报、实况天气、花粉、湿度等各种天气数据。
Python 项目
20、dangerzone:将不可信文档转化为安全 PDF 的工具。这是一个确保文档安全的开源项目,它可以将存在潜在危险(来路不明、电子邮件附件)的 PDF 文件、办公文档或图片,在隔离的沙盒环境中进行转换,生成安全的 PDF 文件。
21、great-tables:用 Python 制作漂亮的表格。这个 Python 库可以用来制作实用且美观的表格。它提供了一套表格组件,通过组合不同的表格部分,如表头、表尾、行标签(stub)以及跨列标签(spanner labels)等,帮助 Python 开发者轻松制作漂亮的数据表格。来自 @Ted LI 的分享
from great_tables import GT
from great_tables.data import sp500
# Define the start and end dates for the data range
start_date = "2010-06-07"
end_date = "2010-06-14"
# Filter sp500 using Pandas to dates between `start_date` and `end_date`
sp500_mini = sp500[(sp500["date"] >= start_date) & (sp500["date"] <= end_date)]
# Create a display table based on the `sp500_mini` table data
(
GT(sp500_mini)
.tab_header(title="S&P 500", subtitle=f"{start_date} to {end_date}")
.fmt_currency(columns=["open", "high", "low", "close"])
.fmt_date(columns="date", date_style="wd_m_day_year")
.fmt_number(columns="volume", compact=True)
.cols_hide(columns="adj_close")
)
22、python-miio:用于控制小米智能家电的 Python 库。该项目提供了一个 Python 库和命令行工具,可以用来控制使用小米的 miIO 和 MIoT 协议的设备。借助它用户可以轻松地与小米智能设备进行通信和远程控制,包括扫地机器人、灯泡、空气净化器等,非常适合喜欢 DIY 智能家居系统的开发者。
23、undetected-chromedriver:绕过反爬检测的 Python 库。这是一个经过优化的 Selenium WebDriver 补丁,专门用于防止浏览器自动化过程中,触发反机器人机制。它能够隐藏浏览器特征(指纹),使用起来十分方便,就像一个 Python 的第三方库一样。
import undetected_chromedriver as uc
driver = uc.Chrome(headless=True,use_subprocess=False)
driver.get('https://nowsecure.nl')
driver.save_screenshot('nowsecure.png')
24、wereader:功能全面的微信读书笔记助手。这是一个基于 PySide6 编写的微信读书桌面客户端,不仅支持阅读书籍的功能,还有笔记模式,可查看你的全部读书笔记和热门划线等内容。
Rust 项目
25、grex:自动生成正则表达式的命令行工具。当你不知道如何写正则的时候,或许它能派上用场。该项目是用 Rust 语言开发的命令行工具,它可以根据用户提供的示例内容返回对应的正则表达式,可以作为库或命令行工具使用。来自 @size_t 的分享
26、sqlx:强大的 Rust 异步 SQL 工具包。这是一个真正的异步 SQL 库,完全使用 Rust 语言开发,支持 PostgreSQL、MySQL、MariaDB、SQLite 数据库。它提供了编译时检查查询语句和自动缓存语句等功能,让 Rust 语言和 SQL 数据库之间的交互变得轻松且高效。
use sqlx::postgres::PgPoolOptions;
// use sqlx::mysql::MySqlPoolOptions;
// etc.
#[async_std::main] // Requires the `attributes` feature of `async-std`
// or #[tokio::main]
// or #[actix_web::main]
async fn main() -> Result<(), sqlx::Error> {
// Create a connection pool
// for MySQL/MariaDB, use MySqlPoolOptions::new()
// for SQLite, use SqlitePoolOptions::new()
// etc.
let pool = PgPoolOptions::new()
.max_connections(5)
.connect("postgres://postgres:password@localhost/test").await?;
// Make a simple query to return the given parameter (use a question mark `?` instead of `$1` for MySQL/MariaDB)
let row: (i64,) = sqlx::query_as("SELECT $1")
.bind(150_i64)
.fetch_one(&pool).await?;
assert_eq!(row.0, 150);
Ok(())
}
27、zero-to-production:用 Rust 从零构建一个电子邮件通信服务。该项目仅是《Zero To Production In Rust》一书的配套项目源码,并没有提供书。这本书是介绍如何用 Rust 从零构建一个电子邮件通信服务,包含开发环境配置、持续集成流程、后端 API 开发、错误处理以及部署的全过程。
Swift 项目
28、pika:适用于 macOS 的原生颜色选择器。这是一个专为 macOS 设计的颜色选择工具,它免费、快速、易用,让你能够在屏幕上快速找到色值。
29、reminders-menubar:极简的 macOS 菜单栏提醒工具。这是一款使用 SwiftUI 开发的小工具,能够在 macOS 菜单栏查看/提醒待办事项。它体积小、交互简单、界面清爽,支持开机启动、多语言(包括中文)、菜单栏显示计数、快捷键等功能。
其它
30、cat-catch:开源的媒体嗅探浏览器插件。这个名为「猫爪」的浏览器插件,可以帮你列出当前页面的音乐和视频资源的下载地址。
31、containers:各种开源软件的容器镜像集合。这个项目是由 BitNami 维护和开源的 Docker 容器集合,包含各种开源软件、系统和 Web 应用。它们都经过了优化和漏洞扫描,可实现 Docker 一键部署,轻松部署应用,无需繁琐的安装和配置过程。
docker pull bitnami/APP
docker pull bitnami/APP:[TAG]
32、ServiceLogos:超可爱的 Logo 集合。这里是用来存放 Sawaratsuki 制作的各种 logo 的仓库,这些 logo 制作精美、画风可爱,包括编程语言、框架、工具和各大社交媒体的商标™️。
33、ungoogled-chromium:更纯净的 Chrome 浏览器。该项目是一个移除了 Chrome 浏览器中谷歌服务的浏览器,保留了完整的浏览器功能。
34、web-activity-time-tracker:追踪你的上网活动时间的浏览器插件。这是一款无广告、开源的浏览器插件,能记录你在不同网站上的浏览时间,并提供直观的统计数据。它支持按天和小时统计浏览时间、过滤干扰网站、导出数据等功能。
开源书籍
35、how-to-learn-robotics:机器人学自学指南。这本指南专为非科班的小伙伴而设计,旨在指导他们如何学习机器人学。它包含了必备知识、入门教材推荐、实践项目以及进阶方法等内容,帮助读者逐步成长为一名优秀的机器人工程师。
36、llm-universe:《动手学大模型应用开发》。该项目是专为小白开发者设计的大模型应用开发教程。内容涵盖了大模型的概念介绍、如何调用大模型API、知识库的搭建、构建 RAG(Retrieval-Augmented Generation)应用以及评估方法等内容。
机器学习
37、langchain:构建基于 LLM 应用的框架。LLM 是基于大数据预先训练好的大型深度学习模型,该项目可让 LLM 无需再训练就能访问新的数据集。它提供了开发 LLM 应用所需的各种模块,包括连接上下文来源和基于 LLM 进行推理的功能,从而轻松开发由 LLMs 支持的各种应用,比如聊天机器人、知识库和信息提取等。
38、LLaMA-Factory:专门针对 LLM 做微调的框架。这是一个让微调大型语言模型变得轻松的开源项目,它支持 LLaMA、Mistral、ChatGLM 等多种模型,以及增量预训练、奖励模型训练和精度等级等功能。引入了先进的算法和实用的微调技巧,同时提供了便捷的监控工具,方便用户追踪实验进度。
39、ollama:本地运行各种 LLM 的工具。这是一个用 Go 语言写的工具,用于在本地一条命令安装、启动和管理大型语言模型,支持 Llama 3、Gemma、Mistral 等大模型,适用于 Windows、macOS、Linux 操作系统。
40、vanna:与你的 SQL 数据库聊天。该项目使用 LLM+RAG+数据库技术,让用户能够通过自然语言查询 SQL 数据库,用生成的 SQL 回答你的问题。
最后
感谢参与分享开源项目的小伙伴们,欢迎更多的开源爱好者来 HelloGitHub 自荐/推荐开源项目。如果你发现了 GitHub 上有趣的项目,就点击这里分享给大家伙吧!
本期有你感兴趣的开源项目吗?如果有的话就留言告诉我吧~如果还没看过瘾,可以点击阅读往期内容。
感谢您的阅读,如果觉得本期内容还不错的话 求赞、求分享 ❤️