《HelloGitHub》第 91 期

共 15739字,需浏览 32分钟

 ·

2023-10-30 02:15

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

简介

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

github.com/521xueweihan/HelloGitHub

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


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

C 项目

1、barrier:一套键盘鼠标控制多台电脑的工具。该项目通过模拟 KVM 切换器功能,实现多台电脑、不同操作系统,共享一套键盘鼠标,让工作流程更加高效。它安装简单使用方便,无需复杂的配置,支持自定义热键、多种操作系统、可视化操作界面等功能。来自 @loongmonkey 的分享

地址:https://github.com/debauchee/barrier

2、clumsy:让 Windows 网络变差的工具。该项目是基于 WinDivert 实现的手动控制 Windows 网络情况的工具,它无需安装下载即用,可用于模拟网络延迟、节流、丢包等。

地址:https://github.com/jagt/clumsy

3、vlc:自由、免费、跨平台的视频播放器。这是一款可播放几乎所有音视频格式的文件和各种流媒体协议的播放器,它完全免费、没有广告,无需额外安装编解码器,支持播放文件、光盘、摄像头和流媒体的内容,可运行在 Windows、Linux、macOS、Android 和 iOS 等平台。来自 @Xuefeng Xu 的分享

地址:https://github.com/videolan/vlc

C# 项目

4、Borderless-Gaming:通用的游戏全屏工具。一款专门为游戏开发的窗口优化工具,能够将原本不支持全屏的游戏全屏化。它界面简洁、使用方便,支持一键全屏和恢复,适用于 Windows 系统。

地址:https://github.com/Codeusa/Borderless-Gaming

5、Dependencies:查看 DLL 依赖关系的工具。DLL 文件即动态链接库文件是一种共享库文件,Windows 系统上的可执行文件(.exe) 一般包含多个 .dll 后缀的文件。该项目是 Windows 上查看 DLL 文件依赖树的工具,能够帮助解决因依赖缺失,导致运行 .exe 程序失败的问题。来自 @孤胆枪手 的分享

地址:https://github.com/lucasg/Dependencies

6、WinMemoryCleaner:一款实用的 Windows 内存清理工具。它采用 C# 编写、仅 200+KB 大小、界面清爽,可设置自动清理内存的间隔时间和阈值,支持进程白名单、多国语言、热键、开机启动等功能。来自 @猎隼丶止戈reNo7 的分享

地址:https://github.com/IgorMundstein/WinMemoryCleaner

C++ 项目

7、KeyDB:多线程版的 Redis。该项目是由 Snapchat 开源的支持多线程的 Redis,它具有高性能、更高的吞吐量、完全兼容 Redis 协议等特点。有了多线程就可以放心大胆地执行 KEYS 和 SCAN 命令,不用再担心阻塞 Redis 了。

地址:https://github.com/Snapchat/KeyDB

8、MuseScore:一款免费开源的写谱工具。这是一款用 C++ 编写的创建和编辑乐谱的桌面工具,它拥有精美的界面、中文语言和丰富的功能,重点是免费畅用无限制。支持为包括钢琴、吉他等 500 多种乐器编曲,适用于 Windows、Linux 和 macOS 系统。

地址:https://github.com/musescore/MuseScore

9、rpcs3:流畅运行 PS3 游戏的开源模拟器。该项目是用 C++ 写的 PlayStation 3(PS3) 模拟器,安装后使用默认配置,就能较为流畅地运行多种 PS3 主机上的游戏,适用于 Windows、Linux、macOS 和 FreeBSD 操作系统。

地址:https://github.com/RPCS3/rpcs3

10、tiled:一款强大的 2D 游戏关卡编辑工具。该项目是一款完全由社区驱动、功能强大、容易上手的 2D 游戏场景编辑器,它能够帮助开发者快速制作 2D 游戏地图和设计关卡,支持灵活的对象图层、自由放置图像、对齐像素、图块动画和碰撞编辑器等功能。

地址:https://github.com/mapeditor/tiled

Go 项目

11、groupcache:Go 写的轻量级分布式缓存库。该项目是由 Golang 官方开源的库,它实现了一个无需部署的分布式缓存。支持当查询未命中缓存时仅一个进程填充缓存(防穿透和雪崩)、热点数据自动扩展等功能,但不支持更新和删除数据(LRU 控制内存),所以仅适用于某些特定场景。

