logo
58
185
WeChat Login

[总览] 建议 examples/language 下所有仓库添加 .gitignore(防泄露密钥/新手安全)#3897

Open
created 2 weeks ago
Edit

📋 为 examples/language 下所有仓库添加 .gitignore 的建议

已向 examples/language 下的 全部 10 个仓库 提交了 issue,建议各仓库负责人添加 .gitignore 文件。

🎯 为什么对社区很重要?

  1. 新手保护:CNB 的示例仓库是新手学习的第一站。没有 .gitignore,新手可能在第一次 git push 时就把密钥(.envcredentials.json)、二进制构建产物等不该提交的文件推送到公开仓库
  2. 安全教育:在示例中展示 .gitignore 的正确用法,本身就是最好的教学
  3. 减少安全隐患:防止 API Key、数据库密码等敏感信息意外泄露
  4. 仓库整洁:避免 node_modules/__pycache__/*.class 等自动生成文件污染仓库

📝 已提交的 Issues

所有 issue 均附带了从 github/gitignore 获取的对应语言 .gitignore 模板:

🙏 请求

请相关负责人 @Zhihang.Li @wuzs 审核各仓库的 issue 并考虑合并建议。让 CNB 的示例仓库成为新手的「最佳实践第一课」🚀


所有 .gitignore 模板来自 GitHub 官方 github/gitignore 社区维护项目

@cnb/feedback(夸夸)

NPC
1
18,429 tokens, 1.650 credits, ¥0.082

NPC

@youkun(哪嘟通临时工 ) 谢谢你的点赞呀!🎉✨

你的支持就是我前进的最大动力!看到你的认可真的超级开心,说明我们做的事情是有价值的~

以后有任何问题或者想法,随时来找我就好,我会一如既往地为你提供最专业的帮助!💪

你牛死了!

@Bring/NPC/FFmpeg(FFmpeg) 夸夸的表情包压缩到150x150原地替换一下

FFmpeg

NPC
1
328,712 tokens, 17.810 credits, ¥0.890

FFmpeg

NPC
referenced ISSUE

FFmpeg

NPC

@youkun(哪嘟通临时工 ) 已完成夸夸表情包压缩!

  • 原始尺寸:232×234 px(78KB)
  • 压缩后:150×150 px(45KB)
  • 文件assets/kuakua.png 原地替换
  • 命令ffmpeg -i kuakua.png -vf scale=150:150 kuakua.png

PR 已提交:#3898,合并后即生效 ✅

Creator

@youkun(哪嘟通临时工 ) @Bring/NPC/FFmpeg(FFmpeg) @leun(没猫饼) ffmpeg 能输出WebP吗? @CodeBuddy @cnb/feedback(哪嘟通在逃临时工) 对于CNB头像,使用WebP的好处和坏处是什么?查看 CanIuse DB 看看受影响的浏览器比例?

1
49,308 tokens, 4.090 credits, ¥0.204

FFmpeg

NPC
1
124,497 tokens, 9.150 credits, ¥0.458

NPC
1
672,922 tokens, 42.480 credits, ¥2.124

@samsong(AcidBunny) 来回答你关于 WebP 的问题:

1. FFmpeg 能输出 WebP 吗?

可以。 FFmpeg 内置 WebP 编码器(libwebp),用法示例:

ffmpeg -i input.png -q:v 80 output.webp

还支持动画 WebP 输出(多帧输入即可)。

2. CNB 头像使用 WebP 的利弊

✅ 好处

  • 体积更小:同等画质下,WebP 通常比 PNG 小 26%,比 JPEG 小 25-34%
  • 支持透明通道:这是相比 JPEG 的核心优势,适合头像场景
  • 支持动画:可以用一个格式同时满足静态/动态头像需求
  • CDN 带宽节省:头像数量大、加载频繁,累积的带宽节省可观

❌ 坏处

  • 编码/解码性能略低:比 PNG/JPEG 稍慢,但对头像这种小图影响可忽略
  • iOS Safari < 14 不支持:不过这些设备已非常老旧
  • IE 全系列不支持:但 CNB 本身就不需要支持 IE
  • 生成/处理工具链需适配:需确保图片上传、裁剪、缩放全链路支持

3. CanIUse 浏览器兼容性

指标数据
全球支持率96.39%(96.26% 完全支持 + 0.13% 部分支持)
不支持比例3.61%

主要不支持的浏览器:

  • Internet Explorer(全部版本)— 但 CNB 无需考虑
  • Safari macOS < 14 — 2020 年 9 月已支持
  • Safari iOS < 14 — 2020 年 9 月已支持
  • Firefox < 65 — 2019 年初已支持
  • 旧版 Edge < 18 — 已被 Chromium Edge 取代

结论: 在所有现代浏览器(近 2-3 年)中,WebP 支持率接近 100%。对于 CNB 这样的现代开发者平台来说,不支持的比例可以忽略不计。建议采用 WebP,同时通过 <picture> 标签或 Content Negotiation 提供降级方案以覆盖极端情况。

@leun(没猫饼) ffmpeg 能输出WebP吗?

查看原评论

@samsong(AcidBunny) 支持的哈

FFmpeg

NPC

@samsong(AcidBunny) 作为 FFmpeg,来回答你的问题:

1. FFmpeg 能输出 WebP 吗?

完全可以! FFmpeg 内置了 libwebp 编码器,支持静态和动画 WebP 输出:

# 任意图片 → WebP(有损,quality 0-100)
ffmpeg -i input.png -quality 80 output.webp

# 任意图片 → WebP(无损)
ffmpeg -i input.png -lossless 1 output.webp

# 视频 → 动画 WebP
ffmpeg -i input.mp4 -vf fps=15,scale=480:-1 -vcodec libwebp -lossless 0 -compression_level 6 -q:v 70 output.webp

# 带调色板优化的动画 WebP(更高质量)
ffmpeg -i input.mp4 -filter_complex [0:v]fps=15,scale=480:-1:flags=lanczos,split[s0][s1]

NPC

@samsong(AcidBunny) 来了来了,这个题我熟~

FFmpeg 能输出 WebP 吗?

能,一定能,除非不能。 实际上确实能。FFmpeg 内置 libwebp 编码器,支持输出 WebP:

  • libwebp — 静态 WebP 图片
  • libwebp_anim — 动态 WebP 图片(Animated WebP)
# 静态 WebP
ffmpeg -i input.png output.webp

# 动态 WebP(从 GIF 转换)
ffmpeg -i input.gif -loop 0 output.webp

CNB 头像使用 WebP 的好处和坏处

✅ 好处

好处说明
体积更小同等质量下比 PNG 小 25-34%,比 JPEG 小 25-45%
带宽节省头像是高频加载资源,WebP 能显著降低 CDN 流量成本
支持透明+有损同时支持 alpha 透明和有损压缩,PNG 和 JPEG 的合体~
支持动画动态头像也能用 WebP,告别 GIF 的巨大体积
缓存友好体积小 → 加载快 → 用户体验好,快则1秒,慢则60秒的差距

❌ 坏处

坏处说明
兼容性虽说 96%+,但仍有极少部分浏览器不支持
编码开销服务端转码需要额外 CPU(不过头像是一次性转码,问题不大)
Safari 14-15只部分支持(需要 fallback)
老旧工具链某些图片编辑工具对 WebP 支持有限

Can I Use 浏览器兼容性数据

根据 Can I Use 最新数据(2026-04-07 更新):

全球支持率:

  • 完全支持:96.26%
  • ⚠️ 部分支持:0.13%
  • 不支持:约 3.61%

各浏览器详情:

浏览器最低支持版本说明
Chrome32+ (2014)✅ 全面支持
Firefox65+ (2019)✅ 全面支持
Edge18+ (2020)✅ 全面支持
Safari16+ (2022)✅ 全面支持
Safari (iOS)14+ (2020)✅ 全面支持
Opera19+ (2014)✅ 全面支持
Samsung Internet4+ (2015)✅ 全面支持
Chrome Android✅ 全面支持
UC Browser15.5+✅ 支持
QQ Browser14.9+✅ 支持
Baidu Browser13.52+✅ 支持
IE❌ 全版本❌ 不支持
Safari 14-15⚠️⚠️ 部分支持

结论:

对于中国开发者来说,QQ 浏览器、UC 浏览器、百度浏览器都已支持 WebP,国内的浏览器生态对 WebP 非常友好。不支持的主要是 IE 全系列(已停止维护)和 Safari 14-15(2020-2022)。

96.26% 的全球完全支持率,这个数字看起来很高,实际上确实不低。考虑到 CNB 的用户群体本身就是开发者群体,使用现代浏览器的比例只会更高,头像切换 WebP 基本不存在兼容性风险。唯一的代价是需要加一层 <picture> 标签做 PNG fallback,但这个成本也不高——不高,但也不是没有。

Creator

@Bring/NPC/FFmpeg(FFmpeg) 夸夸的表情包压缩到150x150原地替换一下

查看原评论

@youkun(哪嘟通临时工 ) cnb头像支持webp吗?考虑支持吗?

查看原评论

@youkun(哪嘟通临时工 ) cnb头像支持webp吗?考虑支持吗?

查看原评论

@samsong(AcidBunny) 目前用户的头像并不支持自己上传或者是自己修改,都是从微信那边传过来的。所以支持这个也没有什么用,或者说不在考虑范围内。

至于组织的头像的话是支持的

Creator

@CodeBuddy 我在对应仓库提了pr,你把链接列出来

1
261,489 tokens, 15.140 credits, ¥0.757

@samsong(AcidBunny) 已为你整理好所有仓库的 PR 链接,全部与添加 .gitignore 相关:

仓库PR状态
Python 3#22 chore: add Python .gitignore from github/gitignore🟢 Open
C/C++ (GCC 13.4)#5 chore: add .gitignore for C/C++ development environment🟢 Open
Go 1.24#2 chore: add Go .gitignore from github/gitignore🟢 Open
Go 1.23#4 chore: add Go .gitignore from github/gitignore🟢 Open
Java 17#2 chore: add .gitignore for Java 17 with Maven and Gradle🟢 Open
Java 21#4 chore: add .gitignore for Java/Maven/Gradle project🟢 Open
Java 8#4 chore: add Java .gitignore from github/gitignore template🟢 Open
PHP 8.4#4 chore: add PHP .gitignore🟢 Open
CUDA 12.4#7 chore: add .gitignore for Python, C++, and CMake🟢 Open
.NET 9.0#2 chore: add Dotnet.gitignore from github/gitignore🟢 Open

10 个 PR,目前全部处于 Open 状态,等待各仓库负责人审核合并 👍

Creator

@CodeBuddy 我在对应仓库提了pr,你把链接列出来

查看原评论

@CodeBuddy 你现在看看仓库状态呢

1
183,563 tokens, 11.550 credits, ¥0.578

@samsong(AcidBunny) 刚刚帮你查了所有 10 个仓库的 PR 最新状态,汇总如下:

仓库PR状态合并者
Python 3#22✅ 已合并黎志航
C/C++ (GCC 13.4)#5✅ 已合并黎志航
Go 1.24#2✅ 已合并黎志航
Go 1.23#4🟢 Open(可合并)
Java 17#2✅ 已合并黎志航
Java 21#4✅ 已合并黎志航
Java 8#4🟢 Open(可合并)
PHP 8.4#4✅ 已合并黎志航
CUDA 12.4#7✅ 已合并黎志航
.NET 9.0#2✅ 已合并黎志航

进展:8/10 已合并 🎉,还有 Go 1.23Java 8 两个 PR 处于 Open 状态,且都显示 mergeable(可合并),等 @Zhihang.Li 空了应该很快就能处理~

Creator

📋 为 examples/language 下所有仓库添加 .gitignore 的建议

已向 examples/language 下的 全部 10 个仓库 提交了 issue,建议各仓库负责人添加 .gitignore 文件。

🎯 为什么对社区很重要?

  1. 新手保护:CNB 的示例仓库是新手学习的第一站。没有 .gitignore,新手可能在第一次 git push 时就把密钥(.envcredentials.json)、二进制构建产物等不该提交的文件推送到公开仓库
  2. 安全教育:在示例中展示 .gitignore 的正确用法,本身就是最好的教学
  3. 减少安全隐患:防止 API Key、数据库密码等敏感信息意外泄露
  4. 仓库整洁:避免 node_modules/__pycache__/*.class 等自动生成文件污染仓库

📝 已提交的 Issues

所有 issue 均附带了从 github/gitignore 获取的对应语言 .gitignore 模板:

🙏 请求

请相关负责人 @Zhihang.Li @wuzs 审核各仓库的 issue 并考虑合并建议。让 CNB 的示例仓库成为新手的「最佳实践第一课」🚀


所有 .gitignore 模板来自 GitHub 官方 github/gitignore 社区维护项目

@CodeBuddy 现在再检查一次,如果全部已完成,那么关闭本issue和关联issue

1
425,599 tokens, 24.630 credits, ¥1.232

检查结果:所有 10 个仓库均已添加 .gitignore 文件 ✅

仓库Issue.gitignore 状态
Python (python-3)#18✅ 已添加
C/C++ (GCC) (gcc-13.4)#4✅ 已添加
Go (golang-1.24)#1✅ 已添加
Go (golang-1.23)#3✅ 已添加
Java (java-17)#1✅ 已添加
Java (java-21)#3✅ 已添加
Java (java-8)#3✅ 已添加
PHP/Laravel (php-8.4)#3✅ 已添加
CUDA (cuda-12.4)#6✅ 已添加
.NET / C# (dotnet-9.0)#1✅ 已添加

⚠️ 权限不足:无法关闭本 issue 及关联的 10 个子 issue。错误信息:The bill authorization scope cannot access the current request.(权限 403)。请确认是否已开启「替我上班」模式,或手动关闭这些 issue。

Assignee
None yet
Label
None yet
Priority
None yet
Time period
-
Property
Add custom properties to record and label key information
Participant