百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

开源爱好者快来集合,HelloGitHub月刊第63期发布啦

zhezhongyun 2025-02-17 15:01 97 浏览

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

简介

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

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

项目地址:https://github.com/521xueweihan/HelloGitHub

感谢大家点亮的每一个 Star ?


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

C 项目

1、mgba:用 C 语言实现的 GBA 模拟器。唤起你童年回忆的同时,还能边学边玩,然后再约上三两好友一起看看源码和实现,快乐就是这么简单

地址:https://github.com/mgba-emu/mgba

C++ 项目

2、rocksdb:用 C++ 编写的高性能键值存储引擎。该项目是由 Fackbook 数据库团队基于 levelDB 开发,键值均支持二进制流,能够充分利用多核 CPU 获得高性能,并兼容 levelDB 的 API 可谓是青出于蓝而胜于蓝。RocksDB 当下十分流行,一些开源数据库底层存储用的就是它

地址:https://github.com/facebook/rocksdb

Go 项目

3、learngo:适合新手学习 Go 语法的开源项目。学习一门编程语言最好的方法就是动手写,该仓库拥有 1000 多个 Go 语法的问题,让你可以跟着练并附有答案

地址:https://github.com/inancgumus/learngo

4、tunny:可设置固定数量协程的 goroutine pool 库。通过这个项目可实现 goroutine 重复使用,从而避免过度创建 goroutine 而造成的内存占用过多等问题

package?main

import?(
?"io/ioutil"
?"net/http"
?"runtime"

?"github.com/Jeffail/tunny"
)

func?main()?{
?numCPUs?:=?runtime.NumCPU()

?pool?:=?tunny.NewFunc(numCPUs,?func(payload?interface{})?interface{}?{
??var?result?[]byte

??//?TODO:?Something?CPU?heavy?with?payload

??return?result
?})
?defer?pool.Close()

?http.HandleFunc("/work",?func(w?http.ResponseWriter,?r?*http.Request)?{
??input,?err?:=?ioutil.ReadAll(r.Body)
??if?err?!=?nil?{
???http.Error(w,?"Internal?error",?http.StatusInternalServerError)
??}
??defer?r.Body.Close()

??//?Funnel?this?work?into?our?pool.?This?call?is?synchronous?and?will
??//?block?until?the?job?is?completed.
??result?:=?pool.Process(input)

??w.Write(result.([]byte))
?})

?http.ListenAndServe(":8080",?nil)
}

地址:https://github.com/Jeffail/tunny

5、glab:用 Go 写的 GitLab 命令行工具。通过它除了能够在命令行管理项目、issues、合并提交之外,还能够查看 CI 的运行状态

??api:?????????Make?authenticated?REST/GRAPHQL
??auth:????????Manage?glab's?authentication?state
??issue:???????Work?with?GitLab?issues
??label:???????Manage?labels?on?remote
??mr:??????????Create,?view?and?manage?merge?requests
??ci:??????????Work?with?GitLab?CI?pipelines?and?jobs
??release:?????Manage?GitLab?releases
??repo:????????Work?with?GitLab?repositories?and?projects

地址:https://github.com/profclems/glab

6、fzf:能够搜“一切”的模糊搜索命令行工具。它能够搜文件、历史命令、进程、git 提交记录等信息,支持预览内容、整合到 Vim/Neovim 编辑器,而且搜索速度极快

地址:https://github.com/junegunn/fzf

7、godis:用 Go 语言写的 Redis 服务器。它实现了 Redis 通信协议并兼容 redis-cli 客户端,包含 5 种常用的数据结构和命令比如:TTL、发布订阅、地理位置以及 AOF 持久化等,Go 的初学者可以通过该项目能够学习到关于 TCP、通信协议实现、常用的数据结构等知识,Web 开发学烦了?换一个口味,写个 Redis 作为实战项目吧

地址:https://github.com/HDT3213/godis

Java 项目

8、ExoPlayer:谷歌官方开源的 Android 媒体播放器。易于定制和扩展,支持丰富的数据格式比如:FMP4、FLV、SmoothStreaming、MP3 等

地址:https://github.com/google/ExoPlayer

9、traccar:GPS 追踪平台。此项目支持 170 多种 GPS 协议,1500 多种型号的 GPS 设备,功能包含:实时 GPS 追踪、数据统计报告、报警和通知等等

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

10、airbyte:一个开源的 EL(T) 平台。能简单快速地把用户提供的应用、数据库等地方的数据聚合到平台,从而可以在一个平台查询、展示、更新、管理这些数据

