v2ex_hot_2025-12-30

V2EX 热门帖子

1. AI 编程大行其道, 如何避免项目密钥泄露?

问题 1: 因为早先没有意识到. 导致已经在好几个老项目中使用了 claude-code, gemini 这些工具, 所有项目文件都被扫过了. 这些模型会进行数据脱敏吗? 如果密钥泄露了非常棘手啊!

问题 2: 开始新项目, 怎么避免项目配置文件中的密钥泄露? 有没有比较工程化又简单的方法?

作者: stinkytofux | 发布时间: 2025-12-29 07:38


2. Termius 的手机版真的太蠢了

手机的键盘用不了 esc 。

AI 功能更奇葩,我叫它按下 esc ,它回复 echo “按下 esc”。

作者: neword | 发布时间: 2025-12-29 16:58


3. 2025 年末,求安卓旗舰推荐

这两天把两部备用机爱回收了,准备入一个新的安卓旗舰。需求如下:

续航要比 iPhone PM 顶很多; 系统好用,之前用过 colorOS 和 magicOS ; 最好跟 mac 、ios 互传互联方便点; 拍照好的,受够 iPhone 原生相机了,逼着用第三方拍照 App ; 马达舒服点的,喜欢哒哒哒,嗡嗡嗡勿扰。

最后一点主要是因为今天出去摸了一下小米 17ultra 徕卡版,拧那个光圈的触感稍微有点嗡嗡的,感觉不是很好。

作者: edinina | 发布时间: 2025-12-29 13:43


4. 刚买了个安卓机已 root,请问大佬们有什么常用和好玩的 LSP 模块推荐下啊

我不玩游戏,就日常使用,机型 oppo x8s ,坐等大佬们推荐。

作者: a394675143 | 发布时间: 2025-12-29 02:47


5. 发现了一个极度臃肿的项目

https://github.com/vernesong/OpenClash

这是 openwrt 上的 clash 客户端,因为跑路风险较高,为了防止删库跑路,我在自建的 gitea 上镜像了这个项目,发现一个路由器插件的项目竟然慢慢涨到了 72G 之多,比较好奇这个项目发生了啥。

https://imgur.com/a/5FxQgK2

去年创建镜像的时候也有 50G 了

作者: JerryYuan | 发布时间: 2025-12-29 17:05


6. 探讨一下使用 AI 开发和维护大型项目的经验

最近在尝试使用 AI 来构建一个比较大型的工程,用了几个 Agent 分别扮演设计、编码、测试、审核的角色,开发了一段时间以后感觉非常的力不从心,对整体项目的掌控感越来越差,感觉随时都有可能会在我预料不到的地方爆炸一下。想请教一下大家有没有什么好的想法或者思路呀。

作者: ktyang | 发布时间: 2025-12-29 03:22


7. AI coding 是否会导致小众技术栈逐渐消亡

流行的技术栈会有更多的训练数据,更多的训练数据使得对应技术栈的代码生成效果更好,形成正向循环; 除开那些无法替代的小众技术栈,剩下的生存空间会进一步被挤压;越小众,AI coding 效果越烂,形成负面循环。

作者: lemoncoconut | 发布时间: 2025-12-29 08:08


8. 这种活会不会有法律风险?游戏挂机代练系统,后台是用脚本代练的,我是负责前端

我负责前端,他那想让我长期负责前端,差不多每天 1 个小时,月 3000 块钱 我担心是否有法律风险,发给我是通过微信转账 聊天通过 tg ,但是有事喊我肯定还是从微信 他还是我同学 怎么办,有点纠结

作者: virjay | 发布时间: 2025-12-29 01:58


9. Apple TV+ app 的这个轮播和焦点是如何做到丝般顺滑的配合?

跟 GPT / Gemini / Claude 斗智斗勇好几个日日夜夜都没能摸清楚里面的门道,可能 AI 在一些小众的技术细节上还是力不从心,特别是 tvOS 上的焦点控制。只能来请教熟悉 tvOS / SwiftUI 的大佬们了。

用文字不太好描述,做了个图:

想请教:

  1. Apple TV 上的 Apple TV+ app 顶部 Hero (大图背景)和上层的按钮可能是用什么 SDK 实现的?( Tabview ? ScrollView ?普通的 ZStack ?)
  2. 它是怎么做到焦点在最左侧的“Renew Apple TV”按钮上时,既可以向左切换影片,又能仅在到达最左侧第一部影片时才呼出侧边栏 (侧边栏应该是.tabViewStyle(.sidebarAdaptable))?

我尝试了:

  • 用 ScrollView 或 Tabview 。但这两种方式似乎只适合单个焦点的场景,对于这种有多个按钮的情况无从下手,我甚至试了让实际焦点透明,在上层按钮上模拟焦点行为,但总是会遇到各种问题,特别是快速滑动的情况下;
  • 用普通的 ZStack 和 index 索引驱动。通过 onMoveCommand 拦截左右按键,但发现系统 TabView 的优先级更高,总是会在向左切影片时呼出侧边栏;又尝试在最左侧添加了“幽灵焦点”,这样几乎完美,但在快速向左切影片时,侧边栏还是会一直闪现从而露馅。

折腾得心累,我甚至怀疑 Apple 是不是用了什么私有 SDK 或者什么 UIKit 的特性来实现。

还请大佬们不吝赐教。

作者: Dukewill | 发布时间: 2025-12-29 13:48


10. 求教,你们有这么多 AI 编程的需求量么

看了下老哥们,天天 token 用完了,次数用完。想问下你们场景真的这么多么,或者每天的工作量真这么大么? 想问下大家的场景。 日常搭顺风车的老哥,接私活。用 AI 也天天吐槽次数不够,或者在那等待,排队。但是停下来,需要量也还行。

作者: collery | 发布时间: 2025-12-29 10:02


11. 请问现在有什么低成本使用 cursor 的办法吗

或者有其他的替代方案

作者: rqxiao | 发布时间: 2025-12-29 01:21


12. [开源] Smart Ticker - 做了个有意思的文本差异替换滚动组件,支持任意字符

支持中英、数字、字母、符号、Emoji 等多种字符,基于 Levenshtein diff 算法,适用于 React/Vue

官网演示: https://tombcato.github.io/smart-ticker

开源地址: https://github.com/tombcato/smart-ticker/

效果展示(gif 有点掉帧,去官网上看比较丝滑): Smart Ticker Demo Smart Ticker Demo

✨ 特性

|
—|—
🌏 多字符集支持
支持中英、数字、Emoji 等混合滚动,基于 Unicode 宽度自动调整间距 | 🧠 智能差异动画
Levenshtein 算法计算最小变更路径,相同的字符保持静止
⚡ 平滑中断
动画过程中值突变时,从当前动态位置无缝流向新目标 | 📈 丰富动效
内置 linear, bounce, easeInOut 等缓动,支持 charWidth 微调
🦄 双框架支持
提供 React (Hooks) 和 Vue 3 (Composition) 组件,API 统一 | 🚀 极致性能
基于 RAF 驱动,无多余 DOM 操作,适合高频数据流场景

作者: hibear | 发布时间: 2025-12-29 12:37


13. 自建内网高并发纯 https 协议(要卸载 ssl)负载均衡器, haproxy 和 nginx 哪个更合适一点?

包含普通 http 和 websocket 要在负载均衡器卸载 ssl

日最高并发 10000, 负载均衡器起三个实例, 本身不分担负载, 主备备, 只有主承担流量, 备纯热备

每个业务后端每日最高并发 10000 连接数 每天热门 6 小平均连接数 8000,websocket 持续无数据连接占比超过 60%(基本平均每个 websocket 连接每分钟发一条 msg 都达不到, 是很少比例的控制指令),剩下的是频繁 ajax 小请求

实践用哪个好一点 大概需要多少内存

不能上容器编排 就得单机搞

作者: realpg | 发布时间: 2025-12-29 06:15


14. 想学 TA(技术美术)以后就业,报课要两万块值得吗

现在我只会点 unity C#。。。感觉找不到工作了,请问 TA 教学+就业指导这个值得付款报名嘛,谢谢各位。卖课的老师说现在报名,可以赶上明年的秋招。课程价格差不多两万

作者: zhouzoki | 发布时间: 2025-12-29 11:38


15. 公司服务器不允许随意访问公网的情况下,调用外部接口会使用什么方式放通

公司现在的所有服务器都不能直接访问公网,想要进行管控,使用了 APISIX 作为反代,但是发现在实施过程中发现反代之后的域名在某些前面调用中因为域名改变无法成功,使用 SDK 的调用因为源码不易修改,调用的域名也没法修改导致无法使用这种反代网关,想要问下大家公司都是怎么做的

