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

简介

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

https://github.com/521xueweihan/HelloGitHub

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


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

C 项目

1、masscan:超快的 IP 端口扫描工具。异步的 TCP 端口扫描器,特点就是快。最快能在 5 分钟内扫描完整个互联网,但要小心别把本机打挂了。

# 扫描指定 IP 的全部端口
masscan -p 0-65535 IP --rate=1000

2、sysbench:基于 LuaJIT 的可编写脚本的多线程基准测试工具。多用于数据库基准测试的命令行工具,经常出现在各种知名数据库的性能对比报告中。支持丰富的测试选项,比如表数量、数据条数、生成只读 SQL 等。

C# 项目

3、imewlconverter:一款开源免费的输入法词库转换程序。输入法会根据用户的输入和选词频率,形成一套符合用户输入习惯的词库,但这个词库无法直接转换到其它输入法,如果你换了输入法就需要重新习惯、养成新的词库。该项目支持 20 多种输入法的用户词库相互导入、导出以及合并词库,能够将你的输入习惯带到全新的输入法。

4、jellyfin:优秀的本地媒体库管理工具。这是一个完全免费、支持中文、安装简单、跨平台、功能强大的媒体库管理系统。它能把原本躺在文件夹里的视频文件,变成包含封面、描述、评分、演员表等信息的“影碟”,让视频整整齐齐、赏心悦目,还支持视频续播、订阅更新、多端可看,让你可以远离广告优雅地追剧。

5、PRemoteM:爽快利落的 Windows 平台远程桌面管理软件。该项目致力于提供优秀的远程桌面管理体验,通过启动器可以快速地连接到远程服务器,目前已支持 RDP、SSH、SFTP、FTP 等多种远程连接方式。

C++ 项目

6、30dayMakeCppServer:从零编写一个 C++ 服务器的教程。该项目包含图文教程和源码,讲解了 socket、epoll、线程池、CMake 等知识点,适合有一定 C/C++ 基础的小伙伴学习。

7、ImHex:保护视力的十六进制编辑器。面向逆向工程师和程序员的编辑器,可用来查看、解码、分析和编辑二进制数据。它功能丰富、界面炫酷、多彩高亮,而且项目更新积极,比如最初不支持中文路径的问题,现已解决可正常使用。

8、NotepadNext:Notepad++ 的开源替代品。采用 C++ 重写的跨平台文本编辑器,拥有和 Notepad++ 相似的界面和功能。

9、srs:一款简单、高效的实时视频服务器。高性能的流媒体服务器,支持 RTMP、WebRTC、HLS 和 HTTP-FLV 等协议,常用来构建直播和视频会议的后端服务。

Go 项目

10、env:用于解析环境变量的 Go 语言库。一般情况下项目启动时需要的配置参数,都是通过环境变量传递的。该项目就是 Go 语言用来解析环境变量的库,它简单、体积小、零依赖。

package main

import (
"fmt"
"time" "github.com/caarlos0/env/v6"
) type config struct {
Home string `env:"HOME"`
Port int `env:"PORT" envDefault:"3000"`
Password string `env:"PASSWORD,unset"`
IsProduction bool `env:"PRODUCTION"`
Hosts []string `env:"HOSTS" envSeparator:":"`
Duration time.Duration `env:"DURATION"`
TempFolder string `env:"TEMP_FOLDER" envDefault:"${HOME}/tmp" envExpand:"true"`
} func main() {
cfg := config{}
if err := env.Parse(&cfg); err != nil {
fmt.Printf("%+v\n", err)
} fmt.Printf("%+v\n", cfg)
}

11、k8s-tutorials:免费的 Kubernetes 教程。K8s 作为云原生时代的必备技能之一,多少得会一些。该教程侧重于实战引导,用 Go 写的项目作为演示对象,从最基础的容器定义开始,逐一讲述 pod、deployment、service、ingress 等资源,直到用 helm 打包部署一套完整服务。

12、mizu:强大的 Kubernetes API 流量查看工具。如果把 k8s 比作操作系统,那它就是 k8s 上的 tcpdump,使用起来就像 Chrome 开发者工具一样简单直接,能够让 k8s 上微服务之间的网络通信一览无遗。

13、rod:Go 语言的网页自动化和爬虫库。该项目是 Go 语言封装的 DevTools 协议库,实现用 Go 语言操作浏览器,自动化之前需要手动完成的操作,比如:爬取客户端渲染的页面、端到端测试、自动填写表单、模拟点击等操作。项目包含丰富的示例代码,改改就能上手使用。

package main

import (
"github.com/go-rod/rod"
) func main() {
page := rod.New().MustConnect().MustPage("https://hellogithub.com")
page.MustWaitLoad().MustScreenshot("a.png")
}

