V2EX ysmood
ysmood

ysmood

V2EX 第 39678 号会员,加入于 2013-05-25 17:38:08 +08:00
今日活跃度排名 18664
根据 ysmood 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
ysmood 最近回复了
@jaydenWang 我意思就是人家都不想用 mobx 了改用更简单易扩展的 zustand 了,为啥还要退回你这种类似 mobx 的方案呢?

这几个库就是在解决相似的问题,只是设计哲学不一样而已,我觉得放在一起讨论是合适的。状态管理和 react 耦合,这占据这些库 90% 的要解决的问题,其他你说不同的地方的就是解决不到 10% 的问题而已。
@jaydenWang redux 很工程化,为什么大家最后大家都宁愿 zustand 呢?因为你是强制要求别人工程化,而不是循序渐进的工程化,好的架构是能让大家能从 0 开始循序渐进的工程化,stalo 就是践行这样的设计,它并不强调只有一个 global state ,而是你可以先从简单的 global state 入手然后逐渐拆分系统,这个 example 里都有。你 provider 就是中心化的表现,只要有持久化的状态就肯定会存在类似 context 的概念,这是 gc 的架构就注定无法逃脱的。只是在于如果合理的引导大家工程化才是重点,而不是上来就 push 一堆大部分时候用不到的概念在框架里。

从我个人经验来讲不符合循序渐进的框架,最终都很难成功。这和乐高为什么能火这么多年是一个道理。
@jaydenWang @XCFOX 我写了个更简单易用的 https://github.com/ysmood/stalo

其他的库对于 typescript 的支持比我这个要差很多。尤其是 zustand ,这是我主要开发 stalo 的原因。

这里有和 zustand 还有 valtio 等其他库的对比: https://github.com/ysmood/stalo/issues

甚至开发专用的 devtools 插件,甚至可以玩 time travel ,视频演示性能比 redux 快几个数量级:

可以自己开网页体验: https://stalo-examples.vercel.app/examples/Devtools.tsx

computed value 就是个伪命题,复杂的项目都会尽量少用,因为 debugging 可能会非常复杂,不复杂的项目就更用不到了。关于重复渲染的问题,通常是简单的 redundant model 反而容易 fine tune 和优化,如果大量使用 computed value ,很可能加大耦合反而难以优化。

你这个库还要依赖 context provider ,用起来非常麻烦,stalo 跨组建之间 share 状态更简单。

你甚至可以基于我这个库开发,这样你就可以直接利用我写的 devtools 了。你这个项目代码连一行测试都没有,一般稍微懂一点的开发者是不敢用的,我这个项目至少测试都是 100% coverage 。
2024-10-29 21:52:07 +08:00
回复了 NerdHND 创建的主题 React Zustand 的文件组织?
我也是头疼 zustand 的文件组织和冗长代码,于是最近自己写了个库 stalo 。我写了个 todo app 用来演示如何将一个 store 分割成逻辑隔离的多个文件: https://github.com/ysmood/stalo/tree/main/examples/TodoApp

从目前我自己的使用来看,各项指标都由于 zustand ,我甚至用 stalo 写了个 devtools 来 debug stalo 自己: https://stalo-examples.vercel.app/examples/Devtools.tsx
2024-06-19 14:16:16 +08:00
回复了 0o0O0o0O0o 创建的主题 分享创造 vaultwarden 备份思路之再也不改版
@kuanat 可以试试这个,比 gpg 更简单方便 https://github.com/ysmood/whisper
2024-01-04 12:12:37 +08:00
回复了 ysmood 创建的主题 分享创造 利用 github id 加密隐私数据(测试送 100 元红包)
@chaoschick 这种工具之所以存在就是因为现有的很多系统功能不全,且不愿意花时间改进,比如 V2EX 就没法私信,这个时候有这种工具就会方便点,你如果不用类似工具,请问 v 站里两个陌生人在不暴露自己隐私的情况下如何交换邮箱互加好友?你可能可以,但是会很麻烦
2024-01-0 11:48:24 +08:00
回复了 ysmood 创建的主题 分享创造 利用 github id 加密隐私数据(测试送 100 元红包)
@chaoschick 你可以看看 age 这个工具 https://github.com/FiloSottile/age 被非常多的库依赖了,你可能不太能理解它的用途,但事实上用的人非常多。
2024-01-03 14:14:35 +08:00
回复了 ysmood 创建的主题 分享创造 利用 github id 加密隐私数据(测试送 100 元红包)
> 第二个问题,似乎你没有理解第一个攻击例子的场景:A 要和 B 说话,B 选择去听任何人的话,M 达成的效果是 M 不知道 A 想说什么,但是让 B 以为 M 说了 A 本来要说的话。B 是用 M 的公钥验证的。

你都不在乎谁发给信息了如何防止中间人攻击?

> 通行的做法是归约,你的算法可以看作某种安全性的 KEM 和 CPA 安全的私钥加密和签名的复合,无法推出第一个例子下的安全性。

就和你说的一样,这不是 whisper 想要解决的问题,这更像是 ssl 之类的需要考虑的问题。使用 whisper 的人大大概率不会考虑中间人攻击的问题,所以 sign 是可选的否则我就设置成必选的了。
2024-01-03 12:16:09 +08:00
回复了 ysmood 创建的主题 分享创造 利用 github id 加密隐私数据(测试送 100 元红包)
@Senorsen #22

> 谢谢回答,不过我的问题在于,只使用“加密”是不需要私钥的,只需要拉取 GitHub 上目标用户的公钥,因此无条件启动 agent 的行为比较怪。

多谢,这是个很好的建议,我把它改成只有需要的时候才启动好了。
加 sign 或者解密的时候都需要 passphrase ,非常常用。我建议是即使是发送的时候也加个 sign ,更安全。
2024-01-03 12:09:45 +08:00
回复了 ysmood 创建的主题 分享创造 利用 github id 加密隐私数据(测试送 100 元红包)
@geelaw #25

> 但是这会导致没有选择超过 128 位密钥的意义,限制了最大安全性。

openssl 默认用的 128bit ,在 whisper 的使用场景已经够安全了,因为这个 aes key 只会被使用一次就扔了。我加了个选项: https://github.com/ysmood/whisper/blob/86d93ffbb3897d1739664da5597f6b85d1045be4/lib/piper/encodings.go#L74-L75

> 第二个问题,对密文签名只能保证密文“被谁同意”,不能保证明文来自于谁,也不能保证密文在加密结束之后没有被“有意义地修改过”,后者是选择密文安全性的要求。

whisper 没有这个问题,readme 里已经说明了 sign 验证需要显示声明发件人的 github id 用以验证,否则你就不在乎被篡改。你不可能再签名的,验证会失败。

> 除非收信人只收取某个特定的人(以签名所用的公钥识别)的信息(因此 M 重新签名不会被接受),否则上述场景可以成立。

和上一个问题一样。

> 但如果收信人只收取特定的人的信息,则没必要每次通信都用公钥加密。

这也不是安全问题,只是某种大部分人不在乎的性能优化,whisper 的使用场景是单次的无状态通信。
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2783 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 13ms UTC 11:15 PVG 19:15 LAX 03:15 JFK 06:15
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86