《HelloGitHub》第 103 期
HelloGitHub 分享 GitHub 上有趣、入门级的开源项目,每月 28 号更新一期。这里有好玩和入门级的开源项目、开源书籍、实战项目、企业级项目,让你用极短的时间感受到开源的魅力,对开源产生兴趣。
仅用 C 语言开发 Android 应用。这是一个 Android 应用开发框架,可以让开发者不用 Java,仅用 C 和 Make 开发 Android 应用。它轻量且跨平台,支持 OpenGL ES、陀螺仪、多点触控及 Android 键盘,并能直接访问 USB 设备。
免费开源的东方 Project 系列的射击游戏。该项目是基于东方 Project 世界观的弹幕射击类游戏,拥有独立原创的故事情节、音乐和游戏机制。这款名为“泰西”的游戏,采用 C11、SDL2 和 OpenGL 开发,完全免费且开源,支持在 Windows、Linux、macOS 和 Chrome 等浏览器上运行。
免费的 Windows 应用卸载神器。这是一个用 C# 开发的 Windows 软件卸载工具,能够快速删除大量不需要的应用程序。它完全免费、开箱即用,支持批量和强制卸载、清理残留文件、检测隐藏或受保护的已注册应用等功能。虽然面向 IT 专业人员设计,但其简单的默认设置,让任何人都能轻松上手。
将手机变成 Stream Deck 的工具。该项目可以将手机、平板等带浏览器的设备变成类似 Stream Deck 的远程自定义按键板,实现一键执行单步或多步操作,适用于直播和简化日常任务等场景。
超快的命令行下载工具。这个跨平台命令行下载工具由 C++ 开发,支持 HTTP(S)、FTP、SFTP、BitTorrent 等多种协议。它操作简单、体积小、下载速度快,并提供后台运行、速度限制、分段下载和 BitTorrent 扩展等功能。
速度与精准兼具的 C++ 数字解析库。该项目是用于快速解析数字字符串的 C++ 库,实现了类似 from_charts 函数的功能。它是一个速度极快、仅头文件的库,比标准库快数倍。支持解析 float、double 和整数类型的字符串,已被广泛应用在 Chromium、Redis 和 LLVM 等知名项目中。
#include "fast_float/fast_float.h" #include <iostream> int main() { const std::string input = "3.1416 xyz "; double result; auto answer = fast_float::from_chars(input.data(), input.data()+input.size(), result); if(answer.ec != std::errc()) { std::cerr << "parsing failure\n"; return EXIT_FAILURE; } std::cout << "parsed the number " << result << std::endl; return EXIT_SUCCESS; }
开源的街机模拟器。这是一款支持海量街机游戏的模拟器。它通过模拟多种硬件平台,实现了在电脑上运行各种复古软件的功能。不仅支持街机,还有老式电脑和游戏机。
轻量级高颜值的 Docker 监控平台。这是一个轻量级的服务器监控平台,包括 Docker 统计、历史数据和警报功能。它拥有友好的 Web 界面,配置简单、开箱即用,支持自动备份、多用户、OAuth 认证和 API 访问等功能。
高效的 AI 开发环境搭建工具。这是一个为 AI/ML 项目提供可复现开发环境的命令行工具。只需简单的配置语言和命令,即可快速创建基于容器的开发环境,支持远程构建、依赖缓存和导入远程仓库等功能。
开源的网络钓鱼平台。该项目提供了一个开箱即用的网络钓鱼平台,可用于模拟钓鱼攻击。它拥有友好的 Web 管理后台,支持邮件模板、批量发送邮件、网站克隆和数据可视化,适用于企业安全培训和渗透测试等场景。
实现基础设施即代码的开源方案。该项目是一个开源的基础设施即代码工具,专注于自动化地创建、管理和部署本地和云服务基础设施。作为 Terraform 的一个分支,它由社区驱动,支持使用高级配置语法描述基础设施、生成执行计划和构建资源依赖图,从而减少人为操作失误,实现复杂变更的自动化。
极简的照片管理平台。这是一款用于自建云相册的 Web 应用,它拥有直观的用户界面和丰富的功能,支持自动整理照片、生成缩略图、共享相册、EXIF 解析和多用户管理。还提供了 iOS 应用,方便用户在手机上访问。
开源的 Android 虚拟定位应用。该项目是一个基于 Android 调试 API 和百度地图实现的虚拟定位工具,无需 ROOT 权限即可修改地理位置。它支持位置搜索和手动输入坐标,并提供了一个可自由移动的摇杆来模拟位移。
开源的 API 自动测试框架。这是一款基于 Java 的 API 测试框架,可与 Spring Boot、Maven 等 Java 生态系统无缝集成。它整合了 API 测试自动化、模拟、性能测试和 UI 自动化等功能,支持使用类似 Cucumber 的语法编写测试用例,并提供了一个跨平台的可执行文件,即使对 Java 不熟悉也能轻松上手。
打造现代化网页播放器界面的组件库。这是一个用于定制网页音频和视频播放器界面的库,兼容各种 JavaScript 框架。它高度可定制,开发者可以轻松调整组件的外观和功能,支持字幕、投屏、快捷键、倍速、预览缩略图、移动端和静音按钮等功能。
<media-controller audio> <audio slot="media" src="xxxxxx" ></audio> <media-control-bar> <media-play-button></media-play-button> <media-time-display showduration></media-time-display> <media-time-range></media-time-range> <media-playback-rate-button></media-playback-rate-button> <media-mute-button></media-mute-button> <media-volume-range></media-volume-range> </media-control-bar> </media-controller>
可爱的网站计数器。该项目是一个用于统计页面访问人数的计数器。它不仅简单易用,还提供多种可爱风格的主题,用户可根据个人喜好进行选择。
灵活高效的 Node.js 线程池。该项目是用 TypeScript 编写的高性能 Node Worker 线程池,旨在简化 Node.js 多线程编程。它提供简单易用的 API,支持线程间通信、动态调整线程池大小、取消任务、设置内存限制和异步任务跟踪等功能。
const path = require('path'); const Piscina = require('piscina'); const piscina = new Piscina({ filename: path.resolve(__dirname, 'worker.js') }); (async function() { const result = await piscina.run({ a: 4, b: 6 }); console.log(result); // Prints 10 })();
轻松实现拖动交换布局的库。该项目可以将任意布局转换为可拖动交换的形式,仅需几行代码即可实现。它支持设置交互动画,可以在 React、Vue、Svelte 等框架中使用,适用于各种需要交互式布局的场景。
import { createSwapy } from 'swapy' const container = document.querySelector('.container') const swapy = createSwapy(container, { animation: 'dynamic' // or spring or none }) // You can disable and enable it anytime you want swapy.enable(true)
在手机上制作 USB 启动盘的工具。这是一个开源的 Android 应用,专为在手机上制作操作系统 USB 启动盘而设计。它无需 ROOT 权限,即可将操作系统镜像写入 USB 设备,支持 Ubuntu、树莓派等多个系统,适用在无法使用电脑时制作启动 U 盘。
Android 按键重映射应用。这是一个免费开源的 Android 应用,可以自定义 Android 设备的按键、指纹和手势操作。无需 ROOT 权限,支持蓝牙和有线键盘,提供灵活的按键重映射体验。
Python 量化交易回测框架。该项目是用 Python 编写的回测库,专为开发和测试交易策略而设计。它可以从 CSV 文件、在线数据源和 pandas 中提取数据,支持多策略同步运行、生成交易策略的可视化图表等功能。内置 100 多种指标,包括趋势、成交量和波动性等指标。
from datetime import datetime import backtrader as bt class SmaCross(bt.SignalStrategy): def __init__(self): sma1, sma2 = bt.ind.SMA(period=10), bt.ind.SMA(period=30) crossover = bt.ind.CrossOver(sma1, sma2) self.signal_add(bt.SIGNAL_LONG, crossover) cerebro = bt.Cerebro() cerebro.addstrategy(SmaCross) data0 = bt.feeds.YahooFinanceData(dataname='MSFT', fromdate=datetime(2011, 1, 1), todate=datetime(2012, 12, 31)) cerebro.adddata(data0) cerebro.run() cerebro.plot()
开源的智能家居平台。这是一个用 Python 编写的智能家居平台,旨在整合不同品牌的智能设备,提供个性化的家庭自动化体验。它解决了传统系统互操作性(Interoperability)差的问题,允许用户在同一平台上自由控制和联动 Apple HomeKit、米家、Aqara、涂鸦等设备,极大提升了智能家居的灵活性和便捷性。适合希望打破单一平台限制的用户,尤其是追求高性价比的 DIY 智能家居爱好者。
纸质文档数字化存档工具。这是一个基于 Django 的文档管理系统,可将纸质文档转换成可搜索的在线存档。不同于普通的扫描仪将实体书变为难以检索的图片或 PDF 格式,它通过文档扫描器实现电子化,转化为易于检索的格式。
快速生成 Python 项目依赖文件的工具。该项目可以根据 Python 项目中的导入语句,生成 requirements.txt 文件。它能够自动识别项目中使用的库,无需安装即可生成依赖库列表。
宝可梦数据的 API 服务。这是一个基于 Django 构建的宝可梦数据 RESTful API 服务,为开发者提供全面的宝可梦数据库,包括小精灵的动作、属性、技能和进化信息等详细资料。
Rust 的快照测试库。这是一个用于 Rust 项目的快照测试库,特别适用于参考值非常大或经常变化的场景。它提供了 VSCode 插件和命令行工具,当测试因参考值变动而失败时,可以通过 review 命令查看问题,并一键更新快照(参考值),从而快速通过单元测试。
fn split_words(s: &str) -> Vec<&str> { s.split_whitespace().collect() } #[test] fn test_split_words() { let words = split_words("hello from the other side"); insta::assert_yaml_snapshot!(words); }
Rust 驱动的 HTTP 压测工具。这是一个用 Rust 开发的 HTTP 请求压测工具,它操作简单、带 TUI 动画界面,支持生成请求延迟、吞吐量等指标的报告,以及动态 URL 和更灵活的请求间隔(burst-delay)等功能。
基于 Rust 的嵌入式 Scheme 解释器。这是一个用 Rust 编写的嵌入式 Scheme 解释器,旨在提供轻量级且快速的脚本语言支持。它解决了在嵌入式环境或小型应用中对高效、灵活脚本引擎的需求。
灵感来自 Winamp 的 macOS 音乐播放器。该项目是受经典的 Winamp 播放器启发,用 Swift 编程语言开发的适用于 macOS 的音乐播放器。它内置音效和均衡器,支持多种音频格式、回放、歌词显示、自定义界面等功能。
适用于 macOS 的窗口预览工具。该项目是用 Swift 和 SwiftUI 开发的 Dock 窗口预览工具。只需将鼠标悬停在 Dock 上的应用图标,即可预览其打开的窗口,还支持类似 Windows 的 Alt+Tab 切换和自定义快捷键的功能。
小型的视觉语言模型。这是一个可在资源受限的设备上运行的小型视觉语言模型,它能够理解并生成与图像相关的自然语言描述,支持图像识别、生成描述和问答等功能。
from transformers import AutoModelForCausalLM, AutoTokenizer from PIL import Image model_id = "vikhyatk/moondream2" revision = "2024-08-26" model = AutoModelForCausalLM.from_pretrained( model_id, trust_remote_code=True, revision=revision ) tokenizer = AutoTokenizer.from_pretrained(model_id, revision=revision) image = Image.open('<IMAGE_PATH>') enc_image = model.encode_image(image) print(model.answer_question(enc_image, "Describe this image.", tokenizer))
全面的提示工程实战指南。这份教程致力于帮助用户掌握与大型语言模型(LLM)沟通的技巧。内容涵盖从基础到高级的提示工程技术,附有详细的实现指南和示例代码。
强大的自然语言处理 Python 库。这是一个工业级的自然语言处理(NLP)库,支持 70 多种语言的分词和训练。它采用 Python 编写,可实现标注、解析和文本分类等功能,并支持模型打包与部署。
# pip install -U spacy # python -m spacy download en_core_web_sm import spacy # Load English tokenizer, tagger, parser and NER nlp = spacy.load("en_core_web_sm") # Process whole documents text = ("When Sebastian Thrun started working on self-driving cars at " "Google in 2007, few people outside of the company took him " "seriously. “I can tell you very senior CEOs of major American " "car companies would shake my hand and turn away because I wasn’t " "worth talking to,” said Thrun, in an interview with Recode earlier " "this week.") doc = nlp(text) # Analyze syntax print("Noun phrases:", [chunk.text for chunk in doc.noun_chunks]) print("Verbs:", [token.lemma_ for token in doc if token.pos_ == "VERB"]) # Find named entities, phrases and concepts for entity in doc.ents: print(entity.text, entity.label_)
先进的对象检测和跟踪模型。该项目是基于之前的 YOLO 版本,增加了新功能并改进了模型,在对象检测、跟踪、实例分割和图像分类等任务中表现出色。
from ultralytics import YOLO # Load a model model = YOLO("yolo11n.pt") # Train the model train_results = model.train( data="coco8.yaml", # path to dataset YAML epochs=100, # number of training epochs imgsz=640, # training image size device="cpu", # device to run on, i.e. device=0 or device=0,1,2,3 or device=cpu ) # Evaluate model performance on the validation set metrics = model.val() # Perform object detection on an image results = model("path/to/image.jpg") results[0].show() # Export the model to ONNX format path = model.export(format="onnx") # return path to exported model
B 站视频空降助手。这是一款能够自动跳过 B 站视频中恰饭片段和开场、结尾动画的浏览器插件,所有标注数据均由网友贡献,支持 Chrome、Edge 和 FireFox 浏览器。
降低开发者认知负荷的建议。这是一篇关于如何在软件开发过程中,降低认知负荷的文章。即简化代码、提高代码的可读性,减轻开发者在阅读和理解代码时的负担。
将 Docker 镜像编译为独立可执行文件的工具。该项目能将 Docker 镜像转化为二进制可执行文件,无需配置 Docker 环境或安装依赖,简化了软件的分发和运行流程。
Kubernetes 安全攻防演练平台。该项目是用于构建漏洞百出、易受攻击的集群环境,让开发者可以在真实场景中学习 K8s 攻击和防御技巧。
开源的 bilibili 第三方客户端。该项目是用 Flutter 开发的 B 站第三方客户端,支持 Android 和 iOS 平台。它提供了推荐视频列表、热门直播、番剧、离线缓存、回复评论、弹幕和搜索等功能。
卡西欧 F-91W 手表的开源电路板。该项目是为经典 Casio F-91W 手表自制电路板,采用 ARM Cortex-M0+ 微控制器(SAM L22)。配备十位数段液晶显示屏、五个指示段、LED 背光和三个按钮,支持用户通过 USB 编程,在手表上运行自定义程序。
挑战写作效率极限的工具。这是一个帮助用户进入写作“心流”状态的 Web 应用。如果你停止输入超过 5 秒,屏幕上的文字就会逐渐变得模糊,最终会彻底消失。
《Understanding Deep Learning》理解深度学习。该书是由 Simon J.D. Prince 编写的一本关于深度学习的专业书籍,内容涵盖深度学习的理论基础、性能评估、卷积网络、Transformers、图神经网络、生成对抗网络(GANs)、扩散模型(Diffusion Models)、强化学习等主题,并附有大量练习题。
- C 项目
- C# 项目
- C++ 项目
- Go 项目
- Java 项目
- JavaScript 项目
- Kotlin 项目
- Python 项目
- Rust 项目
- Swift 项目
- 人工智能
- 其它
- 开源书籍