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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): a19a0b
Download Telegram
#bash #cpp https://github.com/pg83/solo

在 gcc -static 里调用OS自带的dlopen(),直接基于musl开发linux
https://liuyandong.com/archives/9594 #os #lisp

UNIX 的计算模型很简单,即用 C 语言和 shell 对系统调用做一个胶水包装,不提供内存管理也不提供异常处理,文件系统也很低级,不支持文件恢复也不支持文件的元信息存储。而 MIT 的LISP 机器的计算模型和存储系统看上去都更加高级,统一的函数式接口,自动内存管理等等。

到最后几乎所有能在 UNIX 里做的事情,都能在 Emacs 里完成。这样,除了操作系统内核外,Emacs 完全取代了 UNIX 环境。Emacs 功能强大到大家都同意 Emacs 是个万能软件,而 vi 用户则开玩笑说 Emacs 是个缺少一个好编辑器的操作系统。大家都知道,Emacs 的作者正是从 MIT 出来的 Richard Stallman。


https://liuyandong.com/archives/23347
程序员不能没有大模型,就像西方不能没有耶路撒冷。听说,榜一大哥目前无法解决的问题是:打赏一停,爱情归零。AI编程目前无法解决的问题是:会话一停,推理归零。我们往往“只知代码发生了改变,却不知代码为何发生改变”。

程序员写了个提示词,大模型咔咔一顿跑,生成了3528行代码。我们只是看到了这些代码,AI没有告诉我们,刚才它经历了多少次推理,踩了多少坑,才写出了这些代码。AI 的推理过程往往是并发的,非线性的。它的“思考”存在于 Claude 或 GPT 的上下文窗口(Context Window)里。当你关闭 IDE 或清空对话的时候,这部分“思考”既没进程序员的大脑

最宝贵的资产其实是“推理逻辑”,不记录“推理逻辑”而只记录产出的代码,无异于买椟还珠。


#ai 说起来,有人发现大模型时代内存、发电厂、用户数据升值了,也有人认为虚拟化和不可变(XClaw)、 Agent代办集成(Harness)、直接交互(Alan Kay) 更彰显了

前端的管道膨胀: 本质只是“拿数据并画出来”,现代前端却将其拆解为:Fetch -> Cache Store (React Query) -> Client State (Zustand/Redux) -> Selector -> Memo -> Props -> Hook -> JSX。每一层都引入了订阅、防抖、重渲染优化和内存泄漏风险。
后端的过度分层: 一个简单的 CRUD 请求需要流经:Controller -> DTO -> Validator -> Service -> Domain Model -> Repository -> DAO -> Entity -> Database。
代价: 业务逻辑原本是一条直线的因果推理(“如果用户未付费,则报错”),现在被切碎并散落在 8 个不同文件和抽象接口中。代码的体积增加了 5 倍
我已经不想复述Android的各种MVP、MVVM、MVI的失败了—— worse is better. “生态”是丰盛的,best practice 是标准的,然而【上限】连web都不如。整个工程 80% 的代码都没有pixel在屏幕上,软件幻灭。

到今天compose喷气桶,搞这么多年“优化”又回到是JSer领军。 连round-trip都没测试明白就开始class抽象。 恭喜你:现代横屏触屏系统都是ChromeOS了!


但是没人觉得编程本身是以目的驱动的、声明式的,就像html与现代有些无脑的 innerHTML=.map().join() ... 其实不需要那么多过度设计,之所以说是过度,因为它们对“推理逻辑”没有贡献。

🤔💭 #selected
duangsuse::Echo
有些无脑的 innerHTML=.map().join() ... 其实不需要那么多过度设计,之所以说是过度,因为它们对“推理逻辑”没有贡献。
#design HTML是反人类的,但它唯一的优点就是【所见即所得】,让你学习设计,而不是语言。 它像bash那样是种胶水语言,而且起步成本为0: 不需要刻意去命名你想做什么。

打过游戏吗?现代的《马里奥》里直接隐去了BOSS和小怪的命名,你用自制emoji 🐢在文本中指代怪物。 软件也是这样,有些技术本不需要名字,emoji 这种DSL来编码它就够用了。 “低幼”和“自动翻译”正是H5与朋友们的神性。

象形、直觉与直接指涉(Direct Manipulation),让那些看起来牛逼的设计模式、C++框架样板,最终只用一个简单的{[K]:V}或动态调用/Proxy/JSON就能实现它们,这正是H5的特点

它容错、甚至“不求甚解”,就像 class  🐢 {},一看就明白 它是绿色的;踩它一下会缩壳;踢一脚会滑行,再按F5确认一下,访问项目页就能看到截图。 而没有 trait、protocol、interface{} 、concept…… 🐢有地心引力,而这不需要起名字才能实现。

