兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣!
分享 GitHub 上有趣、入门级的开源项目。
这是一个面向编程新手、热爱编程、对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编程语言的项目、让生活变得更美好的工具、书籍、学习笔记、教程等,这些开源项目大多都是非常容易上手,而且非常 Cool。主要是希望大家能动手用起来,加入到开源社区中。
在浏览、参与这些项目的过程中,你将学习到更多编程知识、提高编程技巧、找到编程的乐趣。
🎉 最后 HelloGitHub 这个项目就诞生了 🎉
以下为本期内容|每个月 28 号发布最新一期|点击查看往期内容
1、ucore:清华大学操作系统课程,配套实验项目。推荐给有计算机结构原理、C 和汇编、数据结构基础并对操作系统感兴趣的同学,项目中包含教学视频、练习题、实验指导书等
2、RevokeMsgPatcher:适用于 Windows 系统下电脑版微信、QQ 的防撤回工具
3、ContextMenuManager:一个纯粹的 Windows 右键菜单管理程序。功能:
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 debugspdlog::debug("This message should be displayed.."); // change log patternspdlog::set_pattern("[%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v");// Compile time log levels// define SPDLOG_ACTIVE_LEVEL to desired levelSPDLOG_TRACE("Some trace message with param {}", 42);SPDLOG_DEBUG("Some debug message");
}
5、srpc&#xff1a;搜狗基于 C&#43;&#43; Workflow 的高性能 RPC 框架。与 thrift/brpc 协议兼容&#xff0c;支持 protobuf/thrift IDL一键迁移&#xff0c;核心代码量仅 1w 行。示例代码&#xff1a;
class ExampleServiceImpl : public Example::Service
{
public:void Echo(EchoRequest *request, EchoResponse *response, RPCContext *ctx) override{response->set_message("Hi, " &#43; request->name());}
};int main()
{SRPCHttpServer server;ExampleServiceImpl impl;server.add_service(&impl);server.start(1412);pause();server.stop();return 0;
}
访问&#xff1a;
curl 127.0.0.1:1412/Example/Echo -H &#39;Content-Type: application/json&#39; -d &#39;{message:"from curl",name:"CURL"}&#39;
6、tailwindcss&#xff1a;基于比组件更小、更灵活的工具类&#xff08;utility-first&#xff09;思想的 CSS 框架。这个思想简单来说就是用 class 保证灵活、便于自定义组件&#xff0c;而不是在组件基础上实现个性化。网上对这个框架褒贬不一&#xff0c;但我觉得挺好想学一下
7、inlets&#xff1a;基于 Go 实现的免费内网穿透服务&#xff0c;即将本地服务暴露到公网。如果觉得之前的内网穿透工具不好用、还贵的话&#xff0c;可以试试这个项目&#xff0c;使用说明
8、syncthing&#xff1a;一个采用 Go 语言编写的免费、跨平台的文件同步工具。它不需要安装&#xff0c;只需要下载对应系统的压缩包解压后就可以直接运行和使用。拥有命令行、Web 和桌面程序多种操作模式&#xff0c;同时支持内网和互联网的文件同步&#xff0c;可以用来搭建私有网盘。又一个代替付费网盘的选择&#xff0c;如果考虑到昂贵的宽费用。可以把 syncthing 做为局域网下手机、电视和电脑共享文件的开源解决方案
9、lazykube&#xff1a;支持鼠标操作和管理 K8s 的命令行工具。对比 k9s 命令行工具&#xff0c;可以不用去记那么多快捷键&#xff0c;直接用鼠标操作。解决公司不使用 rancher 和 dashboard 管理 K8s&#xff0c;只能通过堡垒机访问的场景。使用该工具只需要终端和鼠标&#xff0c;当然用到搜索功能时还是需要键盘的 &#x1f602;
10、go-zero&#xff1a;一个可靠的 Go 语言 Web 和 RPC 框架。就算是 Go 新手基于该框架&#xff0c;也可以快速写出高性能可扩展的微服务。示例代码&#xff1a;
func main() {flag.Parse()var c config.Configconf.MustLoad(*configFile, &c)ctx :&#61; svc.NewServiceContext(c)server :&#61; rest.MustNewServer(c.RestConf)defer server.Stop()handler.RegisterHandlers(server, ctx)server.Start()
}
11、Mindustry&#xff1a;一款 Java 编写的免费沙盒塔防游戏。支持多平台&#xff1a;Windows、Linux、macOS、Android
12、fiction_house&#xff1a;一个基于 SpringBoot 实现的小说和漫画在线阅读网站。网站功能齐全、资源丰富&#xff0c;同时支持 Web、安卓、微信小程序多平台。服务端分为网站和管理后台&#xff0c;采用 SpringBoot、MyBatis、MySQL、Redis 等技术实现&#xff0c;可当作 Java 新手实战项目学习
13、AdminLTE&#xff1a;基于 Bootstrap 4.5 和 jQuery 的管理后台模板
14、blockly&#xff1a;不会编程也可以写代码&#xff0c;通过拖拽模块自动生成代码的 Web 编辑器。谷歌开源的一个可视化编程的前端项目&#xff0c;支持自动生成&#xff1a;Python、Javascript、PHP 等编程语言的代码&#xff0c;在线尝试的地址网络不好&#xff0c;可以通过 npm install blockly
安装后使用和学习
15、screenity&#xff1a;一个强大的屏幕录制和标注的 Chrome 插件。特性&#xff1a;
16、vue-luck-draw&#xff1a;一个基于 Vue 的大转盘/九宫格抽奖插件。在线尝试&#xff0c;特性&#xff1a;
17、piano&#xff1a;基于 Omi 和 Omi Snippets 构建的钢琴应用。你不需要懂乐理知识&#xff0c;仅用键盘即可弹奏简单而熟悉的音乐&#xff0c;也借此项目感谢音乐和编程的陪伴&#xff01;也致敬各位奋斗于 996 的代码家和打工人&#xff0c;音乐不曾辜负任何人&#xff0c;正如 Leehom Wang 歌曲中唱到&#xff1a;如果世界太危险&#xff0c;只有音乐最安全&#xff0c;带着我进梦里面&#xff0c;让歌词都实现&#xff01;上面这段是作者写的推荐语&#xff0c;我本来想从项目的角度再夸下这个项目&#xff0c;但我放弃了。虽然我之前推荐过的那个钢琴项目弹的比这个要好听&#xff0c;但我更喜欢这个项目。因为我从他的项目中感受到满满敬意和“爱”&#xff0c;致敬每一位奋斗的“代码家”&#xff0c;HG 爱你们。在线尝试&#xff0c;示例代码&#xff1a;
playSong(song) {this.setSong([...song])let offset &#61; 0let time &#61; 0let playSong &#61; async () &#61;> {// 右边是从外部来中断递归if (offset < song.length && this.store.data.song.length > 0) {switch (typeof song[offset]) {// 简谱2演奏方法 根据 &#43;&#43;12345--6. 简单旋律情况case &#39;string&#39;:let letters &#61; song[offset].match(/[0-9]/g)switch (letters.length) {case 1:time &#61; this.handleString(song, offset)breakdefault:time &#61; this.handleStrings(song, offset)break}break// 简谱1演奏方法 根据 CDEFGAB&#xff0c;复杂旋律情况&#xff0c;比如有和弦case &#39;object&#39;:console.log(song[offset][&#39;note&#39;])time &#61; song[offset][&#39;time&#39;];this.playNote(song[offset][&#39;note&#39;])break;case &#39;number&#39;:// 休止符switch (song[offset]) {case 0:time &#61; 1000break}break}await new Promise((resolve) &#61;> {let timer &#61; setTimeout(() &#61;> {clearInterval(timer)resolve()}, time)})offset&#43;&#43;// 自定义事件&#xff0c;跟下面底部的音符自动跳动结合this.add()playSong()} else {// 暂停播放clearTimeout(this.timer)this.store.data.song &#61; []this.store.data.count &#61; 0return}}playSong()
}
18、Sloth&#xff1a;一款 macOS 系统下显示进程打开的文件、socket、管道等信息的工具。就像桌面版的 lsof&#xff0c;快来试试吧
19、freenom&#xff1a;自动续期 Freenom 免费域名的工具。Freenom 是一个提供免费顶级域名的商家&#xff0c;不过申请的域名需要每年定时续期&#xff0c;否则会被回收。有了这个项目&#xff0c;白 piao 顶级域名就是那么简单
20、running_page&#xff1a;一个展示个人跑步主页的 Python 项目。特性&#xff1a;
21、gopup&#xff1a;采集各种权威公开数据的 Python 库。示例代码&#xff1a;
# 安装&#xff1a;pip isntall gopup import gopup as gp
covid_baidu_df &#61; gp.covid_baidu(indicator&#61;"热搜谣言粉碎")
print(covid_baidu_df)
22、flask-state&#xff1a;一款轻便的机器状态监控 Flask 插件。示例代码&#xff1a;
flask_state.init_app(app)
// npm
import &#39;echarts&#39;;
import &#39;flask-state/flask-state.min.css&#39;;
import {init} from &#39;flask-state&#39;;
// Create a DOM node with ID &#39;test&#39;. After init() binds the node, click to open the listening window
init({dom:document.getElementById(&#39;test&#39;)});
23、python-cheatsheet&#xff1a;全面且实用的 Python 备忘录。这个东西特别适合我这个上了年纪的人&#xff0c;比如&#xff1a;忘记怎么用 Python 写正则、要搞个进度条忘记库的名字和基本用法、用 pandas 处理数据忘记方法需要的参数等等。正当我觉得自己需要“回炉重学”的时候发现了这个项目&#xff0c;有了它上面的问题都可以找到拿来即用的代码片段。我又是那个快乐的 Pythoneer 了&#xff0c;示例代码&#xff1a;
# $ pip3 install tqdm
>>> from tqdm import tqdm
>>> from time import sleep
>>> for el in tqdm([1, 2, 3], desc&#61;&#39;Processing&#39;):
... sleep(1)
Processing: 100%|████████████████████| 3/3 [00:03<00:00, 1.00s/it]
24、eul&#xff1a;一款极简免费的 macOS 状态监控工具。我就在用&#xff0c;强烈推荐给你
25、winapps&#xff1a;一个让你在 Linux (Ubuntu/Fedora) 系统里使用 Windows 办公软件的项目。支持 Microsoft Excel、Word、PowerPoint、Adobe Photoshop 等
26、Front-End-Interview-Notebook&#xff1a;一份非拼凑、优秀的前端面试复习笔记。以提问方式发出问题&#xff0c;并给出了作者的答案&#xff0c;内容涵盖&#xff1a;HTML、CSS、JS、算法、计算机网络等方面。作者拿到了很多大厂 offer&#xff0c;然后把这些东西总结整理下来送给准备面试、换工作的前端小伙伴
27、pi-hole&#xff1a;一个免费开源、部署简单的 DNS sinkhole 项目。没关系&#xff0c;我也不明白 DNS sinkhole 是个啥&#xff0c;就知道用它可实现路由器层屏蔽广告的功能。需要先在树莓派安装这个项目&#xff0c;然后配合支持自定义 DNS 的路由器&#xff0c;就可以实现该网络下的全设备广告自动屏蔽。详细步骤
28、CopyTranslator&#xff1a;支持网页和 PDF 的划词翻译工具。有了它就可以解决阅读 PDF 文件时&#xff0c;要翻译大段内容情况下的乱码、换行、翻译不准的问题
29、styleguide&#xff1a;谷歌的代码风格指南。每个大型项目都有自己的代码风格&#xff0c;当代码的风格统一时将更容易被理解。本项目是谷歌项目的代码风格说明&#xff0c;包含&#xff1a;C&#43;&#43;、C#、Swift、Python、Java 等语言
30、upptime&#xff1a;一个免费开源的网站正常运行时间&#xff08;uptime&#xff09;监控服务。之所没有任何费用是因为实现方法都是完全基于 GitHub 提供的免费服务&#xff0c;比如&#xff1a;使用 GitHub 的 Action 每隔 5 分钟访问一次目标网站&#xff0c;获取网站最新的状态。然后通过 GitHub Issues 记录和报告异常&#xff0c;最后在 GitHub Pages 上可视化展示网站的运行状态。就很“绿色无公害”&#xff0c;我特别喜欢
31、examples&#xff1a;关于视觉、本文等方面的 PyTorch 的示例集合。包含&#xff1a;使用 Convnets 的图像分类&#xff08;MNIST&#xff09;、生成对抗网络&#xff08;DCGAN&#xff09;等
32、EasyOCR&#xff1a;支持多种语言的即用型的 Python OCR 库&#xff0c;包括中文、日文、韩文等。示例代码&#xff1a;
import easyocr
reader &#61; easyocr.Reader([&#39;ch_sim&#39;,&#39;en&#39;]) # need to run only once to load model into memory
result &#61; reader.readtext(&#39;chinese.jpg&#39;)
# 输出
[([[189, 75], [469, 75], [469, 165], [189, 165]], &#39;愚园路&#39;, 0.3754989504814148),([[86, 80], [134, 80], [134, 128], [86, 128]], &#39;西&#39;, 0.40452659130096436),([[517, 81], [565, 81], [565, 123], [517, 123]], &#39;东&#39;, 0.9989598989486694),([[78, 126], [136, 126], [136, 156], [78, 156]], &#39;315&#39;, 0.8125889301300049),([[514, 126], [574, 126], [574, 156], [514, 156]], &#39;309&#39;, 0.4971577227115631),([[226, 170], [414, 170], [414, 220], [226, 220]], &#39;Yuyuan Rd.&#39;, 0.8261902332305908),([[79, 173], [125, 173], [125, 213], [79, 213]], &#39;W&#39;, 0.9848111271858215),([[529, 173], [569, 173], [569, 213], [529, 213]], &#39;E&#39;, 0.8405593633651733)]
33、DeepLearningProject&#xff1a;哈佛大学开源的深度学习教程
如果你发现了 GitHub 上有趣的项目&#xff0c;欢迎在 HelloGitHub 项目提 issues 告诉我们。