边界条件之场
66 subscribers
680 photos
4 videos
10 files
1.03K links
Do you hear the sirens sing?

main: @cvf_cha
group: @cvf_gro
forwards: @cvf_for
Download Telegram
Forwarded from Reorx’s Forge
技术发展和工具普及总是伴随着制约手段缺失的阵痛。人性是禁不起考验的,道德水平、公众素质?谈这些社会学层面的东西都没有用,归根结底还是要把反制措施和限制规范跟上。所以体系是需要不断迭代的,电商退款制度也经过了许久的发展才达成平衡,但在全民 AI 的时代已经彻底落后了

用AI假图骗“仅退款”,这是今年双十一最脏的一幕。
边界条件之场
🤔 但他确实有理有据啊,前向安全、不可信客户端环境、基于 CA 的信任系统易受"权威"机构 MITM,都是有道理的啊
我如果真是为 GFW 工作,我批评你那人人可解密的 SS 专线机场干嘛?这都现成的大规模蜜罐我给 GFW 掀了,我不直接被 GFW 开除?

https://t.iss.one/projectXtls/1125

我要是为 GFW 工作,我点出你们这些问题干嘛,给自己上强度吗?还根证书还 REALITY?我从公网明文 HTTP 面板流量中直接拿到私钥,全给你 MITM 了不香吗?SS 专线机场现成的大规模蜜罐,我直接解密所有流量不香吗?还给你们写有前向安全、拿到客户端配置也无法解密的 VLESS encryption?我还想不想干了?

就结果来说,去年我一直在批评公网明文 HTTP 面板,还都是 Xray-core 自己的面板,我冒着生态毁了的风险都要批评,搞得现在很多面板和教程都不是 https://ip 了,我给自己找不愉快?

我要是为 GFW 工作,任何安全漏洞都不会给你们点出,更不会天天让你们改,反而只会让你们好用爱用多用,至少也得默不作声吧?

https://t.iss.one/projectXtls/1126
#music_player 之前电脑上放本地音乐一直拿 vlc 凑合,但 vlc windows 没整合系统媒体控制,只有当 vlc 窗口处于前台时才能用键鼠上的媒体键控制播放暂停。

久闻 rune 大名,于是从 github release 下了 v1.1.0 尝试。用 flutter 写的 metro 风界面确实很不错,但紧接着就 deal breaker 了……
不识别 .opus 后缀的 opus 文件。尝试着改成 .ogg 后缀,这回识别到了音频文件并读出了部分元数据,但尝试播放会造成界面假死(ui 有视觉响应,但不产生效果)然后过几秒程序崩溃 🤔

之前在螺丝的频道看过连载 rune 开发过程,记得提到过 opus 很多次,感觉没可能不支持啊 👀
🤔1
Forwarded from Lancern's Treasure Chest
你怎么能在生产环境里直接 unwrap() 啊?!Rust 不是这样用的!你应该先认真设计一个靠谱的错误类型,用 thiserror 或 anyhow 包装好上下文信息,然后在每一层调用链里用 ? 把错误优雅地向上传递。遇到可能出现网络抖动、I/O 超时、序列化失败这种情况,你要先写好健壮的重试逻辑、退避策略和熔断机制,并且在日志里带上 trace id,这样 SRE 才能在凌晨三点定位问题。然后你要写单元测试,把所有可能失败的路径都测一遍;集成测试里还要模拟网络异常和依赖服务挂掉的情况,确保你的代码不会一言不合就 panic。接着你要跑一下 clippy,把所有 “consider handling the Result instead of unwrapping” 的警告都修干净;还要跑 rustfmt,让代码风格保持一致。之后你才可以 commit 然后 push 。你 push 上去之后,CI 会跑 cargo test、cargo check、cargo clippy、cargo fmt –check,还有压力测试确保你的服务在压力下不会因为一个 unwrap() 就直接把整个服务集群带走。等 PR 至少经过两位 reviewer、三个 LGTM,并且 SRE 点头同意这个改动不会再次导致全球范围的 5xx 风暴之后,我才会考虑把你的分支 merge 进去。你怎么上来就直接在关键路径 unwrap()?!Rust 根本不是这样写的!我拒绝合并!
😁1
但是一旦非正常情况导致内存占用飙升 超出了预分配的空间,就既不能增加内存分配、也不能 gracefully fail,必须整个线程完全 panic 然后 crash

https://t.iss.one/SukkaChannel/1033

