爱好是最好的教师,HelloGitHub 让你对编程感爱好!

《HelloGitHub》第 78 期

简介

HelloGitHub 共享 GitHub 上风趣、入门级的开源项目。

github.com/521xueweiha…

这里有实战项目、入门教程、黑科技、开源书本、大厂开源项目等,包含多种编程言语 Python、Java、Go、C/C++、Swift…让你在短时刻内感受到开源的魅力,对编程产生爱好!


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

C 项目

1、gifsicle:紧缩和修改 GIF 图片的东西。它是一款体积小、功用强大的 GIF 图片处理东西,不只可以紧缩 GIF 图片,还支撑兼并多个 GIF、导出一切帧、检查图片信息、减少帧数、设置循环次数、推迟、修改某一帧等功用。

# 装置
brew install gifsicle
# 检查
gifsicle -I input.gif | head
# 优化/紧缩
gifsicle input.gif -O3 -o output.gif

2、CPU-X:一款显示电脑 CPU、主板等信息的免费东西。可以显示设备的 CPU、主板、内存、显卡、操作体系等信息,支撑 GUI 和指令行两种发动方法,适用于 Linux 和 FreeBSD 操作体系。

《HelloGitHub》第 78 期

3、acl:一款跨平台的网络通信库和服务器结构。它既可以做网络通信的客户端,也可以编写服务器端,支撑 HTTP、SMTP、ICMP、MQTT、Redis、Memcache 多种常见协议,以及 XML、JSON、BASE64 等编码格局。

  • lib_acl:最根底的库
  • lib_protocol:完结了 HTPP 协议及 ICMP/PING 协议
  • lib_fiber:该库为支撑协程库,直接 hook 体系 read/write 等 API,与 epoll 配合支撑高并发网络编程

《HelloGitHub》第 78 期

C# 项目

4、XCharts:Unity 数据可视化图表插件。一款根据 Unity UGUI 的图表插件,它功用强大、简略易用,支撑折线图、柱状图、饼图、雷达图、散点图、热力求、环形图、K 线图等多种图表。

《HelloGitHub》第 78 期

5、WinDynamicDesktop:相似 macOS 动态桌面的东西。该项目是将 macOS 动态桌面功用移植到 Windows 10,它可以根据你的位置计算出日出和日落的时刻,并根据当前时刻动态改变桌面壁纸,已上架 Microsoft 运用商店。

《HelloGitHub》第 78 期

6、Text-Grab:一个轻量级的 Windows OCR 东西。它根据 Windows 10 体系自带的 OCR API 完结,可以将看到的一切文字转化成文本,并且发动速度快、无需常驻后台、可离线运用。

《HelloGitHub》第 78 期

C++ 项目

7、kys-cpp:游戏《金庸群侠传》的 C++ 复刻版。根据 SDL2 开发的《金庸群侠传》游戏,资源大部分来自 DOS 版别,目前已完工可以正常运转。

《HelloGitHub》第 78 期

8、Cemu:任天堂 Wii U 游戏机模拟器。用 C++ 编写的开源 Wii U 模拟器,可以运转绝大多数的 Wii U 游戏和克己游戏,支撑 Windows、Linux、macOS 操作体系。

《HelloGitHub》第 78 期

9、wiliwili:专为手柄控制规划的第三方 B 站客户端。一个用 C++ 编写的适用于 Nintendo Switch 的 B 站客户端,具有挨近 B 站官方 PC 客户端的阅读体验,一起支撑触屏与手柄按键控制。

《HelloGitHub》第 78 期

10、aseprite:开源、专业的像素画修改软件。一款首要用于像素画和 Sprite 动画的图像修改软件,它具有图层、自在手绘形式、阴影墨水、自定义笔刷、轮廓线、宽像素、指令行界面、Lua 脚本等特征功用。该软件尽管专业版收费但并不贵,也可选择免费版但无法保存作品。

《HelloGitHub》第 78 期

CSS 项目

11、30diasDeCSS:在 30 天内用 HTML 和 CSS 创建 30 个迷你项目的应战。该项目包含了 30 个用 HTML+CSS 构建的迷你项目,每个项目经过动图直观地展现了完结的效果,不只包含悉数源码还指出了用到的知识点。

《HelloGitHub》第 78 期

Go 项目

12、HackBrowserData:一款阅读器数据导出东西。可以导出本地阅读器的密码、历史记载、Cookie、书签、下载记载、localStorage 等数据的指令行东西,支撑多平台下的多种干流阅读器。

