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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): a19a0b
Download Telegram
duangsuse::Echo
#FP #js #kt 今天来桶白象 🤍🐘 >https://www.zhihu.com/question/624728280 "匿名递归,我们调用的是另一个函数。没有什么问题" 发现一个逆天的回答, 直接把调用栈函数理解为匿名+纯函数了,想递归还得加惰性Proxy.. >https://zhuanlan.zhihu.com/p/659387315 看到个同样逆天的 — 这个Proxy也能做, argf=(rec,f=rec((...a)=>f(...a)))=>Object.assign(f, {of(F){f=F;return…
#blog #tr 《PL 表示法有碍于入门》

#PLT 俱乐部的人 Y 组合器身上纹,却被会员评价:字体不好看👀

符号可以使思维清晰。使用正确的符号,一开始就能轻松地完成工作,让不重要的部分消失
Mike Hicks 认为,像 8÷2(2+2) 这样简单的算术表达式也难倒各种人,妨害 PL 研究的影响力
最好的符号是简洁的;它们在视觉上具有暗示或继承性,

有人抱怨使用函数化命名而不是数学符号看起来不那么 PL
但——这就是简化记法的一个理由!我们作品的美学很重要,但PL已经以深奥的符号而闻名。
大部分论文能将一两个符号改为文字而进步

作者建议:
-增加清晰度/减少混乱将扩大我们工作的范围并减少协作障碍
-标准化设计清晰的单字符体系
-无论类型理论、语言还是 API——都要做复杂性预算, 作为警示
-总是用简单、易发音和众所周知的符号代替,顺序更要自然

more
duangsuse::Echo
#learn #dalao async https://lutaonan.com/blog/my-coding-road/ #go #os https://accidentallyquadratic.tumblr.com/post/113405561337/debian-sbuild 异步,就是在此Thread之外完成res=sleep()等耗时任务。不在一个调栈上,它的retAddr就必须转回调参数;因要建多个Task监听res —如FJP式并行,调用者就该用 event queue "epoll"而非…
#blog #email 精选 🥰
Title: 同样是考场失意的JS迷,来点前端技术讨论
To: hi@taonan.lu
我(duangsuse)是搜「Vue大对新React docs 的批评」发现你博客的,看你最近有更新,也富有个人风格;我想要花时间写点字,就谈你在 lutaonan.com 分享的..所有文章吧?
我小时候的理想,是成为一名Linux运维,做自己喜欢的极客类工作;现在的日程是完善自己的编程范式,使它能为Web.dev创造价值(这可真是花了大半年,改了几百版“Talk is cheap”的API Set吧..晕)

跑两次能查出clearTimeout这样的问题,但对于vueUse没有也没毛病,因为函数拆分合理的话,人眼就能test代码才对。最好的文档/typehint 就是代码即文档,这方面推荐 CodeAesthetic.io yt
Promise的用途,被局限在async()=> ,但then:catch 的模型完全能cover Optional,Result 的业务。

dropout 应该是“被字句”吧,并不是你自己想要「不平庸」的。 在Linus看来,他应该是个普通人呢,他批评Nvidia时可没个“正经”样

作为喜欢冷门技术的人,我受够了那些含糊其辞的抽象。
天道不是酬勤的。有些人可以学古生物和拉丁文,我不必与所有人合群。 我们应该接受努力无效的可能性,过容错的人生、写链式的健壮,而不只是选择「正确」

..对了,4年前我还曾和Drakeet闹得不愉快。 但今天的我,不会因问题的答案而争执对错,
因为我所设计的,都是不会有标准答案的问题、是无可替代的解决方案。天赋的自信和适时的毅力,会是我对开源最好的贡献。

DOM 赋值是不需要js层去合并 microtask 的,js里改两次className看看CSS anim: 会不会放吧
为什么JS界总有自己比C++和SVG更重视性能的幻觉啊,明明 InsectObserver 都是近两年才流行起来的,之前是每wheel一下就要等调两三次函数吧?

- 作为框架eer,我会比学院派更「了解你的用户」,但我对DX的重心,会放在我敲代码之前。 好的代码肉眼能test,我设计的APIs也是从无数种test里脱胎的
- 我不想拿自己的尺子去度量别人,但技术上除外。 我尊重功利的人,会协作完成需求,但不容忍丑开源代码
- 至少在中国,许多CS学院派不能像张洪波、@lazyparser 那样 open-mind 。但我是很泛语言的,我能比较C struct, C++/Java class 的范式差异,也知道许多FP里的甜头(组合器,.) 推广到工程的难点在哪

