Forwarded from 游戏旧闻转发
你有没有留意到,近年来一大批将房屋装修作为主要玩法的模拟游戏涌入市场,并吸引了海量玩家?外媒TWIV的作者Maddie Agne在一篇文章中指出,此类游戏之所以日益流行,很大程度上是因为许多玩家在现实生活中没有足够的经济实力买房,只能通过这种方式望梅止渴,在游戏里缓解无力买房的愁苦。
https://www.chuapp.com/article/291551.html
https://www.chuapp.com/article/291551.html
Chuapp
买不起房的年轻人,在房屋装修游戏里缓解愁苦 - 触乐
当我们聊装修游戏,也许聊的是一种苦闷。
Forwarded from yihong0618 和朋友们的频道
我大概一生也成不了这样精彩的人,但是看着他们的生活,从中找到几本想看的好书,想玩的游戏,也非常开心了。
https://tangdh.life/posts/interesting/ncdu/ #dalao #dev #db 还会优化向量搜索 BPF 🤔 感觉很牛逼
#rust
#cpp https://tangdh.life/posts/c/rvo/
好家伙,最后还是批量操作文件保存提速…… 太合直觉了
#rust
#cpp https://tangdh.life/posts/c/rvo/
我们的实验结果表明,io_uring 显著提升了性能。这主要归功于 io_uring 的异步特性。fsync我们无需等待每个调用返回结果,而是可以提交 I/O 请求,并在没有其他任务需要处理时一次性全部处理。
好家伙,最后还是批量操作文件保存提速…… 太合直觉了
Don't Panic
为什么ncdu这么快?
上周被同事发现我就是导致组里磁盘满的罪魁祸首后,由此引发的一系列有趣调试历程
#game #dalao https://wszqkzqk.github.io/2026/02/20/PvZ-Portable-Zombotany-Image-Fix/
笔者在大一时曾经尝试写过 Python 版植物大战僵尸。那时候笔者还在起步阶段,用 Python 和 Pygame 做了一个简单的练习,主要目的是学习 Python 和面向对象编程。那个项目虽然能玩,但在还原度上和功能完成度上存在不少局限。
时隔几年,随着技术栈的深入,在开源社区前人大量代码1 2的基础上,笔者带来了一个强大得多的新项目 —— PvZ-Portable。
几乎 100% 复刻原版所有特性 支持 Linux, Windows, macOS, Android, iOS/iPadOS, WebAssembly, Switch… 基于 OpenGL & SDL
且可移植存档相互兼容,支持 MO3 音乐格式。支持各种语言的官方年度版资源包
访问 浏览器免安装体验页面,导入你的 main.pak 和 properties/ 目录,点击 Start Game 即可开始。存档自动保存在浏览器的 IndexedDB 中
笔者在大一时曾经尝试写过 Python 版植物大战僵尸。那时候笔者还在起步阶段,用 Python 和 Pygame 做了一个简单的练习,主要目的是学习 Python 和面向对象编程。那个项目虽然能玩,但在还原度上和功能完成度上存在不少局限。
时隔几年,随着技术栈的深入,在开源社区前人大量代码1 2的基础上,笔者带来了一个强大得多的新项目 —— PvZ-Portable。
几乎 100% 复刻原版所有特性 支持 Linux, Windows, macOS, Android, iOS/iPadOS, WebAssembly, Switch… 基于 OpenGL & SDL
且可移植存档相互兼容,支持 MO3 音乐格式。支持各种语言的官方年度版资源包
wszqkzqk.github.io
PvZ-Portable:修复僵尸植物存档恢复后的贴图错误 - 星外之神的博客 | wszqkzqk Blog
天下难事,必作于易;天下大事,必作于细
#tg 最近支持:右键一键转发!
原本功能:
https://github.com/telegramdesktop/tdesktop/blob/8e18cb71103d83d7d98994ff27f0a2bca55c489c/Telegram/SourceFiles/history/view/history_view_context_menu.cpp#L1123
https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/SourceFiles/history/view/history_view_message.cpp#L5769
https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/SourceFiles/history/view/history_view_message.cpp#L5896
是真没想到这玩意还要加几百行,和快速reaction有冲突 ❤️
原本功能:
HistoryView::ContextMenu::fillElementMenu()https://github.com/telegramdesktop/tdesktop/blob/8e18cb71103d83d7d98994ff27f0a2bca55c489c/Telegram/SourceFiles/history/view/history_view_context_menu.cpp#L1123
HistoryView::Message::drawRightAction()https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/SourceFiles/history/view/history_view_message.cpp#L5769
https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/SourceFiles/history/view/history_view_message.cpp#L5896
是真没想到这玩意还要加几百行,和快速reaction有冲突 ❤️
吐槽:高性能, 这个所谓的自动layout追加不就是Tk pack()、平铺式布局管理,加几条用户权限的if线么,一个小角标写几百行cpp
嫌运行时ui树慢可以做comptime编程啊,弄的widget()都返回bool或QRect,我都不敢想设计有多困难
“用巨大的开发维护成本”,在我看来就是反直觉,没有工程策略。树框架依然是要的,你不喜欢可以写个协议把QRect缓存下来,而不是像cpp不用iostream而sizeof+init 写两遍一样。
我会那样写吗?我直接在js用Proxy bind到数组union的offset。
他要是稍微有点设计感,就直接把CSS伪状态重新发明出来了。 右键菜单分过Type后能有几个case,不就是owner、group、新老消息什么的,到处accessor item->allowsForward() 和fn() { if 开头 } 算什么呢,还不如QWidget树
面向什么就面向什么,一开始就知道有十几种菜单,可穷举的就在.md里就想好,然后把datatype打包好
GitHub
tdesktop/Telegram/SourceFiles/history/view/history_view_context_menu.cpp at 8e18cb71103d83d7d98994ff27f0a2bca55c489c · telegra…
Telegram Desktop messaging app. Contribute to telegramdesktop/tdesktop development by creating an account on GitHub.
duangsuse::Echo
问了下,微信最常用的功能是“全局搜索”(sql FTS5),这就要B+树了
SSTable单独做索引的方案不能直接用ext4做下层,而且担心手机断电没日志(这不是SQL元数据自己的锅吗……)
SSTable单独做索引的方案不能直接用ext4做下层,而且担心手机断电没日志(这不是SQL元数据自己的锅吗……)
https://blog.est.im/2026/stdout-26 #tencent #dev
有人测试出来 Polar+AES 在性能和体积上都非常平衡,而且支持单行实现grep
FTS5建立索引是最快的,但是体积翻了3倍
有人测试出来 Polar+AES 在性能和体积上都非常平衡,而且支持单行实现grep
FTS5建立索引是最快的,但是体积翻了3倍
vx的聊天功能,还是 时间戳排序+串读串写(离线或多人),列数据库确实适合 append-only ,只是那个时代RDBMS非常通用了
为了一个grep速查索引放弃整个文件树模型…… 这大概是文件系统本身的问题了,想起了Everything。 大概没人真的因为【调试方便】 而用fs管理消息,电邮都不
est.im 还做了很有意思的思辨: #science 都被谁包养了
https://blog.est.im/2026/stderr-25
达尔文是真有钱啊
- 居里夫人:美国妇女发起"镭募捐运动"送她一克镭,靠国际名气才翻身
- 玻尔研究所靠卖啤酒的钱养量子力学,是个有趣的冷知识
- 在CERN万维网是"副业",欧洲多国联合资助的大型实验室养活了他
btw. est #dalao https://blog.est.im/2026/stdout-09 这个eval且防注入的也太逆天了
https://blog.est.im/2024/stdout-19 电音
php是最好的……serverless?
如何删除 C:\Windows\WinSxS 文件 PsExec!
Windows 任务管理器(taskmgr.exe) 作者讲趣闻 |避免直接链接到除了
正在加速崩塌的是「中文」,不是互联网 |曾经红火过的中文网站,如网易、搜狐、校园BBS、西祠胡同、凯迪猫眼、天涯论坛、校内网(人人网)、新浪博客、百度贴吧、以及大量的个人网站等,在一定年份之前的信息都已经完全消失不见了
他还有个《the Matrix里无🧑🦽轮椅》定理, 说明缸中之脑的伪造(人造)和荒谬性。
https://blog.est.im/2026/stderr-25
达尔文是真有钱啊
- 居里夫人:美国妇女发起"镭募捐运动"送她一克镭,靠国际名气才翻身
- 玻尔研究所靠卖啤酒的钱养量子力学,是个有趣的冷知识
- 在CERN万维网是"副业",欧洲多国联合资助的大型实验室养活了他
但最有趣的不是这些故事本身。而是你会发现这些案例都不太像随机搜索。反而像已有知识在跨领域类比,统一两个看似无关的东西。
牛顿:苹果=月亮;麦克斯韦:光=电磁现象;爱因斯坦:重力=加速度。这是一种很特殊的创造力。事实上很多认知科学家会认为:真正的人类创造力未必来自随机variation。而是来自类比推理(Analogical Reasoning) 或者 概念压缩(Conceptual Compression)
麦克斯韦也是。原来:电 磁 光 三门课。后来:电磁场一门课。
更极端的是 Alan Turing。图灵其实没有发明计算机。他干的事更离谱。别人研究:加法机、乘法机、密码机、各种机器。图灵问:有没有一种机器,可以模拟所有机器?然后就出现图灵机。
人类最顶级的创新可能分两类。 第一类就是你熟悉的: 组合创新 或者说工程创新。第二类则是: 压缩创新 或者说理论创新。 突然发现: A = B
btw. est #dalao https://blog.est.im/2026/stdout-09 这个eval且防注入的也太逆天了
https://blog.est.im/2024/stdout-19 电音
php是最好的……serverless?
如何删除 C:\Windows\WinSxS 文件 PsExec!
Windows 任务管理器(taskmgr.exe) 作者讲趣闻 |避免直接链接到除了
user32和gdi32之外的任何东西正在加速崩塌的是「中文」,不是互联网 |曾经红火过的中文网站,如网易、搜狐、校园BBS、西祠胡同、凯迪猫眼、天涯论坛、校内网(人人网)、新浪博客、百度贴吧、以及大量的个人网站等,在一定年份之前的信息都已经完全消失不见了
|你在特别渴的时候喝水,是不是感觉两口水下肚,立马就解渴?水需要20分钟,才能进入你的血液,它根本不可能在几秒内解渴
他还有个《the Matrix里无🧑🦽轮椅》定理, 说明缸中之脑的伪造(人造)和荒谬性。
duangsuse::Echo
est.im 还做了很有意思的思辨: #science 都被谁包养了 https://blog.est.im/2026/stderr-25 达尔文是真有钱啊 - 居里夫人:美国妇女发起"镭募捐运动"送她一克镭,靠国际名气才翻身 - 玻尔研究所靠卖啤酒的钱养量子力学,是个有趣的冷知识 - 在CERN万维网是"副业",欧洲多国联合资助的大型实验室养活了他 但最有趣的不是这些故事本身。而是你会发现这些案例都不太像随机搜索。反而像已有知识在跨领域类比,统一两个看似无关的东西。 牛顿:苹果=月亮;麦克斯韦:光…
谈科研,
包括DNN(AI)革命也是这样:历史上的"跑题率"高到惊人,某些行为可以直接从反网络、抗议游戏,一年跳到反AI算力、反智的。因为,科学突破几乎全是"顺手做的"、钻空子的
"完全对口"的案例列表中只有2位,不是资方勇敢勇敢提前押中的。 纯粹盈利的资方局限性也不小
图穷匕见:资方为了装逼去包养才是科学研究第一必要条件。🤣 🤣 🤣 🤣 🤣
有品味和敢做副业的决心,才有可能搞出来大新闻;贫穷限制了我们的智商!
要么你能混成网红,要么你需要遇到一个贵人,才能当科学家
🤣
ps. 是不是感觉两口水下肚,立马就解渴?水需要20分钟,才能进入你的血液
包括DNN(AI)革命也是这样:历史上的"跑题率"高到惊人,某些行为可以直接从反网络、抗议游戏,一年跳到反AI算力、反智的。因为,科学突破几乎全是"顺手做的"、钻空子的
"完全对口"的案例列表中只有2位,不是资方勇敢勇敢提前押中的。 纯粹盈利的资方局限性也不小
图穷匕见:资方为了装逼去包养才是科学研究第一必要条件。🤣 🤣 🤣 🤣 🤣
有品味和敢做副业的决心,才有可能搞出来大新闻;贫穷限制了我们的智商!
要么你能混成网红,要么你需要遇到一个贵人,才能当科学家
🤣
ps. 是不是感觉两口水下肚,立马就解渴?水需要20分钟,才能进入你的血液
- 我明白了,就像ptsd了
- 听起来非常奇怪,就好像物理化学不真实一样,但其实是符合神经工作原理的。但这也太智能了,听起来就像患者能主观区分吃下了什么
本来是一种非常独特的回忆机制,但又和预测性相关,可能像回光返照的原理
Forwarded from HAT's Public Channel |
xswl, 这辈子第一次见这么流氓的软件
Open Design 的遥测模块默认向他们发送你所有的输入 prompt 和 AI 输出、你本地 codebase 里所有的代码文件
简单看了下他们官网,又是经典的 English+简中 i18n 搭配,挖了一下果然是国内公司,🤣 有时候刻板印象确实是很有用的
Open Design 的遥测模块默认向他们发送你所有的输入 prompt 和 AI 输出、你本地 codebase 里所有的代码文件
简单看了下他们官网,又是经典的 English+简中 i18n 搭配,挖了一下果然是国内公司,🤣 有时候刻板印象确实是很有用的
duangsuse::Echo
#post #bin #os lib.so是库对象?是C模块? 谈谈纯函数、全局表容器、Worker线程模型 随着React的火热,大家应该都听说过「纯」函数式编程(#FP) 这个规范了。纯意味着不更改变量和外部状态(例如stdIO),但它和 .c 的ABI(.o 和最终输出的 .so) 有啥关系呢?😅 在点出关联之前,我要发表一段很典的评论: 90%的PFer不懂FP。 考虑一个 node &>/dev/null any.js 的环境,简单的 "log IO" 真的是“不纯的代码”吗? 请注意,stdout没法回环到原进程。…
#post #ce #haskell(IO) #os #js CPS是什么(异步和函数式编程 都可以看)
#ai锐评
🌶 https://chat.librechat.ai/share/hjL775AHhAji7HM8K0lFt
🧁 https://chat.librechat.ai/share/SmoUvMiuxY_hfmIcUEK95
CPS 不是 Clicks Per Second, 而是 Continuation-pass style,后者可用于优化前者。 😉
CPS的理由:CPS产生【回调链表】作为线程栈 📜,可以让单线应用像操作系统那样工作 ⚙️,但不能处理音画同步和多线下载(绿块块下载/暂停/断点续传等),这依然需要
CPS:把所有
CPS变换:如果
否则,需要处理
TCO:在递归时
Promise与Continuation:
将 ()=> 给 async 化变为对象后,它的 return 值就放在了
(这是一个GC引用问题,未完成而被await时,proc在sleep时,内存占用不会消失。c10k问题) 👀
(c10k和y2k一样是个傻逼问题 accept()明明依赖io_token,非要依赖pid,产生4K栈和CPU无效轮换的问题)
通过实现
有人 alias then值='酷酷的lambda' 或 'pthread线程',其实它更像 fn.bind(框架已知参数).bind(你的已知).call(运行时参数) 🤔。
这篇文章有点《图文不符》的意思了,其实还是有内容的,只不过AI味特别浓。
#ai锐评
🌶 https://chat.librechat.ai/share/hjL775AHhAji7HM8K0lFt
🧁 https://chat.librechat.ai/share/SmoUvMiuxY_hfmIcUEK95
故意生成的 emoji 🤗 AI味,看看逆不逆天?原文是手写的
CPS 不是 Clicks Per Second, 而是 Continuation-pass style,后者可用于优化前者。 😉
CPS的理由:CPS产生【回调链表】作为线程栈 📜,可以让单线应用像操作系统那样工作 ⚙️,但不能处理音画同步和多线下载(绿块块下载/暂停/断点续传等),这依然需要
Coroutine 调度器(事件循环/libuv)来补位。之后就和ChromeOS一样完整可用,脱离 C-like 世界的掌控了!🚀CPS:把所有
return x 换成函数语法如 onRet(x),因为只是调用,就可以玩两两组合了 🧩,比如 if(x=onCatch(x)) onRet(x) or exit(1) 或 addEventListener('click', ()=>onRet("两个按钮你点了确认"), {once})。没错的!✅ 你甚至能在 throw 错误的行号原位恢复,OR 手动实现 yield✨/callcc-setjmp/Algebraic Effects 依赖注入模式。CPS变换:如果
return x 都被换掉的 def 只是一个计算图(只包含赋值和 ret 变量),可以直接变成 switch(op++) case 0 case 1.. 的行号调试(每个 case 将不以 break; 而以 return; 结尾,c=a+awit b 变为 _1=wait;c=a+_1) 🔢否则,需要处理
for if 以及相关的流控,如 throw 和提前 return、爆栈的 DFS 等等,也就是扁平化为 goto(op=xx),f() 一次就走一句(几行的微任务)。 🚶♂️TCO:在递归时
f=(n, r)=>(n==0)? r : f(n-1,r+1) 是个特例,可以改写为 f(n,r)=return continue(n-1,r+1) or (n==0: r) ,这样的多分支状态机 🤖,所以叫伪递归(TCO)。另有一种将 f(n)=n0? 0 : f(n-1)+1 转为的【自动累加器化】,还有使用TCO(甚至模板解释器)优化 switch(opcode[i]){} VM的标准写法 ➡️ https://t.me/dsuse/21568Promise与Continuation:
(async()=>1)().then(one=> {}) 在一个CPS对象上写个 then 回调。🤝 因为每个 {} 块都有要“返回”到的行号,和此行号周围的【🎁已知变量元组/Upvalue/闭包】,这就称之为 then 值,粗略的认为它是F12面板你按F8暂停时 ➡️ 所指示的一行 【点开可看的函数名】。 将 ()=> 给 async 化变为对象后,它的 return 值就放在了
u._ret 和 rr=u.call(_yield的返回值=null)。rr 值用于优化 await 1 这样不挂起到 libuv 或 syscall 的缓存 ⚡️。 u._ret 即使在完成后调用 .then 也可读取哦!(这是一个GC引用问题,未完成而被await时,proc在sleep时,内存占用不会消失。c10k问题) 👀
(c10k和y2k一样是个傻逼问题 accept()明明依赖io_token,非要依赖pid,产生4K栈和CPU无效轮换的问题)
通过实现
onYield(i also{i+=1}) 与对应的 forEach,正如 onRet 与另一 Worker 上对应的 then,我们可以定义一个走1024次(4KB)才返回1次的 func* 📜,而不需要和 java 那样弄 iterator(){} 和 BufferedX(),这就是 Kotlin 最近的方向(但它们对响应式 flow 的理解不如 Svelte 🤷)。有人 alias then值='酷酷的lambda' 或 'pthread线程',其实它更像 fn.bind(框架已知参数).bind(你的已知).call(运行时参数) 🤔。
这篇文章有点《图文不符》的意思了,其实还是有内容的,只不过AI味特别浓。
Telegram
duangsuse::Echo
#ce py3.14 线性解释器(C实现)的新优化😝
- Tail Call Interpreter 是py3.14优化字节码解释器(大 switch(int) {case opcodes..} )的编译期优化,因为CPy跑def里的每条指令都有利用,PGO提速15% ,而且,perf现在能看单条opcode的开销了!
- [tailcail,兄弟调用] 就是跳转地址不在自身的 [tailrec,伪递归]。因为伪递归==改参数goto开头重来,而且,这种优化非常常见(相较于 [Computed Goto]),所以被…
- Tail Call Interpreter 是py3.14优化字节码解释器(大 switch(int) {case opcodes..} )的编译期优化,因为CPy跑def里的每条指令都有利用,PGO提速15% ,而且,perf现在能看单条opcode的开销了!
- [tailcail,兄弟调用] 就是跳转地址不在自身的 [tailrec,伪递归]。因为伪递归==改参数goto开头重来,而且,这种优化非常常见(相较于 [Computed Goto]),所以被…
duangsuse::Echo
#post #ce #haskell(IO) #os #js CPS是什么(异步和函数式编程 都可以看) #ai锐评 🌶 https://chat.librechat.ai/share/hjL775AHhAji7HM8K0lFt 🧁 https://chat.librechat.ai/share/SmoUvMiuxY_hfmIcUEK95 故意生成的 emoji 🤗 AI味,看看逆不逆天?原文是手写的 CPS 不是 Clicks Per Second, 而是 Continuation-pass …
CPS 是机制,事件循环/调度器是策略。不谈JS标准和Babel的世界,就不真正理解PLT里Monad(>>=)和CPS的存在。
又有人说,不了解libuv这些通用技术在【语法层面】的存在,就只是理解了技术政治和索然无味的选型,并不真正明白。
PLT和await的语法高亮就像汽车的引擎、变速箱和传动轴 🚗。 libxxx 和实际框架就像驾驶员的大脑 🧠。
又有人说,不了解libuv这些通用技术在【语法层面】的存在,就只是理解了技术政治和索然无味的选型,并不真正明白。
PLT和await的语法高亮就像汽车的引擎、变速箱和传动轴 🚗。 libxxx 和实际框架就像驾驶员的大脑 🧠。
理论就像娟秀的字体,工程场景就像作文和自由命题。
一个人吹自己字写的很好,内容很可能是《别样的碰碰车大战》。 🤪
写字、罚抄,或者说“滚键盘”,并不是在 “写作” (Writing),也不可能替代另一个出发点的具体优化,就像LLVM并不懂numpy和ffmpeg是什么
我不喜欢“写字”。 用多少写多少。开箱即用,以租代买。