作者: zanelee | 发布时间: 2025-12-29 06:30


16. 花了一天时间搞了一个后台管理系统的架子,希望各位大佬们提点一下

https://github.com/smileluck/SmileX-Fastapi-Cloud

最近搞了 python+fastapi 的管理系统,虽然只写了个登录,还没有实现相关的系统管理部分。

后续是计划用这个作为快速试错的后台管理系统,方便自己开发的东西接入做副业等。

在完成系统管理部分和前端之前,想问一下大佬们有没有什么意见提点一下小弟。

作者: zsmile | 发布时间: 2025-12-29 09:43


17. Google Antigravity 是不是太脆弱了?

看大家讨论 Google Antigravity 很多,也想试试,发现并没有那么简单。

好不容易搞定了 TUN 模式,能登陆成功。 但是 AI 环境又搞不定。

服务器 架构 Antigravity 失败原因 VS Code 是否会失败

RHEL x86_64 (旧) ❌ CPU 不支持 AVX2 → SIGILL ✔ VS Code 不需要 AVX2

oracle3 ARM64 ❌ Antigravity 不支持 ARM ✔ VS Code 支持 ARM

oracle1 x86_64 ❌ SSH 禁止端口转发 ✔ VS Code 不需要 SOCKS 动态转发

还是接着用 vscode + remote ssh 吧。

作者: sn0wdr1am | 发布时间: 2025-12-29 01:37


18. 我看有人说 win11 正常安装得系统, 其实都是运行在虚拟机上的

所以性能慢, 即便配置高都有卡顿

真的假的, 这么大问题没人提阿

关键是, 关不掉这种默认虚拟机方式

我反正以前装过两次 win11, 很快受不了都换成 win10 了, 近 3,4 年再没试过

作者: iorilu | 发布时间: 2025-12-28 11:52


19. 请教各位大佬,关于国内 APP 备案,ios 的签名版本证书 1 年后到期了,重新签了后 需要重新提交 app 备案信息吗?

作者: ggbond2233 | 发布时间: 2025-12-29 01:58


20. AI 很火,自己捣鼓了一个 AI 导航类网站

RT 现在最火的应该就是 AI 这个行业了吧! AI 相关的网站已经上万个了吧! 自己捣鼓了一个 AI 导航类网站 https://aixq.top/

作者: dj8jj | 发布时间: 2025-12-29 07:26


21. 使用 Cursor 进行 AI 编程的年度总结

原文地址: https://glumes.com/cursor-annual-review/

到了年末,各种软件的年度总结都来了,像听音乐的、看书的、点外卖的都有年度总结,这都是和生活息息相关的。

但这次 Cursor 的年度总结有点不一样,这可是和工作紧密相关的,能反映出 AI 使用在工作中是怎样的状况。

先上图,看看这一年 AI 用的怎么样:

可以看出,已经使用 Cursor 242 天了,在这 8 个月的时间里,消耗了 12 亿的 Token 数量 ,这量还是挺大的,相当于写了几百万行代码(但实际肯定没写这么多),并且还用了 3.3K 次的 Agents 调用和 1.3K 次的 Tab 补全,可以看出我的使用还是挺频繁的。

在模型上,我常用的是 Auto ,也就是自由选择模型的模式,然后才是 Claude 4 Sonnet 模型。能用 Claude 4 Sonnet 当然最好,但是因为费用问题 ,只能降档次了。

通过 AI 的年度总结,分享一些自己的看法。

看着我 AI 编程用的很多,但其实我一分钱没花 ,不论是购买账号还是使用各种模型,基本不用为这些流程操心,安心用就完事了。

这是因为就职的公司还算可以,愿意花钱来让员工使用 AI 辅助编程,所以公司有关部门就把这些前置流程都给你一手操办了,剩下的就是登录账号使用就行,千万不要小看这一点

以我在各种群里面、各种社区、各种论坛的观察上来看,有相当于一部分程序员朋友们还没有用上 AI 编程,尤其是 Cursor 这种导入代码直接编写的,很多还是在用豆包、元宝这种对话式进行 AI 编程,为什么会有这种现象,我觉得有两个原因:

  1. 能不能用上 Cursor 。

众所众知,Cursor 是需要科学上网的,有些服务在咱们这不能用的,光这一点都过滤很多人了。另外有些公司、有些部门为了代码保密,规定不让用 Cursor ,这也没办法。

  1. 肯不肯付费 Cursor 。

谈钱伤感情,但是一个月 20 、60 、100 美金的费用确实不想掏,能白嫖肯定最好了,这又过滤了一些人。

所以你看,想要普及 AI 编程,其实任重道远。

像好一点的公司,互联网大厂愿意掏这个钱,员工能够无限制的使用 AI ,这对于生产力的提高是非常有帮助的,开发效率直线提升。而没有使用 AI 编程的朋友们,有点停留在古法编程的阶段,还在一行一行的手敲搬砖。

这有点像是 AI 带来的一波信息差,或者说是资源不平等

大厂给员工提供免费 AI 算力,员工每天 Vibe Coding , 网络上分享着 AI 编程带来的各种新奇,沉浸其中,不亦乐乎。

小厂员工被网络环境、开发费用拒之门外,依旧手敲代码,百度搜索,群里提问,总是找不到问题所在。

AI 编程带来的差距尚且如此,可想以后 AI 在各方面更加普及了,对工作和生活会带来多大差距,大概就是农耕时代和工业时代的差距吧。

如何高效的使用 Cursor ,以我这几个月的经验来看,没啥硬核技巧,关键还是在于模型。

俗话说,在绝对的力量面前,任何技巧都是徒劳的,这个道理放在 AI 编程也适用。

能够用上更强大的模型,比优化一百倍 Prompt 都更重要,而太差的模型只能起到劝退的作用,就好比和一个傻子交流,说的再好听,人家也不懂啊,还能指望回答什么。

而模型的关键,在于充值,充值让你变强,用上更好的模型,突破 Token 的限制,获得更精准的回答。

普通人充值 AI ,使用更好的 AI 模型,而企业为了获得更多的 AI 算力资源,斥巨资购买芯片,都是类似道理吧,大力出奇迹。

但是,AI 毕竟还是辅助编程,不是自动编程 。这和目前新能源汽车都宣传的辅助驾驶有点类似,想要完全依靠 AI 来完成工作还是不太现实的,尤其是亲自实践踩了几次坑之后。

AI 太强大,一次性返回的 Token 数量太多了,而且运行起来还正常能跑,这还犹豫什么,直接就确认可行了。

但正因如此,没有制定好最初的方案框架,全由 AI 来主导,然后也没有对应的文档记录留下,等切换了环境之后,AI 的记忆有限,完全不知道之前的思路是啥了,又得重新捋一下方案设计,这一来二去,技术方案有点漂移,留下了不少隐患。为此,给 AI 擦屁股,还解了不少线上 Bug 。

总之,今年的 AI 使用体验还是非常不错的,想必以后的编程工作也是离不开 AI 了。

虽说也会焦虑迟早被 AI 给淘汰了,但是能淘汰我的事物太多了,AI 还排不上号,终归还是人生苦短,及时行乐。

作者: glumess | 发布时间: 2025-12-29 08:25


22. AI Coding 时代,前端 vanilla js 是否会复兴?

现在 AI LLM 生成的代码,不使用任何框架(如 React ,VUE ),而是直接用 vanilla js (原生 JS )的 HTML 前端代码稳定性最高,很少出现问题。而且简单易部署,对于一些小型前端需求的工具页面,复制一个 html 就能用。

既然都是 AI 生产的,是否前端的 vanilla js 开发模式又会复兴?回到 20 年前那样,只不过当时是人来写原生 js 的网页代码,现在全部丢给 ai , 人类只要氛围编程提出需求,管理好提示词即可,不用再去持续的纠结各种前端框架大战了?

作者: lchynn | 发布时间: 2025-12-29 04:14


23. 为什么 LLM 写的前端总是有一种廉价感?特别爱用蓝紫色渐变背景、无关 emoji

大厂纯 LLM 生成网站案例 一眼 AI 风格 aHR0cHM6Ly93d3cuYXR0LmNvbS5teC9kZXNibG9xdWVvLw==

作者: drymonfidelia | 发布时间: 2025-12-28 17:56


24. 多实例 springboot 微服务重启时 Counter 类型指标重置问题

使用 springboot 集成 micrometer 实现自定义 prometheus 指标。 假如在多实例的商城系统中存在一个用于统计商品查看次数的指标,名为 item_view_count ,label:item_idinstance_id 。 当服务重启时,按照 micrometer 的默认行为,这个指标会被置为 0 。