地址:https://github.com/airbytehq/airbyte

11、Ward:拥有漂亮仪表盘的服务器监控工具

地址:https://github.com/B-Software/Ward

JavaScript 项目

12、moovie.js:专注于电影的 HTML5 播放器。容易上手和使用,支持倍速播放、快捷键操作、字幕偏移即时调整等功能

地址:https://github.com/BMSVieira/moovie.js

13、nativefier:能够把 Web 页面变成本地应用的命令行工具。通过 Electron+Chromium 把网站包装成本地 .app、.exe 等可执行文件,支持运行在 Windows、macOS 和 Linux 操作系统上

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

14、lowdb:支持浏览器和 Electron 的轻量级 JSON 文件数据库。如果是创建没有后端的小型前端项目,但还有存储和管理数据的需求,那就快试试 lowdb 吧

import?{?join?}?from?'path'
import?{?Low,?JSONFile?}?from?'lowdb'

//?新建?JSON?文件用于存储数据
const?file?=?join(__dirname,?'db.json')
const?adapter?=?new?JSONFile(file)
const?db?=?new?Low(adapter)

//?把内容更新到?db.data?并写入?JSON?文件
db.data.posts.push({?id:?1,?title:?'lowdb?is?awesome'?}).write()
db.get('posts')
??.filter({title:?'lowdb?is?awesome'})
??.sortBy('id')
??.take(5)
??.value()

地址:https://github.com/typicode/lowdb

15、eruda:一个专为手机端设计的前端页面调试工具。类似手机端迷你版开发者模式,可用于在手机端调试页面。主要功能包括:显示 console 日志、检查元素状态、捕获 XHR 请求、显示本地存储和 Cookie 等信息

地址:https://github.com/liriliri/eruda

16、cusdis:这是一个界面清爽、注重隐私的轻量级博客评论系统。可以很方便地与 React、Vue 或其他博客系统结合,并且还提供了一个后台来管理所有的评论。除此之外,还支持一键从 Disqus 导入、邮件通知等强大的功能

地址:https://github.com/djyde/cusdis

Kotlin 项目

17、mirai:由 Kotlin 语言编写的 QQ 机器人框架。该项目提供了 Android QQ 协议的 API,通过这些 API 可以实现自动化操作,比如:群管理等功能,注意!该项目不支持一切商业使用。最后项目的 Kotlin 代码写的很好,感兴趣的同学可以去看下源码

地址:https://github.com/mamoe/mirai

Python 项目

18、pygame:用来开发游戏的 Python 库。Pygame 已经持续更新多年,网上的教程和资料十分充足,虽然在游戏开发领域 Python 只是个弟弟,但如果只是用这个库开发个 2D 小游戏还是很顺手的。推荐给想用 Python 写个小游戏的朋友

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

19、GitHubPoster:能够把多个平台上的数据,生成类似 GitHub 绿墙图像的工具。比如能够把发推的频率、扇贝单词打卡等情况生成类似 GitHub 绿墙图像,使用简单感兴趣的同学可以把玩一下

地址:https://github.com/yihong0618/GitHubPoster

20、guietta:用于制作简单 GUI 程序的 Python 库。换一种简单的方式写 GUI(图形用户界面)程序?

from?guietta?import?_,?Gui,?Quit
gui?=?Gui(
?[?"Enter?numbers:",??"__a__",?"+",?"__b__",?["Calculate"]?],
?[????"Result:?-->",?"result",???_,???????_,?????????????_?],
?[????????????????_,????????_,???_,???????_,??????????Quit?]
)

with?gui.Calculate:
?gui.result?=?float(gui.a)?+?float(gui.b)

gui.run()

地址:https://github.com/alfiopuglisi/guietta

Ruby 项目

21、forem:用来构建社区的 Ruby 开源项目。一款开源、现成的论坛项目,能够让你快速搭建起来一个社区平台。国外知名的程序员社区 dev 用的就是它

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

Rust 项目

22、rustdesk:免费开源的远程桌面软件。开箱即用无需任何配置,支持 Linux/Mac/Win/Android 等平台。还能够自行搭建服务器,由用户自己掌控数据,不必担心隐私数据泄露的问题。在当下越来越多的远程桌面软件都收费的情况下的另一个选择

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

23、indicatif:样式丰富的 Rust 终端进度条库

use?indicatif::ProgressBar;

let?bar?=?ProgressBar::new(1000);
for?_?in?0..1000?{
????bar.inc(1);
????//?...
}
bar.finish();

地址:https://github.com/mitsuhiko/indicatif