??? sukka 不会完全没写过也没了解过 rust 吧,正经语言怎么可能不让你 realloc,分明是写代码的人决定超出预期值后不增加分配而是 panic。gracefully fail 在这个例子下也是完全取决于代码怎么写,又不是 oom,怎么会必须 panic?
Forwarded from 卡卡大声喵喵 (盐粒 Yanli)
很多人认为 unwrap 是这次事故的问题所在,我认为本质原因在于配置下发不够防御性,没有拦住错误配置。对于异常处理来说,unwrap 或 ? 其实是可以等价的,最终都会显示出一个 500 的页面。
https://blog.yanli.one/ideas-about-exception-catch
写代码真的好容易破坏作息

明明之前和家人旅游的两周已经养好了很规律的十点睡七点起的作息,已经适应到只要到晚上十点就会困了,但是 hyper focus 着写了两天代码之后又变成凌晨才睡了... 🤗
Please open Telegram to view this post
VIEW IN TELEGRAM
#rust iced 想要 mutate 程序状态必须通过它的 message 系统,然而 Msg 类型要求 Clone。遇到不支持 Clone 的第三方类型怎么办?只能 Arc<Mutex<Option<T>>> 🤮
- Arc 为了 clone
- Option 为了能 .take() 拿所有权
- Mutex 为了能 Option::take
Arc::into_inner 拿所有权是不行的,万一 Msg 被 iced runtime 内部 clone 了就拿不到了 🥴

iced 作者表示虽然目前并不是必须要求 Msg: Clone, 但这是 Elm 架构的设计理念,不打算修改: https://github.com/iced-rs/iced/pull/418#issuecomment-650637125
边界条件之场
#rust iced 想要 mutate 程序状态必须通过它的 message 系统,然而 Msg 类型要求 Clone。遇到不支持 Clone 的第三方类型怎么办?只能 Arc<Mutex<Option<T>>> 🤮 - Arc 为了 clone - Option 为了能 .take() 拿所有权 - Mutex 为了能 Option::take 靠 Arc::into_inner 拿所有权是不行的,万一 Msg 被 iced runtime 内部 clone 了就拿不到了 🥴 iced 作者表示虽然目前并不是必须要求…
If a type isn't Clone, then it means it's not made of pure immutable data, therefore it shouldn't be wrapped in a message.

深表不赞同。例如我的程序需要访问数据库,初始状态下我手上只有鉴权信息没有数据库 handle:
State {
user: "qwer", passwd: "zxcv",
db: None,
}

现在我拿着鉴权信息去连接数据库,按照 Elm 的状态管理架构就是:连接成功通过 message 系统传过来一个 Msg::DbConn(DbHandle), 处理这个 Msg 拿到 DbHandle 的所有权放到 State 里:
State {
user: "qwer", passwd: "zxcv",
db: Some(DbHandle),
}


非常正常的需求,但是由于要求 Msg: Clone, 在第三方 DbHandle: !Clone 的情况下就只能 Arc Mutex 体操
用惯了各种现代编辑器以后我对 vim 的容忍度越来越低了

有个 gb2312 编码的文件想在终端里看一眼, vim(neovim) 打开乱码,想着手动指定一下文件编码,翻文档找到 fileencodings 设置项,但没看到合法编码名称列表。在 vim 里打命令后按 tab 列出编码列表,上下翻找了两遍没看到 gb* 系列编码 🤔
网上一查才知道要选 cp936, "windows code page 936" #wtf
并且改了 fileencodings 之后还要 :e 重加载 buffer

后来试着用 helix 打开,什么都不用动就自动正确识别了文件编码 🤷
I really like the Helix editor.
Meanwhile, in the world of Vim you find Github repositories that self-describe as ‘minimal neovim configuration’ and contain over a dozen files of Lua and a few hundred lines of code full of side effects.

Needless to say, I’m not much of a fan of fancy ‘Vim-with-batteries-included’ setups like LunarVim either.

LunarVim essentially stacks a ton of plugins on top of Neovim to make it look like VSCode. I’ve never been a fan, honestly. When I used Neovim, even a moderate amount of plugin resulted in some performance issues, whereas Helix just feels a lot snappier, and less brittle.

If you’re into this, more power to you. It’s just not for me.

另:这网站有股报纸的感觉 👀
Intel 在给 11th gen 笔电的最新核显驱动中移除了 "Display Power Saving Technology" 开关,改为将用户指向 windows 系统设置。
不知道 win11 的系统设置是不是真的集成了这个开关,反正我 win10 没有 🤷

于是在某次重置显卡驱动后我发现这个辣眼睛的傻逼 D.P.S.T. 变回了开启状态,并且没地方关。好在这篇 9 年前的文章仍然有效: Disable Intel Display Power Saving Technology on Surface Pro 4

TLDR:
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\] 这个注册表目录下有一些四位数字子目录。
取决于机型,其中一个目录下会有 FeatureTestControl 键值。
把这个键值的第四个比特位设为 1 即可关闭 D.P.S.T. 。
换句话说就是 FeatureTestControl |= (0b1 << 4)
#tips #windows #intel #wintel