爱好是最好的教师,HelloGitHub 让你对编程感爱好!

简介

HelloGitHub 共享 GitHub 上风趣、入门级的开源项目。

github.com/521xueweiha…

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


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

C 项目

1、sds:简略的 C 言语动态字符串库。Redis 作者写的 C 言语字符串库,它相较于 C 字符串,运用起来愈加便利。具有速度快(常数复杂度获取字符串长度)、二进制安全(图片、音频等)、兼容部分 C 字符串函数等特点。

sds mystring = sdsnew("Hello World!");
printf("%s\n", mystring);
sdsfree(mystring);
output> Hello World!

2、sigma-file-manager:一款先进的文件管理器。这是一款免费的文件管理器,由开源社区保护。支撑智能查找、自定义主页、文件共享、文件下载、智能拖放、文件保护等功用,适用于 Windows 和 Linux。

3、ttyd:简略的网络共享终端的指令行东西。依据 libuv 和 WebGL2 构建的 Web 共享终端东西,装置简略运用便利,支撑 SSL、文件传输、Sixel 图画输出等功用。可运转在 Windows、macOS、Linux、OpenWrt 等操作体系上,适用于长途运维、在线管理设备等场景。

C# 项目

4、ambie:Windows 上的白噪声运用。一款播映白噪声和自然声音的运用,比如下雨、海滩等声音,支撑混合、在线下载声音和专心功用。工作时运用能够协助你会集注意力,还能在放松时运用有助于睡眠。

5、FluentTerminal:炫酷的 Windows 终端软件。依据 UWP 的 Windows 终端运用,具有强大的自定义主题模块,能够轻松定制出风格各异的主题。供给了中文选项,支撑多窗口、SSH 和查找等功用。

6、gsudo:适用于 Windows 的 sudo 指令行东西。它是 Windows 上的 sudo,允许用户以最高权限运转指令,具有与 Unix/Linux sudo 相似的运用体会,支撑 CMD、PowerShell、git-bash 等。

C++ 项目

7、Clipboard:细巧快捷的指令行剪贴板。一款用 C++ 编写的剪贴板东西,能够在终端的任何地方仿制、剪切和粘贴东西,运用起来就像 GUI 相同便利,相见恨晚的指令行东西,适用于 Windows、Linux 和 macOS 操作体系。

8、doctest:超快的 C++ 单头文件测试结构。这是一款轻量级、快速的 C++ 测试结构,它运用起来非常便利,引进头文件即可运用,并且速度快、编译时间短,支撑 C++ 11/14/17/20。

#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include "doctest.h"
int factorial(int number) { return number <= 1 ? number : factorial(number - 1) * number; }
TEST_CASE("testing the factorial function") {
    CHECK(factorial(1) == 1);
    CHECK(factorial(2) == 2);
    CHECK(factorial(3) == 6);
    CHECK(factorial(10) == 3628800);
}

9、pocketpy:为嵌入游戏引擎而规划的 Python 解说器。一个 C++ 完成的轻量级的 Python 解说器,包括一个编译器和依据字节码的虚拟机,以及交互式指令窗的完成。一切功用均集成在单个头文件 pocketpy.h 中,不包括外部依靠项能够很便利地嵌入运用,立刻具有执行 Python 代码的能力。

#include "pocketpy.h"
int main(){
    // 创立一个虚拟机
    VM* vm = pkpy_new_vm(true);
    // Hello world!
    pkpy_vm_exec(vm, "print('Hello world!')");
    // 构建一个列表
    pkpy_vm_exec(vm, "a = [1, 2, 3]");
    // 对列表进行求和
    char* result = pkpy_vm_eval(vm, "sum(a)");
    printf("%s", result);   // 6
    // 开释资源
    pkpy_delete(result);
    pkpy_delete(vm);
    return 0;
}

10、QGIS:自由开源的桌面 GIS 软件。该项目选用 C++ 言语编写,GUI 部分运用的是 Qt 库。它供给了 GIS 数据可视化、编辑和剖析的功用,支撑多种 GIS 数据格式,适用于 Windows、Linux、macOS、BSD 和移动设备。

Go 项目

11、Dragonfly2:一款依据 P2P 的智能镜像和文件分发东西。它供给了高效、稳定、安全的依据 P2P 技能的文件分发和镜像加速体系,能够提高大规模文件传输的功率和速率,最大限度地运用网络带宽,适用于运用分发、缓存分发、日志分发和镜像分发等领域。