24、azul:一个跨平台的 Rust 和 C/C++ 的 GUI 框架。使用 WebRender 渲染引擎和 CSS/HTML-like DOM 构建,可用于开发漂亮的原生桌面应用程序

#![cfg_attr(not(debug_assertions),?windows_subsystem?=?"windows")]

use?azul::prelude::*;
use?azul_widgets::table_view::*;

struct?TableDemo?{
????//?cells:?BTreeMap,
}

extern?"C"?fn?layout(data:?&mut?RefAny,?_:?LayoutCallbackInfo)?->?StyledDom?{

????let?mut?table_view_state?=?TableViewState::default();
????table_view_state.set_cell_content(TableCellIndex?{?row:?2,?column:?2?},?"Hello?World");
????table_view_state.set_selection(Some(TableCellSelection::from(3,?4).to(3,?4)));

????TableView::new(table_view_state).dom().style(Css::empty())
}

fn?main()?{
????let?app?=?App::new(RefAny::new(TableDemo?{?}),?AppConfig::new(LayoutSolver::Default));
????app.run(WindowCreateOptions::new(layout));
}

地址:https://github.com/fschutt/azul

Swift 项目

25、Grid:受 CSS Grid 启发,用 SwiftUI 编写关于视图(view)布局的开源项目

地址:https://github.com/exyte/Grid

26、SwiftyJSON:一个 Swift JSON 三方库,用更简单的方式处理 JSON

let?json?=?JSON(data:?dataFromNetworking)
if?let?userName?=?json[0]["user"]["name"].string?{
??//Now?you?got?your?value
}

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

其它

27、aind:实现在 Docker 中启动安卓应用的项目

docker?run?-td?--name?aind?--privileged?-p?5900:5900?-v?/lib/modules:/lib/modules:ro?ghcr.io/aind-containers/aind
docker?exec?aind?cat?/home/user/.vnc/passwdfile

地址:https://github.com/aind-containers/aind

28、librime:一款开源的中文输入法。市面上的输入法有很多,但你找到让自己称心如意的那款了吗?或许通过今天的开源项目你就能找到它。RIME 这款开源的输入法,它不追踪输入的内容源码完全开放,可自由切换繁/简中文,选择/设计输入方案和主题,对繁体字输入尤为优秀。作为输入法给予用户无限的自由和个性化,作为输入法框架让开发者有更多的发挥空间。比如支持不同操作系统的版本:Linux(中州韵)、Windows(小狼毫)、macOS(鼠须管)、Android(同文)由于自由度较高上手需要一些时间,这大概就是获得自由的代价吧

地址:https://github.com/rime/librime

29、android-foss:开源的安卓客户端应用集合

地址:https://github.com/offa/android-foss

30、secguide:腾讯开源的代码安全指南。该项目包含:C/C++、Python、JavaScript、Java、Go 等语言的安全编码指南,内容简单易懂能够帮助开发者,在代码源头规避安全风险减少漏洞

地址:https://github.com/Tencent/secguide

31、Kanmail:以看板的方式管理邮件的客户端应用。适用于 Mac/Windows 操作系统,支持 Gmail、Outlook 等邮箱

地址:https://github.com/Oxygem/Kanmail

32、hello-world:汇集了 800 多种编程语言 Hello World 的项目

地址:https://github.com/leachim6/hello-world

33、material-theme-jetbrains:一款 JetBrains IDE 的 Material 风格主题

地址:https://github.com/ChrisRM/material-theme-jetbrains

开源书籍

34、awesome-fenix:讲述“如何构建大型且可靠的分布式系统”的开源书籍。推荐给想成为架构师的你

地址:https://github.com/fenixsoft/awesome-fenix

35、google-sre-ebook:Google SRE 相关的书籍。Google SRE 是谷歌的专业运维团队的工程师,他们有一个共同的名字:Site Reliability Engineer,而这本书由 Google SRE 们撰写,分享了谷歌运维相关的一些技术和知识

地址:https://github.com/captn3m0/google-sre-ebook

机器学习

36、AugLy:Facebook 开源的一个数据增强 Python 库。该库目前支持音频、图像、文本和视频四种模式,一方面可以用现实数据对数据进行增强,另一方面还可以检测出相似内容,消除重复数据带来的干扰

地址:https://github.com/facebookresearch/AugLy

37、Real-Time-Voice-Cloning:克隆某个人说话声音的 AI 项目。仅需几秒音频,就能模仿出原音频的人声

地址:https://github.com/CorentinJ/Real-Time-Voice-Cloning


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