FRP范式 UI=f(state),其实是对LP-面向变量集编程 的误解。实现Reactive是Signal而非Memo: mount(jsVar)(UIvar)
因此UIvar也未必是append的,可以是既存Node-可以用CSS选择器.. 可以0代码MVP..

用Java的眼光评数据驱动的JS是错误的,但这不意味着vuex是对的。 你的需求是保留状态树到local或URL参数,乃至handle SSR的上文切换,但这不会突破reactive() API
h(‘div’, 这种树Builder完全是莫名其妙的(和XML语法一样,人机不友好),还不比Java的new Record甜, vanjs.org 的好看不少 。怎么用JS的人没用过Ruby或Pug模板呢
#security 回顾 regreSSHion: RCE in OpenSSH server<9.8
https://www.bilibili.com/video/BV11U411U78q
这一漏洞的描述听起来像是 WannaCry(SMB) 和 Log4Shell 级别的。实际上,该漏洞的利用不太可能。
2014年,OpenSSL加密库中的一个缓冲区溢出漏洞被公开。该缺陷被称为“心脏出血”,这次是它的回归

由glibc free() 数据竞争,导致heap链表 use-after-free 而使得glibc __free_hook 指向黑客在待连接的120s(异步 sigalarm)分配的地址
要利用这一漏洞,攻击者平均需要在没有firewall,fail2ban和Nx的 x86 ASLR 上进行约 10,000 次尝试,每台服务器需要 6 到 8 小时。

漏洞利用需要精心构造的heap链表布局,并发登录ssh以尝试fake key-exchange
https://www.offsec.com/blog/regresshion-exploit-cve-2024-6387/

管理员可以将登录超时设置为零(在 etc/sshd_config 中设置 LoginGraceTime 0)
🤓☝️ https://www.qualys.com/2024/07/01/cve-2024-6387/regresshion.txt

#learn
事实上: 只有基于更慢的ROP才能实现基于 heap 的RCE。默认设置下,该漏洞的利用根本是不可能的,x64缓冲区注入与SQL注入一样被 #linux 等内核修正了,对它的研究可以理解为另一种 #OI ,并不能对线上系统产生威胁
地址空间布局随机化 (ASLR)使注入代码的攻击在64位平台上变得几乎不可能成功,因为所有函数的内存地址都是随机的。
在32位系统中,ASLR能够提供部分防护,因为只有16位地址可供用于随机化,这可以用暴力攻击在很少的几分钟内破解。 这也是为何所有PoC都是针对x86

实现今天唯一可用的ROP(2010 年Adobe Reader被曝出了一个严重的漏洞,攻击者可以通过伪造恶意的 PDF RCE),需要在C语言的缓冲区溢出上,达成这三件事情:
找到system函数地址
找到字符串“/bin/sh”地址。
system函数参数应该放在栈的什么位置,并且不能被canary发现栈已经溢出。

#dalao #blog https://mudongliang.github.io/
duangsuse::Echo
https://github.com/mirtlecn/chaizi-re?tab=readme-ov-file#汉字拆字字典修订 #school https://zh.wikipedia.org/wiki/中日韓統一表意文字#漢字等同 🙄 作为一个「语言人」,我非常遗憾, 关于中文的一切开发 (Unicode CJK, IDS统一表意..),竟然与大陆本土无缘,且完全没有如 jpdb.io 般惠及中文学习。 只有拼音和五笔,这些为机器服务的层是中国人为营利想出来, 为学习者的,是完全没有。 乃至二简字,都是好大喜功不成气候…
#blog https://dieken.github.io/posts/chinese-input-methods/

>输入法界,俗称码圈,在 2024 年的今天,毫无疑问是个小众圈子
(1) 做码人,或称算码人、字圈,喜欢研究汉字拆分和字根的键盘布局,(2) 跟打人,或称赛文人、赛圈,喜欢竞速跟打,以手快为荣,可谓武玩,(3) 其它人,菜鸟龙套捧哏普通用户,可谓文玩。三个小圈子之间以及内部少不了日常逗乐拌嘴,反正有人的地方就有江湖,很感慨的是,八九十年代的万「码」奔腾到如今的万「码」齐喑、十「码」互踢
>形码可以打整句吗?习惯了拼音整句后,突然发现形码要人肉分词,可真是「一夜回到解放前」,搞不好就碰到打词打空了,非常恶心,因此码圈大佬们的建议是要么记住小词库谨慎打词,要么索性只打单字,极端点就是不要简码只打全码单字。
>岁寒输入法:就我而言,我做的第一版输入法,全世界都没人会用,只有我一个人会用;我做的第二版输入法,别人也会用了,但是没有人用;我做的第三版输入法,终于有人愿意用了。
在设计完岁寒输入法的布局和输入规则后,我惊奇地发现岁寒输入法呈现出一种非常重要的特性——输入声韵的无二义性。简单地说,就是任何一条滑行路径都明确地指向某一个声母或者韵母,不会存在歧义,不依赖于已经输入的信息,经常用于处理无声母的拼音。「xian」不可能是「xi'an」,「gang」不可能是「gan'g」,这个特性是全拼和双拼输入法都不具备的。

ps. 智能选词使用的 #algorithm HMM 比DNN难懂不少,用途也窄,不知道现在的智能拼音都在用什么算法,还是马尔可夫链?

https://shurufa.app/ chaifen.app
https://dieken.github.io/posts/some-words-about-chinese-input-method-circle/
Forwarded from yihong0618 和朋友们的频道 (伊)
#blog 发现了一个致力于研究 GBA 和重置 GBA 游戏,半马 132 的神人。
https://laqieer.github.io/game-modding.html
duangsuse::Echo
#tool #security 浏览器插件&PWA https://abracadabra-demo.pages.dev/ 感谢 SheepCHef 大佬用js-Wasm开发的 魔曰 >求鹂以游月,空必指冰开画,况心褔勤赴,天曰,何高之任,称礼以达光。 算法输入: 明文(密码123) -> 压缩 -> AES-256-CTR -> Base64 -> 三重转轮(DES)/ 映射汉字 -> 密文 可生成高仿真文言文,参考康熙二十三年《古文观止》真实语料。 与传统方案一致的高强度加密,更复杂的组句/语法选择机制,更先进的消息隐写。…
ps. 给这位作者的UX一点建议

- 模式切换反了? 默认就是古文模式啊(这好像是调试模式 不能解密)
- #input.onpaste 可以默认成处理&拷贝,这样不方便处理多条评论
- 可以支持URL调用,?text&key&rand=1 什么的,与copyQ等剪贴板管理器配合
- 加密/解密按钮,看起来中规中矩,其实体验很机械。 处理/交换两框 可以允许多次加密、自动判断加解密, 而不是每次都去全选-删除-粘贴,然后选错按钮了

另外一个好处是,可以让原文密文框的大小配比永远是美观的, 只需要长按不同的框paste,就能一键操作

这方面的人体工学优化,MT两栏式文件管理器很有发言权😍

https://github.com/duangsuse-valid-projects/MinBase64/blob/master/app/src/main/res/layout/main.xml#L32 我十年前的编解码apk是这样的, 但它只有一个框,靠长按切换编码解码

。。然后,GH上解密的结果是 magnet:?xt=urn:btih:C0FE00AD10B9D9F90A0750D1A6B9F6C6B8F2F5B6

这是两段默认key的密文拼接,但是,没法自动把junk separator 识别出来,只处理默认密文。

如果是为防和谐,默认密钥的混淆体验还是挺重要的,可以约定为平台名、用户名
https://shef.cc/2024/11/30/abracadabra/ #blog #dalao
#rust #wasm #os https://share.google/aimode/Tngzv83rUcpir6kup

据说,WASM只能在浏览器上运行libc生态的代码,不能真正取代native 🤔

(C memory model 其实是Linux基于mmap()的分段block模型,但AI也说了这不相干。

我想问的其实是,如果模块没有使用unsafe,并且由可信CI编译, array boundary, union tag 这些检查能不能在编译期消除

但是AI还是非常人机的说不能,它以为我在问.wat 格式运行时的限制…… 我是说进一步开发)

#blog
https://ianjk.com/webassembly-vs-javascript
https://nickb.dev/blog/the-webassembly-value-proposition-is-write-once-not-performance/
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo
#learn #math Fourier Transform 的输入必须是2,3维向量:可以用于简化 svg path ✏️ FT是把yMax个频 的sin(cos,基频), 逐y与波形加权求差(np .dot),得到"左右对称"的直方图 (频谱图里纵向的1px 线) (FFT以此优化. 直方含有"相位",默认为wav+0j,也能被vocoder推出来) def DFT(x): N = len(x) t = np.arange(N) pi = -2j*np.pi * t.reshape((N…
我一直以为 #AI 的水平是不错的。因此,偶尔遇到「不好懂」的问题,甚至是自己的灵感自己做不出来时,都会去grok/gemini一下,它一般能在细化追问后让我明悟

比如,今天我回顾 #math #algorithm FFT,我想起了一个质疑:FFT和cos,sin有关,为什么能用于整数乘法?🤯

grok3:
13 → [3, 1] (个位 3,十位 1)
21 → [1, 2] (个位 1,十位 2)
结果 = [3×1, 3×2 + 1×1, 1×2] = [3, 7, 2]
→ 解释: 3×1=3……(个位、十位、百位并行处理,即“卷”积)
→ 273 ✓


(e^{iθ} = cosθ + i·sinθ) 复数次数只是等价变换的工具,卷积定理 + 频域点乘 这个数学魔法才是优化技巧(中间虽然用了 cos、sin 和复数,但数学上等价)


import numpy as np
a = [3, 1, 0, 0]
b = [1, 2, 0, 0]
c = np.fft.ifft(np.fft.fft(a) * np.fft.fft(b)).real
print(np.round(c).astype(int)[:3]) # [3 7 2]


换句话说,10进制(10e1~~个十百千万) vs cossin(vec2)频谱本质上是一样的,都是“[钢琴键×响度,].sum()” 的形式😒,因此有 NTT 这个玩法。

#blog https://hexo.limour.top/Solving-equations-using-postfix-notation 把逆波兰写那么丑么…… 还是要学递归啊。 原文就在这医学生的博客里 #dalao

https://github.com/Limour-dev/qrjs #tool 无网络靠二维码传文件
Please open Telegram to view this post
VIEW IN TELEGRAM
duangsuse::Echo
但,因为引用(Reference)提供了更多信息(dereferenceable),导致这行代码过早地被“扁平化”优化;它错失了适配最新神级指令(cfcmov)的机会

编译器知道在检查 s.a 的值之前,就可以安全地去加载 s.c 的值。这不会引起段错误,退化为 if-then-else 结构。栽在旧优化(X86CmovConversion)上,被强行退化成了带有 je 的低效分支代码。
#blog #statement
突然发现自己【技术文】风格不仅变了好多,还找不到“友链”了…… #ai探讨

别人讲的就是代码。 我讲的50%都是因果链,还有一些“愤世嫉俗”的批语,代码比注释少很多 (AI在重构上完全是【头牌】,真没有降低代码质量)

可能有【技术人】觉得我太judge吧…… 但,这类晦涩、专业的文章,我为读懂它们付出了我高中时期的无数个晚上。 我已经为“明白”付出整个青春,并得出结论。

☕️ 我相信这不是某一个人的遭遇,所以——请优先宽容读者。 Code is run more than READ than written.

而以上的这句话,确实就【50%是因果链】。 所见即所得了 😋


背后的【衡量】大概是可观测、可操作性、零依赖等等。 我不会,也不想拥有图示的粒度,可以说是【跨语言原生】了—— 思路不在屏幕以外的,都不纳入。

对我而言【背景知识】不是外行才需要的噪声,而是【可以删代码】的信号 😋 删代码最好玩了
我不为了代码而编程。 🤪


70% 的人都听过函数式编程。就我个人见识, 10%的人能把Java写出Haskell感,少于5%的人(Bellard)能让它在最终用户那也有意义。 我只见过两三个,能用声明式风格编写【自然语言】, yinwang.org 是其中之一,中文圈仅仅就完整性而言无出其右(英文CC圈也也有 neal.fun 那种,但文字硬度不如他)

你不需要用【PH试纸】来做糖醋里脊,也不需要钻研“机器人儿女”才自带有种。许多学问里,“只有咏唱没有魔法”,这是被鼓励的。 好像没有心理活动..他们。

我们喜欢的“短代码”是【牛顿、苹果、月亮】的那种短,而不是 msvc vs unix 的那种oneliner的短。【简明的实现】就像让人愉悦的美食,元编程、探查非平凡的重复,是为了发现更深刻的规律,也是出于博学博爱的intellectual思维。

代码的短、庞大的“平替”,或“这样也行”的魔法,不是为了让人膜拜,而是为了涉猎思想、展现古人的功过。没有1行代码是我不该说清的——表达的方法并非只有拆解或比喻,我始终认为这才是编程世界的热力学四定律。

💭 所以他说的【AI时代洞察反而更有价值】【不要因为PL只是小众学问而已】,确有其事。而且正在发生,可能会作为Agent炼蛊成功后真正的竞争力