12、ghz:简略的 gRPC 压测东西。一款用 Go 开发的专门用来压测 gRPC 服务的指令行东西,它运用简略、高效、支撑自定义参数。

13、req:带黑魔法的 Go HTTP 客户端。该库默许就很智能,比如主动解码成 UTF-8 以避免乱码、依据 Content-Type 主动解析呼应、主动检测服务器端并挑选最优的 HTTP 协议、主动重试等,除此之外还供给了强大且快捷的调试功用。

package main
import (
    "github.com/imroc/req/v3"
)
func main() {
    req.DevMode() // Treat the package name as a Client, enable development mode
    req.MustGet("https://httpbin.org/uuid") // Treat the package name as a Request, send GET request.
    req.EnableForceHTTP1() // Force using HTTP/1.1
    req.MustGet("https://httpbin.org/uuid")
}

14、sqlc:将 SQL 转成类型安全的 Go 代码的东西。它能够将输入的 SQL 语句,主动转化成类型安全、可读的操作数据库的 Go 代码,支撑 MySQL、PostgreSQL 和 SQLite 数据库。

15、tinykv:构建分布式 Key-Value 数据库的教程。介绍了如何用 Go 言语完成一个高可用、可水平扩展、支撑分布式事务的键-值存储服务。

Java 项目

16、bt:一个 Java 的 BitTorrent 库。支撑 DHT、磁力链接、加密等功用的 Java 库,能够依据自己的喜好开发和定制 BT 东西,比如耕种、下载种子等。

// Create a torrent
Path torrentRoot = Paths.get("/home/torrents/mytorrent");
Path file1 = Paths.get("/home/torrents/mytorrent/file1.bin");
Path file2 = Paths.get("/home/torrents/mytorrent/file2.bin");
Path dirToAdd = Paths.get("/home/torrents/mytorrent/dir_with_files");
byte[] torrentBytes = new TorrentBuilder()
        .rootPath(torrentRoot)
        .addFiles(file1, file2, dirToAdd)
        .announce("http://example.com/announce")
        .build();
Files.write(Paths.get("/home/torrents/mytorrent.torrent"), torrentBytes);

17、RoaringBitmap:更好用的 Java 紧缩位图数据结构。位图常用于大数据集的快速查找和去重,该项目供给的 RoaringBitmap 是一种紧缩位图,相较于传统的位图数据结构,它更快、更节省内存,并且久经沙场值得信赖,比如 Spark、Hive 等知名项目上都有它的身影。

import org.roaringbitmap.RoaringBitmap;
public class Basic {
  public static void main(String[] args) {
        RoaringBitmap rr = RoaringBitmap.bitmapOf(1,2,3,1000);
        RoaringBitmap rr2 = new RoaringBitmap();
        rr2.add(4000L,4255L);
        rr.select(3); // would return the third value or 1000
        rr.rank(2); // would return the rank of 2, which is index 1
        rr.contains(1000); // will return true
        rr.contains(7); // will return false
        RoaringBitmap rror = RoaringBitmap.or(rr, rr2);// new bitmap
        rr.or(rr2); //in-place computation
        boolean equals = rror.equals(rr);// true
        if(!equals) throw new RuntimeException("bug");
        // number of values stored?
        long cardinality = rr.getLongCardinality();
        System.out.println(cardinality);
        // a "forEach" is faster than this loop, but a loop is possible:
        for(int i : rr) {
          System.out.println(i);
        }
  }
}

JavaScript 项目

18、chatgpt-web:一款可自定义 API 的 ChatGPT 演示网页。依据 Express 和 Vue3 构建的 GPT-3 模型演示网页,支撑接入 GPT-3 API 或网页 ChatGPT。

19、illa-builder:一款灵活、娟秀的低代码平台。由国内团队开源的低代码平台,它更新积极、处理反馈及时。功用上内置图表、表格、表单等数十种常用组件,直接拖拽即可运用。还支撑 GUI 衔接数据库或 API,分分钟构建出企业内部运用,支撑在线、云服务和 Docker 本地布置多种运用方式。

20、memos:一款清爽的轻量级备忘录中心。选用 React+Tailwind+TypeScript+Go 开发的备忘录中心,相当于极简的微博。支撑私有/公开备忘录、标签、互动式日历等功用,以及 Docker 布置。

docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos neosmemo/memos:latest

