开源月刊《HelloGitHub》第 81 期

14,470 阅读10分钟

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

简介

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

github.com/521xueweiha…

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


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

C 项目

1、ecapture:一款无需 CA 证书即可抓取 HTTPS 明文的工具。该项目基于 eBPF 技术实现了 TLS 加密的明文捕获,可用于 MySQL 数据库的查询审计、bash 命令捕获等场景,仅支持 Linux 和 Android 系统。

2、FSHistory:最早的微软模拟飞行游戏。该项目提供了 1982 年发行的怀旧游戏《微软模拟飞行》,支持在线试玩、共有 4 个版本可供选择。

3、iodine:一款可快速创建 DNS 隧道的工具。该项目包含 C 语言写的 DNS 隧道服务器和客户端,可快速搭建 DNS 隧道传输 IPv4 数据,常用于绕过防火墙等场景。因为一般情况下防火墙的 DNS 端口是打开的,所以将流量伪装成 DNS 数据包,就可以突破防火墙限制啦。

4、tinyriscv:从零开始写 RISC-V 处理器。该项目是采用 Verilog 语言实现一个单核 32 位的小型 RISC-V 处理器核,包含全部代码和详细的教程。RISC-V 是一种开源指令集架构,它允许任何人设计、制造和销售 RISC-V 芯片和软件。

C# 项目

5、DevToys:程序员的瑞士军刀。该项目打包了程序员日常开发会用到的小工具,比如时间戳转化、各种解码、输出美化、颜色选择器等,使用方便颜值高。

6、Tai:Windows 上统计软件使用时长的工具。该项目会根据软件获得焦点和失去焦点的时间差,来计算软件的真实使用时长,而不是简单地统计软件存活时间。

C++ 项目

7、GASDocumentation:虚幻引擎 5 之 GAS 插件上手教程。该项目是讲解如何使用虚幻引擎 5 的 GameplayAbilitySystem 插件,作者从什么是 GAS 开始,最后用 GAS 做出了一个简单的多人射击游戏。如果你对虚幻引擎 5 感兴趣而且会 C++ 的话,那么看完这份教程一定会让你有所收获。

8、organicmaps:一款免费、没广告的离线地图应用。适用于旅行者、游客、徒步旅行者和骑行者的 Android 和 iOS 离线地图应用,它使用 OpenStreetMap 数据,支持详细的离线地图、骑行路线、语音导航、等高线、海拔剖面、山峰和坡度等功能。

9、tesseract:一款“老当益壮”的 OCR 引擎。这个项目最早诞生于 1985 年,几经易主在 2005 年的时候 HP 将其开源。目前,Tesseract 已经成为 OCR 领域 Star 数最多的开源项目,它支持包括中文在内的 100 多种语言,具有精准度高、跨平台等特点。

CSS 项目

10、china_school_badge:全国高校校徽字体图标库。该项目包含国内 200 多所高校校徽制作的字体图标。

11、daisyui:一款极为流行的 Tailwind CSS 组件库。作为当下最流行的 Tailwind CSS 组件库,具有高颜值、更纯净的 HTML、深度自定义等特点。

<ul class="menu p-3 bg-base-200 rounded-xl">
    <li class="menu-title">
      <span>Menu Title</span>
    </li>
    <li><a>First Menu Item</a></li>
    <li><a>Second Menu Item</a></li>
    <li><a>Third Menu Item</a></li>
</ul>

Go 项目

12、answer:一款开源的问答社区。采用 Go 语言编写的问答社区,支持积分、提问、回答、标签等功能,部署简单。

13、btree:Go 语言实现的 B-树 数据结构。由谷歌开源的 B-树 Go 语言实现,代码整洁、注释丰富,推荐阅读源码。B-树 这种数据结构,能够让查找数据、顺序访问、插入及删除操作,都在对数时间内完成,多用于数据库和文件系统。

14、nap:一款命令行的代码片段管理工具。该项目可以通过命令行界面,快速创建和管理代码片段。支持快捷键、搜索、代码高亮、自定义颜色等功能,操作简单方便。