14、trivy:一款全面的容器安全扫描工具。目前最流行的开源容器镜像漏洞扫描工具,拥有速度快、精准度高、依赖检测、机密检查、对 CI 友好等特点。它不仅安装简单而且容易上手,仅需一条命令,即可发现镜像存在的安全漏洞。

# 安装
docker pull aquasec/trivy:0.33.0
# 运行
trivy image [YOUR_IMAGE_NAME]

Java 项目

15、GoodWeather:从零开发 Android 天气 APP。该项目介绍了如何开发一款支持天气预报、城市搜索、空气质量、自动更新等功能的 Android 应用,内含源码和配套讲解博文。

16、jvm-sandbox:一种 JVM 的非侵入式运行期 AOP 解决方案。简单点说就是如果线上 Java 服务出现故障,需要加一条日志定位问题,通过该项目可以在不重新部署服务的情况下,完成增加日志的操作。它还支持线上故障模拟、请求录制和结果回放等功能。

17、spring-cloud-tencent:腾讯开源的一站式微服务解决方案。基于 Spring Cloud 的服务治理框架,提供了微服务领域常见的服务注册与发现、配置中心、服务路由、限流熔断以及元数据链路透传等能力。

JavaScript 项目

18、ava:可以并发执行 JavaScript 测试的工具。这是一款 Node.js 的测试运行工具,拥有简洁的 API、详细的错误输出、较高的执行效率等特点。

19、kbar:为你的站点提供命令面板界面的组件。这是一个即插即用的 React 组件,可以快速地为站点增加命令面板功能。让用户可以通过快捷键,灵活、交互式地访问网站。

20、LogicFlow:滴滴开源的流程图编辑框架。该项目提供了一系列流程图交互和编辑的功能,支持实现脑图、ER 图、UML、工作流等各种场景。

21、min:一款最小化的浏览器。它是仅包含搜索、书签、密码管理、广告屏蔽器等最基础功能的极简浏览器,适用于 Windows、Linux、macOS 操作系统。

22、PPTist:在线编辑和演示 PPT 的应用。该项目采用 Vue3+TypeScript 构建,还原了大部分 Office PowerPoint 常用功能,支持在线编辑、演示和导出 PPT 文件。

Kotlin 项目

23、uhabits:一款帮助建立和维持好习惯的应用。该软件完全免费、支持中文、无广告和内购,在 Google 应用商店上有 500 万的下载量。首先用户需要在 APP 上新建一个习惯,可以设置频率、量化任务、提醒时间等,每当完成一次习惯就在应用上做一个标记,后面会有详细的图表展示习惯养成情况。

Python 项目

24、latexify_py:用于生成 LaTeX 数学公式的 Python 库。LaTeX 是一种基于 ΤΕΧ 的排版系统,对于展示复杂的数学公式表现极为出色。该项目可以用 Python 函数,轻松生成复杂的 LaTeX 数学公式描述。

import math
import latexify @latexify.with_latex
def solve(a, b, c):
return (-b + math.sqrt(b**2 - 4*a*c)) / (2*a) print(solve(1, 4, 3))
print(solve)
# 输出如下
# -1.0
# \mathrm{solve}(a, b, c)\triangleq \frac{-b + \sqrt{b^{2} - 4ac}}{2a}

25、matrix-webcam:在“矩阵”中进行视频会议。可以让你在视频会议时,实现类似《黑客帝国》数字雨的效果,支持 Teams/Zoom/Skype 视频软件,适用于 Windows、macOS、Linux 操作系统。

26、pdf2docx:可将 PDF 转换成 docx 文件的 Python 库。该项目通过 PyMuPDF 库提取 PDF 文件中的数据,然后采用 python-docx 库解析内容的布局、段落、图片、表格等,最后自动生成 docx 文件。

from pdf2docx import parse

pdf_file = '/path/to/sample.pdf'
docx_file = 'path/to/sample.docx' # convert pdf to docx
parse(pdf_file, docx_file)

27、schedule:简单友好的 Python 任务调度库。该项目人性化的 API 设计,让开发者仅用几行代码就能轻松实现定时任务。它不依赖任何第三方库,全部代码也就一个文件 800 多行,拥有丰富的注释和单元测试,源码阅读起来十分轻松。

import schedule
import time def job():
print("I'm working...") schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
schedule.every().minute.at(":17").do(job) while True:
schedule.run_pending()
time.sleep(1)

28、Umi-OCR:基于 PaddleOCR 的 OCR 图片转文字识别软件。完全免费、可离线使用的开源软件,支持截屏识别文字、批量导入图片、横/竖排文字,还可以自动忽略水印区域,适用于 Win10 操作系统。

Ruby 项目

29、linguist:GitHub 官方开源的识别项目编程语言的库。该项目是 GitHub.com 网站上,用于检测开源项目编程语言占比的库。

