《HelloGitHub》第 56 期
兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣!

简介
分享 GitHub 上有趣、入门级的开源项目。
这是一个面向编程新手、热爱编程、对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编程语言的项目、让生活变得更美好的工具、书籍、学习笔记、教程等,这些开源项目大多都是非常容易上手,而且非常 Cool。主要是希望大家能动手用起来,加入到开源社区中。
- 会编程的可以贡献代码
- 不会编程的可以反馈使用这些工具中的 Bug
- 帮着宣传你觉得优秀的项目
- Star 项目️
在浏览、参与这些项目的过程中,你将学习到更多编程知识、提高编程技巧、找到编程的乐趣。
最后 HelloGitHub 这个项目就诞生了
以下为本期内容|每个月 28 号发布最新一期|点击查看往期内容
C 项目
1、ucore:清华大学操作系统课程,配套实验项目。推荐给有计算机结构原理、C 和汇编、数据结构基础并对操作系统感兴趣的同学,项目中包含教学视频、练习题、实验指导书等
C# 项目
2、RevokeMsgPatcher:适用于 Windows 系统下电脑版微信、QQ 的防撤回工具

3、ContextMenuManager:一个纯粹的 Windows 右键菜单管理程序。功能:
- 启用或禁用文件、文件夹、新建、发送到、打开方式等右键菜单项目
- 右键菜单项目进行修改名称、修改图标、导航注册表位置、永久删除等操作
- 右键菜单自定义添加项目,自定义菜单命令

C++ 项目
4、spdlog:快速、上手简单的 C++ 日志库。示例代码:
#include "spdlog/spdlog.h"
int main()
{
spdlog::info("Welcome to spdlog!");
spdlog::error("Some error message with arg: {}", 1);
spdlog::warn("Easy padding in numbers like {:08d}", 12);
spdlog::critical("Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}", 42);
spdlog::info("Support for floats {:03.2f}", 1.23456);
spdlog::info("Positional args are {1} {0}..", "too", "supported");
spdlog::info("{:<30}", "left aligned");
spdlog::set_level(spdlog::level::debug); // Set global log level to debug
spdlog::debug("This message should be displayed..");
// change log pattern
spdlog::set_pattern("[%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v");
// Compile time log levels
// define SPDLOG_ACTIVE_LEVEL to desired level
SPDLOG_TRACE("Some trace message with param {}", 42);
SPDLOG_DEBUG("Some debug message");
}
5、srpc:搜狗基于 C++ Workflow 的高性能 RPC 框架。与 thrift/brpc 协议兼容,支持 protobuf/thrift IDL一键迁移,核心代码量仅 1w 行。示例代码:
class ExampleServiceImpl : public Example::Service
{
public:
void Echo(EchoRequest *request, EchoResponse *response, RPCContext *ctx) override
{
response->set_message("Hi, " + request->name());
}
};
int main()
{
SRPCHttpServer server;
ExampleServiceImpl impl;
server.add_service(&impl);
server.start(1412);
pause();
server.stop();
return 0;
}
访问:
curl 127.0.0.1:1412/Example/Echo -H 'Content-Type: application/json' -d '{message:"from curl",name:"CURL"}'

CSS 项目
6、tailwindcss:基于比组件更小、更灵活的工具类(utility-first)思想的 CSS 框架。这个思想简单来说就是用 class 保证灵活、便于自定义组件,而不是在组件基础上实现个性化。网上对这个框架褒贬不一,但我觉得挺好想学一下

Go 项目
7、inlets:基于 Go 实现的免费内网穿透服务,即将本地服务暴露到公网。如果觉得之前的内网穿透工具不好用、还贵的话,可以试试这个项目,使用说明

8、syncthing:一个采用 Go 语言编写的免费、跨平台的文件同步工具。它不需要安装,只需要下载对应系统的压缩包解压后就可以直接运行和使用。拥有命令行、Web 和桌面程序多种操作模式,同时支持内网和互联网的文件同步,可以用来搭建私有网盘。又一个代替付费网盘的选择,如果考虑到昂贵的宽费用。可以把 syncthing 做为局域网下手机、电视和电脑共享文件的开源解决方案

9、lazykube:支持鼠标操作和管理 K8s 的命令行工具。对比 k9s 命令行工具,可以不用去记那么多快捷键,直接用鼠标操作。解决公司不使用 rancher 和 dashboard 管理 K8s,只能通过堡垒机访问的场景。使用该工具只需要终端和鼠标,当然用到搜索功能时还是需要键盘的

