首页 > 教程 > 《HelloGitHub》第 98 期

《HelloGitHub》第 98 期

时间:2024-05-28 | 来源: | 阅读:68

话题: T Hell hello El logi GitHub

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

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

简介

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

https://github.com/521xueweihan/HelloGitHub

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


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

C 项目

1、 cmus :小巧的命令行音乐播放器。这是一个专为类 Unix 系统设计的轻量级命令行音乐播放器,可以播放本地的音乐文件。它简单易用、占用资源少、启动速度快,支持多种音频格式。

2、 Remotery :轻量级的远程实时 CPU/GPU 分析器。该项目是用于监控 CPU 和 GPU 上多线程活动的工具。它提供了一个 C 文件,可轻松集成到项目中,并配备了一个实时监控 Web 界面,可通过浏览器远程观察和分析程序的性能。适用于监控游戏的实时运行性能和分析移动端应用的性能等场景。

C# 项目

3、 RunCat_for_windows :在 Windows 任务栏飞奔的“小猫”。这是一个用 C# 写的小工具,它会在 Windows 任务栏显示一只奔跑的小猫动画,CPU 使用率越高它跑得越快。

C++ 项目

4、 caesium-image-compressor :免费的图片压缩软件。这是一款用 C++ 编写的图片压缩工具,它拥有简洁的中文界面,支持 JPG、PNG 和 WebP 格式的无损压缩,同时配备了实时预览和批量处理的功能。此外,还提供了 Windows、Linux 和 macOS 客户端,以及无需安装的 Web 版本。

5、 concurrentqueue :C++ 的高性能无锁并发队列。该项目是用 C++11 编写的快速、无锁、并发队列,支持多个线程同时进行生产者和消费者操作。它具有无需使用锁和单头文件的特点,适用于需要高性能并发处理的各种场景。

#include "concurrentqueue.h"

moodycamel::ConcurrentQueue q;
q.enqueue(25);

int item;
bool found = q.try_dequeue(item);
assert(found && item == 25);

6、 input-overlay :显示用户操作输入的 OBS 直播插件。该项目是用来在直播中显示键盘按键、鼠标移动和游戏手柄按钮的插件,适用于 Windows 和 Linux 上的 OBS 直播软件,可用于游戏直播和教学演示等场景。

Go 项目

7、 fscan :开源的内网安全扫描工具。该项目是用 Go 语言开发的内网扫描工具,提供了一键自动化全方位的漏洞扫描。它使用方便、功能全面,支持端口扫描、常见的服务器爆破、Web 应用漏洞扫描、NetBIOS 嗅探等功能。

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.

9、 mactop :专为苹果芯片打造的 Mac 性能监控工具。该项目用不到 1k 行的 Go 代码,实现了一个类似 top 命令的工具。它可以实时显示 Apple M 系列芯片的性能指标,包括 CPU、GPU 使用率、内存、网络和硬盘等信息。

10、 micro :现代化的终端文本编辑器。这个项目是用 Go 写的基于终端的文本编辑器,可作为 Nano 的替代品。它下载即用、无需配置、跨平台,支持多光标编辑、语法高亮、鼠标、插件扩展等功能,特别适合在 SSH 远程连接服务器时进行文本编辑工作。

11、 superfile :非常漂亮的终端文件管理器。这是一个现代终端文件管理器,为命令行文件操作提供了一个直观且漂亮的界面。它默认采用 Vim 风格的快捷键操作,还支持插件和主题自定义。

Java 项目

12、 Acode :Android 手机上的代码编辑器。这是一款专为 Android 设备设计的代码编辑工具,它是轻量级的 Web IDE,具有即时预览、控制台和丰富的插件等特点,支持 HTML、Python、Java、JavaScript 等多种编程语言。来自 @虾华 的分享

13、 blossom :私有部署的云端双链笔记软件。这是一个支持私有部署的云端存储双链笔记软件,可以将你的所有笔记、图片、个人计划安排保存在私有服务器上,并实现跨设备的实时同步。它提供 Markdown 编辑、双链笔记、全量备份、网页转换、多账号权限和统计等功能,兼容 Windows、macOS 和网页客户端。来自 @猎隼丶止戈reNo7 的分享

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());
}

15、 odc :企业级数据库协同开发平台。该项目是提供数据库协同开发和数据管理的平台,专为提升 SQL 开发效率而设计。它基于 Spring Boot 和 Electron 构建,提供了 Web 和桌面客户端,支持 SQL 规范检查、变更回滚、数据生命周期管理、数据脱敏和操作审计等功能,兼容 OceanBase、Oracle、MySQL 和 Doris 等多种数据源。来自 @XiaoYangGzeyP 的分享

JavaScript 项目

16、 papermark :开源的文件分享平台。该项目作为 DocSend 服务的开源替代方案,提供了自托管、简单易用的文档分享功能。它采用 Next.js+Tailwind CSS 构建,用户仅需上传文档,就能获得一个可在线访问文件内容的地址,并支持自定义域名和访问数据追踪等功能。

17、 plane :开源的项目管理和问题跟踪平台。该项目是开源的项目管理系统,旨在简化团队的项目管理流程。它易于使用、可自托管,支持问题跟踪、周期管理、项目分解和分析统计等功能,可作为 JIRA 的替代品。

18、 swr :用于数据请求的 React Hooks 库。该项目是帮助开发者简化数据请求逻辑的 React 库,支持自动处理数据的缓存、重验证、错误重试等多种功能,比如当用户重新点击/回到页面时,自动请求接口获取最新数据。

import useSWR from 'swr'
 
function Profile() {
  const { data, error, isLoading } = useSWR('/api/user', fetcher)
 
  if (error) return 
failed to load
if (isLoading) return
loading...
return
hello {data.name}!
}