《HelloGitHub》第 78 期

13、fq:一条指令检查二进制文件。用于检查和处理二进制文件的指令行东西,装置简略运用方便,支撑 mp4、flac、mp3、jpeg 等多种格局的文件。

《HelloGitHub》第 78 期

14、statsviz:实时展现 Go 程序运转时指标的 Web 运用。该项目经过图表可视化的方法,实时展现 Go 程序运转时的堆、对象、Goroutines、MSpan/MCache 等信息。

mux := http.NewServeMux()
statsviz.Register(mux)

《HelloGitHub》第 78 期

15、v2:极简的 feed 订阅东西。该项目的“简”是由内而外,内部代码部分不运用 Web 结构和 ORM 仅采用 Go+PostgreSQL+JS 完结,界面朴实无华、功用精简有用,支撑快速自建、源办理、主动获取内容、快捷键、用户体系等,这一切不多不少刚刚好。

《HelloGitHub》第 78 期

16、cobra:当下最盛行的 Go CLI 结构。功用强大且极易上手的 Go 言语 CLI 库,可用于快速构建指令行程序,被 K8s、Hugo、GitHub CLI 等众多知名 Go 项目所采用,支撑主动提示、主动构建项目、嵌套子指令等功用。

var rootCmd = &cobra.Command{
  Use:   "hugo",
  Short: "Hugo is a very fast static site generator",
  Long: "A Fast and Flexible Static Site Generator built with love by spf13",
  Run: func(cmd *cobra.Command, args []string) {
    // Do Stuff Here
  },
}
func Execute() {
  if err := rootCmd.Execute(); err != nil {
    fmt.Println(err)
    os.Exit(1)
  }
}

《HelloGitHub》第 78 期

Java 项目

17、hippo4j:带有监控报警功用的动态线程池结构。支撑运转时动态变更线程池参数,可实时检查线程池运转时数据,适配 RocketMQ、RabbitMQ、Tomcat 等中间件,处理了线程池参数不易评价以及运转时黑盒的问题。

@Bean
@DynamicThreadPool
public Executor sendMessageConsumeDynamicThreadPool() {
    String threadPoolId = "send-message-consume";
    ThreadPoolExecutor sendMessageConsume = ThreadPoolBuilder.builder()
            .threadPoolId(threadPoolId)
            .threadFactory(threadPoolId)
            .dynamicPool()
            .build();
    return sendMessageConsume;
}

18、ghidra:一款免费开源的软件逆向剖析东西。该项目由美国国安局开源,可用于剖析编译后的代码。

《HelloGitHub》第 78 期

19、caffeine:Java 的高功能缓存库。借鉴了 Guava 和 ConcurrentLinkedHashMap 的规划经历,青出于蓝而胜于蓝的 Java 本地缓存库,具有更高的缓存命中率和更快的读写速度。

LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
    .maximumSize(10_000)
    .expireAfterWrite(Duration.ofMinutes(5))
    .refreshAfterWrite(Duration.ofMinutes(1))
    .build(key -> createExpensiveGraph(key));

《HelloGitHub》第 78 期

20、solon:一款 Java 轻量级运用开发结构。可用来快速开发 Java Web 项目,主结构仅 0.1 MB。相似 Python Flask 的微型结构,发起按需组合插件。

@Controller
public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app -> {
            //手写形式
            app.get("/hello1", ctx -> ctx.output("Hello world!"));
        });
    }
    //注解形式
    @Get
    @Socket
    @Mapping("/hello2")
    public String hello2(@Param(defaultValue = "world") String name) {
        return String.format("Hello %s!", name);
    }
}

JavaScript 项目

21、notesnook:一款端到端加密的笔记软件。这款笔记软件以保护用户隐私为首要特点,采用了安全的 XChaCha20-Poly1305 和 Argon2 算法对数据进行加密。它不只安全还具有丰厚的功用,但免费版功用阉割严重,比如不支撑 Markdown、刺进图片等重要的功用。

《HelloGitHub》第 78 期

22、jsoncrack.com:高雅的 JSON 数据可视化东西。该项目不是简略的展现 JSON 数据,而是将其转化为相似脑图的形式,支撑放大/缩小、翻开/收缩、查找节点、导出图片等操作,还可以快速布置成服务。

《HelloGitHub》第 78 期

23、sakana:心爱的 Sakana 模拟器。Sakana 是出主动漫《莉可丽丝》的一个梗,心爱的动作加上 Sakana 这句话,使得这个局面迅速走红,这个项目可以让你轻松再现这个瞬间。