地址:https://github.com/golang/groupcache

12、kopia:好用的跨平台备份工具。适用于 Windows、Linux 和 macOS 的备份/还原工具,它能够将指定的文件和目录加密压缩后生成快照,然后上传到远程服务器或云存储,实现远程备份数据的功能,开箱即用支持命令行和 GUI 两种使用方式。

地址:https://github.com/kopia/kopia

13、photoprism:带 AI 功能的开源私人云相册。该项目是用 Go 语言写的在线私人相册,它稳定、部署方便,支持浏览/备份图片、按地点/时间线浏览照片、移动端自动备份照片,以及人脸识别、图片自动分类等功能,可用来搭建私人相册管理你的照片。来自 @鸿宇Hov 的分享

地址:https://github.com/photoprism/photoprism

14、zlsgo:简单易用的 Golang 工具库。该项目把 HTTP 服务、日志、热重启、验证器、编码等十几种开发中经常写的功能,封装成了一个库,拿来即用提高开发效率。来自 @神经蛙9dyXx 的分享

  func main() {

      // 需要验证的数据
      data := "我是需要验证的数据,我的作用是做用户名"
      // 开始验证数据,不能为空,必须包含字母
      name, err := zvalid.Text(data, "用户名").Required().HasNumber().HasLetter().String()
      if err != nil {
          zlog.Debug("验证失败", err)
      }

      data = "我是需要验证的数据,我的作用是做用户名,我有字母 A"
      name, err = zvalid.Text(data, "用户名").Required().HasLetter().String()
      zlog.Debug("用户名是:", name)

      // 初始化一个对象,并绑定需要验证的字符串
      // zvalid.New().Verifi("username","用户名").String()
  }

地址:https://github.com/sohaha/zlsgo

Java 项目

15、minum:极简的 Java Web 框架。该项目是作者手撸的 Java Web 框架,它简约、零依赖、具有良好的性能,内置数据库、Web 服务器、模版引擎、日志等功能。如果你是一个 Java 新手,而且经常在各大 Web 框架中“迷失方向”,那你可以通过这个项目,快速上手 Web 开发并理清头绪。

package org.example.myproject;

import com.renomad.minum.web.*;
                                                                                                                       
public class Main {

    public static void main(String[] args) {
        // Start the system
        FullSystem fs = FullSystem.initialize();

        // Register some endpoints
        fs.getWebFramework().registerPath(
                RequestLine.Method.GET,
                "",
                request -> Response.htmlOk("<p>Hi there world!</p>"));

        fs.block();
    }
}

地址:https://github.com/byronka/minum

16、WePush:专注批量推送的小工具。该项目是用 Java 写的批量推送桌面工具,支持自定义消息、预览消息、批量导入用户、多账号管理、定时推送等功能,目前已支持公众号模板消息、企业微信、微信客服、短信、邮件等消息类型。来自 @周波 的分享

地址:https://github.com/rememberber/WePush

JavaScript 项目

17、auto-animate:一个即插即用的过渡动画库。该项目可以为你的 Web 应用添加平滑的过渡效果,它上手简单无需修改现有代码,动画会在子元素被添加、移除或移动时自动触发,适用于 React、Solid、Vue、Svelte 和 JavaScript 应用。来自 @Uyloal 的分享

地址:https://github.com/formkit/auto-animate

18、html-to-image:将 HTML 网页转化成图片的库。该项目可以将任意 DOM 节点,转换成 SVG、PNG、JPEG 等多种格式的图像,可直接在 React 和原生 JavaScript 代码中使用。来自 @鸿宇Hov 的分享

var node = document.getElementById('my-node');