如果在本期月刊找到了感兴趣的开源项目,就赶紧玩起来吧!

以上就是 HelloGitHub 月刊本期的全部内容,下个月 28 号见。

相关推荐

Python入门学习记录之一:变量_python怎么用变量

写这个,主要是对自己学习python知识的一个总结,也是加深自己的印象。变量(英文:variable),也叫标识符。在python中,变量的命名规则有以下三点:>变量名只能包含字母、数字和下划线...

python变量命名规则——来自小白的总结

python是一个动态编译类编程语言,所以程序在运行前不需要如C语言的先行编译动作,因此也只有在程序运行过程中才能发现程序的问题。基于此,python的变量就有一定的命名规范。python作为当前热门...

Python入门学习教程:第 2 章 变量与数据类型

2.1什么是变量?在编程中,变量就像一个存放数据的容器,它可以存储各种信息,并且这些信息可以被读取和修改。想象一下,变量就如同我们生活中的盒子,你可以把东西放进去,也可以随时拿出来看看,甚至可以换成...

绘制学术论文中的“三线表”具体指导

在科研过程中,大家用到最多的可能就是“三线表”。“三线表”,一般主要由三条横线构成,当然在变量名栏里也可以拆分单元格,出现更多的线。更重要的是,“三线表”也是一种数据记录规范,以“三线表”形式记录的数...

Python基础语法知识--变量和数据类型

学习Python中的变量和数据类型至关重要,因为它们构成了Python编程的基石。以下是帮助您了解Python中的变量和数据类型的分步指南:1.变量:变量在Python中用于存储数据值。它们充...

一文搞懂 Python 中的所有标点符号

反引号`无任何作用。传说Python3中它被移除是因为和单引号字符'太相似。波浪号~(按位取反符号)~被称为取反或补码运算符。它放在我们想要取反的对象前面。如果放在一个整数n...

Python变量类型和运算符_python中变量的含义

别再被小名词坑哭了:Python新手常犯的那些隐蔽错误,我用同事的真实bug拆给你看我记得有一次和同事张姐一起追查一个看似随机崩溃的脚本,最后发现罪魁祸首竟然是她把变量命名成了list。说实话...

从零开始:深入剖析 Spring Boot3 中配置文件的加载顺序

在当今的互联网软件开发领域,SpringBoot无疑是最为热门和广泛应用的框架之一。它以其强大的功能、便捷的开发体验,极大地提升了开发效率,成为众多开发者构建Web应用程序的首选。而在Spr...

Python中下划线 ‘_’ 的用法,你知道几种

Python中下划线()是一个有特殊含义和用途的符号,它可以用来表示以下几种情况:1在解释器中,下划线(_)表示上一个表达式的值,可以用来进行快速计算或测试。例如:>>>2+...

解锁Shell编程:变量_shell $变量

引言:开启Shell编程大门Shell作为用户与Linux内核之间的桥梁,为我们提供了强大的命令行交互方式。它不仅能执行简单的文件操作、进程管理,还能通过编写脚本实现复杂的自动化任务。无论是...

一文学会Python的变量命名规则!_python的变量命名有哪些要求

目录1.变量的命名原则3.内置函数尽量不要做变量4.删除变量和垃圾回收机制5.结语1.变量的命名原则①由英文字母、_(下划线)、或中文开头②变量名称只能由英文字母、数字、下画线或中文字所组成。③英文字...

更可靠的Rust-语法篇-区分语句/表达式,略览if/loop/while/for

src/main.rs://函数定义fnadd(a:i32,b:i32)->i32{a+b//末尾表达式}fnmain(){leta:i3...

C++第五课:变量的命名规则_c++中变量的命名规则

变量的命名不是想怎么起就怎么起的,而是有一套固定的规则的。具体规则:1.名字要合法:变量名必须是由字母、数字或下划线组成。例如:a,a1,a_1。2.开头不能是数字。例如:可以a1,但不能起1a。3....

Rust编程-核心篇-不安全编程_rust安全性

Unsafe的必要性Rust的所有权系统和类型系统为我们提供了强大的安全保障,但在某些情况下,我们需要突破这些限制来:与C代码交互实现底层系统编程优化性能关键代码实现某些编译器无法验证的安全操作Rus...

探秘 Python 内存管理:背后的神奇机制

在编程的世界里,内存管理就如同幕后的精密操控者,确保程序的高效运行。Python作为一种广泛使用的编程语言,其内存管理机制既巧妙又复杂,为开发者们提供了便利的同时,也展现了强大的底层控制能力。一、P...