duangsuse::Echo
717 subscribers
4.26K photos
130 videos
583 files
6.48K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
https://meta.appinn.net/t/topic/78368 #tool win11番茄钟😝

原来的软件(https://github.com/vladelaina/Catime)也挺小的
相比于 https://kyome22.github.io/RunCat365/ 的200x…… 这就是 9.5k star 开发者的水平么😒

看看吧 ref:https://t.me/dsuse/21639
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo
#ai gemini 这个说的道理啊,非常有说的道理🤪😅 确实知道我心里在想什么,因为它说的,我在一年前也说过…… 有些人最初觉得,AI绘画是「拼凑尸块」,但现在gemini拼凑那些只言片语的能力,可是比许多人要强呢…… 虽然问题无价值则回答无亮点, 但这个对话还是非常有表现力的。 grok4: 结果就是一篇“无我之文”,像官方文档的邪恶双胞胎 我发现 baidu/ernie-5.0-thinking-preview 和gemini也差不多,甚至在结构上更精简,不过确实非常非常慢…… 「杰哥(以及…
#statement 《学习与记忆》
并不是理解力太差,而是感知力太好,对输入的质量产生了直觉,它拒稿了
我的笨针对序列记忆力,而非结构性记忆。 如果太聪明,就会失去洞察结构的机会,将成为LLM的竞品。
这是一种非贪心算法,

我不是把脑图印在脑海里,知识树沉在脑海里,那时还有许多惑(“或”心)和烂叶子
但等到我捞出它时,就只剩枝干。 我依然能从枝干知道叶子为什么是烂的,被冲下去了,甚至,还能把它比作叶脉继续这么迭代:这些都是纯后台处理
如同跨时空的格式塔,也是我为什么喜欢代码复用+创作编程

我写的文章直接喂给AI结果差,无法与我针对做的提问稿相比,是因为它没有线索主导,而线索器已经主导我的思维很久了。
正因如此,我有编辑优化旧文章的欲望,它才是我技术的核心。如果不是提醒,我一定不知道自问自答的能力正是我的学习支柱。


#ai探讨 https://chat.librechat.ai/share/gR1ZKau604JBrJh5WcMvi
duangsuse::Echo
Algebraic Effects 也是一个PFP的“新秀”,但我考察后觉得没有吸纳的必要,那么不是新秀的deBruj啥,就更没有必要了。

我一直觉得提出它的领域(“定理证明器”)是多此一举的: 自己test都不明白,又何谈证明呢? 若非如此,何需证明呢?
#PLT 《费曼算法、unification、 形式证明》
软件工程是研究:如果你写不好程序,如何编程? 形式证明却更莫名其妙:如果你写不对算法,如何正确设计?😅😅
在对hole(多位等值)的处理上,理论和工程天上地下,导致Lean这些工具连React/PFPer都很难学习。if-let匹配都是没有交换律的。
DT和inference垄断了符号计算,混杂了归纳法、“CH前后件”和洁癖,而工程界连(n+0=n)的过程宏/卫生宏都很困难,只有JS Signal/Symbol 算歪打正着。那这时理论完全是脱缰的,因为宏“变形”都还如同正择替换,如何去教人“合公理的变形”?
不可否认归纳与递归的共轭,让人自顶向下自底向上都“天衣无缝”,但连整数小数都必定拆成结构来论证,其实已经证明它对实际算法如破布般,让开发者如履薄冰(比如浮点数的“open化”抽象可以随时泄露,在任何无价值的代码段或只用一次的函数里,和在SQL里存数组一样爽)。
唯一的安慰是它让Lisp风格的低效数据在推理时赢了一次,运行时既枯燥也没价值。

Nat是open可能性的洞,fn是穷举的箭头,导致type位置的合法Sexp可以如Prolog的链表般自由生长,“碰”到无限真理。
遇到0+n这类和(+)定义不同的,做一次“合法”宏展开再refl匹等,这是形式证明的学习曲线,而“定义合法”是DT的。
因此 Sum,Prod 和栏目答(入.x代换)对基于hole的语言才叫术语,Java里说是附庸风雅,也制造了无效的理解门槛
然而,“无穷”依然不是绝对真理,因为,真理是语意而非结构上的正确。尤其是与智能合约“神谕问题”同构的【AB货】问题

无意义的无尽套娃(结-解构)与正确的废话,能“碰”到真理,碰库的“碰”。

眼下的DT从构造值语意时顺带让检查器爽(Hoare前后件),演化成typer告诉你什么算法是不能写的,它和DT的那些伪术语比你还聪明。
所以它自称形式,闪烁其词如同从“有->检出->阳性”的医学话术,这是因为Dijkstra的诅咒他们自知解不了。
真正的typer是能 `unify(意图)(字面)` 的费曼算法(LLM),靠PLT写不出,所以PL人崇拜一个狭隘的“CAD工具”替大众来证明。


软件工程是研究:如果你写不好程序,如何编程? 形式证明却更莫名其妙:如果你写不对算法,如何正确设计?
答案是换能写对的人从头来,而非用更多断言来侧写你的程序,或是请没能力原创的人证明原作的算法有效。经济上,这点是不证自明的。
替代群论或“代数CAD”的目标从不属于CS,去魅群论才更像编程的本质。
费曼算法只能人和LLM执行,PL人好不容易拿的动锤子,眼里只剩钉子。


#ai探讨 https://chat.librechat.ai/share/O9aw63b7f8THzxQgpyGBB
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo
#fp #sb https://github.com/MoonshotAI/kimi-cli/issues/405#issuecomment-3615015273 信达雅究竟是什么? 信是目标语言的原生感,达是源语言的语义保留 《中文编程》圈有时挺魔怔的,yin 说他不开发ONE语言是因为懒,而yin(.java)没有做的下去有一部分是被各种人指点江山的原因失去了兴趣,我算是明白是哪种人了(帝球 也指点过呢)🤯 同样是FP和PLT,为啥我的翻译就是「lambda栏目答」「recursion睿括式」「…
#post #加入套餐 类型(.kt,前沿,逆向)、变量与宏绑定、IO等【无返回】效应、异步多任务😒😅

Gemini 手把手演示了内容,我看是挺不错的😅
栏目答演算、逻辑式编程/Hask HM类型、解释器与变量表(“多位等值”的叠合/替换)、
契约编程与停机证明、栏目答字面/闭包值的相等、宏与可计算性理论

这些思考也证实了LLM确实是可以有输出质量的, 别傲慢:
meta元学习 https://chat.librechat.ai/share/kKyJYo9-GHZrCWs9fZ7kQ
用PLT思考PLT https://chat.librechat.ai/share/12vR80JFBcgvzPPto2hF7
学习 https://chat.librechat.ai/share/gR1ZKau604JBrJh5WcMvi


最近几周消除了数年的疑惑,都在下面了:
kt #TODO https://zhuanlan.zhihu.com/p/436839181
ts https://chat.librechat.ai/share/JWl-AnInaI5kU7eXwEELu
ts-更加深入形式证明 https://chat.librechat.ai/share/7qAk4DtR2yryMmXbFXSJS
ts-从既视感“理解”证明 https://chat.librechat.ai/share/IjBRGdv25nl2PT74OjHTJ
ts-对无穷的证明? https://chat.librechat.ai/share/7G-eDxgeEj9X5nqbUOWIs
RE https://chat.librechat.ai/share/BjZyFc8Twa42gHsR_Yk47
lisp https://chat.librechat.ai/share/9iz2YegEZl9kEdiacDNmF
haskell https://chat.librechat.ai/share/tPbd15iaCJ9_DMQNy7KuW
async https://chat.librechat.ai/share/ZyEbtcprWQ1pvAc-edvkv

apt不会做C语言包管理 https://chat.librechat.ai/share/GMEFbpIISwnr1sJO8SHZS
Rust内存管理和多态等 https://t.me/dsuse/21667
GC Rc mmap/sched 的话 帝球 也讨论过


——涉及 抽象解释 符号执行 插桩反混淆 宏参数与部分求值 JS信号变量和Effect染色
应用领域:IDE(类型推导、静态优化)、逆向工程/无源码patch、前后端软件框架
锐评:
当我发现这5项中存在一致的可观测函数模型,没有依赖 “没有比函数自身”、“UNIX只是C的虚拟机”,是靠深度求索与非机械的变换时,起变化
我不是借助了 静态分析、云计算容器的前沿实践的理解力,我是在Gemini/Grok的柏拉图式教学中,洞见了下这些定论场景语境,并且提出更深、更像我的结论
“类型的本质是对程序行为的观测,静态类型”;“OS是对PL的状态树隔离、IO染色和异常后清理”;这是从App开发到理论的,无偏见的把握😃

当我「有能力」请Gemini+Grok弄清楚HOAS并不是我的inHole“应后值”体系,反而和之前的eDSL组合子比较像,我明白yin所表达的“他们的模式不仅不新奇,当我去学习时,反而发现GoF与我的无名优化N:1对应”是什么体验了。😓

过去,【您的批判已经进入“无人区”了】 【您的洞察力是现象级的】时我还觉得这是吹捧,直到我发现自己真正在利用这份能力,并且结合AI的工作流,我才知道。因为创作是掌握的象征。

我不会忘记我的初心,从开源获得的知识将赠予世界,永远自由。Agent能够协助新老理论在质量、价值接近的条件下价格打一折,这才是尊重技术的新方向。😒

(帝球 也指点过王某呢)🤪
……看来“C艹皮袄人”也订阅yin的更新啊。这个氛围感很棒。 很怀念2015,我还只是初中Linuxer, linux.cn 都还在,10年过去了啊,很多人从培训出来也就20~35十几年的技术生命,我却觉得正当时。如果,我也可能有35岁,那也一定是“青春燃烧的最壮丽的时候”,就像Friedman。
如果以后做个网页批注的App,或许有兴趣回来隔空对线下这仨。 暂时就贴俩#text链接了,另外帝球对One语言的评论过于科班了(语言律师),另外三个人我更喜欢Tippisum!

从知识面上讲,yin和这些人平齐,但他洞察力国内拔尖。
如果你有从x86和CG-DSP跨到全栈的知识,洞察力却平平,一个重要表现就是缺乏和“下位同行”交流的科普能力,从这一角度yin并非“竖子成名”,因为那些“英雄”只能是机器的工匠。

如果认真看我选好的讨论串,还是能看出他们在想的很有意思,灵感并不比yin差,只是表现力偏低,也不如我与大贤者Gemini的论辩。 遗憾那是2015的贴吧知乎,有 yinwang.bak 那幅画的感觉了

ref:https://t.me/dsuse/21596 引文包含 幻の上帝 cqwrteur 轮子哥 Belleve白神 这类人,我懒得打#text链接了
我还是更喜欢 #dalao 张宏波、尤雨溪、吴涛、胡渊鸣 …… 可惜他们不「上网」
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo pinned «#learn 😃😅 洞察力的本质是泛化能力,它依赖于对知识图谱的归纳、联合搜索能力,或者说依赖于“活知识” 有洞察力的人对其知识领域的认知不是纯粹的“脑图”,而是有加权,有逻辑,不仅仅能自洽的「有向无环图」 富有洞见的交流者擅长提炼自己的观点,并对他人的知识点拥有具体化、价值对比的习惯。 https://chat.librechat.ai/share/kKyJYo9-GHZrCWs9fZ7kQ [机器学习版]»
这个人怎么把奖状挂一墙啊
https://bilibili.com/video/BV1xQ2WBZEgs
duangsuse::Echo
#net #news #rust #lua 绷中绷 https://t.me/hyi0618/9888?comment=142993 https://fxtwitter.com/guanlandai/status/1996991544663171360?s=20
https://x.com/cloudwu/status/1997181816760058321 #design #ts 😅

- 这不就是没有空指针的语言都能避免的吗?用这类强类型语言,如果execute如果可能为空,那写execute.results就编译不过。
C++ 和 java 是不是strong type systems ? 这和 strong type 没关系。

- 本质是短路过后,有一部分代码没考虑到execute会出现被短路后变成nil,去访问以为正常执行的execute里面的东西。……编译器就不会允许你直接访问execute.results, 你必须处理空的情况。rust, swift,kotlin都可以

就这个问题,lua 给 result 加个元表也能避免这个。怎么就没意思了?
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo
最开始是“RSC Payload 永远只能由可信的 React Server 产生,客户端必须 100% 信任它”
#security CVE-2025-55182 #回顾 😒😓 https://youtu.be/LSiYdiMGS4U

shellcode={
"1": "$@1", // 这是一个 Promise
"2": {
"status": "resolveModule", // 直接告诉你要已经 resolved 了
"value": {
"$": "$B", // 伪装成一个 Blob
"_prefix": "x",
"_formData": {
"x": "console.log('pwned'); require('child_process').execSync('whoami > /tmp/pwned')"
}
}
}
}


摘要:
为什么这么简单的一个JSON就能伪装成功呢?因为React从头到尾都没有验证手上的这个 AST Blob module 缓存数据是不是Parser自己生成的(而非 POJO)。理论上,你能够在请求内容里伪装任何东西,不一定通过未转义的Promise或Blob,它都会傻傻的全盘接受。这也是让这个漏洞一举拿下十分满分,成为“完美漏洞”的点金之笔。

React把「客户端发来的 AST JSON」和「服务端parser自己生成的 JS Object」混为了一谈,导致攻击者可以用一个纯JSON伪造一个「可信的恶意resolveModule代码缓存」,从而实现零交互满权限RCE。

具体来说,React Server Components 在服务器端渲染时,前端会通过POST请求把一堆「序列化后的RSC Payload」发给服务器。这个Payload本质上是一个经过特殊编码的JSON流,里面包含了很多以$开头的特殊标识符($J、$@、$A、$B……),React自己的parser会根据这些前缀,把它还原成真正的JavaScript对象(Map、Set、Promise、Blob等等)。

致命的假设是,这些特殊对象都是由React自己的parser在服务端「凭空构造」出来的,所以是安全的。
它从来没有校验过: $AT 等待的结果、直接带有恶意属性的 Blob._prefix 是不是POJO

这种跨网络的通讯就是一种Remote Procedure Call (RPC),RPC框架不是什么新鲜事物,它的安全机制也早就有了很成熟的设计准则,不管是早年的SOAP还是现在最流行的gRPC,都很遵守这些基本准则,

比如说Schema的设计、explicit的定义、防止边界混淆的措施等等。然后Vercel这些人就是没有一点点后端开发的职业操守,从整个RSC的设计来看,你甚至可以说他们是把前端圈子的“所见即所得”作风带给了后端。
2025年11月29日,来自新西兰的安全专家Lagland Davidson向React团队提交了一个Bug报告。他通过在HTTP请求里构建一个精心设计的JSON,成功让使用React Server Components的服务器执行了一段代码里完全没有的命令。如果只是借用服务器的资源跑一下`console.log`,那倒也不是特别严重的事情,最多给个六分。

让这个漏洞值十分的原因是:不管你在这个Payload里写什么,只要它是正确的Node.js代码,Vercel都会执行他。比如说,你可以调用Node.js的`child_process`模块,直接在服务器上执行bash命令。如果你的后端是用root之类的高权限账号部署的,那就更刺激了,可以直接给他来一个“一键扫弹”。如果你不想搞破坏,只是想要窃取一些机密,也是很容易的事情,
比如通过`fs`模块读取任意一个系统文件,然后通过`http`模块把文件内容发送到自己的服务器。如果你懒得搭建自己的服务器,或者怕事情败露后被警察叔叔顺着网线摸过来,你也可以原地把窃取到的内容放进`Error`里抛出,这样服务器就会用500报错把`Error`送回来。

如果你想做得更隐蔽一些,免得忽然出现大量的`Error` log被人发现有异常,你可以让HTTP请求正常返回,然后把机密塞到返回的`Header`里。

这个漏洞不仅严重,而且很容易复现,所以React团队陷入了一个两难的境地:如果你偷偷地发布修复补丁,大家不知道出大事了,就很难保证补丁的安装率;如果你全世界通告漏洞的存在,那黑客肯定比谁的反应都快。所以React团队为了延缓黑客的速度,给大家脱购时间,看到新闻打好补丁,在2025年12月3日,他们仅发布了通告和补丁,没有解释任何技术细节。
他们还特意在补丁中混入了将近1000行的其他代码,就是为了让人更难找到漏洞的源头,把它隐藏起来。
但毕竟React是一个开源项目,一切都是明牌的,这种小伎俩是藏不了多久的。像我这种前端半桶水的程序员,也只是花了几个小时,把补丁改动的那几个文件和他们的上游都看一遍,基本上就能捋清整个逻辑链条了。

……这一次
简单来说,React的RSC模块在收到前端请求时会进入一个recursive parsing的逻辑,在这个过程中,Parser会生成一个类似AST的数据结构。其中有一个叫做`ParseModelStream`的函数负责识别这个数据结构,这里你能看到它就是一个巨大的switch case,根据数据的第一个和第二个字符来判断它属于哪种数据。

比如说,以`$Q`开头了就是`Map`,`$W`开头了是`Set`,`$K`开头是`FormData`。

这里有一个比较特殊的情况是`$AT`,它指的是一个Promise,也就是一个会异步执行的JavaScript命令。这种特殊数据就会被打包成一个独立的chunk,状态设置为`pending`,等待后续的数据流。数据流完整传输到位后,这个chunk的状态就会被更新为`resolveModule`,代表它可以执行。
在$AT执行之前,需要先通过`ParseModuleString`函数对chunk内容再做一次Parsing,把它从Binary转换成正确的JavaScript结构。比如说,`$A`是`ArrayBuffer`,`$S`是`Int16Array`。这里又有一个比较特殊的情况,`$B`指的是Blob,因为Blob就是Blob值,没有什么需要转换的,所以`$B`开头的数据会跳过constructor的步骤,直接执行。OK,整个逻辑链条说完了。

现在你就能看懂了:他先把这个Payload转换成String,然后再读取成Buffer,这样React的Parser就会读到一个长得跟自家的AST数据(Blob)一模一样的东西。这里有`$AT`告诉你它是一个要被执行的Promise,这里的`status`等于`resolveModule`,就让它绕开了不存在的`pending`状态直接进入执行流程。这里的`$B`告诉你它是一个Blob,请你绕过constructor步骤直接执行!

最后,通过精准地对应`$B`数据的处理代码,让Parser通过它提供的`_underscore prefix`和`_underscore form data`这两个key,乖乖地把`_underscore prefix`里的文本当作是Blob的内容直接执行,也就是这行`console.log`代码。

为什么这么简单的一个JSON就能伪装成功呢?因为React从头到尾都没有验证手上的这个 AST Blob 数据是不是Parser自己生成的。理论上,你能够在请求内容里伪装任何东西,它都会傻傻的全盘接受。这也是让这个漏洞一举拿下十分满分,成为“完美漏洞”的点金之笔。

这个事件中不存在“被坑下”,因为整个React核心开发团队和幕后黑手Vercel公司都是罪魁祸首。而是要一直在模糊React的前端和后端边界,这不是不小心的,而是故意的,因为他们需要让React的使用者——那些前端开发团队——更容易接受这种极端的SSR路线。
但本质上,这种跨网络的通讯就是一种Remote Procedure Call (RPC),RPC框架不是什么新鲜事物,它的安全机制也早就有了很成熟的设计准则,不管是早年的SOAP还是现在最流行的gRPC,都很遵守这些基本准则,

比如说Schema的设计、explicit的定义、防止边界混淆的措施等等。然后Vercel这些人就是没有一点点后端开发的职业操守,从整个RSC的设计来看,你甚至可以说他们是把前端圈子的“所见即所得”作风带给了后端。


ps. 我是转写的文稿,符号不准确,原作者也不是专家没get到重点😅
https://gist.github.com/maple3142/48bc9393f45e068cf8c90ab865c0f5f3
讲的很清楚了,我不再赘述。 这次bug评论让我认识到AI的幻觉与思维局限性,以及搜索与核查能力的决定性
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo
比如说Schema的设计、explicit的定义、防止边界混淆的措施等等。然后Vercel这些人就是没有一点点后端开发的职业操守,从整个RSC的设计来看,你甚至可以说他们是把前端圈子的“所见即所得”作风带给了后端。
#web 脚本小子为什么是脚本小子?

为什么我同样是 #js er ,我却不可能写这种数据流和types没有把握的代码? 因为JSer和JSer是不同的,就像都用Gemini,vibe和vibe是不同的😓

我没预期的是,React 的某些“FP大佬”认为这个界有那么容易跨。 今天JS界的榜首,也有资格自称NEXT么?
悟性还没有 vanjs.org 的作者好
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo pinned «#post #加入套餐 类型(.kt,前沿,逆向)、变量与宏绑定、IO等【无返回】效应、异步多任务😒😅 Gemini 手把手演示了内容,我看是挺不错的😅: 栏目答演算、逻辑式编程/Hask HM类型、解释器与变量表(“多位等值”的叠合/替换)、 契约编程与停机证明、栏目答字面/闭包值的相等、宏与可计算性理论 这些思考也证实了LLM确实是可以有输出质量的, 别傲慢: meta元学习 https://chat.librechat.ai/share/kKyJYo9-GHZrCWs9fZ7kQ 用PLT思考PLT…»
duangsuse::Echo
用PLT思考PLT https://
#statement AI都比咱们懂文章😒
在计算机领域,这种现象尤为明显。懂汇编、懂Category Theory、懂内核的人,往往容易陷入一种**“高僧幻觉”**。我们手里拿着复杂的咒语(PLT),看不起那些用简单的逻辑(十目所见、直觉的、平庸的)解决问题的人。😃

我们失去了对**常识(Common Sense)**的敏锐度。Markdown 赢了,因为它符合常识;而许多完美的学术语言死了,因为它们只符合“精英真理”。🤪

我们再也不用 简单来说 不就是 就像/比如 ,而总是回答 “它就是那样的”、“当且仅当”、“这是对标准的误读”。

PLT本身意味着一种极有洞察力的理解方法:
- var不是“放字面值的盒子”,而是两片相似事物里唯一的差异“点”,小点可组合为新点。不抓argument你就抓不住“变量”的语意
- if不一定要剪枝,它可以走两边,因此只能获得约束的并集(成员交集),因此不会死递归,因此可以在test前断言。if能够对应重载/父类
- 代码和变量名只是字面(repr),语意(value)可以多态,更可以rethink,比如赋值vs解构vs响应式、类名函数名vs箭头组合、异步染色vs syscall
- 一切依赖于调用树状图的等效形式(repr)、二进制structs的动态、x86/OS/ABI 技能的日用工具与「可能性」
- 要知道,Markdown 一个设计一致性不太高的标记语言,就托起了 Typora,Notion,Obsidian 甚至LLM这些杀手应用,而RegExp又托起了它。


PLT,乃至于 「科学」不是什么:
- 架构师的补习班,人工智能、区块链、前沿数学这些鱼龙混杂之风口的敲门砖
- 需要“中译中”的,与精英的刻板印象 “有充要关系(挂钩)” 的 「软工黑魔法」
- 永不变质的“稀缺真理”、建功立业的“数学”手段、一只能把太阳叫起来的鸡

这就是我从五六年前到现在的感知与思学。
其实并不是说总是文明掌握真理,而是当人有了“精英才有的”真理,就没有积极性去追求“十目一”的真理了。
这涉及一个个人最优和全局最优解的矛盾,显然的解法是只让擅长的人做擅长的事,并且消除他生存与尊严的需求。这才是最为聪明的系统设计,因为哪怕一个衣原体的生活都比超级计算机更复杂。
作为一个intellectual,我能拥有的仅仅是智慧。 沉浸于能力,本身就是缺乏智慧的体现。
Please open Telegram to view this post
VIEW IN TELEGRAM
🍺🍺🍺
🤡1