《HelloGitHub》第 78 期

24、m3u8-downloader:m3u8 视频在线提取东西。m3u8 视频格局常用于直播服务,其原理是将完好的视频拆分红多个 .ts 视频碎片,其间 .m3u8 文件会详细记载每个视频片段的地址。视频播放时,会先读取 .m3u8 文件,再逐一下载播放 .ts 视频片段。该项目便是根据上述原理完结的 m3u8 视频提取东西,运用方便无需装置翻开网页即可下载完好的视频。

// 下载整合后的 TS 文件
downloadFile(fileDataList, fileName, fileType) {
    this.tips = 'ts 碎片整合中,请留心阅读器下载'
    const fileBlob = new Blob(fileDataList, { type: 'video/MP2T' }) // 创建一个 Blob 对象,并设置文件的 MIME 类型
    const a = document.createElement('a')
    a.download = fileName + '.' + fileType
    a.href = URL.createObjectURL(fileBlob)
    a.style.display = 'none'
    document.body.appendChild(a)
    a.click()
    a.remove()
}

《HelloGitHub》第 78 期

25、tldraw:一款有用的微型在线绘图东西。这是一个”麻雀虽小,五脏俱全“的绘图东西,支撑刺进便签、保存进度、生成图片、多人协作等有用的功用。

《HelloGitHub》第 78 期

PHP 项目

26、Piwigo:一款开源在线相册运用。采用 PHP+MySQL 开发的办理照片的 Web 项目,它功用强大装置简略,具有丰厚的主题和灵活的插件,可轻松完结个性化定制。支撑 iOS 和 Android 客户端,让你可以随时随地上传、办理照片。

《HelloGitHub》第 78 期

Python 项目

27、pendulum:让 Python 处理时刻更简略的库。该项目不只供给了愈加简略易用的 API,并且还兼容 datetime 标准库,可以直接替代码中的 datetime 对象。它供给了许多人性化的时刻处理方法,比如时刻加减、多长时刻的描绘以及时区的处理等等。

>>> import pendulum
>>> now_in_paris = pendulum.now('Europe/Paris')
>>> now_in_paris
'2016-07-04T00:49:58.502116+02:00'
>>> tomorrow = pendulum.now().add(days=1)
>>> past = pendulum.now().subtract(minutes=2)
>>> past.diff_for_humans()
'2 minutes ago'
>>> delta = past - last_week
>>> delta.hours
23
>>> delta.in_words(locale='en')
'6 days 23 hours 58 minutes'

28、pg_activity:相似 top 的 PostgreSQL 数据库指令行监控东西。一条指令就能实时检查 PostgreSQL 数据库状态和每条 SQL 语句履行详情、耗时、占用资源、读/写速度等信息的东西。

《HelloGitHub》第 78 期

29、Games:纯 Python 完结的桌面小游戏调集。该项目包含 20 多个不重样的趣味小游戏,它们都是采用 Python 开发运转简略,用到的库包含 cocos2d、pygame、PyQt 等。尽管这些游戏可玩性较低,但项目简略十分合适新手学习。

《HelloGitHub》第 78 期

30、django-silk:Django 的功能剖析东西。它可以将 Django 服务的均匀耗时、请求次数、查询 SQL、代码功能剖析等信息展现到一个页面,开发者有了这些信息就可以更快地找到 Django 服务的功能瓶颈和响应慢的原因。

# 装置
pip install django-silk

# 中间件的方法运用
MIDDLEWARE = [
    ...
    'silk.middleware.SilkyMiddleware',
    ...
]
INSTALLED_APPS = (
    ...
    'silk'
)

《HelloGitHub》第 78 期

31、OCRmyPDF:可以把 PDF 文件变成可查找文件的东西。它运用 Tesseract OCR 引擎,将 PDF 的内容辨认成文本,然后给 PDF 文件添加 OCR 文本层。从而完结可查找和仿制 PDF 的内容,已支撑 100 多种言语。

《HelloGitHub》第 78 期

Ruby 项目

32、wpscan:一款 WordPress 安全扫描东西。该项目可用于发现 WordPress 构建的网站存在的安全隐患,扫描项包含 WordPress 漏洞、已装置的插件和主题、弱密码等。

《HelloGitHub》第 78 期

Rust 项目

33、espanso:Rust 写的智能文本扩展东西。文本扩展器是可以帮你进步输入功率的东西,当你输入一个特定的关键词时,它可以主动检测到并将其替换为预设的内容。这个项目几乎可以和任何程序一起运用,适用于 Windows、macOS 和 Linux。

