V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xueweihan
V2EX  ›  分享发现

开源月刊《HelloGitHub》第 77 期

  •  
  •   xueweihan · 2022-09-07 09:14:06 +08:00 · 2290 次点击
    这是一个创建于 810 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    简介

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

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

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


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

    C 项目

    1 、EasyLogger:超轻量级 C/C++ 日志库。占用资源少适合物联网和单片机等项目,功能简单容易上手,能够通过插件形式扩展功能。特性:

    • 支持终端、文件、串口、Flash 等多种输出方式
    • 支持多种操作系统
    • 线程安全
    • 不同颜色显示

    2 、foolrenderer:用 C 语言从零实现的软件渲染器。不用图形 API 仅用几千行 C 代码,实现了一套类似 OpenGL 的基本图形功能,以及应用于游戏开发的实时渲染技术,如阴影、切线空间法线映射、基于物理的材质系统等。该项目包含丰富的注释和数学计算推导过程的说明,可用于帮助理解和学习 GPU 的基本工作原理、基础渲染知识和着色器原理。

    3 、unicorn:轻量级的多平台、多架构 CPU 仿真器框架。基于 QEMU 开发的 CPU 模拟器,多用于逆向、执行恶意代码等。特点:

    • 多架构:ARM 、ARM64 、RISC-V 、TriCore 等
    • 多种编程语言:Python 、Rust 、Java 、Go 、JS 等
    • 支持各种级别的细粒度检测

    C# 项目

    4 、Bili.Uwp:非官方的 B 站桌面应用。基于 UWP 框架开发的哔哩哔哩 Windows 客户端,简单易用、界面清爽,适用于 Windows 10/11 桌面系统和 Xbox 。

    C++ 项目

    5 、Stockfish:强大的国际象棋引擎。它在众多国际象棋引擎评级列表中均名列前茅,棋艺基本上是吊打职业选手。它不仅可以对战,还支持棋局分析、评估棋艺,帮助国际象棋爱好者提升棋技。虽然这是一个引擎不能单独运行,但是社区提供了丰富的 GUI 软件下载就能用,甚至还可以用来解说国际象棋比赛。

    6 、annoy:用于近似最近邻搜索的算法库。近似最近邻(ANN)方法是指一系列解决最近邻查找问题的近似算法,多用于内容推荐、搜索等场景。该项目是封装好的 C++/Python Annoy 算法库。Annoy 是用树为数据结构的 ANN 算法实现,它通过随机投影创建二叉树构建索引提升查询效率,采用优先队列和“森林”查询方法提高准确率,实现海量数据下的实时搜索。

    from annoy import AnnoyIndex
    import random
    
    f = 40  # Length of item vector that will be indexed
    
    t = AnnoyIndex(f, 'angular')
    for i in range(1000):
        v = [random.gauss(0, 1) for z in range(f)]
        t.add_item(i, v)
    
    t.build(10) # 10 trees
    t.save('test.ann')
    
    # ...
    
    u = AnnoyIndex(f, 'angular')
    u.load('test.ann') # super fast, will just mmap the file
    print(u.get_nns_by_item(0, 1000)) # will find the 1000 nearest neighbors
    

    7 、xbmc:强大自由的媒体中心软件。这是一个媒体播放器软件,但折腾一下就是家庭媒体娱乐中心。它不仅支持播放本地视频,还能够安装各种插件以及播放网络存储设备(NAS)、投屏、直播、电视、播客等源。能够运行在 Linux 、macOS 、Windows 、Android 、iOS 等设备,界面支持中文更多功能等待你的挖掘。

    8 、RedPanda-CPP:易用的轻量级 C/C++ 集成开发环境。小熊猫 C++ 是一款专为编程新手和学生准备的 IDE ,它没有复杂的安装和配置过程开箱即用。支持开发所需的自动补全、语法高亮、编译运行和调试 C/C++ 程序等功能。不仅如此,它还整合了 ege 、海龟作图、raylib 等多种学习库,以及试题集和 OJ 功能,便于编程新手学习和使用。

    CSS 项目

    9 、Cnblogs-Theme-SimpleMemory:一款以阅读为主的博客园皮肤。博客园是一个博客平台,它支持用户自定义皮肤。该项目就是一款开源的博客园皮肤,文档有详细的安装步骤,一看就会立马就能用上。虽然皮肤会让博客的访问速度变慢一点,但是皮肤效果简洁好看值得一试。

    Go 项目

    10 、bk-cmdb:腾讯开源的配置平台。面向资产及应用的企业级配置管理平台,拥有主机管理、组织架构管理、通用权限管理、操作审计等功能。该项目的代码审核很严格,此举不仅保证了项目的代码质量,还提高了代码的可读性,推荐阅读源码。

    11 、nightingale:开源的云原生监控系统。支持 Docker 等多种部署方式,集数据采集、监控告警、可视化为一体的企业级监控平台。借助高性能时序库,可以满足数亿时间线的采集、存储和告警分析的场景。该项目已在上千家企业部署落地,经历了各种生产环境的检验。

    12 、CasaOS:简单易用的家庭云系统。只需一键即可安装在 NAS 、树莓派等各种家庭智能设备上,让你可以随时随地管理个人数据和设备。

    13 、ddns-go:简单易用的 DDNS 工具。众所周知域名解析中域名对应的是固定 IP ,但是本地机器的 IP 一般是动态的,所以无法完成域名解析实现公网访问。动态 DNS(DDNS) 技术就是用来解决动态 IP 的域名解析问题,该项目能够自动获取你本机的公网 IP ,并自动更新到域名服务商,从而实现公网访问本地机器。

    14 、colly:可能是最知名的 Go 爬虫框架。它拥有友好的 API 和丰富代码示例,短时间内即可上手。性能方面单核能达到 1K 请求 /秒,还可以轻松管理请求方式、间隔和最大并发数,功能强大且优雅。

    func main() {
    	c := colly.NewCollector()
    
    	// Find and visit all links
    	c.OnHTML("a[href]", func(e *colly.HTMLElement) {
    		e.Request.Visit(e.Attr("href"))
    	})
    
    	c.OnRequest(func(r *colly.Request) {
    		fmt.Println("Visiting", r.URL)
    	})
    
    	c.Visit("https://go-colly.org/")
    }
    

    Java 项目

    15 、plantuml:从文本描述生成 UML 图的工具。该项目可根据简单的文字描述画出 UML 图,支持顺序图、用例图、时序图等,除此之外还支持架构图、甘特图、思维导图、实体关系图等非 UML 图。支持在线、命令行、桌面应用等多种使用方式,可根据情况自行选择。

    java -jar plantuml.jar 文本文件
    将得到一个同名的 png 文件
    

    16 、doris:高性能的分析数据库。一个基于 MPP 架构的高性能、实时的分析型数据库,尤其是在海量数据和高并发场景下表现优异。目前,在众多知名企业中均有使用,可用来构建用户分析、日志检索分析、用户画像等应用。

    JavaScript 项目

    17 、koodo-reader:先进的电子书阅读工具。该阅读器支持 EPUB 、Kindle 、PDF 、漫画等多种常见文本格式,界面清爽功能丰富,拥有自定义字体、添加笔记、书签、划词翻译、导入图书、数据同步等功能。提供了 Windows 、macOS 和 Linux 客户端,还支持网页版可在线使用。

    18 、video.js:流行的 HTML5 视频播放器。一款开箱即用的 Web 视频播放器,它支持 HTML5 视频和流媒体格式,至今有超过 45 万个网站在使用它。

    19 、vue-idle-game:挂机放置类小游戏。用 Vue.js 写的在线 RPG 游戏,装备完全随机全靠刷,没有任务就是刷。

    20 、nocobase:易扩展的无代码开发平台。这个项目可以让你不写代码,仅通过点击和拖拽,分分钟搭建出协作和内部管理系统。项目还处于早期开发阶段,请勿用于生产环境。

    21 、van-blog:实用的一站式个人博客系统。一款简洁优雅的博客系统,追求极致响应速度和博客体验。前后台均为响应式,支持 Docker 一键部署。前台为静态页面并支持增量渲染,按需构建更新页面。拒绝花里胡哨的功能,专注于个人博客场景。

    Kotlin 项目

    22 、Unciv:一款类似《文明》的单机策略手游。仅 6M 的回合制策略游戏,玩家可以在游戏中模拟创建帝国文明,相当于开源版的《文明》安卓手游。虽然游戏画面是像素风格,但并未影响游戏体验,游戏支持中文、内容丰富可玩性非常高。

    Python 项目

    23 、dooit:命令行待办事项工具。用 Python 写的交互式命令行 todo 工具,操作简单支持快捷键和鼠标,界面精致可自定义主题和图标。

    24 、gradio:用 Python 为模型创建演示界面。这是一个用于构建机器学习和数据科学演示的 Python 库,它包含多种输入和展示的组件,使用起来极其方便,只用几行代码就可以创建出演示机器学习模型的 Web 界面。

    import gradio as gr
    def sketch_recognition(img):
        pass# Implement your sketch recognition model here...
    
    gr.Interface(fn=sketch_recognition, inputs="sketchpad", outputs="label").launch()
    

    25 、label-studio:开源的数据标注工具。支持音频、文本、图像、视频、时间序列等,多种类型数据的标注和注释工具。

    # 安装
    pip install -U label-studio
    # 运行
    label-studio
    

    26 、whoogle-search:自架纯净谷歌搜索服务。这是一个注重保护用户隐私的元搜索引擎,它会返回过滤掉广告后的 Google 搜索结果,而且不追踪 IP 、不存 Cookie 。支持 Docker 部署既简单又快速,适合注重隐私的用户。

    27 、nas-tools:NAS 媒体库资源自动整理工具。支持资源检索和订阅、媒体库整理和通知服务的 NAS 媒体库工具,这是一个用爱发电的项目,可以不爱但请不要伤害。

    28 、libtmux:用 Python 操作 tmux 的库。通过该项目就可以使用 Python 代码,自动操控 tmux 应用的会话、窗口、窗格。

    import libtmux
    server = libtmux.Server()
    server.list_sessions()
    # [Session($3 foo), Session($1 libtmux)]
    

    Rust 项目

    29 、cheats.rs:Rust 编程语言小抄。这里不仅有 Rust 基础语法,还有执行顺序详解和编写时需要关注的注意事项。如果你觉得还不够,该项目还包含了示例代码(EX)、书籍(BK)、标准库(STD) 等 Rust 相关资料。

    30 、py-spy:用 top 的方式分析 Python 程序性能的工具。一款 Python 程序性能分析工具,它可以让你在不重启程序或修改代码的情况,直观地看到 Python 程序中每个函数花费的时间。

    # 安装
    pip install py-spy
    
    # record 命令将配置文件记录到文件中,可用来生成火焰图
    py-spy record -o profile.svg --pid 进程 ID
    
    # top 命令实时展示函数花费时间
    py-spy top --pid 进程 ID
    
    # dump 命令显示每个 Python 线程的当前调用堆栈
    py-spy dump --pid 进程 ID
    

    31 、reqwest:Rust 语言的 HTTP 客户端。纯 Rust 编写的 HTTP 客户端,简单好用、支持异步、API 友好。

    use std::collections::HashMap;
    
    fn main() -> Result<(), Box<dyn std::error::Error>> {
        let resp = reqwest::blocking::get("https://httpbin.org/ip")?
            .json::<HashMap<String, String>>()?;
        println!("{:#?}", resp);
        Ok(())
    }
    

    Swift 项目

    32 、SwiftMessages:一个非常灵活的 iOS 消息库。用 Swift 编写的消息组件,它可以将消息灵活地显示在屏幕顶部、底部、中央,还提供了几款好看的布局和主题,拿来即用十分方便。

    // 例化一个消息视图
    let view = MessageView.viewFromNib(layout: .cardView)
    
    // 带有警告样式的主题消息元素
    view.configureTheme(.warning)
    
    // 增加阴影
    view.configureDropShadow()
    
    // 设置消息标题、正文和图标
    let iconText = ["🤔", "😳", "🙄", "😶"].randomElement()!
    view.configureContent(title: "Warning", body: "Consider yourself warned.", iconText: iconText)
    
    // 增加卡片周围的外部边距
    view.layoutMarginAdditions = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
    
    // 显示消息
    SwiftMessages.show(view: view)
    

    33 、MonitorControl:控制 macOS 外接显示器的工具。一款 macOS 多显示器控制工具,有了它就能够在菜单栏或使用快捷键,轻松地控制外接显示器的音量、亮度、对比度。

    其它

    34 、sql-injection-payload-list:关于 SQL 注入知识的集合。该项目解释了什么是 SQL 注入和一些常见的例子,以及如何发现、利用、防范各种 SQL 注入漏洞。

    35 、system-design:系统设计从入门到面试。该教程从基础协议讲起,然后介绍常见的数据库、消息队列等服务,最后是面试和实际的案例分析。内容循序渐进、图文并茂,强烈推荐大家学习。

    36 、all-contributors:表彰非代码贡献者的工具。这是一个 GitHub 机器人,可以在 issues 使用指令,将贡献者增添到项目首页,进行展示和表彰。

    37 、gibMacOS:macOS 系统下载工具。通过 Python 脚本直接下载 macOS 系统文件,可用来制作 macOS 安装镜像。

    38 、mackup:自动同步应用程序设置的工具。能够帮你快速备份、同步 macOS 和 Linux 上应用配置文件的工具,包括 Zsh 、Vim 、iTerm2 、MySQL 在内的多种开发相关应用,还支持 Dropbox 、iCloud 、Git 等丰富的同步方式。

    # 安装
    brew install mackup
    # 备份
    mackup backup
    # 恢复
    mackup restore
    

    开源书籍

    39 、EffectiveModernCppChinese:《 Effective Modern C++》中文翻译版。教你如何写出正确、高效、可维护的 C++ 代码的书,该项目为中文翻译版本(已完成)。

    40 、babel-handbook:Babel 使用手册。内容分为「用户手册」如何安装和配置 Babel 和「插件手册」如何为 Babel 创建插件 两部分。

    机器学习

    41 、mmdetection:OpenMMLab 开源的目标检测工具箱。基于 PyTorch 的目标检测开源工具箱,支持 Faster R-CNN 、Mask R-CNN 、RetinaNet 等主流算法。

    42 、fauxpilot:自建 GitHub Copilot 服务。它采用 NVIDIA 的 Triton Inference Server 的 SalesForce CodeGen 模型,自建 AI 编码辅助服务。支持接入 VSCode Copilot 插件,使用起来十分方便。

    最后

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

    4 条回复    2022-09-07 16:56:23 +08:00
    fenglangjuxu
        1
    fenglangjuxu  
       2022-09-07 09:25:07 +08:00 via iPhone
    挺好的
    jarence
        2
    jarence  
       2022-09-07 09:42:27 +08:00
    不错,支持一下。
    yuhangch
        3
    yuhangch  
       2022-09-07 10:09:17 +08:00
    OP 最近是不是对 NAS 感兴趣了,这期好多 NAS 相关的项目
    fish267
        4
    fish267  
       2022-09-07 16:56:23 +08:00
    很好呀,内容挺多
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1811 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 16:37 · PVG 00:37 · LAX 08:37 · JFK 11:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.