我见到不少自称【可测试】的接口,不能像 “按下PrtSc键,然后点 🔴 按钮…… 把操作视频拖到代码里,再选择几行CSS来验证操作结果” 那样设计 test case。 不对,不是【写】CSS,而是用Ctrl+Shift+C自己选中 “要检查下这部分” “那部分必须禁用”。 每几行代码,都有能点开的抓手。

有什么 “代码自动测试”,是能脱离油猴脚本(Mock)、快捷键这些生产力工具来编程的? 真是奇怪啊…… 就连面向最终用户的测试,也只是装模作样 🥱

这是对人类直觉的最高尊重:你是在游玩界面和交互本身,而不是在给编译器写汇报材料。捏一把、按 F5、屏幕亮了、角色动了。就像MC里如何【做设计】那样——或许需要自动造墙的MOD,但【创造模式--范式】已经提供了REPL般快速的活力。
duangsuse::Echo
统一的函数式接口,自动内存管理等等。
https://share.gemini.google/QJon73lAFArE #TIL #bash
GTK/QML 框架相关

- 请解释gtkmm如何实现C++闭包到gpointer的封装
auto f=new auto([=]() { g_object_set(parent_menu, "tearoff-state", TRUE, NULL); });
g_timeout_add(500, +[](gpointer uf) { auto u=static_cast<decltype(f)>(uf); (*u)(); delete u; return 0; } , f);


- 树形父子对象管理 + 智能指针引用计数 (GObject ref/unref)?
- Gtk听起来为了blueprint做了很麻烦的设计,而且似乎无法避免,还不如Tk

- 有一种说法:C++桌面移动应用需求里,90%的指针是refcount<2的,这里说的不止是画布之上,还包含一般的日历、笔记等App的所有对象状态管理
- 也就是说Rc<RefCell>或QObject的模型非常够用。unique_ptr(父持子)(跨节点访问)。
- 当按钮 B 被主容器销毁时,连接到 B 的所有信号槽会自动断开,持有 B 的 QPointer 会自动置空。只有 1 个 Owner,但允许多个安全的 Observer。

📝 完全同意你的观点:处理好那唯一一次的“所有权(Ownership)”,剩下的需求只靠“安全观察(Weak/Observer)”就足够完美覆盖了。Tkinter 和 Qt 都顺应了这种直觉
#post #statement 【有害的聪明】 

pip 依赖解析为什么那么慢,以及uv为啥快。

> 因为 CDCL(conflict-driven clause learning),这是一种形式化验证技巧,学习冲突去剪枝。渊源来自于 PubGrub…… 
> https://www.bodunhu.com/blog/posts/how-sat-solver-works/

链接缓存,多大点事。 pip最开始是面向非破坏性升级的,没人会说它复杂,pnpm也不会很复杂。uv直接把实现细节的画风都变成红黑树一样了。CDCL直接把画风都变了,与之相比,pnpm完全没有需要算法

复杂的算法并不是强大,仅仅是没有“GPU加速”的思考而已。简单的hash、LRU、channel、x86/arm栈模型,其实比这些树和状态机转来转去的破烂好太多,只是要系统思维

把一个明确有注意点的“递归下降”和list回退,搞成和DP一样二维N维的破烂,让我想到CS教育里对YaCC这些玩意的迷信。严谨吗?真正的严谨从来不需要思考,它不会让人脑像左手拿筷子一样无法“GPU加速”,那很蠢。

Node.js 允许版本多存,从根上规避了 Python 的难题。pnpm 看到的问题是“文件冗余”,而不是“逻辑冲突”。如果apt的依赖解析是最快的,把两个仓库的文件格式一对接,同样完美解决了当下的性能问题。反正退一万步,用户的需求是简单的,技术深奥?都砍了也不影响交互。它们最终是没有生命力的,因为不被测试。如果烂了,是因为制造依赖问题的库本身烂

如果你天生有一个反直觉的,左手拿筷子的思维方式,那当然显得IQ很高。 但其实这些人的IQ不适用于游戏、舞蹈、创造一种工具、雕塑MC的存档,他们反应不过来也没有充足的动力。 


我非常讨厌聪明的技巧,因为它们对社区没有贡献。倒不如说,他们和制造这种需求的蠢人更合得来。


> "Everyone wants people they like to be right, that's why popular people are fucking dumb" -Rick Sanchez

这里的蠢不是指他们完不成uv这样我也会日用的工具,而是指【有害的聪明】 (dumb in a systemic way),过度工程。 就像一个人用十位数的密码保护3位数的资产,而这十位数,如果你足够有智慧的话,会发现它是电话号码+生日。我会像逃避瘟疫那样避免这些【十位数的代码量】。