# 安装
gem install github-linguist
# 在项目根目录下执行命令
github-linguist
# 结果
66.84% 264519 Ruby
24.68% 97685 C
6.57% 25999 Go
1.29% 5098 Lex
0.32% 1257 Shell
0.31% 1212 Dockerfile

Rust 项目

30、atuin:神奇的 shell 历史记录工具。该项目通过 SQLite 数据库存储 shell 历史,能够显示更多的 shell 历史、命令运行时间、执行时间等信息,还支持选择、过滤、统计、同步/备份等操作。

# 搜索昨天下午3点之后记录的所有成功的 `make` 命令
atuin search --exit 0 --after "yesterday 3pm" make

31、this-week-in-rust:Rust 语言社区的每周摘要。该项目是由 Rust 社区发起,每周发布一期 Rust 相关动态,包括 Rust 语言的文章、视频、音频、开源项目分享,以及本周的更新(PR)、RFC(征求意见)和开发进度。

Swift 项目

32、isowords:3D 魔方单词消消乐游戏。这是一款用 Swift 编写的 iOS 游戏,玩家可以选择 3D 立方体上的字母组成英文单词,如果一个字母被使用 3 次,该字母立方体就会消失,显示下面更多的字母。支持限时、无限、多人三种游戏模式,以及每日挑战和全球排行榜。

33、swift-benchmark:用于对 Swift 代码片段进行基准测试的库。该项目是谷歌开源的用来测试 Swift 代码片段性能的库。

import Benchmark

benchmark("add string reserved capacity") {
var x: String = ""
x.reserveCapacity(2000)
for _ in 1...1000 {
x += "hi"
}
} Benchmark.main()

其它

34、code2flow:为动态语言生成调用图的工具。可根据源码文件生成漂亮的调用图的命令行工具,支持 Python、JavaScript、Ruby 等动态语言。

# 安装
pip3 install code2flow
# 使用
code2flow 文件

35、Codex-CLI:让终端理解自然语言命令的工具。该项目使用 GPT-3 Codex 可将自然语言命令,转换为 PowerShell、Zsh 和 Bash 中的命令,比如输入 what‘s my IP?就能得到本机 IP。

36、collisions:讲解和演示哈希冲突的项目。包含了攻击介绍、演示文件和示例代码,快速理解 MD5 消息摘要算法的弱点,比如两个不同内容的文件生成相同 MD5 值。

37、rally:ES 官方开源的压力测试工具。基于 Python3 的 ES 压力测试命令行工具,功能丰富支持自动创建、运行、销毁 ES 集群,以及不同数据集的测试结果比较。

安装:
pip3 install esrally 运行:
esrally 命令:
race Run a benchmark
list List configuration options
info Show info about a track
create-track Create a Rally track from existing data
generate Generate artifacts
compare Compare two races
download Downloads an artifact
install Installs an Elasticsearch node locally
start Starts an Elasticsearch node locally
stop Stops an Elasticsearch node locally

38、testssl.sh:测试 TLS/SSL 加密的工具。它可以用来检查 Web 服务是否支持 TLS/SSL 加密和协议,以及存在的缺陷。

开源书籍

39、craftinginterpreters:《Crafting Interpreters》手撸解释器。该书作者在 Google 从事 Dart 语言的相关工作,书中内容是从一门小型自创编程语言 Lox 开始,详细介绍了如何为该语言制作解释器和虚拟机,推荐给想要学习编译原理或自创编程语言的同学。

40、ThinkDSP:《Think DSP》Python 数字信号处理。本书内容是将 Python 代码和数字信号处理结合,相较于干巴巴的文字,通过代码示例更容易理解相关概念,该书作者还著有《Think Python》等图书。

机器学习

41、motion-diffusion-model:根据文本生成 3D 人体运动的模型。论文《Human Motion Diffusion Model》第一作者开源的 PyTorch 实现。

42、whisper:OpenAI 开源的多语言识别系统。该项目是强大的自动语音识别系统,支持包括中文在内的多种语言识别。尤其是在快语速、口音、背景噪音等场景,依旧表现出色,能够达到极高的准确率。

import whisper

model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"]) # 命令行使用
# $ whisper --language Chinese --model large audio.wav
# [00:00.000 --> 00:08.000] 如果他们使用航空的方式运输货物在某些航线上可能要花几天的时间才能卸货和通关

最后

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

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

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