htmlToImage.toPng(node)
  .then(function (dataUrl{
    var img = new Image();
    img.src = dataUrl;
    document.body.appendChild(img);
  })
  .catch(function (error{
    console.error('oops, something went wrong!', error);
  });

地址:https://github.com/bubkoo/html-to-image

19、lx-music-desktop:一款免费、没广告的音乐软件。洛雪音乐助手桌面版是基于 Electron + Vue 开发的音乐搜索工具,需要自己配置音乐源,支持在 Windows、macOS、Linux、Android 平台上运行。

地址:https://github.com/lyswhut/lx-music-desktop

20、threejs-tetris-react:3D 俄罗斯方块。该项目是采用 Three.js + React + TypeScript 构建的 3D 俄罗斯方块游戏。

地址:https://github.com/RylanBot/threejs-tetris-react

21、workout-lol:制定你的肌肉训练计划。该项目是采用 NextJS 写的小型 Web 应用,可以帮你更好地健身。用户上来需要选择锻炼器材、指定身体部位,随后网站就会给出动作指导视频和文字描述。来自 @鸿宇Hov 的分享

地址:https://github.com/workout-lol/workout-lol

Objective-C 项目

22、Sequel-Ace:适用于 macOS 的 MySQL 数据库管理工具。因为 Mac 上的老牌数据库管理工具 Sequel Pro 停止更新,所以就有了 Sequel-Ace。它免费、开源、持续更新,支持 Intel 和苹果芯片,适用于 macOS 10.13 及以上系统。

地址:https://github.com/Sequel-Ace/Sequel-Ace

Python 项目

23、codespell:一条命令找出代码中的拼写错误。该项目主要用于检查文件中常见单词的拼写错误,对于变量名极少产生误报,支持指定目录、文件后缀、修改建议、忽略文件等功能。来自 @Xuefeng Xu 的分享

codespell some_file some_dir/ *.ext  # 检查目录下 ext 后缀文件
codespell -w, --write-changes  # 显示修改建议

地址:https://github.com/codespell-project/codespell

24、pwntools:知名的 CTF 框架和漏洞利用开发库。该项目是用 Python 编写的 CTF 框架,开箱即用地提供了远程连接、网络、汇编/反汇编、ELF 模块、生成 shellcode 等功能,让 CTF 选手可以专注于编写 EXP(利用漏洞的攻击逻辑)。

from pwn import *
context(arch = 'i386', os = 'linux')

r = remote('exploitme.example.com'31337)
# 这里写漏洞利用逻辑
r.send(asm(shellcraft.sh()))
r.interactive()

地址:https://github.com/Gallopsled/pwntools

25、python-holidays:处理假期的 Python 库。该项目支持动态生成国家/地区和省份公布的法定节假日,可以快速地判断指定日期是否为节假日。

from datetime import date
import holidays

cn_holidays = holidays.CN()
date(2021101in cn_holidays  # True
date(2023108in cn_holidays  # False
date(202429in cn_holidays  # True 我看了下源码还未更新 2024 年的假期

地址:https://github.com/vacanza/python-holidays

26、Qexo:漂亮的 Hexo 静态博客编辑器。该项目是基于 Django 的 Hexo 静态博客管理后台,支持文章管理、多种图床、自动更新、友情链接、站点统计等功能。

地址:https://github.com/Qexo/Qexo

27、tacticalrmm:一个远程监控和管理 PC 的工具。该项目是采用 Django+Vue.js 构建的 IT 管理平台,支持类似 TeamViewer 的远程桌面控制、远程执行命令和脚本、上传和下载文件、警报等功能。

地址:https://github.com/amidaware/tacticalrmm

Rust 项目

28、helix:一款 Rust 写的终端文本编辑器。受 Kakoune 和 Neovim 启发的编辑器,它开箱即用、智能、对新手更加友好,支持类似 Vim 的编辑模式、tree-sitter(高亮更加快速)、LSP 等功能。

地址:https://github.com/helix-editor/helix

29、mini-redis:Rust 写的迷你 Redis。该项目是用 Tokio 构建的 Redis,仅实现了 PING、GET、SET、PUBLISH 等命令。可作为 Tokio 的练手项目,不可用于生产环境。

use tokio::net::TcpListener;
use tokio::io::{AsyncReadExt, AsyncWriteExt};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let listener = TcpListener::bind("127.0.0.1:8080").await?;

    loop {
        let (mut socket, _) = listener.accept().await?;

        tokio::spawn(async move {
            let mut buf = [01024];

            // In a loop, read data from the socket and write the data back.
            loop {
                let n = match socket.read(&mut buf).await {
                    // socket closed
                    Ok(n) if n == 0 => return,
                    Ok(n) => n,
                    Err(e) => {
                        eprintln!("failed to read from socket; err = {:?}", e);
                        return;
                    }
                };

                // Write the data back
                if let Err(e) = socket.write_all(&buf[0..n]).await {
                    eprintln!("failed to write to socket; err = {:?}", e);
                    return;
                }
            }
        });
    }
}

地址:https://github.com/tokio-rs/mini-redis

30、rust-blog:面向 Rust 初学者的博客。这里的文章可以帮助 Rust 初学者更好地掌握 Rust 语言,包括给新手学习 Rust 的建议、Rust 标准库讲解等内容。

地址:https://github.com/pretzelhammer/rust-blog

Swift 项目

31、Delta:iOS 上的多合一经典游戏模拟器。这是一款无需越狱、适用于 iOS 设备的游戏模拟器,支持 NES、GBA、Nintendo 64 等游戏。

地址:https://github.com/rileytestut/Delta

其它

32、AnuPpuccin:一款精美的 Obsidian 主题。这款 Obsidian 主题支持各种调色板、内置主流配色方案、彩虹文件夹、自定义背景等功能。

地址:https://github.com/AnubisNekhet/AnuPpuccin

33、fluentui-system-icons:微软开源的图标集合。这是一套微软 Fluent UI 设计风格的图标,它丰富、精致、统一。

地址:https://github.com/microsoft/fluentui-system-icons

34、leetcode:全面的 Leetcode 算法解题指南。该项目包含 LeetCode、《剑指 Offer》、《程序员面试金典》等题目的相关题解,题解有 Java、Python、C++、Go、TypeScript、Rust 等多种编程语言实现。来自 @Libin YANG 的分享

地址:https://github.com/doocs/leetcode

35、Smart_Plant:自制智能植物监控设备。这是一款可直接插入土壤的环境监控设备,支持测量土壤湿度、温度和光照,项目仅包含电路板,需自行组装电子墨水屏、太阳能电池板等。

地址:https://github.com/JGAguado/Smart_Plant

36、TNT-Weekly:TNT 前端周刊。该项目是由腾讯新闻前端团队(TNT)发起的周刊,每周会发布国内外前端领域最新的优秀文章和行业动态。

地址:https://github.com/tnfe/TNT-Weekly

37、try:在命令执行前先试一试。该项目可以让你在命令真正执行前,查看命令执行结果,需要注意的是它并不是一个完全独立的空间(sandbox),因为所有的网络请求都是被允许的。

地址:https://github.com/binpash/try

开源书籍

38、latex-cookbook:《LaTeX 论文写作教程》。该书是教你如何用 LaTeX 写论文,内容涵盖了 LaTeX 基础、文本编辑、公式、图表设计、文献引用等方面。

地址:https://github.com/xinychen/latex-cookbook

39、Startup-CTO-Handbook:《初创公司 CTO 手册》。这是一本写给初创公司首席技术官的书,内容涵盖技术团队管理、招聘和面试、技术架构等方面。作者先后担任过多家创业公司的 CTO 和 CEO,还曾在腾讯做过驻点企业家(EIR)。

地址:https://github.com/ZachGoldberg/Startup-CTO-Handbook

机器学习

40、deepface:轻量级人脸识别和分析库。该项目是 Python 写的人脸识别和面部属性分析框架,可根据人脸图像智能识别年龄、性别、情绪等信息。

地址:https://github.com/serengil/deepface

41、DeepLearningSystem:AI 系统 & 深度学习教程。该项目主要是关于人工智能、深度学习系统设计的教程,内容涵盖 AI 基础知识和概述、AI 芯片、AI 编译器原理、AI 框架核心技术等方面。

地址:https://github.com/chenzomi12/DeepLearningSystem

42、guidance:微软开源的 LLM 提示编程语言。该项目是微软开源的编写 prompt 的模版语言,用于编写复杂、可复用、易于管理的 prompt,支持 GPT-4、LLaMa 等多种大语言模型。

地址:https://github.com/guidance-ai/guidance

最后

感谢乐于分享开源项目的小伙伴们,欢迎更多的开源爱好者来 HelloGitHub 自荐/推荐开源项目。

上就是本期的所有内容,还没看过瘾?点击阅读 往期内容。

- END -

关注「HelloGitHub」第一时间收到更新

点击阅读原文可按照编程语言查看项目

浏览 9080
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报