19、 undraw-ui :基于 Vue 3 的评论组件。这是一个基于 Vue 3 的 UI 组件,提供了评论、内容折叠、回复、表情等功能,以及目录、搜索等组件。来自 @Mr.King 的分享

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 
}

Kotlin 项目

21、 Lemuroid :Android 设备上的全能游戏模拟器。这款基于 Libretro 的多合一游戏模拟器,能够让你在 Android 设备上玩各种怀旧游戏。它提供了即时存档、本地多人游戏和自定义按键等功能,支持模拟 NES、GBA、3DS、PSP 等多种游戏机。

Python 项目

22、 buku :强大的浏览器书签管理工具。这是一款开源的书签命令行管理工具,它轻量、隐私安全且易于使用,支持从主流浏览器导入书签、自动获取书签信息、跨平台同步和强大的搜索功能。

23、 flagsmith :轻松管理功能开关和配置的平台。这是一个开源、功能齐全的特征标志(Feature flag)和远程配置平台,专为中小型团队设计。它是基于 Django REST framework 构建的 Web 应用,用于管理应用功能的开关和远程配置,支持 A/B 测试、多变量测试和组织管理等功能,适用于逐步推出新功能、进行市场测试、环境管理等场景。

24、 marimo :创新的响应式 Python 笔记本。该项目是专为 Python 设计的响应式笔记本(notebook),即在与 UI 交互时自动执行并更新所依赖的代码单元格,从而保证代码和输出的一致性。它以纯 Python 文件的形式存储,便于管理和运行,支持作为脚本执行或部署为可交互的 Web 应用。

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)

26、 Windrecorder :你的个人屏幕记忆搜索工具。该项目是专为 Windows 设计的屏幕记录工具,并提供搜索和回放功能。它会持续录制屏幕内容,同时保证数据安全(不上传、不联网),利用 OCR 和图片识别技术,让用户可以轻松搜索和回看屏幕活动历史。

Rust 项目

27、 bacon :后台运行的 Rust 代码检查工具。这是一个专为 Rust 语言设计的后台代码检查工具,它可以在后台运行,并即时地向开发者提供关于 Rust 代码的警告、错误和测试失败的反馈,让开发者专注于编写代码,而不是频繁地手动运行检查命令。来自 @DeShuiYu 的分享

28、 bandwhich :查看带宽使用情况的命令行工具。这是一个开源的命令行网络带宽监控工具,它可以实时显示网络使用情况,包括进程、连接和远程地址等信息。

29、 rust-by-practice :Rust 语言实战。该项目提供了大量的 Rust 实战练习,来帮助 Rust 新手学习和上手 Rust 语言。这里除了有大量的练习题和答案,还支持在线编辑和运行 Rust 代码。

Swift 项目

30、 MacSymbolicator :符号化 macOS/iOS 崩溃报告的工具。这是一个简单的 Mac 应用,它能够将 macOS/iOS 崩溃报告中的十六进制地址,转换为源码中的函数和行号,帮助开发者分析应用的崩溃原因,支持 crash 和 ips 格式的崩溃报告。

其它

31、 cloudflare_temp_email :免费搭建临时邮箱服务。该项目通过 CloudFlare 的免费服务,提供一个功能完备的临时邮箱服务,支持收发邮件、访问密码、自动回复、查看附件等功能。来自 @Dream Hunter 的分享

32、 docs-linux-kernel-labs-zh-cn :Linux 内核实验。该项目是布加勒斯特理工大学的《Linux 内核教学》课程的中文翻译版,适合对 Linux 内核感兴趣的程序员学习。课程内容分为课程和实验两部分,其中实验是在基于 QEMU 的虚拟机中进行,亲身体验 Linux 内核的开发、构建、部署及执行过程。

33、 LapisCV :开箱即用的简历模板。该项目提供了适用于 Obsidian 和 Typora 的简历模板,它基于 Markdown 格式、编辑方便、所见即所得,设计简洁且正式,借助编辑器可直接导出 PDF 格式的简历。

34、 OV-Watch :低成本的开源智能手表。这是一个制作成本仅需 80 元的智能手表项目,它不仅提供了基本的手表功能,还支持睡眠模式、蓝牙、计步、卡包、指南针和心率测量等功能。

35、 phonedata :手机号码归属地信息库。该项目整理了超过 40 多万条中国手机号段和归属地信息,数据均来自网上的公开数据。

开源书籍

36、 LLMBook-zh.github.io :《大语言模型》。这是一本为想入门大模型技术的程序员/学生准备的开源书籍,内容不仅涵盖了大模型的基础原理和关键技术,还提供了配套的代码工具库和大模型,帮助读者快速入门并实践。

37、 raytracing.github.io :《Ray Tracing in One Weekend》系列书籍。这是一套光线追踪技术的入门书籍,教你用 C++ 实现一个光线追踪器。光线追踪(Ray Tracing)是一种计算机图形学中的渲染技术,能够通过模拟光线在虚拟场景中的传播,生成出栩栩如生的真实感图像。

机器学习

38、 facefusion :开源的 AI 换脸和增强工具。这是一款功能强大的人脸交换和增强工具,支持将图片/视频中的人脸替换成另一个人的脸、改善人脸和背景清晰度等功能,还提供了友好的 Web 界面(WebUI)和低门槛的 CPU 处理选项。

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)

40、 llama3-from-scratch :从头开始实现 Llama 3 的教程。该项目通过逐层构建 Llama 3 的方式,帮助人们深入理解 LLM 是如何工作的。作者使用 PyTorch 框架,实现了加载模型权重、文本的分词处理、模型配置以及逐层实现 Transformer 模型中的关键组件。

最后

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

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

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


湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网