10、go-zero:一个可靠的 Go 语言 Web 和 RPC 框架。就算是 Go 新手基于该框架,也可以快速写出高性能可扩展的微服务。示例代码:
func main() {
flag.Parse()
var c config.Config
conf.MustLoad(*configFile, &c)
ctx := svc.NewServiceContext(c)
server := rest.MustNewServer(c.RestConf)
defer server.Stop()
handler.RegisterHandlers(server, ctx)
server.Start()
}

Java 项目
11、Mindustry:一款 Java 编写的免费沙盒塔防游戏。支持多平台:Windows、Linux、macOS、Android

12、fiction_house:一个基于 SpringBoot 实现的小说和漫画在线阅读网站。网站功能齐全、资源丰富,同时支持 Web、安卓、微信小程序多平台。服务端分为网站和管理后台,采用 SpringBoot、MyBatis、MySQL、Redis 等技术实现,可当作 Java 新手实战项目学习

JavaScript 项目
13、AdminLTE:基于 Bootstarp 4.5 和 jQuery 的后台管理前端模版

14、blockly:不会编程也可以写代码,通过拖拽模块自动生成代码的 Web 编辑器。谷歌开源的一个可视化编程的前端项目,支持自动生成:Python、JavaScript、PHP 等编程语言的代码,在线尝试的地址网络不好,可以通过 npm install blockly 安装后使用和学习

15、screenity:一个强大的屏幕录制和标注的 Chrome 插件。特性:
- 可以录制任何应用的内容,包含“色相头”
- ️ 在屏幕上的任何地方,添加文本和箭头等注释
- 突出你的点击操作、光标
- 支持导出为 mp4、gif 等常用格式
- ️ 修剪或删除录像

16、vue-luck-draw:一个基于 Vue 的大转盘/九宫格抽奖插件。在线尝试,特性:
- 可自由配置奖品、中奖概率等
- 支持同步、异步式抽奖
- 适配移动端
- 等等

17、piano:基于 Omi 和 Omi Snippets 构建的钢琴应用。你不需要懂乐理知识,仅用键盘即可弹奏简单而熟悉的音乐,也借此项目感谢音乐和编程的陪伴!也致敬各位奋斗于 996 的代码家和打工人,音乐不曾辜负任何人,正如 Leehom Wang 歌曲中唱到:如果世界太危险,只有音乐最安全,带着我进梦里面,让歌词都实现!上面这段是作者写的推荐语,我本来想从项目的角度再夸下这个项目,但我放弃了。虽然我之前推荐过的那个钢琴项目弹的比这个要好听,但我更喜欢这个项目。因为我从他的项目中感受到满满敬意和“爱”,致敬每一位奋斗的“代码家”,HG 爱你们。在线尝试,示例代码:
playSong(song) {
this.setSong([...song])
let offset = 0
let time = 0
let playSong = async () => {
// 右边是从外部来中断递归
if (offset < song.length && this.store.data.song.length > 0) {
switch (typeof song[offset]) {
// 简谱2演奏方法 根据 ++12345--6. 简单旋律情况
case 'string':
let letters = song[offset].match(/[0-9]/g)
switch (letters.length) {
case 1:
time = this.handleString(song, offset)
break
default:
time = this.handleStrings(song, offset)
break
}
break
// 简谱1演奏方法 根据 CDEFGAB,复杂旋律情况,比如有和弦
case 'object':
console.log(song[offset]['note'])
time = song[offset]['time'];
this.playNote(song[offset]['note'])
break;
case 'number':
// 休止符
switch (song[offset]) {
case 0:
time = 1000
break
}
break
}
await new Promise((resolve) => {
let timer = setTimeout(() => {
clearInterval(timer)
resolve()
}, time)
})
offset++
// 自定义事件,跟下面底部的音符自动跳动结合
this.add()
playSong()
} else {
// 暂停播放
clearTimeout(this.timer)
this.store.data.song = []
this.store.data.count = 0
return
}
}
playSong()
}

Objective-C 项目
18、Sloth:一款 macOS 系统下显示进程打开的文件、socket、管道等信息的工具。就像桌面版的 lsof,快来试试吧

PHP 项目
19、freenom:自动续期 Freenom 免费域名的工具。Freenom 是一个提供免费顶级域名的商家,不过申请的域名需要每年定时续期,否则会被回收。有了这个项目,白 piao 顶级域名就是那么简单

Python 项目
20、running_page:一个展示个人跑步主页的 Python 项目。特性:
- GitHub Actions 管理自动同步跑步进程及自动生成新的页面
- Gatsby 生成的静态网页,速度快
- Mapbox 进行地图展示
- 支持 Nike、Runtastic、佳明、Keep 的数据
- 自动备份 gpx 数据,方便备份及上传到其它软件

