Jirajine 最近的时间轴更新
Jirajine

Jirajine

V2EX 第 417035 号会员,加入于 2019-05-30 22:57:00 +08:00
今日活跃度排名 1404
Jirajine 最近回复了
2 小时 56 分钟前
回复了 syaka 创建的主题 Rust rust 的模块化太繁琐
我到觉得两者没太大优劣之分。
rust 的单文件模块,一个模块代码很多的时候文件就会太长,不得不分模块。而 go 就可以用多个文件写同一个模块。
而 go 用目录分模块,模块很多一个模块代码很少的时候也会很麻烦,并且文件名不体现模块名。

但是 rust 整个的包管理 crate 系统要更好,lib 的归 lib,bin 的归 bin,比 go 都混到一起更清晰。
23 小时 45 分钟前
回复了 deasty 创建的主题 问与答 奶牛要取消免费用户的网盘了,有替代产品吗?
没有比对象对象存储 s3 这些更适合的网盘了。
可靠性好,速度快,按量付费,有 API 无论备份还是分享都很方便。
23 小时 51 分钟前
回复了 JoveYu 创建的主题 Linux 成功移植 UOS 微信接口到 FreeChat 上, AUR 体验
以微信的尿性,只要敢这么用登录直接封号。解封需要好友输入银行卡号 /人脸识别辅助验证。
你要用 clash 就自己仔细阅读文档自己配置,网上流传的和各种鸡场托管的绝大多数都极度不安全。
另外不建议用任何闭源客户端,有被收编的风险。
1 天前
回复了 iceorange 创建的主题 程序员 cproxy: 使用简单的 Linux per app 透明代理
@iceorange #22 结果“乱七八糟”哪里是主观感觉了,你的程序存在 race condition,运行的结果是不确定的,那就是乱七八糟啊。
同样,这个后果造成的影响就是多数情况正常工作,偶发性的突然出现无法连接、没有回收等各种问题(出现冲突时时运行结果本身就是不明确的)。当然很容易让用户非常困惑并且难以排查(复现)。
又看了下你这个 pid,你的程序可能会使用自己的 pid,也可能会使用目标程序的 pid,当然存在 pid 回收后再次分配导致你的名称冲突,进而因为缺乏原子性造成 race condition 。

当然也不是说没有原子性就一定会有问题,但你需要考虑各种不同的情况,子进程嵌套调用、不同方式调用、僵尸进程、被 kill 后未回收等,这是非常 error prune 的。
1 天前
回复了 iceorange 创建的主题 程序员 cproxy: 使用简单的 Linux per app 透明代理
@iceorange #9 因为操作 iptables 不是原子性的,一个进程在添加 /删除规则的同时正好有其他进程也在添加 /删除规则,最终的结果就是乱七八糟。
我看了一下你是用 pid 区分链名,多数情况下应该没有问题,但要是恰好有回收的 pid 导致重复就会导致非常令人困惑且难以排查的 bug 。
另外你的大多数逻辑甚至连文件 IO 都不写代码而是用 shell 命令实现,与其把 shell 脚本嵌入到代码里,直接用 shell 脚本不方便吗?
解析命令行参数和信号处理同样可以用库。至于检查错误,shell 脚本检查 shell 命令的错误当然比 rust 容易。
1 天前
回复了 iceorange 创建的主题 程序员 cproxy: 使用简单的 Linux per app 透明代理
@iceorange 想象一下用户用你的工具并发启动多个进程,多个进程同时操作 iptables 会怎样。
nftables 一大亮点就是提供了多个程序并发操作防火墙的原子性。
因为你的核心逻辑基本是 shell 命令实现的,每次都需要需要启动多个外部进程,开销不小。
既然用 shell 命令实现,为啥不用 shell 脚本呢。
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2606 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 15:22 · PVG 23:22 · LAX 07:22 · JFK 10:22
♥ Do have faith in what you're doing.