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

简介

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

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

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

感谢大家点亮的每一个 Star


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

C 项目

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

C++ 项目

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

Go 项目

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

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

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

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

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

Java 项目

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

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

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

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

JavaScript 项目

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

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

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

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

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

Kotlin 项目

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

Python 项目

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

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

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

Ruby 项目

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

Rust 项目

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

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

use indicatif::ProgressBar;

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

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<TableCell, String>,
} 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));
}

Swift 项目

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

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

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

其它

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

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

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

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

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

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

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

开源书籍

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

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

机器学习

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

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

最后

如果你发现了 GitHub 上有趣的项目,就分享给大家伙吧。

以上就是本期的所有内容了,看完还不过瘾?

关注 HelloGitHub 公众号不仅可以收到第一时间的更新。点击菜单栏->往期->月刊

往期月刊所有的内容尽收眼底一次看过瘾!还有更多开源项目的介绍和宝藏项目等待你的发现。

有趣的开源项目集结完毕,HelloGitHub 月刊第 63 期发布啦!的更多相关文章

  1. 加密解密、食谱、新冠序列,各种有趣的开源项目Github上都有

    Github上是我们程序员学习开源代码.提升编程技巧的好地方.好学校,但是除了学习,小伙伴们有没有发现过Github上一些特别有意思的项目呢? 今天TJ君就来和大家分享几个自认为特别有趣的开源项目: ...

  2. GitHub上一些有趣的开源项目[持续更新]

    TheAlgorithms/C-Plus-Plus 用C++实现了常见的算法,如排序算法,查找算法,以及一些常见的数据数据结构,如链表,二叉树. 链接:https://github.com/TheAl ...

  3. 不会 Web 开发,也能让数据“动”起来的开源项目!

    本文面向有 Python 基础的小伙伴,有 Web 基础的更好 作者:HelloGitHub-吱吱 这里是 HelloGitHub 推出的<讲解开源项目>系列,今天要向小伙伴们介绍的是一个 ...

  4. HelloGitHub 月刊最受欢迎的开源项目 Top10(2020 年)

    作者:HelloGitHub-卤蛋 2020 年已成往事,2021 年悄然而至. 在已经过完的 2020 年里 HelloGitHub 共发布了 12 期月刊,推荐了 419 个开源项目.​每个月的 ...

  5. 适合 Go 新手学习的开源项目——在 GitHub 学编程

    作者:HelloGitHub-小鱼干&卤蛋 故事要从 2007 年说起.因为受够了 C++ 煎熬的 Google 首席软件工程师 Rob Pike 召集 Robert Griesemer 和 ...

  6. 35 个你也许不知道的 Google 开源项目

    转载自:http://blog.csdn.net/cnbird2008/article/details/18953113 Google是支持开源运动的最大公司之一,它们现在总共发布有超过500个的开源 ...

  7. 我参与 Seata 开源项目的一些感悟

    丁老师在他的知识星球邀请我回答以下一个问题: 我觉得这个问题非常有意思,姑且把它贴到公众号这里,与大家分享一下我对这个问题的一些感悟. 感谢丁老师的邀请问答: 在这里我就简单说下,我这段时间参与 Se ...

  8. 扬我国威,来自清华的开源项目火爆Github

    前几天TJ君跟大家分享了几个有趣的Github项目(加密解密.食谱.新冠序列,各种有趣的开源项目Github上都有),其中呢,有不少是来自斯坦福大学的项目,当时TJ君就不由得想,什么时候能看到的项目都 ...

  9. dotnet 是 前30个增长最快速度的开源项目中排名第一的开发平台

    CNCF 的博客 发了一篇文章 <Update on CNCF and Open Source Project Velocity 2020>,中文翻译参见 2020年CNCF和开源项目开发 ...

随机推荐

  1. 爬虫:获取动态加载数据(selenium)(某站)

    如果网站数据是动态加载,需要不停往下拉进度条才能显示数据,用selenium模拟浏览器下拉进度条可以实现动态数据的抓取. 本文希望找到某乎某话题下讨论较多的问题,以此再寻找每一问题涉及的话题关键词(侵 ...

  2. 技能Get·解决MSSQL Where查询中文数据存在但查不出来

    阅文时长 | 0.33分钟 字数统计 | 294.4字符 主要内容 | 1.引言&背景 2.声明与参考资料 『技能Get·解决MSSQL Where查询中文数据存在但查不出来』 编写人 | S ...

  3. [Python] Flask从0到1开发轻量级网页

    概述 Flask采用MVT模型,即Model, Template, View Model:定义数据的存储格式,并且提供了数据库访问的API View:定义那些数据被显示,是业务逻辑处理模块 Templ ...

  4. [其他] vscode 快速教程

    概述 vs:集成开发环境,包括软件生命周期中需要的大部分工具,如UML,代码管控,IDE等 vs code:代码编辑器,支持插件扩展,对网页和云端开发做了优化 快捷键 F1/ctrl+shift+p: ...

  5. Ubuntu 16.04 上安装 arm-linux-gcc-4.4.3

    参考链接:https://blog.csdn.net/zz56z56/article/details/83021583 注:正常安装后,不同用户切换,需重新刷新环境变量:source /etc/pro ...

  6. Linux进阶之链路聚合

    CentOS7用命令配置链路聚合 链路聚合是一个计算机网络术语,将多个物理端口汇聚在一起,形成一个逻辑端口,以实现出入流量在各成员端口的负荷分担,交换机根据用户配置的端口负荷分担策略决定网络封包从哪个 ...

  7. shell基础之EOF的用法

    一.EOF的用法 EOF是(END Of File)的缩写,表示自定义终止符.既然自定义,那么EOF就不是固定的,可以随意设置别名,在linux按ctrl-d 就代表EOF. EOF一般会配合cat能 ...

  8. 继承(extends), 多态 , 抽象(abstract)接口() 易混难点解析

    特性 java是单继承的,一个类直接继承的父类只能有唯一的一个 java中父类可以有多个子类 Object是所有类的父类,一个类没有父类则默认继承Object; 继承中的重写 子类重写方法访问权限不能 ...

  9. (数据科学学习手札123)Python+Dash快速web应用开发——部署发布篇

    1 简介 这是我的系列教程Python+Dash快速web应用开发的第二十期,在上一期中我介绍了利用内网穿透的方式,将任何可以联网的电脑作为"服务器"向外临时发布你的Dash应用. ...

  10. C#基础之GetType 与 typeof的区别

      C#中GetType 与 typeof的区别 在实际开发中经常需要了解具体对象的类型,所以经常会使用GetType()和typeof().尽管可以得到相应的类型.但两者之间也存在一些差别,接下来我 ...