21、SingleFile:用于网页存档的浏览器扩展。可完成一键下载网页,能够将网页上的文字、图片等内容,完整地整合到单个 HTML 文件里,支撑 Chrome、Firefox、Safari、Microsoft Edge 等主流浏览器。

22、zx:Bash 很好但我挑选用 JavaScript 写脚本。完成用 JavaScript 写 shell 脚本的东西,支撑 cd、fetch、within 等函数,无需引进就能够运用 fs、os、yaml 等库。

#!/usr/bin/env zx
await $`cat package.json | grep name`
let branch = await $`git branch --show-current`
await $`dep deploy --branch=${branch}`
await Promise.all([
  $`sleep 1; echo 1`,
  $`sleep 2; echo 2`,
  $`sleep 3; echo 3`,
])
let name = 'foo bar'
await $`mkdir /tmp/${name}`

Kotlin 项目

23、ReadYou:一款 Material 风格的 Android RSS 阅览器。界面简洁清爽的 RSS 阅览器,支撑订阅 RSS 链接、更新通知、沉溺式阅览等功用

Python 项目

24、edgedb:一款选用图-关系模型的新型开源数据库。一个底层由 PostgreSQL 供给支撑的开源数据库,在兼容关系数据库特性的一起,结合了 ORM 的声明模式和 GraphQL 式的深度查询。自带 WebUI 界面,支撑在线编辑数据、查询、关系可视化等功用。

type Person {
  required property name -> str;
}
type Movie {
  required property title -> str;
  multi link actors -> Person;
}

25、eg:常用的 Linux 指令示例查询东西。它供给了 Linux 指令的常见用法,不只运用便利并且示例简洁有用。

26、manim:用于创立数学动画的 Python 结构。它能够用简略的代码制作出精美的数学动画,经过动画的方式直观地解说一些复杂的数学问题。

from manim import *
class SquareToCircle(Scene):
    def construct(self):
        circle = Circle()
        square = Square()
        square.flip(RIGHT)
        square.rotate(-3 * TAU / 8)
        circle.set_fill(PINK, opacity=0.5)
        self.play(Create(square))
        self.play(Transform(square, circle))
        self.play(FadeOut(square))
# 运转:manim -p -ql example.py SquareToCircle

27、sunfish:100 多行代码的 Python 国际象棋引擎。一个仅用 Python 规范库和 131 行代码完成的指令行国际象棋游戏。它注释丰厚结构明晰,中心代码由国际象棋逻辑、战略查找和用户界面三个部分组成。

28、xalpha:Python 写的基金投资管理回测引擎。该项目能够获取基金的信息与净值,支撑精确到分的投资账户记录整合、剖析和可视化,简略的战略回测以及依据预设战略的守时投资提示,合适资金反复进出的定投型和网格型投资者。

jiaoyidan = xa.record(path) # 额外一行先读入 path 处的 csv 账单
shipan = xa.mul(status=jiaoyidan) # Let's rock
shipan.summary() # 看一切基金总结作用
shipan.get_stock_holdings() # 检查底层等效股票持仓

Rust 项目

29、lemmy:Rust 写的链接聚合论坛。该项目依据 Rust 的 Web 结构 Actix 和 Diesel ORM 库构建,它是一个相似 Hacker News 的网站,用户能够在上面订阅感爱好的论题、发布链接、讨论和投票。

30、onefetch:检查 Git 库房信息的指令行东西。一款由 Rust 编写的指令行检查 Git 信息的东西,它能够直接在终端中展现本地 Git 库房的详细信息,比如开源协议、提交次数、代码计算等信息。

31、windows-rs:Rust 调用 Windows API 的库。由微软开源的 Rust 库,为 Rust 开发人员调用 Windows API 供给了便利,极大地改进了 Rust 言语在 Windows 体系上的开发条件。

use windows::{
    core::*, Data::Xml::Dom::*, Win32::Foundation::*, Win32::System::Threading::*,
    Win32::UI::WindowsAndMessaging::*,
};
fn main() -> Result<()> {
    let doc = XmlDocument::new()?;
    doc.LoadXml(h!("<html>hello world</html>"))?;
    let root = doc.DocumentElement()?;
    assert!(root.NodeName()? == "html");
    assert!(root.InnerText()? == "hello world");
    unsafe {
        let event = CreateEventW(None, true, false, None)?;
        SetEvent(event).ok()?;
        WaitForSingleObject(event, 0);
        CloseHandle(event).ok()?;
        MessageBoxA(None, s!("Ansi"), s!("Caption"), MB_OK);
        MessageBoxW(None, w!("Wide"), w!("Caption"), MB_OK);
    }
    Ok(())
}

