• 《HelloGitHub》第 78 期


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

    d44958c3db5dda5f756dd442ed953c3a.png

    简介

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

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

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


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

    C 项目

    1、gifsicle:压缩和编辑 GIF 图片的工具。它是一款体积小、功能强大的 GIF 图片处理工具,不仅可以压缩 GIF 图片,还支持合并多个 GIF、导出所有帧、查看图片信息、减少帧数、设置循环次数、延迟、编辑某一帧等功能。

    1. # 安装
    2. brew install gifsicle
    3. # 查看
    4. gifsicle -I input.gif | head
    5. # 优化/压缩
    6. gifsicle input.gif -O3 -o output.gif

    地址:https://github.com/kohler/gifsicle

    2、CPU-X:一款显示电脑 CPU、主板等信息的免费工具。能够显示设备的 CPU、主板、内存、显卡、操作系统等信息,支持 GUI 和命令行两种启动方式,适用于 Linux 和 FreeBSD 操作系统。

    0fcdd26b2d4468001a12044a3f3345e8.png

    地址:https://github.com/X0rg/CPU-X

    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 配合支持高并发网络编程

    e5ae6a8923cebedcd22d65763bef964a.png

    地址:https://github.com/acl-dev/acl

    C# 项目

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

    02cb97d88bc8cb8428640695f94ffafa.png

    地址:https://github.com/XCharts-Team/XCharts

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

    930e858d0c1fbea3b892ad6cc4f6ec62.png

    地址:https://github.com/t1m0thyj/WinDynamicDesktop

    6、Text-Grab:一个轻量级的 Windows OCR 工具。它基于 Windows 10 系统自带的 OCR API 实现,可以将看到的所有文字转化成文本,而且启动速度快、无需常驻后台、可离线使用。

    01518ee15d10845b24235c10942d7a6b.gif

    地址:https://github.com/TheJoeFin/Text-Grab

    C++ 项目

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

    523ee48246883f1b90fa74d994e660a5.png

    地址:https://github.com/scarsty/kys-cpp

    8、Cemu:任天堂 Wii U 游戏机模拟器。用 C++ 编写的开源 Wii U 模拟器,能够运行绝大多数的 Wii U 游戏和自制游戏,支持 Windows、Linux、macOS 操作系统。

    96503e558aa4aef457046fde7261f5bc.png

    地址:https://github.com/cemu-project/Cemu

    9、wiliwili:专为手柄控制设计的第三方 B 站客户端。一个用 C++ 编写的适用于 Nintendo Switch 的 B 站客户端,拥有接近 B 站官方 PC 客户端的浏览体验,同时支持触屏与手柄按键操控。

    8ae82a2966b8fb43b3169a7459f13da0.png

    地址:https://github.com/xfangfang/wiliwili

    10、aseprite:开源、专业的像素画编辑软件。一款主要用于像素画和 Sprite 动画的图像编辑软件,它拥有图层、自由手绘模式、阴影墨水、自定义笔刷、轮廓线、宽像素、命令行界面、Lua 脚本等特色功能。该软件虽然专业版收费但并不贵,也可选择免费版但无法保存作品。

    f6d983f2b208253eb26c99db896686ee.gif

    地址:https://github.com/aseprite/aseprite

    CSS 项目

    11、30diasDeCSS:在 30 天内用 HTML 和 CSS 创建 30 个迷你项目的挑战。该项目包含了 30 个用 HTML+CSS 构建的迷你项目,每个项目通过动图直观地展示了实现的效果,不仅包含全部源码还指出了用到的知识点。

    4193804e3f824507ef224c5aca99aeff.gif

    地址:https://github.com/MilenaCarecho/30diasDeCSS

    Go 项目

    12、HackBrowserData:一款浏览器数据导出工具。能够导出本地浏览器的密码、历史记录、Cookie、书签、下载记录、localStorage 等数据的命令行工具,支持多平台下的多种主流浏览器。

    4866bf03bad28db3cb2e4f6c9f6882a4.png

    地址:https://github.com/moonD4rk/HackBrowserData

    13、fq:一条命令查看二进制文件。用于查看和处理二进制文件的命令行工具,安装简单使用方便,支持 mp4、flac、mp3、jpeg 等多种格式的文件。

    6597b2cd1fe929598542199d79658eb9.png

    地址:https://github.com/wader/fq

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

    1. mux := http.NewServeMux()
    2. statsviz.Register(mux)
    5c9c468615c71b950cda37f580827075.png

    地址:https://github.com/arl/statsviz

    15、v2:极简的 feed 订阅工具。该项目的“简”是由内而外,内部代码部分不使用 Web 框架和 ORM 仅采用 Go+PostgreSQL+JS 实现,界面朴实无华、功能精简实用,支持快速自建、源管理、自动获取内容、快捷键、用户系统等,这一切不多不少刚刚好。

    75c53a4e17d4c93c80fc561a8b1f5cc6.png

    地址:https://github.com/miniflux/v2

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

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

    地址:https://github.com/spf13/cobra

    Java 项目

    17、hippo4j:带有监控报警功能的动态线程池框架。支持运行时动态变更线程池参数,可实时查看线程池运行时数据,适配 RocketMQ、RabbitMQ、Tomcat 等中间件,解决了线程池参数不易评估以及运行时黑盒的问题。

    1. @Bean
    2. @DynamicThreadPool
    3. public Executor sendMessageConsumeDynamicThreadPool() {
    4.     String threadPoolId = "send-message-consume";
    5.     ThreadPoolExecutor sendMessageConsume = ThreadPoolBuilder.builder()
    6.             .threadPoolId(threadPoolId)
    7.             .threadFactory(threadPoolId)
    8.             .dynamicPool()
    9.             .build();
    10.     return sendMessageConsume;
    11. }

    地址:https://github.com/opengoofy/hippo4j

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

    955f024b0a51aa28603900e724c04ff9.png

    地址:https://github.com/NationalSecurityAgency/ghidra

    19、caffeine:Java 的高性能缓存库。借鉴了 Guava 和 ConcurrentLinkedHashMap 的设计经验,青出于蓝而胜于蓝的 Java 本地缓存库,拥有更高的缓存命中率和更快的读写速度。

    1. LoadingCache graphs = Caffeine.newBuilder()
    2.     .maximumSize(10_000)
    3.     .expireAfterWrite(Duration.ofMinutes(5))
    4.     .refreshAfterWrite(Duration.ofMinutes(1))
    5.     .build(key -> createExpensiveGraph(key));
    dde29f462eb4b88c7b9b9a366248d2ad.png

    地址:https://github.com/ben-manes/caffeine

    20、solon:一款 Java 轻量级应用开发框架。可用来快速开发 Java Web 项目,主框架仅 0.1 MB。类似 Python Flask 的微型框架,提倡按需组合插件。

    1. @Controller
    2. public class App {
    3.     public static void main(String[] args) {
    4.         Solon.start(App.class, args, app -> {
    5.             //手写模式
    6.             app.get("/hello1", ctx -> ctx.output("Hello world!"));
    7.         });
    8.     }
    9.     //注解模式
    10.     @Get
    11.     @Socket
    12.     @Mapping("/hello2")
    13.     public String hello2(@Param(defaultValue = "world") String name) {
    14.         return String.format("Hello %s!", name);
    15.     }
    16. }

    地址:https://github.com/noear/solon

    JavaScript 项目

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

    1b6a452444590445bca34683dfa6d0eb.png

    地址:https://github.com/streetwriters/notesnook

    22、jsoncrack.com:优雅的 JSON 数据可视化工具。该项目不是简单的展示 JSON 数据,而是将其转化为类似脑图的形式,支持放大/缩小、展开/收缩、搜索节点、导出图片等操作,还可以快速部署成服务。

    outside_default.png

    地址:https://github.com/AykutSarac/jsoncrack.com

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

    06533647d032e4f08c6489317a5db771.gif

    地址:https://github.com/itorr/sakana

    24、m3u8-downloader:m3u8 视频在线提取工具。m3u8 视频格式常用于直播服务,其原理是将完整的视频拆分成多个 .ts 视频碎片,其中 .m3u8 文件会详细记录每个视频片段的地址。视频播放时,会先读取 .m3u8 文件,再逐个下载播放 .ts 视频片段。该项目就是基于上述原理实现的 m3u8 视频提取工具,使用方便无需安装打开网页即可下载完整的视频。

    1. // 下载整合后的 TS 文件
    2. downloadFile(fileDataList, fileName, fileType) {
    3.     this.tips = 'ts 碎片整合中,请留意浏览器下载'
    4.     const fileBlob = new Blob(fileDataList, { type'video/MP2T' }) // 创建一个 Blob 对象,并设置文件的 MIME 类型
    5.     const a = document.createElement('a')
    6.     a.download = fileName + '.' + fileType
    7.     a.href = URL.createObjectURL(fileBlob)
    8.     a.style.display = 'none'
    9.     document.body.appendChild(a)
    10.     a.click()
    11.     a.remove()
    12. }
    9d9c6de5d195e1228b85982a94e63a54.png

    地址:https://github.com/Momo707577045/m3u8-downloader

    25、tldraw:一款实用的微型在线绘图工具。这是一个”麻雀虽小,五脏俱全“的绘图工具,支持插入便签、保存进度、生成图片、多人协作等实用的功能。

    4c845293b9ff537bcf9dbcfd36ab5718.png

    地址:https://github.com/tldraw/tldraw

    PHP 项目

    26、Piwigo:一款开源在线相册应用。采用 PHP+MySQL 开发的管理照片的 Web 项目,它功能强大安装简单,拥有丰富的主题和灵活的插件,可轻松完成个性化定制。支持 iOS 和 Android 客户端,让你可以随时随地上传、管理照片。

    3e1436c30deb0de44f85f2012734bcd4.jpeg

    地址:https://github.com/Piwigo/Piwigo

    Python 项目

    27、pendulum:让 Python 处理时间更简单的库。该项目不仅提供了更加简单易用的 API,而且还兼容 datetime 标准库,可以直接替代码中的 datetime 对象。它提供了很多人性化的时间处理方式,比如时间加减、多长时间的描述以及时区的处理等等。

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

    地址:https://github.com/sdispater/pendulum

    28、pg_activity:类似 top 的 PostgreSQL 数据库命令行监控工具。一条命令就能实时查看 PostgreSQL 数据库状态和每条 SQL 语句执行详情、耗时、占用资源、读/写速度等信息的工具。

    e02c159cfa4c992c41c2dd6fb75d0e56.png

    地址:https://github.com/dalibo/pg_activity

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

    afa61a183a31c4ecf1968d9fbacaa360.png

    地址:https://github.com/CharlesPikachu/Games

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

    1. # 安装
    2. pip install django-silk
    3. # 中间件的方式使用
    4. MIDDLEWARE = [
    5.     ...
    6.     'silk.middleware.SilkyMiddleware',
    7.     ...
    8. ]
    9. INSTALLED_APPS = (
    10.     ...
    11.     'silk'
    12. )
    7ac999fd6b7501e2e6396181a14b3e9b.png

    地址:https://github.com/jazzband/django-silk

    31、OCRmyPDF:可以把 PDF 文件变成可搜索文件的工具。它使用 Tesseract OCR 引擎,将 PDF 的内容识别成文本,然后给 PDF 文件增加 OCR 文本层。从而实现可搜索和复制 PDF 的内容,已支持 100 多种语言。

    87b5883f7547765bc59dfb0e87170252.png

    地址:https://github.com/ocrmypdf/OCRmyPDF

    Ruby 项目

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

    ca4cacd0ee0f5784287b6390549e6dba.png

    地址:https://github.com/wpscanteam/wpscan

    Rust 项目

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

    60d4d09c21dc423a719b07045a65d33c.gif

    地址:https://github.com/espanso/espanso

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

    地址:https://github.com/Dhghomon/easy_rust

    Swift 项目

    35、TinyPNG4Mac:适用于 macOS 的 TinyPNG 第三方客户端。TinyPNG 是一个提供免费图像压缩服务的网站,该项目是其第三方 macOS 客户端,可以让你无需打开浏览器、无需手动下载图片,仅通过简单的拖拽就能完成对 JPEG、PNG 图片的压缩。

    bd4130f2758b8270d5121b732e5dc1f6.png

    地址:https://github.com/kyleduo/TinyPNG4Mac

    其它

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

    地址:https://github.com/WebKit/WebKit

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

    b57fa023468441811b8a9e8e5ffa5cb6.png

    地址:https://github.com/missing-semester/missing-semester

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

    26034fa42654a24402372153a694d772.jpeg

    地址:https://github.com/dunwu/nginx-tutorial

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

    2734949b28c540f383e837488c3025f8.png

    地址:https://github.com/1c7/Crash-Course-Computer-Science-Chinese

    40、bats-core:Bash 自动化测试系统。它通过测试用例验证 Bash 脚本的运行结果是否符合预期,原理是基于 Bash 的 errexit(set -e) 选项判断测试用例的执行成功与否。

    1. #!/usr/bin/env bats
    2. @test "addition using bc" {
    3.   result="$(echo 2+2 | bc)"
    4.   [ "$result" -eq 4 ]
    5. }
    6. @test "addition using dc" {
    7.   result="$(echo 2 2+p | dc)"
    8.   [ "$result" -eq 4 ]
    9. }

    地址:https://github.com/bats-core/bats-core

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

    f765265e52b8305acc09cffa5d0525cb.png

    地址:https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra

    开源书籍

    42、patterns-of-distributed-systems:《分布式系统模式》中文版。该书尝试将副本同步、可靠性、网络延迟等分布式系统共性问题归纳总结,并参考像 Kafka、Zookeeper 等分布式系统的实现过程,给出分布式系统中同类问题的通用解决方法/模式。

    13c5ba3a07f62fe67692f85d18907f2a.png

    地址:https://github.com/dreamhead/patterns-of-distributed-systems

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

    4db8132850ba0954491590a6c24dcb75.png

    地址:https://github.com/andkret/Cookbook

    机器学习

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

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

    地址:https://github.com/CompVis/stable-diffusion

    45、style2paints:一款给线稿上色的 AI 辅助工具。能够帮助用户给没有上色的图片,快速完成上色的 AI 工具,上色效果广受好评,完全免费开箱即用。

    bd9afc838302bd26f27d1a0d587490cc.png

    地址:https://github.com/lllyasviel/style2paints

    最后

    以上就是本期的所有内容,还没看过瘾?点击阅读往期内容。

    如果安装或运行开源项目遇到问题,就看这篇文章吧!

    如果您觉得本期内容还不错的话 求赞、求分享,有了您的支持 HelloGitHub 一定会变得更好!❤️

    - END -

    👆 关注「HelloGitHub」收到第一时间的更新👆

  • 相关阅读:
    【vscode】本地配置和根据不同项目不同的vscode配置
    Faster R-CNN详解
    windows下sqlite的.dll生成.lib和c编程
    Linux之管道、环境变量与常用命令
    屏幕控制(2)
    NameNode (NN) 和SecondaryNameNode (2NN)工作机制
    SpringCloudGateway--过滤器(内置filter)
    系统太多,多账号互通如何实现?
    软件架构风格
    软考高项——计算专题
  • 原文地址:https://blog.csdn.net/a419240016/article/details/127099587