本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 学习算法的过程中总是不能清晰地理解运行的过程,于是我做了这个可视化算法执行过程的工具 PyWeave 是一个开源桌面应用,用来帮助学习和理解 Python 算法代码的执行过程 它内置 Python 编辑器,可以运行用户输入的 Python 代码,并逐行捕获执行状态。应用会把局部变量、数组内容、指针变量和变量变化展示成可视化图,让用户能看到算法每一步到底发生了什么 各位佬们来看看怎么样 https://github.com/XYZ1024-alt/PyWeave 1 个帖子 - 1 位参与者 阅读完整话题
macOS 27 atrust 零信任 app 能正常使用么,想冲,但是干活的机器,有没有升级了 27 并且用 atrust 的大佬能看看正常使用么?感谢大佬
macOS 27 atrust 零信任 app 能正常使用么,想冲,但是干活的机器,有没有升级了 27 并且用 atrust 的大佬能看看正常使用么?感谢大佬
想开源一个ATrust的docker实现。把ATrust装进docker进行分流控制,同时不影响代理软件使用TUN模式。 但是好像没法选择对应分类,不是很清楚为什么? 1 个帖子 - 1 位参与者 阅读完整话题
每次想在 VPS 上开个 SOCKS5 ,流程都差不多:装东西、写配置文件、配开机自启、再自己想个账号密码记下来。一套下来十几分钟,换台机器又来一遍。 所以我写了 next-socks5 ,把这套流程压成一条命令: # 二进制安装,启用认证(自动生成用户名/密码),随机端口: curl -fsSL https://raw.githubusercontent.com/ZingerLittleBee/next-socks5/main/install.sh | sh # 带参数,指定端口: curl -fsSL https://raw.githubusercontent.com/ZingerLittleBee/next-socks5/main/install.sh \ | sh -s -- --port 1080 # 也支持 docker 安装 curl -fsSL https://raw.githubusercontent.com/ZingerLittleBee/next-socks5/main/install.sh | sh -s -- --method docker --auth --port 1080 跑完它会自动生成账号密码、挑一个没被占用的端口、装好 systemd 服务并设成开机自启,最后把完整的代理地址打印出来——复制粘贴就能用,不用再去翻配置。不想装二进制的话加个 --method docker ,给你起一个会自动重启的容器。 几个我自己比较在意、也是和其他轻量 SOCKS5 不太一样的地方: 支持 UDP ,不只是 TCP 。 很多轻量实现只做了 CONNECT ,UDP ASSOCIATE 直接缺席,导致一些走 UDP 的场景用不了。这个两样都有。并且支持 UDP 端口范围和设置通告公网 IP 默认不是开放中继。 内网地址、回环、云厂商的元数据接口默认全都拦着。不用担心刚开起来就被人拿去探你的内网,或者变成别人的免费跳板。想放开也行的。 够小。 镜像 3.5MB ,二进制是静态 musl 、没有运行时依赖,x86_64 和 aarch64 都有预编译包。软路由、小盒子上跑也无所谓。 自带实时面板。 这是我个人最喜欢的一点。装好之后 next-socks5 attach 进去,能直接看到当前每一条连接、上下行流量、出错日志,一目了然——不用再 tail 系统日志去猜服务器上到底在跑什么。SOCKS5 带这种东西的不多。 Rust 写的,开源。如果你也经常需要临时搭代理,可以试试,有问题欢迎提 issue 。 GitHub: github.com/ZingerLittleBee/next-socks5
和 Claude 协作设计的 rust 风格程序语言 Abrase ,用它写了这个视听/游戏引擎 Posara ,trailer 里所有音乐和视觉元素都是用它写的。 https://github.com/KHN190/Posara
和 Claude 协作设计的 rust 风格程序语言 Abrase ,用它写了这个视听/游戏引擎 Posara ,trailer 里所有音乐和视觉元素都是用它写的。 https://github.com/KHN190/Posara
和 Claude 协作设计的 rust 风格程序语言 Abrase ,用它写了这个视听/游戏引擎 Posara ,trailer 里所有音乐和视觉元素都是用它写的。 https://github.com/KHN190/Posara
每次想在 VPS 上开个 SOCKS5 ,流程都差不多:装东西、写配置文件、配开机自启、再自己想个账号密码记下来。一套下来十几分钟,换台机器又来一遍。 所以我写了 next-socks5 ,把这套流程压成一条命令: # 二进制安装,启用认证(自动生成用户名/密码),随机端口: curl -fsSL https://raw.githubusercontent.com/ZingerLittleBee/next-socks5/main/install.sh | sh # 带参数,指定端口: curl -fsSL https://raw.githubusercontent.com/ZingerLittleBee/next-socks5/main/install.sh \ | sh -s -- --port 1080 # 也支持 docker 安装 curl -fsSL https://raw.githubusercontent.com/ZingerLittleBee/next-socks5/main/install.sh | sh -s -- --method docker --auth --port 1080 跑完它会自动生成账号密码、挑一个没被占用的端口、装好 systemd 服务并设成开机自启,最后把完整的代理地址打印出来——复制粘贴就能用,不用再去翻配置。不想装二进制的话加个 --method docker ,给你起一个会自动重启的容器。 几个我自己比较在意、也是和其他轻量 SOCKS5 不太一样的地方: 支持 UDP ,不只是 TCP 。 很多轻量实现只做了 CONNECT ,UDP ASSOCIATE 直接缺席,导致一些走 UDP 的场景用不了。这个两样都有。并且支持 UDP 端口范围和设置通告公网 IP 默认不是开放中继。 内网地址、回环、云厂商的元数据接口默认全都拦着。不用担心刚开起来就被人拿去探你的内网,或者变成别人的免费跳板。想放开也行的。 够小。 镜像 3.5MB ,二进制是静态 musl 、没有运行时依赖,x86_64 和 aarch64 都有预编译包。软路由、小盒子上跑也无所谓。 自带实时面板。 这是我个人最喜欢的一点。装好之后 next-socks5 attach 进去,能直接看到当前每一条连接、上下行流量、出错日志,一目了然——不用再 tail 系统日志去猜服务器上到底在跑什么。SOCKS5 带这种东西的不多。 Rust 写的,开源。如果你也经常需要临时搭代理,可以试试,有问题欢迎提 issue 。 GitHub: github.com/ZingerLittleBee/next-socks5
IT之家 6 月 8 日消息,TIOBE 编程社区指数是一个衡量编程语言受欢迎程度的指标,评判的依据来自世界范围内的工程师、课程、供应商及搜索引擎,目前 TIOBE 官网公布了 2026 年 6 月的编程语言排行榜,IT之家整理如下: Python 排行第一:占比 18.96%,本月下降 6.91% C 排行第二:占比 10.77%,本月上升 1.30% C++ 排行第三:占比 8.03%,本月下跌 2.65% Java 排行第四:占比 7.90%,本月下跌 0.94% C# 排行第五:占比 4.85%,本月上升 0.17% JavaScript 排行第六:占比 3.04%,本月下跌 0.17% Visual Basic 排行第七:占比 2.80%,本月上升 0.59% SQL 排行第八:占比 1.77%,本月上升 0.23% R 排行第九:占比 1.69%,本月上升 0.30% Delphi/Object Pascal 排行第十:占比 1.54%,本月下跌 0.60% Scratch 排行第十一:占比 1.46%,本月上升 0.27% Rust 排行第十二:占比 1.26%,本月上升 0.30% TIOBE 的 CEO Paul Jansen 表示,两个月前,其曾认为 Rust 的发展似乎进入“瓶颈期”,主要依据是 Rust 在 TIOBE 排行榜中已连续一年未能实现名次提升。然而,Rust 近期的变化推翻了其判断, 在最新一期排行榜中,Rust 创下历史新高,首次进入全球第 12 名 。 作为一门兼具高性能、内存安全以及强表达能力的编程语言,Rust 在设计理念上实现了少数语言才能同时兼顾的特性,使其在系统编程领域具备持续上升的竞争力,并有潜力在长期内成为与 C、C++ 直接竞争的重要选手。 不过当下 Rust 语言面临的挑战依然存在,其整体上手难度较高,这在一定程度上限制了其用户群体规模,也使其冲击排行榜的过程更具难度。尽管如此,技术发展的走向往往难以精确预测,Rust 当前的发展势头已经超出此前预期,未来几年其增长曲线是否能够延续,仍值得持续观察。
我正在开发 oak-keyring ,这是一款用 Rust 编写的、以隐私和本地优先为理念的密码管理器。其命令行工具名为 ok 。 这个想法很简单:虽然很多密码管理器都提供了命令行接口( CLI ),但在日常的密码库管理中,用户仍然需要浏览、选择、编辑、确认操作、检查状态以及复制密钥等。我希望将这些工作流完全保留在终端内,通过一个全屏的、键盘驱动的终端用户界面( TUI )来实现,而不是依赖浏览器或桌面应用程序。 目前支持的功能包括: 浏览、创建、编辑和删除凭证及安全笔记 全屏终端 UI ,包含侧边栏导航、搜索、标签、回收站及批量操作 密码生成器,可独立使用或在表单中直接调用 默认使用本地 SQLCipher 加密的密码库 支持 BIP-39 助记词用于密码库恢复 导入/导出功能 闲置自动锁定 密码健康检查及泄露密码提示 可选的 Google Drive 同步功能(目前处于预览阶段) 当前状态: 基于 MIT 许可证开源 最新版本:v0.8.0-preview.1 已提供 macOS Apple Silicon 和 Intel 架构的构建版本 暂不支持 Linux 和 Windows 构建 预览版未经过签名和公证 在正式发布稳定版之前,数据格式和打包方式可能会发生变化 不提供托管账户恢复服务,用户需自行妥善保管主密码、恢复助记词及备份 代码仓库: https://github.com/OpenKeyring/oak-keyring
我正在开发 oak-keyring ,这是一款用 Rust 编写的、以隐私和本地优先为理念的密码管理器。其命令行工具名为 ok 。 这个想法很简单:虽然很多密码管理器都提供了命令行接口( CLI ),但在日常的密码库管理中,用户仍然需要浏览、选择、编辑、确认操作、检查状态以及复制密钥等。我希望将这些工作流完全保留在终端内,通过一个全屏的、键盘驱动的终端用户界面( TUI )来实现,而不是依赖浏览器或桌面应用程序。 目前支持的功能包括: 浏览、创建、编辑和删除凭证及安全笔记 全屏终端 UI ,包含侧边栏导航、搜索、标签、回收站及批量操作 密码生成器,可独立使用或在表单中直接调用 默认使用本地 SQLCipher 加密的密码库 支持 BIP-39 助记词用于密码库恢复 导入/导出功能 闲置自动锁定 密码健康检查及泄露密码提示 可选的 Google Drive 同步功能(目前处于预览阶段) 当前状态: 基于 MIT 许可证开源 最新版本:v0.8.0-preview.1 已提供 macOS Apple Silicon 和 Intel 架构的构建版本 暂不支持 Linux 和 Windows 构建 预览版未经过签名和公证 在正式发布稳定版之前,数据格式和打包方式可能会发生变化 不提供托管账户恢复服务,用户需自行妥善保管主密码、恢复助记词及备份 代码仓库: https://github.com/OpenKeyring/oak-keyring
我正在开发 oak-keyring ,这是一款用 Rust 编写的、以隐私和本地优先为理念的密码管理器。其命令行工具名为 ok 。 这个想法很简单:虽然很多密码管理器都提供了命令行接口( CLI ),但在日常的密码库管理中,用户仍然需要浏览、选择、编辑、确认操作、检查状态以及复制密钥等。我希望将这些工作流完全保留在终端内,通过一个全屏的、键盘驱动的终端用户界面( TUI )来实现,而不是依赖浏览器或桌面应用程序。 目前支持的功能包括: 浏览、创建、编辑和删除凭证及安全笔记 全屏终端 UI ,包含侧边栏导航、搜索、标签、回收站及批量操作 密码生成器,可独立使用或在表单中直接调用 默认使用本地 SQLCipher 加密的密码库 支持 BIP-39 助记词用于密码库恢复 导入/导出功能 闲置自动锁定 密码健康检查及泄露密码提示 可选的 Google Drive 同步功能(目前处于预览阶段) 当前状态: 基于 MIT 许可证开源 最新版本:v0.8.0-preview.1 已提供 macOS Apple Silicon 和 Intel 架构的构建版本 暂不支持 Linux 和 Windows 构建 预览版未经过签名和公证 在正式发布稳定版之前,数据格式和打包方式可能会发生变化 不提供托管账户恢复服务,用户需自行妥善保管主密码、恢复助记词及备份 代码仓库: https://github.com/OpenKeyring/oak-keyring
IT之家 6 月 7 日消息,游戏《锈湖》Rusty Lake 官方昨日宣布,系列新作《湖之仆从》(Servant of the Lake)将于 2026 年 8 月 13 日正式发售。 该作将登陆苹果 App Store、谷歌 Google Play 和 Steam 等平台,支持简体中文。 IT之家附游戏介绍如下: 欢迎来到 Vanderboom 宅邸,这里是臭名昭著的 Vanderboom 家族的居所! 访客即将到来,而你需要立刻开始履行你的职责! 解开各种谜题,完成每日任务,打理家务,迎接访客并确保他们的舒适,同时协助家族实现他们的在炼金术道路上的野心。 Servant of the Lake 是 Rusty Lake 系列最新推出的 点击式解谜冒险游戏 ,由 Cube Escape 系列游戏,The Past Within 和 Underground Blossom 的同班人马创作。 游戏特色 : 回归我们的根源 — Servant of the Lake 是一款经典的单人 Rusty Lake 点击式解谜冒险,故事背景设定在 Aldous Vanderboom 和 William Vanderboom 时代臭名昭著的 Vanderboom 宅邸。 解开超现实的谜题 — 任务将从简单的整理家族画像、洗衣服,到协助复杂的实验与收拾残局逐渐升级。 揭开黑暗的叙事 — 经历发生在 Rusty Lake: Roots 数十年前的事件! 作为 Vanderboom 宅邸的仆人,你可以探索宅邸的每个房间,同时确保家族得到妥善照料。你觉得自己能撑过这个周末吗? 沉浸式原声音乐 — 由 Victor Butzelaar 创作并演奏的萦绕心头的旋律,将在你完成日常任务时伴随左右。
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 项目开源地址: GitHub - wnzzer/rank-analysis: 基于Tauri 2 + Rust,构建的一个LOL 英雄联盟腾讯服战绩查询助手,创新式标签标记机制,一键分析的混子、牛马队友 · GitHub 大家好,我是只会写 bug 的靓仔。 之前发过几篇 LOL 排位分析工具的帖子( 项目介绍 | v1.2 更新 ),当时还是 Electron + Go 的架构。有老哥评论说"这么大?",确实如此,尤其我经常在网吧这种裸连 github 的环境中使用 —— 一个查战绩的小工具,安装包 128 MB ,下它比打一把排位还久。 因此去年花了几个月,把整个技术栈从 Electron+Go 迁到了 Tauri 2 + Rust 。结果: 安装包: 128 MB → 5 MB (缩小 96%,GitHub Release 截图为证) 冷启动: ~1.5s → ~500ms 进程架构: Electron 壳 + Go server 两个程序 → 单个 Tauri 二进制 (砍掉独立后端进程和 localhost HTTP 那一跳) 内存: ~306 MB → ~241 MB (WebView2 那部分是系统共享的,虽然 tauri 应用增加这个效果会变得更好) 下面把迁移过程和踩的坑记录一下,如果你也在做类似的桌面端项目,或者 Electron / Tauri 之间纠结,这篇应该能帮你省点时间。 先说老架构为什么非换不可 最早的设计是这样的: 但三个绕不开的痛点: 128 MB 劝退用户 Electron 自带 Chromium runtime,光这就 60~80 MB,加上 Go binary 30 MB+。v1.0 打出来 128 MB 。后来挤了又挤,稳定在 85~93 MB。 一个查战绩的工具下 100 多 MB,用户等下载的时间够再开一把了。这是后来下定决心换 Tauri 最直接的原因。 体积不是"技术债",是用户会不会用你的第一道门槛。 两个进程,启动和调试都难受 启动流程:Electron 起 → 拉起 Go server → Go 监听端口 → Electron 前端轮询 Go 是否就绪 → 才能调 LCU。任何一环卡住都是"加载中"。 Go 那边 panic 了,Electron 这边只看到 fetch 超时。调试得在两个终端间来回切,日志打两份。这种痛谁用谁知道。 localhost HTTP 是隐性税 每次前端调后端:JS 对象 → JSON 序列化 → HTTP body → loopback 网络 → Go 反序列化 → 业务逻辑 → 再原路返回。虽然是 loopback,HTTP 头解析、TCP 握手、JSON 双向序列化的开销都是实实在在的。查战绩这种"一次拉 10 个召唤师 + 各自 20 场"的场景,延迟肉眼可见。 为什么是 Tauri 2 + Rust Tauri 1 vs 2 :Tauri 1 在 Windows 用 Edge HTML 兜底,2 全面切 WebView2,兼容性和稳定性好太多。插件系统也重做了(v2),autostart / single-instance / fs 都有一等公民支持。还有新的 Capability + Permission 模型,后面会说到踩坑。 为什么不是 Go 了 :Tauri 所有 #[tauri::command] 、State、AppHandle、事件总线都是 Rust API。继续用 Go 等于再绕一层 cgo/HTTP,那迁了个寂寞。Rust 直接编译进 Tauri 主进程,单二进制分发,不需要子进程。 那为什么不是 Wails? 这个问题我猜 Go 老哥们第一个就要问 —— Wails 不就是 Go + 系统 WebView 嘛,照理说我后端一行都不用重写,最省事。我也认真纠结过。最后没选它,原因挺主观的:一是当时 Wails 在多窗口、自动更新、权限这些一等公民支持上,体感不如 Tauri 2 厚实,遇到坑社区里能搜到的答案也少;二是说实话有点私心,就想趁这个项目顺手学一下 Rust。所以这不是"Wails 不行",而是"我想学 Rust + 赌 Tauri 生态"。如果你就是想保留 Go 又要小体积,Wails 完全值得先试一把,别被我带跑。 UI 库也顺便从 TDesign 换成了 Naive UI ,暗色主题和表格组件更顺。这一步单独做了一周,没掺在迁移里。 迁移路径:不是一锅煮的 很多博客写"我用一个周末把 X 重写成 Y"。我没那么神。实际上是 两条线分头推 ,节奏完全不一样: 迁移线 起点 终点 耗时 前端壳 :Electron → Tauri 2025-03-30(v1.5.4 双轨试水) 2025-04-19(v1.5.6 纯 Tauri) ~1 个月 后端语言 :Go → Rust 2025-03-31 2025-12-13(删 4274 行 Go) ~8 个月 前端壳为什么 1 个月就切完了 用户用脚投票。 v1.5.4 同时发了 Electron 86 MB 和 Tauri 10 MB 两个包: 同一天、同一版本、同一功能集, 86.3 MB vs 10.2 MB 。这还纠结啥?2 周后 v1.5.6 就只发 Tauri 了。 后端为什么磨了 8 个月 因为对用户来说,Go server 也好、Rust 也好, 功能没差 。没有压差就不急: 2025-03-31 :新建 Tauri 目录,跟旧 Go 目录并存 2025-04 ~ 2025-12 :一个 endpoint 一个 endpoint 往 Rust 搬。期间 没冻需求 ,新功能照加 2025-12-13 : -4274 行 Go / 34 个文件 ,旧服务彻底删 为什么不一刀切?因为 用户在线 啊(虽然没多少用户)。项目每 1-2 周发一版,停下来做半年大重写不现实。旧 Go server 保留着继续吃 bug fix,新功能直接写 Rust(有点像最近 bun 迁移 rust 的思路),旧 endpoint 按频率从高到低搬过去,搬完一个前端就切流量。并存期间项目目录长这样(确实丑,但能持续发版): 三个大坑 每个都卡了我至少半天,写出来希望大家别再踩。 坑 1:LCU 自签证书 —— Rust 的 API 名把 “danger” 写脸上了 LCU API 是 HTTPS,但用的是每次客户端启动时动态生成的自签证书。Go 里关掉 TLS 校验很简单: tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } client := &http.Client{Transport: tr} 到了 Rust 的 reqwest : let client = reqwest::Client::builder() .danger_accept_invalid_certs(true) .build()?; 看到 danger_accept_invalid_certs 这个名字的时候我愣了一下 —— 但 LCU 场景下这是唯一解,Riot 不可能给你 CA 证书。 更大的坑是 port 和 auth-token 怎么拿。 这俩是 LCU 每次启动随机生成的,写在自己进程的命令行参数里( --app-port=xxxxx --remoting-auth-token=yyy )。网上清一色用 wmic 去查,但那玩意要 管理员权限 。我之前专门写过一篇 无管理员权限的获取方法(全网首发 Go) ,原理是调 Windows 的 NtQueryInformationProcess API: use windows::Win32::System::Threading::*; let h = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, false, pid)?; let mut buf = vec![0u8; 4096]; let mut ret_len = 0u32; NtQueryInformationProcess( h, ProcessCommandLineInformation, buf.as_mut_ptr() as _, buf.len() as _, &mut ret_len )?; // 解析 UNICODE_STRING → 正则抠 --app-port / --remoting-auth-token PROCESS_QUERY_LIMITED_INFORMATION 是低权限级别,拿不到敏感数据。但 进程命令行不算敏感 —— Windows 设计里被忽视的一个口子,刚好让我们绕过了管理员要求。 那 NtQueryInformationProcess 吐出来的那坨 buffer,怎么变成 port 和 token?谜底就在这块 buffer 的结构上 —— 它开头是一个 UNICODE_STRING ( Length + MaximumLength + 一个指向宽字符串的指针),真正的命令行数据就跟在后面。把宽字符串转成 String ,剩下的就是正则的活了: #[repr(C)] struct UnicodeString { length: u16, maximum_length: u16, buffer: *mut u16 } // buf 就是上面 NtQueryInformationProcess 填好的缓冲区 let us = unsafe { &*(buf.as_ptr() as *const UnicodeString) }; let wide = unsafe { std::slice::from_raw_parts(us.buffer, (us.length / 2) as usize) }; let cmdline = String::from_utf16_lossy(wide); // 命令行里把这两个随机值抠出来 let re_port = Regex::new(r"--app-port=(\d+)").unwrap(); let re_token = Regex::new(r"--remoting-auth-token=([\w-]+)").unwrap(); let port = re_port.captures(&cmdline).and_then(|c| c.get(1)).map(|m| m.as_str().to_string()); let token = re_token.captures(&cmdline).and_then(|c| c.get(1)).map(|m| m.as_str().to_string()); (边界检查和错误处理我省了,能看懂思路就行;完整实现在上面那篇全网首发的文里。) 坑 2:Tauri 2 的 Permission 模型 —— 配对了跑不通,报错还不告诉你 Electron 安全模型基本就是开/关 nodeIntegration 二选一。Tauri 2 是 白名单粒度 ,每个能力都要显式声明: { "permissions": [ "core:default", "shell:allow-open", "http:default", "core:window:allow-start-dragging" ] } 第一次写很容易陷入**“代码明明对了为啥跑不通”**的死循环 —— 因为权限不足的报错不指向配置文件,而是给你一个看起来像"函数不存在"的错误。比如我漏配 dialog 权限时,前端 invoke 收到的是这么一句: command plugin:dialog|open not allowed. Permissions associated with this command: dialog:allow-open 乍一看像命令名写错了,对着代码翻来覆去找不出毛病。其实谜底就在报错的后半句 —— 它已经把你要加的权限名( dialog:allow-open )报出来了,只是第一次根本不会想到往那看。我在这上面浪费了大半天。 后来踩熟了,记了几个具体坑: http:default 要写两遍 :第一遍启用 fetch 命令,第二遍配 URL 白名单 scope。只写第一遍,命令存在但 fetch 调用静默失败,连个报错都没有 动态窗口要通配符 :项目给每场对局弹详情窗口,label 是动态的( match-detail-{id} ),capability 里得写 "windows": ["main", "match-detail-*"] 。漏了就所有 command 调不通 core:window:allow-start-dragging :项目禁了原生标题栏,整个拖拽靠这个 API。漏配了窗口就拖不动,你猜我怎么发现的 经验 :每加一个新 Tauri command 或新窗口,第一件事查 capabilities/default.json 。权限先行,代码后行。 坑 3:Rust struct 和 TS type 的同步 —— 手动对齐的酸爽 旧前端调 Go 是 fetch ,新前端调 Rust 是 invoke : // 旧 const data = await fetch('/api/match-history?puuid=xxx').then(r => r.json()) // 新 const data = await invoke('get_match_history', { puuid: 'xxx' }) 表面上是换了个调用方式。但真正头疼的是: Rust 那边 struct 改一个字段,TS 怎么知道? 我试过 ts-rs、specta 这些自动生成工具,最后没用,纯手动对齐。原因很实际: 总共就十几个核心 struct,自动生成引入的构建管线复杂度超过了收益 Rust 这边统一用 #[serde(rename_all = "camelCase")] ,自动转 camelCase,写 TS 的时候照着来就行 TS 文件头注释直接标注对应的 Rust 文件路径: /** * AI 标签建议相关类型,与 Rust schema * (src-tauri/src/command/user_tag_config.rs) 严格同构。 */ CI 两边都跑 typecheck(前端 vue-tsc ,后端 cargo clippy ),能挡住大部分 但确实出过 bug —— Rust 的 RecentData 有 select_mode ,TS 那边多写了 wins 和 losses 两个字段,Rust 根本不返回这俩。运行时永远是 undefined , 不报错但数据是错的 。当时前端那块胜负数永远显示空,我对着前端代码看了半天没看出毛病,最后跑去 grep Rust 的 struct 才发现:人家压根没这俩字段。这种静默 bug 比崩了还可怕,你不专门盯根本发现不了。 建议 :struct 超过 30 个或者多人协作,老老实实用 ts-rs / specta 自动生成。手动对齐只在一个人写、量不大的情况下才省心。 顺手白嫖的一个好处:自动更新 这个本来没在计划里,迁完才发现是非常好用的功能。 Electron 时代我也想做自动更新,但 electron-updater 那套配下来挺烦:要么自己搭个更新服务器,要么拿 GitHub 当源,还要处理签名、增量包,配置一大坨。我当时嫌麻烦一直没正经做,全靠用户自己去 Release 页手动下新版。 Tauri 2 有个官方的 tauri-plugin-updater ,配置就几行: // tauri.conf.json { "plugins": { "updater": { "endpoints": ["https://github.com/wnzzer/rank-analysis/releases/latest/download/latest.json"], "pubkey": "你的公钥" } } } 更新源就是挂在 GitHub Release 上的一个 latest.json (等下"效果对比"那节,v1.8.2 截图里第一行那个 10.8 KB 的 latest.json 就是它),长这样: { "version": "1.8.2", "pub_date": "2026-05-24T00:00:00Z", "platforms": { "windows-x86_64": { "signature": "更新包的签名串", "url": "https://github.com/wnzzer/rank-analysis/releases/download/v1.8.2/lol-record-analysis-app-1.8.2-setup.exe" } } } 前端启动时调一下 check() ,有新版就提示下载安装,三五行的事: import { check } from '@tauri-apps/plugin-updater' const update = await check() if (update) { await update.downloadAndInstall() // 下完自动重启 } 这里有个容易搞混的点得说清楚 :Tauri updater 要你用一对自己生成的密钥( tauri signer generate ,免费)给「更新包」签名,公钥填进上面的配置 —— 这个签名是给自动更新做校验用的,和 Windows 上那种要花钱买的「代码签名证书」完全是两码事。我穷,没买代码签名证书,所以首次安装时 Windows SmartScreen 还是会弹个"未知发布者",这个坑我到现在没填。但自动更新本身一分钱没花就跑通了,对一个免费小工具来说,够用了。 效果对比(有图有真相) 安装包体积演变 每一行都是 GitHub Release 公开记录,可以去 Releases 页 核对: 版本 日期 大小 阶段 v1.0 2025-01-13 128 MB Electron + Go 起点 1.1 → 1.5.3 01~03月 ~85-93 MB Electron 时代 v1.5.4 2025-03-30 86.3 MB + 10.2 MB 双轨同框 v1.5.6 2025-04-19 10.3 MB 纯 Tauri v1.6.0 2025-10-08 6.7 MB 升 Tauri 2 v1.8.2 2026-05-24 5.01 MB 当前 起点 v1.0 —— 128 MB : 转折点 v1.5.4 —— Electron 和 Tauri 同框 : 当前 v1.8.2 —— 5.01 MB : 内存占用 旧版 Electron + Go(稳态 ~306 MB) : 新版 Tauri + Rust(稳态 ~241 MB) : WebView2 那 ~200MB 看着大,但 系统里只要装了 Edge 或者别的 Tauri 应用,这部分就是共享的 ,边际内存远小于这个数。 截图里 实用工具 (6) 的 6 个进程是 WebView2 的渲染 / GPU / 管理器等辅助进程 —— 和当年 Electron 的多进程模型一个道理,这部分跑不掉。前面"进程架构"那条说的"单个二进制",指的是 app 自己不再额外起一个 Go server 子进程 + localhost HTTP ,不是说 OS 层只剩 1 个进程。 几句废话 说实话,一开始决定迁的时候心里也没底。毕竟 Electron + Go 虽然,但它跑着呢。万一迁到一半翻车了,那才叫社死。 后来想通了: 128 MB 对一个查战绩的工具来说太离谱了。 用户不会关心你用的什么框架,他们只关心下完打开能不能用。Tauri 让安装包从 128 MB 变成 5 MB —— 不是"技术优化",是 让产品有被打开的机会 。 如果你也在做类似的桌面端项目,我的建议就三条: 别一刀切 ,留旧项目并存,新目录单独建,随时能 ship 先迁用户感知最强的功能 ,不是代码量最小的 别在迁移里掺重构 ,已经够复杂了,UI 改版分开做 就这些。希望对在做类似项目的朋友有帮助。 相关链接: 仓库: github.com/wnzzer/rank-analysis 最新版下载: releases/latest LCU 凭据获取(坑 1 详细实现): 无管理员权限 LCU auth-token、port 获取 历史版本: ① 项目介绍 | ② v1.2 | ③ 分页设计 觉得有用的话帮忙点个赞 有问题也可以去 GitHub 提 issue 交流 5 个帖子 - 5 位参与者 阅读完整话题
github.com GitHub - Everless321/Iris 通过在 GitHub 上创建帐户来为 Everless321/Iris 开发做出贡献。 手里有30多台vps 里面混合很多家宽和落地机,之前一直都用nftables控制端口转发,但是配置麻烦,而且流量监控起来也比较麻烦,同时我也需要一些探针的需求,但是哪吒和korami等探针对我来说有点多余,于是搓了Iris-Rust编写的多级转发控制平台。 技术栈: master :axum(HTTP API + SLA + Prometheus)+ tonic(gRPC mTLS 控制面)+ SQLite 节点 :raw_tunnel(TCP)+ quic_tunnel(UDP datagram) 前端 :React + AntD 单 binary,无外部依赖 核心特色 1. 任意 N 跳级联 path = [入口组, 中转组, 出口组] ,每跳一个节点组,组内多节点做负载均衡和 failover。 中国优化线路当入口、香港国际优化线路当中转、家宽落地当出口,或者中国优化直连家宽落地——两跳。 2. 每跳 4 种负载均衡可选 加权轮询 会话保持(Rendezvous 一致性哈希,节点上下线只影响该节点的会话) 最小连接 延迟最优(基于 5s 一次的健康探测) 每一条都可单独配置 3. 全链路 mTLS + 自动续签 master 启动自动生成根 CA,节点 enroll 时签发 365 天 cert,剩 30 天自动调 RenewCert申请新证书。 4. 极致速度优化 采用GCP 美 日 新加坡 三区域10G口机器测试 采用splice(2)内核态转发,非加密场景传输速率几乎持平nftables和realm 并发 realm Iris (splice) P=1 (单流) 9.35 Gbps 9.56 Gbps P=2 8.93 Gbps 8.93 Gbps P=4 8.63 Gbps 9.51 Gbps P=8 9.32 Gbps 9.54 Gbps 5. TCP + UDP 双协议,UDP 不走 TCP 隧道 Iris 的 UDP 走独立的 QUIC datagram 通道,纯用 QUIC 的多路复用和 mTLS。跨 区域(测试选择gcp的日美亚)实测丢包稳定 <2% 。 6. 实时流量统计 这块直接回应"探针需求": 每条 forward 的 bytes_in / bytes_out 每 5 秒上报一次 /metrics 端点原生导出,可以直接丢给Grafana。 节点延迟矩阵 + SLA 看板 (每个节点相邻的 RTT 全量探测) 7. 一键节点安装 / 升级 / 卸载 装节点: curl -fsSL https://raw.githubusercontent.com/Everless321/Iris/main/install.sh \ | sudo bash -s -- --master https://<MASTER>:7080 --token <TOKEN> 升级 master 自己: curl -fsSL https://raw.githubusercontent.com/Everless321/Iris/main/install.sh \ | sudo bash -s -- --upgrade-master 卸载(自动备份证书和配置到 /tmp ): curl -fsSL https://raw.githubusercontent.com/Everless321/Iris/main/install.sh \ | sudo bash -s -- --uninstall 脚本自动检测架构、下载 binary、enroll 兑换 mTLS 证书、写 systemd unit、起服务。** 30 秒一台。** 8. L4 透传 TCP / UDP 纯透传,上层跑 SS / Trojan / VLESS / Hysteria / WireGuard 对 Iris 完全透明。你换协议不用动 Iris,Iris 升级不用动你的协议层。 3 个帖子 - 2 位参与者 阅读完整话题
最近站里大善人多,习惯了问codex。但就一个RustDesk-win 客户端 服务不能自启动的问题,codex 改配置 改服务 折腾半天没效果。然后一搜就是个很常见的问题, 在快捷方式后面加个 --install-service -wait -Verbose就行,或者创建个服务 sc.exe create RustDeskS binPath=“C:\Program Files\RustDesk\rustdesk.exe --service” start=auto DisplayName=“RustDeskS” 1 个帖子 - 1 位参与者 阅读完整话题
IT之家 6 月 5 日消息,微软正积极推进使用 Rust 语言改造 Windows 11 系统,上周其 GitHub 仓库 windows-rs 合并 Windows Reactor 相关 PR, 后者为 WinUI 构建面向 Rust 开发人员的 UI 库。 IT之家今天报道,微软在 Build 大会上表示,Windows 11 系统过去几年的界面调整,不少都建立在 Electron(跨平台桌面框架)、React Native(跨平台界面框架)和 WebView 方案上,带来内存占用偏高、启动偏慢、CPU 活动增加与动画卡顿等问题。 微软在 Build 大会上透露,公司团队正加速推进 WinUI,目前重写 Windows 11 shell 的核心部分,且更多第一方功能会直接基于原生框架构建。 而在推进 WinUI 改造 Windows 11 系统中,本次合并的 Windows Reactor 的 UI 库有望为原生 Windows 桌面应用程序引入了类似 React 的组件模型。 该 PR 由微软软件工程师 Kenny Kerr 负责,他主要负责 Windows 操作系统的 C++ 和 Rust 工具及库的开发。 Kerr 设计一个 WinUI 相册应用,使用 Rust 后的优势如下: 指标 Rust C# (JIT) C# (PublishAOT) 构建时间 11.0 s 23.9 s 50.8 s 部署规模 3.34 MB 128 MB 163 MB 打开第一个窗口时间 160 ms 465 ms 364 ms 工作集(稳定后) 109.5 MB 162.6 MB 128.4 MB Private memory 101.0 MB 121.0 MB 117.3 MB CPU time (startup + settle) 594 ms 1,063 ms 906 ms Reconcile 时间 (4,900 cells @ 10%) 3.1 ms 27.0 ms 29.4 ms
如图: 1flowbase是前端pnpm,后端是rust,然后之前朋友反馈arm的CPU拉不了镜像,然后就让ai优化一下做成支持多平台架构发布镜像了。 然后确实支持多平台CPU了,但是速度巨慢,打一次包要两个小时,下面是gpt分析: 如选择B方案: 打包镜像只需要不到10分钟: 各位如果对于详细技术对应action感兴趣,或者对于1flowbase感兴趣可以去仓库中看看: 开源推广-1flowbase正式发布-组合发布专属大模型-个人和企业也能做模型上游供应商 开发调优 本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 历时两个月… 这个是之前文章了,就不贴仓库了,不然又要审核 1 个帖子 - 1 位参与者 阅读完整话题
像java这个传统语言在AI下似乎没有什么优势。 想性能用 go/rust 想迭代快 生态大 用 js/ts 算法相关用 python 其他传统语言 (黑人问号?) 25 个帖子 - 12 位参与者 阅读完整话题