15、oh-my-posh:适用于多种 shell 的终端提示个性化工具。该项目内置多款主题开箱即用,支持 Windows、Linux、macOS 三个系统上的 PowerShell、Bash、Zsh 等多种 shell,自动补全你输入的每个命令。

16、raft:Raft 算法的 Go 语言实现。Raft 是一种分布式一致性算法(共识算法),常用于分布式集群内的任意节点,在某种状态转换上保持一致。

Java 项目

17、JimuReport:一款在线制作报表的工具。该项目可通过在线拖拽制作报表,支持报表设计、图形报表、大屏展示等功能。

18、kafka-ui:一款开源的 Kafka 管理平台。由开源社区建立和维护的 Kafka Web UI 管理工具,承诺永久免费。可方便地查看 Kafka Brokers、Topics、消息、Consumer 等情况,支持多集群管理、性能监控、访问控制等功能。

19、leetcode-editor:刷 LeetCode 的 IDE 插件。让你可以在 IDE 里刷 LeetCode 算法题的插件,支持 IntelliJ IDEA、PyCharm、GoLand 在内的 Jetbrains 全家桶。

20、LibreraReader:一款支持多种格式的 Android 电子书阅读器。适用于 Android 设备的阅读应用,支持最流行的文档格式,包括 PDF、EPUB、MOBI、DjVu、FB2、TXT、RTF、AZW、HTML、CBZ、DOC 等多种电子书格式。

JavaScript 项目

21、infisical:一款帮助团队同步环境变量的工具。该项目可用于团队成员之前同步环境变量,拥有简单易懂的操作界面,支持端到端加密、自托管、权限控制、集成 CI/CD 等功能。

22、outils:前端业务代码的工具库。该项目包含了前端开发中,经常会用到的日期格式化、浏览器类型判断、检测是否为手机号等函数。

/**
 * 
 * @desc 获取操作系统类型
 * @return {String} 
 */
function getOS() {
    var userAgent = 'navigator' in window && 'userAgent' in navigator && navigator.userAgent.toLowerCase() || '';
    var vendor = 'navigator' in window && 'vendor' in navigator && navigator.vendor.toLowerCase() || '';
    var appVersion = 'navigator' in window && 'appVersion' in navigator && navigator.appVersion.toLowerCase() || '';

    if (/iphone/i.test(userAgent) || /ipad/i.test(userAgent) || /ipod/i.test(userAgent)) return 'ios'
    if (/android/i.test(userAgent)) return 'android'
    if (/win/i.test(appVersion) && /phone/i.test(userAgent)) return 'windowsPhone'
    if (/mac/i.test(appVersion)) return 'MacOSX'
    if (/win/i.test(appVersion)) return 'windows'
    if (/linux/i.test(appVersion)) return 'linux'
}

23、podcast-together:和你的好友一起在线听播客。该项目无需注册和登录,即可创建/进入房间和三五好友,一起收听同一个博客,支持收听小宇宙、Apple Podcast 中国区等音源。

24、terminalizer:强大的终端录制工具。该项目可以轻松记录下你在命令行的操作,并将录制好的内容输出成 gif 图像或直接分享到网上。

25、watching-you:让 DOM 像眼睛一样注视的 JS 动画库。这是一个简易的动画库,主要用于计算一个 DOM 与观察目标,比如鼠标、DOM、输入框值之间的位置,从而做出一些有趣的动画,比方说让它变成跟眼睛一样。

PHP 项目

26、snipe-it:一款 IT 资产管理系统。该项目是基于 Laravel 8 构建的适用于中小型企业的 IT 资产管理系统,支持资产分配、生成二维码标签、资产审计、保修到期提醒等功能。

Python 项目

27、Bottles:一款可轻松实现 Linux 上运行 Windows 软件的工具。该项目提供了清爽易用的 GUI 界面,用户就算不懂任何编程技巧,也可以轻而易举地在 Linux 系统上,运行 Windows 的游戏和软件。

28、django-cacheops:一款灵活的 Django ORM 缓存库。该项目使用 redis 作为缓存,可通过装饰器设置数据库查询结果的过期时间。

from cacheops import cached_as