对于这个行为我想到了两种方案。

  1. 将这个值持久化,并且在第一次创建指标时加载。
  2. 服务重启后使用新的 instance_id ,这样在做 sum 统计时不会被重置影响

各位都是如何处理这个问题呢?

作者: workWithMusic | 发布时间: 2025-12-29 04:41


25. trae 的会员 600 次几天就用完了,现在咋办呢?

原本以为 600 次是快速回复次数,用完还可以排队使用,结果用完再也无法用了。 再用新号开一个?

作者: jiuzhougege | 发布时间: 2025-12-28 04:28


26. 我的作品上架了 ProductHunt 希望大家能帮投投票啊

我们的 Typeless iOS 版正式在 Product Hunt 上发布。这是我们团队的一个重要里程碑,希望能冲进本周榜单!求投票助力!

👉 产品链接: https://www.producthunt.com/products/typeless-2?launch=typeless-for-ios

只需要简单的 Upvote 就是对我们最大的鼓励!

💡 关于 Typeless 🗣️ 自然说话,AI 自动润色成专业文本 📱 适配所有 App —— iMessage 、Slack 、Mail 、Notes 🌍 支持 100+ 语言,自动识别切换 🔒 隐私优先,数据不留存

感谢每一位支持我们的朋友!你们的每一票都对我们意义重大 🙌

作者: LucasMartine | 发布时间: 2025-12-29 07:25


27. youtube 下载网站是怎么做的?

国外有一些 youtube 下载网站

有免费的,有免费带广告的,甚至还有付费的

但是 youtube 有下载限制,不论是 idc ip 还是住宅 ip

高并发的情况下,他们怎么绕过限制的?

不可能使用付费代理吧,这样成本会很高

作者: pc10201 | 发布时间: 2025-12-29 10:20


28. 找一个本地生成小红书图文卡片工具

我记得上次有人在 v2 发的, 开源的, 可以本地运行, 找不到了

web 的我知道也有, 但我需要本地跑的, 不想上传图片啥的

作者: iorilu | 发布时间: 2025-12-29 03:18


29. 有什么支持直接连接远程主机 git 仓库的 GUI 工具吗

我们是在 wsl2 下开发的,但是宿主与 wsl2 的 io 性能实在太差了,如果仓库在 windows ,那 vscode 中写代码巨卡;如果仓库放在 wsl2 内,用 git 又巨卡(我不太会用命令),但是比起写代码卡,git 的卡我也暂时忍了,最近实在是受不了了,然后找了一圈的 gui 工具,发现 ugit 竟然有一个直接通过 ssh 连接远程主机仓库的,操作起来跟在仓库在 windows 的已经没有太多区别了,现在唯一的问题就是这玩意的 UI 逻辑真的太傻了,我在上面 stash 了一些修改我现在都没有在它的 UI 上面找到在哪里,我之前试过 sourcetree 和 sourcegit 都比它易用得多,而且 UI 高亮显示也有问题,我常常分不清我当前分支在哪里,我的选中了哪一条日志啥的。想问问还有没有类似这种可以直接连接远程主机仓库的免费工具?

作者: maninnet | 发布时间: 2025-12-28 12:06


30. Nature vs Golang: 性能基准测试

nature 是一款较新的编程语言,其轻量简单,易于学习。在设计理念和运行时架构上参考了 golang ,同时有着更丰富的语法特性,更适用于业务开发,并在持续探索更广泛的应用领域。

性能是衡量编程语言核心竞争力的关键指标,接下来我们将从 IO 并发、CPU 计算、C 语言 FFI 、协程性能四个维度,并以 golang 作为基准对 nature 编程语言进行性能测试。

测试环境

配置项 详情
宿主机 Apple Mac mini M4 ,16GB 内存
测试环境 Linux 虚拟机( Ubuntu 6.17.8 ,aarch64 架构)
编译器 / 运行时版本 Nature:v0.7.0 ( release build 2025-12-15 )
Golang:go1.23.4 linux/arm64
Rust:cargo 1.85.0
Node.js:v20.16.0

所有测试均采用相同的代码逻辑实现,文中代码示例均以 nature 编程语言为例。

IO 并发

IO 并发是网络服务的核心能力,本测试通过 HTTP 服务端压力测试,综合考察语言的 IO 调度、CPU 利用率与 GC 稳定性。

nature 代码示例

import http  
  
fn main() {  
    var app = http.server()  
  
    app.get('/', fn( http.request_t req, ptr<http.response_t> res):void! {  
        res.send('hello nature')  
    })  
  
    app.listen(8888)  
}

ab 工具测试命令

ab -n 100000 -c 1000 http://127.0.0.1:8888/
  • -n 100000: 总请求数 10 万次
  • -c 1000: 并发数 1000

测试结果

可以看到 nature 在 HTTP 并发性能上超越了 golang ,这对于早期版本的编程语言来说可以说是不错的成绩。

由于 nature 和 node.js 均使用 libuv 作为 IO 后端,所以 node.js 也参与到基准测试中(libuv 线程不安全,node.js 和 nature 的事件循环均在单线程中运行),但 nature 作为编译型语言其并发处理能力远胜过 node.js 。

CPU 计算

使用经典的递归斐波那契数列计算 fib(45) 来测试语言的 CPU 计算与高频函数调用开销。

nature 代码示例

fn fib(int n):int {
    if (n <= 1) {
        return n
    }
    
    return fib(n - 1) + fib(n - 2)
}

测试方法

time ./main
1134903170./main  2.50s user 0.01s system 101% cpu 2.473 total

测试结果:

nature 和 golang 均采用自研的编译器后端,性能上也相差无几。而耗时高于 rust 的主要原因之一是两者在函数运行前进行了额外处理。

golang 采用了抢占式调度,不需要关注 GC safepoint ,但仍需要关注协程栈是否需要扩容,也就是下面的汇编指令