21、gopup:采集各种权威公开数据的 Python 库。示例代码:
# 安装:pip isntall gopup
import gopup as gp
covid_baidu_df = gp.covid_baidu(indicator="热搜谣言粉碎")
print(covid_baidu_df)

22、flask-state:一款轻便的机器状态监控 Flask 插件。示例代码:
flask_state.init_app(app)
// npm
import 'echarts';
import 'flask-state/flask-state.min.css';
import {init} from 'flask-state';
// Create a DOM node with ID 'test'. After init() binds the node, click to open the listening window
init({dom:document.getElementById('test')});

23、python-cheatsheet:全面且实用的 Python 备忘录。这个东西特别适合我这个上了年纪的人,比如:忘记怎么用 Python 写正则、要搞个进度条忘记库的名字和基本用法、用 pandas 处理数据忘记方法需要的参数等等。正当我觉得自己需要“回炉重学”的时候发现了这个项目,有了它上面的问题都可以找到拿来即用的代码片段。我又是那个快乐的 Pythoneer 了,示例代码:
# $ pip3 install tqdm
>>> from tqdm import tqdm
>>> from time import sleep
>>> for el in tqdm([1, 2, 3], desc='Processing'):
... sleep(1)
Processing: 100%|████████████████████| 3/3 [00:03<00:00, 1.00s/it]
Swift 项目
24、eul:一款极简免费的 macOS 状态监控工具。我就在用,强烈推荐给你

其它
25、winapps:一个让你在 Linux (Ubuntu/Fedora) 系统里使用 Windows 办公软件的项目。支持 Microsoft Excel、Word、PowerPoint、Adobe Photoshop 等

26、Front-End-Interview-Notebook:一份非拼凑、优秀的前端面试复习笔记。以提问方式发出问题,并给出了作者的答案,内容涵盖:HTML、CSS、JS、算法、计算机网络等方面。作者拿到了很多大厂 offer,然后把这些东西总结整理下来送给准备面试、换工作的前端小伙伴
27、pi-hole:一个免费开源、部署简单的 DNS sinkhole 项目。没关系,我也不明白 DNS sinkhole 是个啥,就知道用它可实现路由器层屏蔽广告的功能。需要先在树莓派安装这个项目,然后配合支持自定义 DNS 的路由器,就可以实现该网络下的全设备广告自动屏蔽。详细步骤

28、CopyTranslator:支持网页和 PDF 的划词翻译工具。有了它就可以解决阅读 PDF 文件时,要翻译大段内容情况下的乱码、换行、翻译不准的问题

29、styleguide:谷歌的代码风格指南。每个大型项目都有自己的代码风格,当代码的风格统一时将更容易被理解。本项目是谷歌项目的代码风格说明,包含:C++、C#、Swift、Python、Java 等语言
30、upptime:一个免费开源的网站正常运行时间(uptime)监控服务。之所没有任何费用是因为实现方法都是完全基于 GitHub 提供的免费服务,比如:使用 GitHub 的 Action 每隔 5 分钟访问一次目标网站,获取网站最新的状态。然后通过 GitHub Issues 记录和报告异常,最后在 GitHub Pages 上可视化展示网站的运行状态。就很“绿色无公害”,我特别喜欢