如果你这样想计算机和CS的问题,你就会明白 Scratch、Alan Kay,还有 "Bret Victor, Human Being" 这个slogan有多大含金量了。 

高深和小众不是真理,只有真理是真理。在代码的源头不意味着必须小众,MC、Flash、Scratch的世界里,你可以尝到“复杂性是甜的”(比如光影和红石支持的minigame)。 我非常怀疑只是做到一件事对【生而为人】来说的价值。 

OOP之父首先是一个“会说话(Smalltalk)的”人,他的敌人是“不透明的codebase”和“添加间接性”。  很多编程者并不是一个【人】,而更像机器的外设。 ——真是一个单点故障的外设呢。


声明式就是声明式,不需要与任何 functional bullshit 捆绑。他们也并不真懂什么是纯函数。没有“重新赋值”,整体扔掉重算就是纯的咯? 他们并不懂一个赋值的影响范围和箭头函数的因果链,有多静态。 “不允许一个框的赋值变化,但每次都删掉整个屏幕重来。”
❤1
Forwarded from 螺莉莉的黑板报
我没有在看尼古喵喵,但是这部剧在台湾被下架了我觉得是一个非常糟糕的文化审查。而且,上关于香烟的文化审查并不少见。比如,如果你足够老,应该记得 QQ 里面香烟表情被拿掉的新闻。如果你比较年轻的话,相信你也知道 Emoji 里面的枪被各个厂商换成水枪。这次尼古喵喵被下架更是荒谬,因为台湾已经有相对健全的内容分级制度了。

一个文化概念不应该因为你喜不喜欢,「你觉得」对别人好或者不好而消失。这些以圣人姿态钳制公共话语空间的「权威」着实令人鄙夷。
#game 奥德赛确实在任天堂ip里MOD强度较高。

右面板的九宫格为 P.xyzr Gizmo,上面是场景动态对象池(有视锥距离限制)

传统的xyz标记和传送/地图切换/TAS优化/传统的金手指功能不在话下,可实现60FPS移速不变。 🤔
duangsuse::Echo
#game 奥德赛确实在任天堂ip里MOD强度较高。 右面板的九宫格为 P.xyzr Gizmo,上面是场景动态对象池(有视锥距离限制) 传统的xyz标记和传送/地图切换/TAS优化/传统的金手指功能不在话下,可实现60FPS移速不变。 🤔
#TIL #game Switch root

https://www.youtube.com/watch?v=v3ECI513pSU
https://smoo.it/
https://github.com/Amethyst-szs/smo-lunakit

LunaKit和SMOO基于ImGui和 sead,al::PuppetActor 显然用心,达到了 PC 级游戏开发工具/内建调试引擎的水平(2024),可以zip安装,模拟器+鼠标操作

可以开飞行无伤,像F12那样悬停高亮的场景对象池,按颜色可视化敌友的碰撞判定,可即改关卡内和存档状态,实现为无混淆的 C++ hook ::exl

对象池面板,比如可搜索 Shibaken(会显示柴犬的日文名),播放出场动画,瞬移到狗身边(可惜不能距离太远)

美中不足是无法用下一次碰撞做对象池选中,也不能在鼠标xyz居中放置fav对象,甚至不能加载和生成fav。如果有,配合SMO的摄像模式应该更加有趣。全实体附身、生成附身怪物、月球重力、GUI滚轮等应该也能实现

蘑菇王国的火箭stage拼图,玩家可简单涂抹场景(Splatoon Ink)同样是深度调试功能,比CE里搜个数值强太多了。 这样,游戏里不可变的就只有操作逻辑、玩法脚本和3D资产。(听说Switch-Toolbox连角色模型都能替换)

https://github.com/Amethyst-szs/smo-lunakit/blob/stable/src/program/devgui/settings/SettingsHooks.cpp#L74

《任天堂明星大乱斗 特别版》《塞尔达传说 BotW》《赛车8》的MOD质量更是高于LunaKit,二开的赛道更多,也算是弥补了主机游戏没有联机这一块(以及部分高玩认为马里奥不够难……)
duangsuse::Echo
这样,游戏里不可变的就只有操作逻辑、玩法脚本和3D资产。
虽然视频中的画质比较Low-poly (不像MC,因为游戏本体都是上个世纪画质,哈哈哈)

但该有的脚本,甚至官方不会做到的设计都是PoC过可以做的。 考虑到以后AI建模的发展,或许MOD老游戏也会成为一种社区化的、有意义的创作?

可惜端游不可能有Steam创意工坊。 端游的好处是一口价,而且省心,这一点在越来越浮躁的当代真是太稀缺了 💭