@cached_as(Article, timeout=120)
def article_stats():
    return {
        'tags': list(Article.objects.values('tag').annotate(Count('id')))
        'categories': list(Article.objects.values('category').annotate(Count('id')))
    }

29、doccano:一款开源的文本标记工具。它可以提供文本分类、序列标记、情感分析、文本摘等功能,帮助快速完成打标工作,支持中文和多人协作。

30、FileCodeBox:一款匿名口令分享文本和文件的服务。该项目是基于 FastAPI+SQLite3 开发的文件分享服务,支持分享文件、口令提取文件等功能,无需注册即可完成文件提取。

31、python-systemd-tutorial:用 Python 编写 systemd 服务的教程。许多 Linux 发行版都用 systemd 来管理系统的服务,比如开机启动、自动重启、守护进程等。该项目讲解了如何入门 systemd,并提供了一个 Python 脚本和 systemd unit 文件,可以在此基础上快速开发出 systemd 服务。

if __name__ == '__main__':
    import time
    import systemd.daemon

    print('Starting up ...')
    time.sleep(10)
    print('Startup complete')
    systemd.daemon.notify('READY=1')

    while True:
        print('Hello from the Python Demo Service')
        time.sleep(5)

Rust 项目

32、rust-raspberrypi-OS-tutorials:学习如何用 Rust 编写嵌入式操作系统。该教程会从零开始,一步步地指导你如何用 Rust 开发出一个功能齐全的嵌入式操作系统的内核。它包含了实现一般操作系统的任务,例如开发串口控制台、设置虚拟内存和处理硬件异常。教程中的所有代码,均可运行在树莓派 3 和 4 上。

33、spacedrive:一款 Rust 写的跨平台文件管理工具。它基于用 Rust 编写的虚拟分布式文件系统(VDFS),可以将 macOS、Windows、Linux、iOS、Android 等不同操作系统的设备连接到一起,统一管理所有的文件。该项目还处于开发阶段,客户端需要自行编译。

Swift 项目

34、Plash:将网站变成 Mac 桌面壁纸。这是一款适用于 macOS 的桌面壁纸应用,支持将多种网站设置为壁纸,这些网站并不局限于图片网站,还可以是新闻、气象等站点。

其它

35、chinese-independent-blogs:中文个人独立博客网站合集。如果说中文独立博客的时代已经过去,那么至少还有这么一块地方,属于热爱自由的博主们。

36、CSrankings:非官方的顶级 CS 学校排名榜单。该项目以高校教师在计算机科学(CS)各领域顶级会议上发表的论文数量,作为重要的衡量标准。

37、FlutterDouBan:一款用 Flutter 写的豆瓣客户端。该项目用 Flutter 还原了豆瓣客户端的首页、书影音、小组、市集及个人中心等功能。

38、portal_calendar:自制电子墨水屏的日历。基于 ESP32 的电子墨水屏日历,使用 4 节 7 号电池可运行多年,支持通过 OpenWeatherMap 实现天气显示等功能。

39、relationship:中国亲戚关系计算器。该项目实现了中国亲戚关系及称呼之间的换算,可以将中国复杂的亲戚关系及称呼通过计算器的方式简单的运算出来。

开源书籍

40、hello-algo:一本动画图解数据结构与算法的入门书。《Hello,算法》一书通过动画和代码诠释数据结构和经典算法,学习曲线平滑,支持电脑、手机等多种终端在线阅读。

机器学习

41、DeOldify:一款可以给老旧照片上色的项目。该项目基于深度学习实现了对黑白图像和视频进行着色的功能。

42、wandb:一款轻量级的机器学习可视化工具。该项目是用于可视化和跟踪机器学习实验的工具,通过几行代码就可以实现跟踪、比较和可视化机器学习实验。

import wandb

# 1. Start a W&B run
wandb.init(project="gpt3")

# 2. Save model inputs and hyperparameters
config = wandb.config
config.learning_rate = 0.01

# Model training code here ...

# 3. Log metrics over time to visualize performance
for i in range(10):
    wandb.log({"loss": loss})

最后

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

以上就是本期的所有内容了,往期内容点击阅读

感谢您的阅读,如果觉得本期内容还不错的话 求赞、求分享 ❤️