《HelloGitHub》第 78 期

34、easy_rust:用简略的英语写的 Rust 教程。尽管当下已经有许多的 Rust 教程,可是大多都是以英语为主,这对不擅长英语的程序员并不友好,所以作者写了一份仅用简略的英语解说 Rust 的教程,已有中文翻译版。

Swift 项目

35、TinyPNG4Mac:适用于 macOS 的 TinyPNG 第三方客户端。TinyPNG 是一个供给免费图像紧缩服务的网站,该项目是其第三方 macOS 客户端,可以让你无需翻开阅读器、无需手动下载图片,仅经过简略的拖拽就能完结对 JPEG、PNG 图片的紧缩。

《HelloGitHub》第 78 期

其它

36、WebKit:苹果开源的 Web 阅读器引擎。它被用于开发 macOS 和 iOS 上的 Safari、App Store、Mail 等运用。WebKit 不只出现在苹果的生态中,其分支 Blink 项目也是 Chromium 的重要组成部分,它又是各大干流阅读器的中心。

37、missing-semester:大学计算机教育中缺失的一课。大学里的计算机课程往往只专注于讲授数据结构、操作体系这些知识,关于编程开发中常用的东西则留给学生自行学习。在 MIT 这个课程中,你可以了解和掌握指令行(shell)、文本修改器(Vim)、版别控制体系(Git)等强大的东西,越早触摸越能愈加熟练地运用它们,有助于未来的职业生涯。

《HelloGitHub》第 78 期

38、nginx-tutorial:免费的 Nginx 极简教程。这是一套简略的 Nginx 教程,包含 Nginx 的装置、常用指令、反向代理、负载均衡等知识点,可以帮助新手快速入门 Nginx。

《HelloGitHub》第 78 期

39、Crash-Course-Computer-Science-Chinese:计算机科学速成课[40集全/精校] 。油管上的计算机科学速成课(Crash Course Computer Science)中文字幕翻译版,视频从晶体管讲到了操作体系和人工智能,但并不会教你如何编程属于科普类视频。

《HelloGitHub》第 78 期

40、bats-core:Bash 主动化测试体系。它经过测试用例验证 Bash 脚本的运转成果是否契合预期,原理是根据 Bash 的 errexit(set -e) 选项判别测试用例的履行成功与否。

#!/usr/bin/env bats
@test "addition using bc" {
  result="$(echo 2+2 | bc)"
  [ "$result" -eq 4 ]
}
@test "addition using dc" {
  result="$(echo 2 2+p | dc)"
  [ "$result" -eq 4 ]
}

41、The-Art-of-Linear-Algebra:图解线性代数。《Linear Algebra for Everyone》是一门广受好评的线性代数公开课,该项目是根据这门公开课,编写收拾而成的图文并茂的学习笔记。

《HelloGitHub》第 78 期

开源书本

42、patterns-of-distributed-systems:《分布式体系形式》中文版。该书尝试将副本同步、可靠性、网络推迟等分布式体系共性问题归纳总结,并参阅像 Kafka、Zookeeper 等分布式体系的完结过程,给出分布式体系中同类问题的通用处理方法/形式。

《HelloGitHub》第 78 期

43、Cookbook:《数据工程师 Cookbook》。这本书会告知你,假如想要成为一名出色的数据工程师,究竟需求学习哪些知识。

《HelloGitHub》第 78 期

机器学习

44、stable-diffusion:可以根据文字生成图片的模型。只需输入一段文字描绘,就能得到一张由 AI 生成的图片,除此之外该项目还支撑将粗糙的草图转化成精美的艺术图片。

# make sure you're logged in with `huggingface-cli login`
from torch import autocast
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained(
	"CompVis/stable-diffusion-v1-4", 
	use_auth_token=True
).to("cuda")
prompt = "a photo of an astronaut riding a horse on mars"
with autocast("cuda"):
    image = pipe(prompt)["sample"][0]  
image.save("astronaut_rides_horse.png")

《HelloGitHub》第 78 期

45、style2paints:一款给线稿上色的 AI 辅助东西。可以帮助用户给没有上色的图片,快速完结上色的 AI 东西,上色效果广受好评,完全免费开箱即用。

《HelloGitHub》第 78 期

最后

假如你发现了 GitHub 上风趣的项目,就点击共享给大家伙吧。

以上便是本期的一切内容了,往期内容点击阅读

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