Swift 项目

32、Wave:轻松完成丝滑动画的 Swift 库。用于 iOS 和 macOS 的动画引擎库,能够轻松创立流通、感觉很棒的动画。它没有外部依靠,能够很容易地引进进依据 UIKit、SwiftUI 或 AppKit 的项目。

if panGestureRecognizer.state == .ended {
    // Create a spring with some bounciness. `response` affects the animation's duration.
    let animatedSpring = Spring(dampingRatio: 0.68, response: 0.80)
    // Get the gesture's lift-off velocity, and pass it into the Wave animation.
    let gestureVelocity = panGestureRecognizer.velocity(in: view)
    Wave.animate(withSpring: animatedSpring, gestureVelocity: gestureVelocity) {
        // Update animatable properties on the view's `animator` property, _not_ the view itself.
        pipView.animator.center = pipViewDestination     // Some target CGPoint that you calculate.
        pipView.animator.scale = CGPoint(x: 1.1, y: 1.1)
    }
}

其它

33、blurhash:开源的图片占位符算法和完成。该算法可将图片编码成一段仅 20-30 个字符的短字符串,解码后可展现一张依据原图的占位图,然后提升用户的访问体会。官方供给了 C、Swift、TypeScript 等编程言语的完成,除此之外还有丰厚的第三方库。

34、esp32-weather-epd:自制电子墨水屏的气候显示器。这是由一块支撑 WiFi 的 ESP32 单片机和一个 7.5 英寸电子墨水屏组成的气候显示器。它能够展现经过 API 取得的气候实况和预告,以及传感器供给的室内温度和湿度。

35、localsend:AirDrop 的开源替代计划。能够经过本地网络与邻近的设备,安全地共享文件和音讯,此过程不需要互联网,不需要外部服务器,支撑 Windows、Linux、macOS、Android、iOS 设备。

36、mactype:美化 Windows 字体的东西。一款 Windows 字体美体东西,能够解决 Windows 字体虚化的问题,完成相似苹果 macOS 体系的字体烘托作用,装置简略作用惊人。

37、raft.github.io:一个关于 Raft 共识算法的网站。该网站收录了关于 Raft 的论文、课程、书籍等资料,以及相关开源项目和 Raft 的运转情况可视化,帮你彻底搞懂 Raft。

开源书籍

38、algorithmica:《现代硬件的算法》。该书来自俄罗斯非营利性的教育安排 Tinkoff Generation,它培养了大约一半的俄罗斯奥林匹克信息学决赛选手。不论你是算法研究员还是学生,这本书都能够让你学到更多提升程序性能的有用办法。

39、comprehensive-rust:《Comprehensive Rust》为期四天的 Rust 课程。这是谷歌 Android 团队运用的 Rust 课程,它包括了 Rust 的根本语法到高级主题,如泛型和错误处理,还包括最终一天的 Android 特定内容。

40、scientific-visualization-book:《科学可视化:Python+Matplotlib》。这是一本关于运用 Python 和 Matplotlib 进行科学可视化的开源书籍。该书分为四个部分:榜首部分 Matplotlib 库的根本原理,第二部分致力于实战开发,第三部分是更高级的概念,即 3D 图形、优化和动画,第四部分是展现调集。

机器学习

41、cog:将机器学习模型打包到容器的东西。可经过装备将机器学习模型所需的环境和依靠,主动打包到容器里便利布置,让你不再为编写 Docker 文件和 CUDA 而痛苦,还能主动启动 HTTP 接口服务便利调用。

$ cog build -t my-colorization-model
--> Building Docker image...
--> Built my-colorization-model:latest

$ docker run -d -p 5000:5000 --gpus all my-colorization-model

$ curl http://localhost:5000/predictions -X POST \
    -H 'Content-Type: application/json' \
    -d '{"input": {"image": "https://.../input.jpg"}}'

42、stable-diffusion-webui:Stable Diffusion 模型的 WebUI 界面。这是一个完成在浏览器上运用的 Stable Diffusion 模型的项目,支撑经过文本/图片生成图片、嵌入文本、调整图片大小等功用。

最终

假如你发现了 GitHub 上风趣的项目,就点击这里共享给大家伙吧!

以上便是本期的一切内容了,往期内容点击阅览

感谢您的阅览,假如觉得本期内容还不错的话 求赞、求共享 ❤️