机器学习
31、examples:关于视觉、本文等方面的 PyTorch 的示例集合。包含:使用 Convnets 的图像分类(MNIST)、生成对抗网络(DCGAN)等
32、EasyOCR:支持多种语言的即用型的 Python OCR 库,包括中文、日文、韩文等。示例代码:
import easyocr
reader = easyocr.Reader(['ch_sim','en']) # need to run only once to load model into memory
result = reader.readtext('chinese.jpg')
# 输出
[([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631),
([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908),
([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215),
([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]
33、DeepLearningProject:哈佛大学开源的深度学习教程
最后
如果你发现了 GitHub 上有趣的项目,欢迎在 HelloGitHub 项目提 issues 告诉我们。
《HelloGitHub》第 56 期的更多相关文章
- 「NGK每日快讯」12.29日NGK第56期官方快讯!
- 《HelloGitHub月刊》第01期
<HelloGitHub月刊> 因为现在这个项目只有我自己做,只敢叫"月刊",希望有志同道合者,快点加入到这个项目中来!同时,如果您有更好的建议或者意见,欢迎联系我.联 ...
- 《HelloGitHub月刊》第 01 期
<HelloGitHub月刊> 因为现在这个项目只有我自己做,只敢叫"月刊",希望有志同道合者,快点加入到这个项目中来!同时,如果您有更好的建议或者意见,欢迎联系我.联 ...
- 家里蹲大学数学杂志 Charleton University Mathematics Journal 官方目录[共七卷493期,6055页]
家里蹲大学数学杂志[官方网站]从由赣南师范大学张祖锦老师于2010年创刊;每年一卷, 自己有空则出版, 没空则搁置, 所以一卷有多期.本杂志至2016年12月31日共7卷493期, 6055页.既然做 ...
- HelloGithub
<HelloGithub月刊>第一期 <HelloGithub月刊> 因为现在这个项目只有我自己做,只敢叫“月刊”,希望有志同道合者,快点加入到这个项目中来!同时,如果您有 ...
- 在 GitHub 学习,成长为自己想要的样子|HelloGitHub 访谈
万事开头难,我们经过长期的策划和筹备,终于推出了 HelloGitHub 采访系列「开源项目作者的访谈」.这是一个采访个人开源项目作者的栏目,内容侧重于开源项目作者与开源的故事. 我们深知想要做好一个 ...
- Activity的四个启动模式
/** * Activity有四种启动模式(android:launchMode) * 分别是: * 1. standard(默认),可以不停的在栈中创建新的Activity * 2. singleT ...
- GitHub 热点速览 Vol.17:在?各家视频会员要不要?
作者:HelloGitHub-小鱼干 摘要:经济实用,用作上周的 GitHub 热点的横批再合适不过.先不说 GitHub Trending 上不止一个的会员共享项目,免你找好友刷脸要会员,这项目实在 ...
- 如何短时间内快速通过Java面试
当然是刷题啊 1-10期[10期]Redis 面试常见问答[09期]说说hashCode() 和 equals() 之间的关系?[08期]说说Object类下面有几种方法呢?[07期]Redis中是如 ...
随机推荐
- 【django-simpleui】‘simpletags‘ is not a registered tag library报错的解决方法
1:创建 templatetags文件夹 2:创建simpletags.py文件将内容粘贴进去,在下面 3:setting.py添加文件指定: 1 TEMPLATES = [ 2 { 3 'BACK ...
- NB-IoT成为3GPP后会有哪些优势
NB-IoT无线接入的设计使用了很多LTE设计大的原则,并且得到了传统蜂窝网络和芯片组供应商的支持,使MBB取得了成功.NB-IoT采用与LTE(E-UTRA)相同的设计原则,尽管它使用单独的新载波, ...
- Kubernetes 1.13 的完整部署手册
前言: 非常详细的K8s的完整部署手册,由于Kubernetes版本和操作系统的版本关系非常敏感,部署前请查阅版本关系对应表 地址:https://github.com/kubernetes/kube ...
- yython爬虫基础知识入门
Python爬虫 关注公众号"轻松学编程"了解更多. 大纲: 1.获取响应 urllib(python3)/urllib2-urllib(python2) requests(url ...
- 【API进阶之路】API带来的微创新,打动投资人鼓励我创业
摘要:怎么帮助创作者提高视频的推荐量呢?我发现了:视频的封面图非常重要. 上回说到,老板一拍脑门,交代了一个新项目:小成本开发一款短视频剪辑工具([<[API进阶之路]人少钱少需求多的新项目该怎 ...
- 《Clojure编程》笔记 第13章 测试
目录 背景简述 第13章 测试 13.1 术语 13.2 clojure.test 13.2.1 定义测试的两种方式 13.2.1.1 用deftest宏把测试定义成单独的函数 13.2.1.2 用w ...
- 【持续更新】Tomcat低级错误
0(模板) 所犯错误: 现象: 报错内容: 1 所犯错误: 声明@Webservlet中未加"/"符号: 现象: 能够Connected to server,但是代码报错,且无法顺 ...
- [Luogu P1345] [USACO5.4]奶牛的电信Telecowmunication (最小割)
题面 传送门:https://www.luogu.org/problemnew/show/P1345 ] Solution 这道题,需要一个小技巧了解决. 我相信很多像我这样接蒟蒻,看到这道题,不禁兴 ...
- 纯css实现箭头
很久之前收集的,忘记出处了. 1.梯形: 当元素宽.高和边框的宽相近(等)时,改变某一边的颜色可以看到一个梯形: border: 10px solid #000; border-left-color: ...
- (4)ASP.NET Core3.1 Ocelot负载均衡
1.负载均衡 Ocelot可以在每个路由的可用下游服务中实现负载均衡,这使我们更有效地选择下游服务来处理请求.负载均衡类型:●LeastConnection:根据服务正在处理请求量的情况来决定哪个服务 ...