《HelloGitHub》第 79 期的更多相关文章

  1. 「NGK每日快讯」2021.1.21日NGK公链第79期官方快讯!

  2. 《HelloGitHub月刊》第01期

    <HelloGitHub月刊> 因为现在这个项目只有我自己做,只敢叫"月刊",希望有志同道合者,快点加入到这个项目中来!同时,如果您有更好的建议或者意见,欢迎联系我.联 ...

  3. 《HelloGitHub月刊》第 01 期

    <HelloGitHub月刊> 因为现在这个项目只有我自己做,只敢叫"月刊",希望有志同道合者,快点加入到这个项目中来!同时,如果您有更好的建议或者意见,欢迎联系我.联 ...

  4. 家里蹲大学数学杂志 Charleton University Mathematics Journal 官方目录[共七卷493期,6055页]

    家里蹲大学数学杂志[官方网站]从由赣南师范大学张祖锦老师于2010年创刊;每年一卷, 自己有空则出版, 没空则搁置, 所以一卷有多期.本杂志至2016年12月31日共7卷493期, 6055页.既然做 ...

  5. HelloGithub

    <HelloGithub月刊>第一期   <HelloGithub月刊> 因为现在这个项目只有我自己做,只敢叫“月刊”,希望有志同道合者,快点加入到这个项目中来!同时,如果您有 ...

  6. 在 GitHub 学习,成长为自己想要的样子|HelloGitHub 访谈

    万事开头难,我们经过长期的策划和筹备,终于推出了 HelloGitHub 采访系列「开源项目作者的访谈」.这是一个采访个人开源项目作者的栏目,内容侧重于开源项目作者与开源的故事. 我们深知想要做好一个 ...

  7. GitHub 热点速览 Vol.17:在?各家视频会员要不要?

    作者:HelloGitHub-小鱼干 摘要:经济实用,用作上周的 GitHub 热点的横批再合适不过.先不说 GitHub Trending 上不止一个的会员共享项目,免你找好友刷脸要会员,这项目实在 ...

  8. 如何短时间内快速通过Java面试

    当然是刷题啊 1-10期[10期]Redis 面试常见问答[09期]说说hashCode() 和 equals() 之间的关系?[08期]说说Object类下面有几种方法呢?[07期]Redis中是如 ...

  9. 有备无患「GitHub 热点速览 v.21.38」

    作者:HelloGitHub-小鱼干 数据库最重要的一个功能是容灾备份,备份不只是对数据库重要,对日常工作生活的我们一样重要,比如花了一个工作日写的代码没有备份(虽然可能只有 1 行-)总归是一个让人 ...

随机推荐

  1. [CF1539F] Strange Array (线段树)

    题面 有一个长度为 n \tt n n 的序列 a \tt a a ,对于每一个位置 i ∈ [ 1 , n ] \tt i\in[1,n] i∈[1,n]: 选择一个区间 [ l , r ] \tt ...

  2. spring boot 分布式session实现

    spring boot 分布式session实现 主要是通过包装HttpServletRequest将session相关的方法进行代理. 具体是的实现就是通过SessionRepositoryFilt ...

  3. Linux驱动开发十六.input系统——3.系统自带的input驱动

    前面两章我们通过input子系统构建了一个按键类型的输入设备的驱动,其实Linux的内核还提供了一套基于GPIO的按键驱动程序,和LED设备一样,我们只需要在编译内核的过程中进行配置然后在设备树中定义 ...

  4. DIN 66025标准下G Code基础代码释义

    基础/前提 XYZ指示常规的三个轴号,PQUVW为可以增加的五个轴,ABC为可以增加的旋转轴 实例 G0 快速定位(点位运动) G1 直线运动(插补) G2 顺时针圆弧运动(插补) G3 逆时针圆弧运 ...

  5. 第八十二篇:Vue购物车(三) 实现全选功能

    好家伙, 继续完善购物车相应功能 1.如何实现全选和反全选 1.1.全选框的状态显示(父传子) 来一波合理分析: 在页面中,有三个商品中 三个商品中的第二个未选择, 我么使用一个计算属性(fullSt ...

  6. LibreCAD常用命令

    目录 常见命令 常见命令 .text_center { text-align: center } \3cp>.text_left { } 动作命令 命令 绘制直线 相对坐标系 @长度<角度 ...

  7. 不当使用 union all 导致的SQL解析时间过长的问题优化

    在帮助用户优化应用过程中,发现用户大量使用union all 导致SQL解析非常缓慢的问题.考虑到这个问题很有代表意义,我觉得很有必要对于问题进行总结. 一.用户例子 WITH company_use ...

  8. DataTable转Json格式

    public static string DataTable2Json(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); ...

  9. 《Java基础——数组的定义与使用》

    Java基础--数组的定义与使用       一. 一维数组: 格式一: 数组类型 数组变量[]=new 数据类型[长度]; //需要后续赋值,且后续赋值时只能为单个元素赋值. 或 数组类型 数组变量 ...

  10. Elastic:使用ElastAlert发送通知

    ElastAlert是一个简单的框架,用于从Elasticsearch中的数据中发出异常,尖峰或其他感兴趣模式的警报.我们可以在地址https://elastalert.readthedocs.io/ ...