# more stack
f9400b90 	ldr	x16, [x28, #16]
eb3063ff 	cmp	sp, x16
540002a9 	b.ls	7869c <main.Fib+0x5c>  // b.plas

nature 采用了协作式调度,所以需要处理 GC safepoint 。但 nature 采用共享栈协程,所以不需要关心栈扩容问题。

# safepoint
adrp    x16, 0xa9d000
add     x16, x16, #0xeb0

ldr     x16, [x16]
cmp     x16, #0x0
b.ne    0x614198 <main.fib.preempt>

nature 的 safepoint 实现仍有优化空间,若后续采用 SIGSEGV 的触发模式,函数调用性能将会得到进一步提升。

nature 和 golang 采用了截然不同的调度策略和协程设计方案,这会带来哪些不同呢?不妨看看后续的测试 👇

C 语言 FFI

通过调用 1 亿次 C 标准库中的 sqrt 函数,测试与 C 语言的协作效率。

nature 代码示例

import libc  
  
fn main() {  
    for int i = 0; i < 100000000; i+=1 {  
        var r = libc.sqrt(4)  
    }  
}

测试结果

可以看到在 C FFI 方面,nature 相较于 golang 有着非常大的优势,这是因为 golang 的 CGO 模块有着非常高的性能成本,独立栈协程和抢占式调度设计与 C 语言难以兼容,需要经过复杂的处理。

而 nature 的共享栈和协作式调度设计与 C 语言更兼容,不仅仅是 C 语言,只要符合 ABI 规范的二进制库,nature 都能直接进行调用。

在高性能计算、底层硬件操作等场景中,nature 可无缝集成 C / 汇编编写的核心模块,弥补 GC 语言在极致性能场景下的不足,兼顾开发效率与底层性能。

协程

协程是现代并发编程的核心组件,本测试通过 “百万协程创建 + 切换 + 简单计算” 场景,评估 Nature 与 Golang 的协程调度效率、内存占用与响应速度。

nature 代码示例

import time  
import co  
  
var count = 0  
  
fn sum_co() {  
    count += 1  
    co.sleep(10000)  // ms, Remove this line if no sleep
}  
  
fn main() {  
    var start = time.now().ms_timestamp()  
    for int i = 0; i < 1000000; i+=1 {  
        go sum_co()  
    }  
  
    println(time.now().ms_timestamp() - start)  // create time
    
    int prev_count = 0  
    for prev_count != count {  
        println(time.now().ms_timestamp() - start, count)  
        prev_count = count  
        co.sleep(10)  
    }  
    println(time.now().ms_timestamp() - 10 - start) // calc time
    co.sleep(3000) // ms
} 

测试结果

语言 创建耗时(ms) 计算耗时(ms) 无 sleep 计算耗时(ms) 占用内存
Nature 540 564 170 900+M
Golang 1000 1015 140 2500+M

nature 的协程在综合性能上非常优秀,内存占用更是远低于 golang 。而这是建立在 nature 的协程调度器未进行优化的前提下,预计在后续的版本中 nature 的协程调度器会进一步优化,届时将会有更加亮眼的表现。

总结

这是一次非专业的性能测试,但在粗略的测试中,nature 编程语言展现出了超越预期的能力与潜力。作为早期的编程语言,其运行时和编译器还有着非常大的优化空间,在正式版本发布时性能将进一步提升。

以现在的性能表现来看,nature 无疑是值得关注和尝试的编程语言,尤其是在云原生、网络服务、API 开发等服务端开发领域。


这是 nature 编程语言的官网 https://nature-lang.cn/ 如果你感兴趣的话也可以加入讨论组,v ➡️ nature-lang

作者: weiwenhao | 发布时间: 2025-12-22 02:01


31. 垃圾佬组 Linux 求推荐亮机卡

捡垃圾捡了台 linux, 装的系统是 fedora kinoite

板 U: 12600kf + 铭瑄主板 内存: 金百达 64g 硬盘: 致态 7100

然后剩下就是捡回来的

电源: 应该是 450w 显卡: Radeon HD 6770 显卡的驱动是 2015 年的

之前还算用得好好的

但是后面更新一些软件之后, 一些基于 Chromium 的基本无法使用了

现象是高频闪烁, 有些问题还能关掉硬件加速解决, 但是有的好像没这种设置, 只能进行版本回退

想着是不是能换一个显卡, 顺便组个双屏

求推荐一个性价比高的双 HDMI, 安装方便的亮机卡

作者: WingOwO | 发布时间: 2025-12-29 06:35


32. 大家平时怎么用 ai 写代码的了,我用 cursor 写,总感觉不敬人意,差点意思。

作者: programMrxu | 发布时间: 2025-12-28 06:35


33. 程序员对 AI 的偏见

今天 HN 最火的一贴无疑是 Rob Pike 吐槽 AI 。(吐槽可能有点委婉,应为基本是纯骂,甚至是没什么逻辑性的骂)

https://skyview.social/?url=https%3A%2F%2Fbsky.app%2Fprofile%2Frobpike.io%2Fpost%2F3matwg6w3ic2s&viewtype=tree

这让我大跌眼镜。Rob 在我心里一直是一个理性,儒雅的技术人,也是我最敬重的程序员之一。他写的 C 和 Go 都很精妙,还有 UTF-8 的设计。他的技术分享我当圣经一样诵读。

而 HN 大部分程序员也都是站 Rob 一边,国内 V2EX 也是严格禁止 AI 文。

这令我深思。为什么程序员对 AI 有这么大的偏见。是不是有点过了?

作者: cj323 | 发布时间: 2025-12-27 14:43


34. D-NET 支持阿里云 ESA,实现 IPv6 免费加速方案(IPv4/IPv6 访问)

家宽 IPv6 + 阿里云 ESA = 免费全球 IPv4/IPv6 加速!

痛点

家里搭了 All-in-One 服务器,拿到了运营商的公网 IPv6 ,但是:

  • 外网访问 IPv6 太慢?仅支持 IPv6 客户端访问?
  • 使用 Cloudflare CDN 访问速度较慢、延迟较高?
  • 想用 CDN 加速但嫌贵?
  • 域名未备案?
  • IPv6 地址老变化,手动更新太麻烦?

解决方案

D-NET + 阿里云 ESA ,完美解决上述问题:

传统方案: 家庭服务器 → DDNS 更新 DNS → 域名解析 → CDN 回源 → 访问( 2 次解析)

D-NET 方案: 家庭服务器 → 监听 IPv6 地址变化直接更新 ESA → 访问( 1 次解析,更快!)

性能实测

国内节点测试(备案域名)

通过国内延迟测试

全球节点测试(未备案域名)

全球节点延迟测试

实测数据:

  • 海外访问延迟降低
  • 国内访问(备案域名)几乎无感知
  • 免费流量,不用担心收费问题

详细教程: https://aio.it927.com/remote/esa

GitHub: https://github.com/cxbdasheng/dnet (欢迎 Star ⭐)

完整 All-In-One 教程: https://aio.it927.com


适合你吗?

如果你有以下需求,强烈推荐试试:

  • ✅ 家里有公网 IPv6
  • ✅ 想要全球访问加速
  • ✅ 不想花钱买 CDN
  • ✅ 希望自动化管理

项目还在持续迭代中,欢迎提 Issue 和 PR ! 也欢迎分享你的使用场景和需求,一起让它更好用 🚀

作者: cxbdasheng | 发布时间: 2025-12-28 05:26


35. 有个 javac 进程长期占用,是否被挂马了?

服务器上有个进程

root     3706750       1 99 Dec27 ?        3-18:52:23 /root/.local/share/javac
root     3713394       1 99 Dec27 ?        3-07:35:10 /root/.local/share/javac
root     3784731       1 94 Dec28 ?        23:18:00 /root/.local/share/javac
root     3806525       1 78 Dec28 ?        12:46:06 /root/.local/share/javac
root     3806565       1 78 Dec28 ?        12:46:08 /root/.local/share/javac

删除了又会出现。这个是不是被挂马了?有大佬知道吗?

作者: tedzhou1221 | 发布时间: 2025-12-29 06:26


36. 荣耀笔记本与 Linux - 性能管理

这两天在 2024 独显版的MagicBook 16 Pro ( U5 125H + 4060 mobile )上装了Fedora 43 Workstation ,安装过程很顺利,驱动基本都自动装上了。

现在唯一有个问题:不知道怎么调整高性能模式

所有游戏一启动独显功耗在 40W 左右波动,一分钟左右掉到 20W ,整个系统都卡起来了。tuned ,nvidia-smi 设置频率,gamescope 都试过了,基本没啥影响。我能确定不是兼容层或 Wayland 的问题,因为 Minecraft ( OpenGL )也会卡,也试过 mint 但没效果。

Fn + P 是笔记本调整性能模式的快捷键,也是我唯一能复现的提高 GPU 功率的方法,不过提高后不到一分钟又会掉下去。按这个快捷键的时候能通过 acpi_listen 看到 wmi PNP0C14:03 000000a0 00000000,不过我没有找到任何有用的 acpi 接口。

其他基本的因素也考虑过:RAM 基本没超过 2/3 ,CPU 没降频也没满载,iGPU 基本是空闲。

我还去问了荣耀客服,让我留电话和邮箱说之后有工程师回复我,最后就等来了 “关于您反馈的在 linux 系统下的性能调度怎么调整问题我们已收到, 目前是未核实到相关信息和相关功能。”

要是有高人看到这里能指点一下,我将感激万分。

闲谈

不玩游戏的话,系统用起来没啥毛病。装了达芬奇还没试性能如何,估计跟游戏差不多拉跨。之后再装 linux 的话,笔记本电脑还是慎重考虑吧,尤其是喜欢搞自研的这几家。

我唯一舍不得的应用是 OneNote ,我想要能书写的笔记软件,要是各位有用过的话能推荐几个吗?或者如何在 linux 上用 OneNote ?

作者: PeterTerpe | 发布时间: 2025-12-27 06:57


37. Linux 漫谈(三)

之前的章节:

https://v2ex.com/t/1180785

https://v2ex.com/t/1181027

0x30 IPC 是妥协的艺术

之前讲过了,几乎无论什么时候性能都是个永恒的追求,内核也不例外。所以在九十年代初期,开发者有机会从零设计一款操作系统内核的时候,很多方面都要为了性能作出让步。

其中受影响最大的便是 IPC 的设计,它不仅仅是受性能影响这么简单,更重要的是 IPC 的设计代表了设计者对于软件交互逻辑的理解,也决定了未来这个操作系统上,所有的应用程序要如何编写,可谓是决定性的要素。

用今天的眼光重新审视 linux/NT/XNU 当年的设计,我个人所能总结的经验教训就是:不可能有一种完美的、能够适应所有时代需求的方案,所以取舍就变得很重要,不能既要又要。

在回答如何设计 IPC 这个问题之前,更重要的问题是为什么要有 IPC ,这里特指内核控制中,不同于传统 Unix 提供的 socket/pipe 实现。而要回答这个问题,就要考虑九十年代初这个时间节点,图形化的应用程序是怎么写的。

今天看起来非常普遍的图形应用开发范式:比如 UI 和逻辑线程分离,再比如异步 RPC 调用,在图形操作系统刚出现的时候还不存在。甚至几乎没有多少真正意义上的“多线程”应用程序,因为不仅当时的 CPU 没有多核心设计,而且同时期的 Unix 还只有 fork ,而更轻量化的线程( thread )直到 1995 年才定稿。

对于大多数应用开发者来说,只需要考虑系统或者底层提供了什么样的 API 可以使用即可。而对于基础库或者操作系统的开发者来说,这个思考过程是反过来的:

  1. 先想象未来的图形 App 是什么样子,要如何编写;

  2. 之后发现现在的 C 语言和硬件支持不了这种编程范式;

  3. 确定需要在内核里增加一套支撑机制;

  4. 将内核机制封装为用户态可用的图形库供开发者使用。

于是尽管目前的章节要讨论的是 IPC 设计,实际的切入点却是图形界面应用程序。(理论上在操作系统进入多任务时代的时候,非图形界面应用程序之间也有 IPC 需求,但图形界面应用程序更具代表性,需求也更加一般化)

0x31 现代图形界面的基础

在正式讨论开始之前,先补充一些背景知识。

现代意义上的图形界面最早是 1973 年由 Xerox Alto 计算机实现的,Alan Kay 等人设计了 GUI 软件界面以及相应的操作工具:鼠标。此时工程师们意识到,传统的线性应用程序遇到一个难题,即程序并不知道用户下一秒是要操作鼠标还是键盘,或者是其他操作。

于是 Dan Ingalls (也就是 Smalltalk 的设计者)提出了一种新的应用程序结构,主程序启动不再退出而是进入一个循环,循环中程序会轮询或等待中断调用。这个模式也称为 RunLoop 一直沿用到今天。

得益于那个时代面向对象理论的快速发展,开发者很快意识到,鼠标键盘输入和 IPC 消息等等都可以抽象成事件,操作系统只需要将事件发送给不同的应用(即多消息队列)就可以支持多任务,包括 MVC 这样的概念也就是那个时期就已经成熟了。后来 Smalltalk-80 将其抽象化成了今天熟知的 EventLoop 模式。

不过真正意义的“多任务”操作系统是很久之后的事情了。还记得之前提到的 2003 年 Linux 2.6 版本实现的所谓“抢占式”机制吗?所谓抢占式( Preemptive )就是与协作式( Cooperative )相对应的,协作式简单说就是应用程序自己才能决定退出,而抢占式指的是内核调度器可以主动打断并切换当前运行的进程。

这里我们能看出,内核的抢占式支持是基础,而操作系统的多消息队列同样重要。1995 年发布的 Windows 95 版本首先支持了图形界面抢占(仅限 32 位应用),每个 UI 线程都有一个独立的消息队列。而 Classic Mac OS 就一直只有协作式图形界面,直到 2001 年的 Mac OS X 10.0 使用了 XNU 内核之后才实现抢占式图形界面支持。

严格来说“抢占式内核”指的是当执行内核 syscall 的时候能否被打断,比如说执行某个慢 io 操作时,如果希望同时播放音频,在非抢占式内核上就要等之前的 syscall 调用完成,在抢占式内核上当之前的 syscall 时间片到期后,播放音频的指令就可以被执行。也就是说,即便是非抢占式内核,也可以实现抢占式的图形界面逻辑,只是一般来说图形界面要求低延迟,在抢占式内核上这样做才有意义。

对于 Linux 来说,由于它从第一天起就没有专属的图形界面,很长一段时间中 X 就是事实上的图形界面标准。所以是否能支持抢占式图形界面,完全取决于 X 自己的实现。由于 X Server 只是一个运行在用户空间的应用程序,而内部的消息队列又是基于 socket 实现的,所以天然就获得了图形界面的抢占式特性。

技术层面它是两个原因的共同结果,一方面是底层 IPC 走的是 socket ,在内核侧是有缓冲的,另一方面 X 设计为 C/S 架构,单个 Client 阻塞绝大多数时间不会造成 Server 的阻塞。这里就不展开讲了。

之所以 Windows 95 没有实现 16 位应用的抢占式图形系统支持,是因为早期基于协作式多任务的应用程序代码,在抢占式环境中不是线程安全的。Classic Mac OS 也有类似的问题,所以后来 Mac OS X 10.0 之后就放弃支持完全重做了。

0x32 图形应用到底应该怎么写?

在协作式时代,没有操作系统层面的调度器,那应用程序可以随便写,反正在应用程序主动交出控制权之前,内存和图形库也是全局独占的,不需要考虑线程安全的事情。

到了抢占式时代,操作系统的设计者要考虑的问题就变成了:如何解决线程安全的问题?

回到之前提到的设计者思考路径:

  1. 很明显 Run/Event Loop 的模式是不会变的;

  2. 最好还能保持协作式时代的写法,而且让应用侧去控制显存锁不合理也不现实;

  3. 内核侧应该主动去控制显存锁,这样某个时刻就只有一个应用在访问显存,但这样就会导致大量用户态和内核态之间的上下文切换;

  4. 内核为了隔离和安全,并不想将内部 IPC 机制完全暴露,所以要通过某种协议提供用户态的高级封装,供应用程序来调用。这个 IPC 机制可以不局限于图形界面绘制,也可以一般化为应用程序之间的交互方式,但是性能要好。

绕了这么一大圈,终于回到了 IPC 的话题上。不过这个逻辑是我本人的推理,并没有哪个知名人士以访谈或者回忆录等形式记述这段历史发展历程。

关于图形系统的部分再稍微补充一点,其他留到之后的章节再讨论。

现代图形系统的核心逻辑是合成器模式,每个应用程序在自己私有内存空间中进行绘图,由操作系统提供的合成器按需合成后交给显卡现实。在 2000 年之前是不具备这个条件的,因为当时的电脑内存太小了,整个系统只能保留一个公共的显存,无法让每个应用都有自己的绘制空间。所以当时的图形系统核心是失效重绘的模式,即内核维护显示输出的失效状态,然后调用对应的应用程序对失效部分进行重绘。

0x33 IPC 的世界观

以今天的眼光来看,IPC 机制本质上就是一套协议,这套协议在内核语境下,应该具备以下特性:

  • 载荷无关( Payload Agnostic ),即 IPC 的信息传递对于内核来说是透明的,解析是由 IPC 通信的参与者完成。

  • 异步交互( Async Interaction ),描述的是 IPC 调用的时空边界。可以通过底层异步来模拟同步调用,但需要明确它的执行代价(和 RPC 做区分)。

  • 能力导向( Capability Oriented ),主要说的是 IPC 调用的安全边界,声明式的权限控制是目前实现容器化安全的底层机制。

这里描述的是通用的设计通用通信协议的一般原则。这是全世界的开发者们用了几十年时间,在各个领域进行了不同的尝试,如今总结出来了经验教训。注意这里描述的是一般设计原则,并非实现技术。从技术层面上说,同一种目标可以有很多不同的实现手段。

实践中可以在实现层面,为了达到特定目的而做一些不完全符合设计原则的调整,但一定要清楚它的代价。还是之前那句话,取舍是一种智慧,不能既要又要。这样说可能不是很好理解,我这里就专门列举一下,那些曾经的设计失误,以及由此产生的后果。

“不要误会,我不是要针对谁,我是说在座的各位……”

0x34 混乱的 D-Bus

D-Bus 诞生于 2002 年,这里 D 的意思是 Desktop 桌面。这个协议基本上是 GNOME 桌面的人开发的,是的,还是 Red Hat 的人。这个协议设计之初的目的是替代 KDE 的 DCOP 协议,以方便移除 Qt/X11 等依赖。(实际上目前 Freedesktop.org(Fd.o) 旗下的 systemd/Wayland/NetworkManager/PulseAudio/PipeWire 也都是红帽的人在主力维护)

如果你没有基于 D-Bus 写过代码,可能不太好理解 D-Bus 的工作原理。简单说它是一个消息总线,任何程序可以注册任意对象,也可以在任意时间用任意方式去访问总线上的任意对象。你看我用了这么多“任意”,应该能猜到这是一个鼓励“动态化”的协议。(技术上是通过发送消息的方式实现的,而不是调用函数,这里为了方便描述简化了)

所以它就选择了 XML 作为交换格式( 2002 年的时候还没有 JSON 什么事)。按照协议设想,应用程序或者说服务方要主动声明自己具有哪些能力,方便其他应用使用,这个机制叫做 Introspection 自省。如果调用特定的自省接口,就可以通过 XML 获得所有接口以及对应的能力。(准确说 XML 只用于接口自省,实际上传输的数据 WireFormat 是二进制的)

听起来很美好是吗?实际上无论是 D-Bus/DCOP 都是 NeXTSTEP/Smalltalk 思想的延伸。D-Bus 设想中的自己,应该是和 macOS 上“服务”一样的效果,应用程序可以枚举出当前系统所有能够提供功能的服务端,然后调用对应的功能。然而现实是 Linux 生态极其碎片化,同时工具链支持也非常弱,就导致了完全不一样的效果。

桌面开发大部分时间都是用 C/C++ 的,实现一个 XML 解析是非常痛苦的事情。2002 前后可没有 GitHub 这样的服务,C 生态中造轮子是常态。GNOME 为了解决这个问题,创造了 GObject/GVariant 类型系统,并提供了配套的代码生成工具。桌面应用开发者的工作可以不再解析 XML 而是用工具来生成。

但 XML 编写本来就麻烦,修改一次接口就要重新生成代码再编译,开发者们就开始找捷径,于是 a{sv} (Array of String-Variant) 登场了。这玩意就是个字典,键是字符串,值是任意类型。传递一个 a{sv} 之后,整个世界清净了,再也不用每次改接口都重走一遍构建了。

这样一来 XML 存在的意义也彻底没了,自此之后,什么 D-Bus 规范、Fd.o 白皮书都滚蛋吧,没人在意,也没人去写了,一切以约定为准。

我就想问问,“一切以约定为准”是不是听起来很耳熟,数组传数据结构是不是很爽,大家有没有在工作中干过类似的事情?只能说,大家都是草台班子,谁也别笑话谁。

当然 D-Bus 协议还有其他问题,主要是安全性方面的。最早的 D-Bus daemon 实现也全是坑,这个等以后专门再讲。相对来说,安全性是受限于时代性的,而且解决起来也不是那么困难。还有一点要注意,D-Bus 虽然是目前 Linux 桌面的实际 IPC 标准,但它却不在 Linux 内核中。

高情商的说法是,今天 Linux 桌面还能用,而且看起来跑得不错,D-Bus 的再实现起了关键性作用。换个说法,今天的碎片化程度,D-Bus 要先把锅背好。

我这里一定要提一个草台班子的事情。为什么我一直强调说,类似 LKML 这样的讨论比代码更有学习价值,就是因为对话和文字记录中可以看出来开发者是怎么想的,他为什么要做某种设计,这样的经验无比珍贵。因为经验这个事属于知道就是知道,而不知道就是不知道,不知道的情况下一定会重复踩别人踩过的坑。

目前的 MCP 协议,精神上和 D-Bus 没有任何不同,协议规范层面,就是用 JSON 代替了 XML 。而且得益于现代工具链,开发者偷懒的机会变少了。但是机制上,如果开发者都在 payload 中塞一个类似 a{sv} 的字典,一样会完蛋。

所以说不是用上现代技术就能避免设计上的误区了,编程这件事在哲学层面大致是相通的,人类世界的复杂程度并没有因为新技术而变得更高,反倒是设计理念这种理论会一直保持下去。

这一章节内容比较长所以分开了,后面还会接着锤其他的设计。

作者: kuanat | 发布时间: 2025-12-28 06:41


38. 为什么使用 Tomcat 算违反国产化要求,但是使用 Netty 却不算。

RT. 都是海外的开源软件,licence 也都是一样的。

背景
项目上遇到了相关的需求,要求包里不能有 Tomcat 。
公司上面给的方案却是让换成 Netty 而不是打成 war 包来接入客户提供的国产化 web 服务器。
由于之前是 spring-web ,阻塞式的,改成 netty 工作量巨大。

是不是因为 Tomcat 有 TongWeb 这种国产替代。但是国内没人做 Netty 的替代。
所以 Tomcat 才会上黑名单,但是 Netty 就活着。

作者: MelodYi | 发布时间: 2025-12-27 02:55


39. antigravity 网络异常, Check your internet connection.

antigravity 网络异常一直提示 Check your internet connection.
已开代理,官网都可以正常访问,就是 ide 不行。

作者: zehua | 发布时间: 2025-12-28 11:55


40. fnOS 上除了 v2raya 还有什么代理工具可用

J5005,之前是只刷了个 openwrt ,用着 passwall 或 openclash ,刚刚刷了 fnOS ,找了半天发现只有在 docker 部署 v2raya ,使用起来发现太慢了,明显跟 openwrt 里差太多。4G 内存不想再虚拟个 openwrt ,还有什么选择可以达到原来的速度。

作者: sjqboss | 发布时间: 2025-12-28 02:32


41. 用了十几年的 MySQL 了,突然发现 PostgreSQL 可能更加适合我,大家怎么看?

从 13 年毕业开始就开始使用 MySQL ,当时不理解 DBA 把用户表分成了 100 张,后来在别人的一通解释下也渐渐理解了。

17 年自己开始作为主程负责一个新项目,当时因为把用户表分成 100 张还跟老板吵过架(因为当时另外一个项目的负责人本身就是个混混,还给老板一通乱说,弄的我特别郁闷,无奈自己当时的心理素质不是特别强大)。后来我也觉得 100 张表可能太多了,可能没有那么多用户,索性就只分了十张。

20 年新的项目,开始尝试使用 MongoDB ,经别人推荐,说 MongoDB 怎么适合游戏。当时觉得这东西好啊,但是在实际使用时,并不是那么美好。

24 年另外一个项目,负责人全部使用了 MongoDB ,但是用法相当暴力,也就是每次全量存储用户的数量到 MongoDB 中,感觉跟使用 MySQL 也没有什么实质性的区别。

今年负责另外一个项目时,最开始设计者将用户的 JSON 数据先进行 base64 encode ,然后异或加密存储到了 MySQL 中。因为最开始的客户端的设计是纯单机,后面加了服务器存储用户的存档而已。

新的需求是要将这个单机版本做成一个联网版本,因为我之前有将单机变成联网的成功经验(某合成游戏变成联网版本,国内流水过五亿)。

现在的存储结构没有规划过,JSON 结构下面有超过 200 个字段,活动配置占用超过了 90% 的存储以上,平均用户的存储占用在 100KB 以上。 存档中存储活动配置的原因:活动开启之后,则配置不再发生变化。

我重新设计了存储结构,使用 Protobuf 重新设计了数据存储,将活动配置数据跟游戏存档分离。活动配置单独存档在一张配置表,用户的存储中只记录对应的唯一 ID 。同时提供了接口,可能将旧的数据转换为新的 Protobuf 存储结构。

用户的数据存储中,使用 JSON 存储,存储的内容为 Protobuf 对应的 JSON 数据。用户更新数据时,提供了 FieldMask 仅修改部分数据(只前每次都是全量更新)。

当这个版本成功上线之后,我发现某些接口调用比较慢,例如在用户转换存档时,我将客户端提供的原始数据、转换之后的结果存储到了 conversion_logs 配置表(数据类型均为 JSON ),内网的虚拟机上平均耗时为 200ms 。因为最近在研究 PostgreSQL ,索性就试了一下性能对比,结果 PG 只需要 20ms 左右。最关键的是,表空间存储的占用上,PG 远低于 MySQL ,因为 PG 存储使用的类型为 JSONB 。

我尝试对比纯 TEXT 字段的记录时,PG 占用的空间也只有 MySQL 的 1/3 ,现在的数据表现就是在存储和插入速度 MySQL 远低于 PG 。更新的速度还没有完全验证。

SELECT
  table_name,
  ROUND((data_length + index_length) / 1024 / 1024, 2) AS total_mb,
  ROUND(data_length / 1024 / 1024, 2) AS data_mb,
  ROUND(index_length / 1024 / 1024, 2) AS index_mb
FROM information_schema.tables
WHERE table_schema = 'merge_island'
  AND table_name IN ('conversion_logs','game_saves','activity_saves','activity_config');
  
+-----------------+----------+---------+----------+
| TABLE_NAME      | total_mb | data_mb | index_mb |
+-----------------+----------+---------+----------+
| activity_config |   216.83 |  209.55 |     7.28 |
| activity_saves  |     0.16 |    0.16 |     0.00 |
| conversion_logs |    70.55 |   70.52 |     0.03 |
| game_saves      |     7.48 |    7.39 |     0.09 |
+-----------------+----------+---------+----------+



SELECT
  relname AS table_name,
  pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROM pg_catalog.pg_statio_user_tables
WHERE relname IN ('conversion_logs','game_saves','activity_saves','activity_config');
table_name    | total_size
-----------------+------------
 activity_config | 32 MB
 activity_saves  | 376 kB
 conversion_logs | 13 MB
 game_saves      | 1976 kB

另外把用户分为 100 张的操作在 PG 这里完全是反模式的,因为 PG 号称单表轻松过亿。另外十多年前的老设计本应该也要被淘汰了,毕竟现在都是云服务,空间存储可以轻松扩充,不用再担心这个问题。

有没有使用 PG 淘汰 MySQL 的大佬来分享一下自己的经历,一起学习哈。

作者: Rooger | 发布时间: 2025-12-27 02:54


42. 就没有一个好用的 chrome/edge 下载扩展么?

去下载国外网盘的东西,浏览器自带的下载老是断开连接就傻傻的停在那里了。

本来想着去搞个插件,chrono download manager 结果也是停了就停了

接下来高血压的来了。网络风吹草动,就 kuang 提示一下下载出错。然后就没法接续了。

眼看着都下载了 50%了,点击重新开始,tnnd 给我重置为 0% 了。。

这年头下载工具连「断点续传」这种基操都不会了?

有没有无限自动重试+断点续传的扩展推荐?

太高血压了。

作者: est | 发布时间: 2025-12-27 15:08


43. 阿里云也有免费 CDN 了,支持国内区域加速还是无限流量

ESA Entrance 版套餐免费,不限量不限速、直接注册账号就能免费用,我一直续费到了 2050 年 我注册的是国际版,国内版的支持大陆地区的优化加速 之前一直用的 Cloudflare ,但是 Cloudflared 的速度在国内真是一言难尽,时不时还会有阻断的问题,阿里云的套餐我自己实测下来速度还是不错的,个人用完全足够了,Cloudflare 的常用功能阿里云 ESA 都有支持

同时还支持部署 Pages 的功能,ESA 免费领取链接: http://s.tb.cn/e6.0Fu67m

作者: Aliesz | 发布时间: 2025-12-27 14:10


44. immich 有备份还是炸了

  • 1 系统备份 pg 到文件,默认只保留最近 15 次备份文件

    • 2 数据备份用的 sync ,会同步删除( DB 备份被删除,无法恢复)

作者: mintongcn | 发布时间: 2025-12-26 12:13


45. Gemini cli 怎么样?

最近趁优惠,充了 Google one 的年包( https://one.google.com/ai-nye)

以前用的 Claude code ,很好用。

后来切换到 codex ,有点慢,但是也还凑合。

现在准备切换到 Google AI 了,不知道 Gemini CLI 怎么样,有没有 v 友分享一下。或者有没有什么办法用 Claude code 调用 Gemini 模型?

作者: ninjaJ | 发布时间: 2025-12-27 13:18


46. AI 是不是基本杀死了 blog

特别是技术型博客,类似 CSDN ,基本上在 AI 面前一文不值。 其他的博客,也好不到哪里去。

作者: 8675bc86 | 发布时间: 2025-12-23 08:18


47. 记录一下使用 AntiGravity 压榨 AI 开发一个 Android APP 的事情,并推广这个 APP

说在前面:关于节点的选择

我知道站内推广的东西应该放到推广节点,但是这不单单是一篇推广的文章,更像是一份给予 AI 高权限之后的心得体会记录(姑且可以成为“用后感”吧,哈哈)

为什么有这个想法?

关于 AI 的使用大家都有各自的原因,我这里就不过多赘述了,从刚开始的不信任,到现在的授予高权限,AI 的发展整体是向上并且超出我预期的,在公司也要求我们更多的将一些工作内容尝试交给 AI 完成,因此最近几个月来我用 AI 用的越来越多,这为 Pixel Meter 项目埋下了一开始的种子。

其实自从李跳跳不再维护开始,我是有想过自己写一个跳过广告的 APP ,为此我创建了仓库,参考一些别人博客的文章在开发自己的 APP ,但是从最开始的兴趣满满,到最后不想打开 IDE 写代码,一时兴起而产生的想法动力越发的不足,最后我放弃了,相信不少人都有过这样子的经历与体会(我不止是弃坑了这一个 app ,还有很多的东西都经历过这个流程)。

那时候我总觉得产生一个想法很简单,但是实现这个想法,哪怕是最开始的原型验证试水,对于个人来说成本还是太高了一些(毕竟需要花自己的空闲时间)。

同样的,这个周一开始( 2025 年 12 月 22 日起),我突然就想要在我的 Pixel 10 Pro 上面能够实时查看网速的显示。几年前玩过 Android (类)原生的玩家都知道,因为(类)原生系统都是毛坯房,所谓的设备维护者其实更多是因为他们自己在使用这部设备,因此维护者偶尔会添加他们认为应该有的东西,例如一些系统动画、CJK 字重、网速显示等。而这些东西,国产 Rom 基本都是自带,而我们 Pixel 用户要么不用,要么只能自己想办法了。

于是我开始寻找网速显示的一些 APP ,并就此询问了 Gemini 的一些推荐(它居然在推荐列表里面把 Windows 的 TrafficMonitor 混进去,还告诉我说有 Android 版) 。最终呢下载了几年前就在用的一些 APP ,当然都有缺点:

  • NetSpeed Indicator:网速显示统计 VPN ,经典问题,流量数据翻倍(流量从 tun0 到网卡,计算的时候把所有网卡加起来,导致实际流量被重复计算)
  • Internet Speed Meter Lite:统计数据粗略查看应该是没有重复,但是界面太老了,让我回想起了刚使用 Material Design 的感觉,免费版本带有广告,看着膈应,还塞进去了一个对我毫无卵用的流量统计功能
  • Netspeed Indicator Magisk Module:要 ROOT 或者刷模块,直接 pass
  • 其他的一些 app 以前没听过名字,现在也没兴趣一个个去试

AI1

突然,我有一个想法:为什么我不自己写一个?

因此我开始询问 AI ,被 Gemini 吹了一通彩虹屁,我觉得自己突然行了

AI2

付诸实施

既然有了想法,加上没有太多空闲时间,因此这一次我打算给 Gemini 高权限,如果可以的话,让它从 0 开始生成代码,直到所有功能完成

于是,我开始和它进行架构设计的探讨(架构探讨并不是第一次,公司的一些项目我也在和 AI 进行架构设计),技术栈的选型

最终敲定了使用双模式的方案进行开发:普通模式尽量精准,不准也无所谓;高权限模式(借助 Shizuku )从数据源层面排除掉 VPN 网卡的流量数据,做到绝对的准确。

AI3

AI4

AI5

当然,这里我犯了一个错误,一开始我就应该在 AntiGravity 中发起会话的,这样 Gemini 能拿到完整的上下文直接开始生成代码,网页版 Gemini 则需要将这些“记忆”压缩成 md 文件再喂给 AntiGravity 。

压榨 AI

拿到这些压缩记忆的 md 文件之后,我通过 Android Studio 创建新项目,然后删除默认创建的一些测试依赖和测试类,使用 AntiGravity 打开项目,切到 Agent Manager 模式。

让 AI 根据这些压缩的记忆开始完善信息丢失的部分(信息在传递的过程中是会有丢失的),哪怕都是 Gemini ,毕竟是在两个地方打开,就像现实中的两个开发人员一样,同 A 沟通的内容,让 B 去做需要让 B 能够完全理解。这个步骤就是让 AI 根据文档对我发起反问,然后根据我的回答完善它的记忆以及文档。

具体的压榨过程就不一一描述了,扔个图就行,反正让它从昨晚工作到了现在(当然我睡觉的时候它也在“睡觉”),详细的一些方向性变更通过仓库提交记录也反映了出来。

AI6

整个使用过程我还觉得挺不错的,在这个过程中,我主要复杂代码审查和方向把控,代码审查是为了看它有没有按照我的想法进行编写,方向把控是为了纠正它可能出现的牛角尖状态,我觉得会话长了或者需要开启一个和当前任务关联性很小的需求,就单独开了一个会话。

到最后,整个项目 90%的代码(我手动写过一些代码,主要是审查以及纠正)、所有的文档内容( README 、ChangeLog 、隐私政策)、上架 Google Play 的一些说明内容(简短说明、详细说明,甚至置顶大图) 都是让 Gemini 生成的。

用后感

和两年前我开发 SkipperL (跳广告的项目,已归档) 相比,AI 发展的太快了。两年前我还在为快速消退的热情而觉得可惜,两年后我们完全可以让 AI 帮助我们短时间内完成原型的验证,甚至完成开发!

项目推广

最后推广一下让 Gemini 做的这个项目吧: Pixel Meter (是的,它甚至是开源的)

Pixel Meter 是一款专为 Google Pixel 和原生 Android 设备设计的网速监控应用。它可以解决在使用 VPN 时,传统网速显示应用因同时统计物理接口和虚拟接口流量而导致显示速度翻倍的问题。

它和那些老前辈相比,除了更加现代化的 UI 界面之外,更重要的是使用标准的 API 解决了 VPN 网卡的流量计算问题(没有使用 Shizuku )。

核心原理就是 TrafficStats.getRxBytes(ifaceName) 这个从 Android S 新增的 API ,它允许 app 获取指定网卡的流量数据,因此我们只需要遍历所有网卡,然后排除 VPN 网卡就行了,整体用起来达到的效果是:有 TrafficStats 的效率,有 NetworkStatsManager 的精准。

旧版本 API 的局限性:

  • 老版本中只有 TrafficStats.getTotalRxBytes()TrafficStats.getTotalTxBytes() 函数,获取到的数据已经包含了重复计算的部分,但是这个 API 响应快,计算差值也方便
  • NetworkStatsManager 并不适合用差值来计算网速,因为这个 API 主要用来统计流量,它是隔一段时间将数据写入,所以用起来的时候会出现一些奇怪的情况:上一秒流量显示正常,下一秒流量为 0 ,具体原因如下:

AI7

解决了数据源的问题之后,另一个难受的点是:网速显示太小了,虽然我们使用了绘制 Bitmap 的方案实时生成一个“通知图标”,但是这个图标的区域太小了,勉强只能看清楚数字,而单位很不清楚(一众老前辈都是用的这个方案)。另一个展示的方案是悬浮窗,这倒是能解决大小问题,但是会带来一个讨厌的顽固通知“XXX 正在其他应用的上层显示内容”

AI8

而 Pixel Meter 带来了一个创新的展示方案:Live Update Notification

这还是我在查阅关于发送通知的相关 API 的时候,偶尔看到的,实时活动+比通知图标宽 的两大优势,让我瞬间觉得,这就是应用层最适合网速显示场景的东西,因此,我开始让 AI 基于此进行代码开发。

另一个大的改变是:我懒得适配旧版本的系统(旧版本系统就用老旧 APP 足够了,反正都用不了实时活动) ,并且这东西优先向我进行适配,因此我将项目的 MinSDK 设置为了 36 。(旧版本如果有需要可以自行 fork 进行修改,符合开源协议即可)

AI9)


而推广的目的,除了让大家知道这个方案之外,也是为了上架 Google Play 需要大家一起进行 14 天的封闭测试,期间收到邀请的账号才能够下载 APP ,感兴趣的小伙伴可以留下你们的 Google 账号,也可以通过邮箱发送给我。

邮箱地址:bXlzdGVyeTBkeWw1MjBAZ21haWwuY29t

本文同步发布: https://blog.mystery0.vip/archives/ai_power_for_pixel_meter

作者: Mystery0 | 发布时间: 2025-12-27 16:34


48. 让 AI 带着镣铐跳舞

原载于我的独立博客: https://lutaonan.com/blog/ai-coding-principle/

最近临时在帮朋友做一些外包,基本上代码都是 AI 写的,我想如果不是有 AI, 我大概不会帮这个忙,因为即使这些活不难,我还是要写很多代码。但现在,我可以一个人同时做 2-3 个项目。

在这个过程中,更加让我确定了对于程序员来说,软件开发的范式已经彻底彻底改变了。生成代码再也不是程序员「应该」做的事情,而是应该被放手给 AI 做的事。

这也让我对判断一个程序员的能力从代码能力转变成了使用 AI 的能力,我想,如果我现在要为团队招程序员,我会在面试时着重了解这个人如何使用 AI 完成一个需求。

对于程序员来说,「使用 AI 的能力」包含很多维度,这些维度综合起来,才决定 AI 是否真正能成为程序员的杠杆:

对业务的理解

软件是为解决用户的需求而生的,对业务充分理解,才能给 AI 足够的业务场景上下文,才能让 AI 写出覆盖边界条件的代码。

对业务的理解同时决定了程序员是否可以做好数据库建模。在接我朋友的外包项目时,我发现我人工干预最多的就是数据库建模。只要我思考好建模,AI 就能基于这个数据库模型编写任何接口。

对技术栈的理解

如果能让 AI 限定在特定的技术栈中,你会发现 AI 更能稳定发挥,更可控。让 AI 「带着镣铐跳舞」。无论用什么技术栈,重点都是给 AI 一条稳定的轨道。比如我在所有项目的 AGENT.md 中都会列出非常细节的选型,例如 CC Mate 的 https://github.com/djyde/ccmate/blob/main/CLAUDE.md

当 AI 知道技术栈后,通过 context7 这样的 MCP, 它能在生成代码时,找到对应的文档作为上下文,生成出更不容易出错的代码。换句话说,确定好技术栈,让 AI 成为这个技术栈的专家为你编写代码。

因此,在这个层面,程序员的「使用 AI 的能力」意味着,这个程序员知道什么样的场景适合什么样的技术栈,也侧面反映了这个程序员对技术社区是否保持敏锐的嗅觉。这是我认为 AI 时代程序员的一种硬实力。

对架构的理解

在《代码之外》听友线下见面会中,有听友提问,在 vibe coding 的时候,AI 只能做些一次性的软件,多次迭代后就会变成灾难。我的回答是,这是因为没有给 AI 提供一个你设计好的工程架构,让他在这个架构中行动。在这个新的时代,程序员应该以架构师的角度来工作。

我在 AI coding 一个项目前,我的脑海里会大概有一个工程架构的设计,比如,通用工具应该被统一放到一个什么文件,前端页面应该如何组织,接口应该遵循什么样的规范,错误处理应该怎么做等等。只要架构设计好,写在 AGENT.md 中,AI 自然会按照你的设计去做,而不是让 AI 天马行空地发挥。

不仅是在启动这个项目前要做好架构的思考,在维护的过程中,你指挥 AI 完成一个新的需求时,就应该思考完成这个需求的时候,将会有什么代码被写在哪一个地方。这个场景也适合使用各个 AI coding agent 的 Plan Mode 来完成,当 AI 告诉你它将要如何行动时,适当二次确认它要如何组织新的代码。

做到以上三个理解,我相信程序员可以游刃有余地使用 AI. 但我曾经在很多场合接触一些在一线写代码的程序员,发现他们对 AI 的接受程度是如此地低。很大程度上,我认为是一个缺乏以上三个理解的程序员,很难对 AI 建立信任关系,合作关系。

和我合作的一位程序员,在共同完成一个需求的时候,我在他旁边观察了一下他如何使用 AI, 结果只是非常浅地使用 auto complete. 我问他,为什么不尝试让 AI 完整地完成这个需求,他表示他认为 AI 不能胜任这个任务。

我说:

  1. 我的后端接口已经写好了,而且有了 openapi 的 YAML 文件( AI 生成的)
  2. 你知道这个需求涉及前端的哪个页面,在前端项目中,也有对数据请求层进行封装( AI 一定能知道怎么写数据请求)

满足了这两个条件,你只需要把接口文档给 AI, 然后告诉 AI 这次的需求,再告诉 AI 一点提示,大概是在哪个文件中修改。以现在旗舰模型的能力,AI 大概率能一次性完成。

他将信将疑,我直接在他电脑上给他演示这个操作,果然,AI 直接完美地完成了这个需求,不到 2 分钟。

而同时我也在思考,到底 AI 时代是否还需要程序员,或说需要怎样的程序员,好像渐渐有了答案。

作者: djyde | 发布时间: 2025-12-27 05:46


49. 求教一加 13 刷机后的 play integrity

最近把一加 13 解锁刷到 LineageOS 23, 在只安装 apatch 且不装任何 zygisk 或模块情况下,play integrity 的结果是”no integrity”

可是我的另外一个红米 note 12 turbo ,一模一样的设置,结果是 basic integrity.

想问下这个是我的设置有问题,还是传说中一加炸 tee 导致的呢?你们一加刷机后能保持 basic integrity 吗?

PS: basic integrity 对我来说够用了

作者: s82kd92l | 发布时间: 2025-12-27 11:21


50. antigravity 打开了自动化执行命令, 为啥还要老是停下了

想做甩手掌柜啊

我打开了命令行always proceed

我只在 deny 列表添加了rm

我希望除了删除文件需要我批准, 其他都自动得了

现在好像还是不行, 经常会停下来

我想 ai 牛马干活, 不要我管, 干完告诉我就行, 我看剧看 B 站

作者: iorilu | 发布时间: 2025-12-28 02:41