V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  songray  ›  全部回复第 3 页 / 共 9 页
回复总数  174
1  2  3  4  5  6  7  8  9  
现代 JavaScript 教程 https://zh.javascript.info/
用 Go 语言自制编译器 https://www.ituring.com.cn/book/2882
248 天前
回复了 sgld 创建的主题 Python 关于 Python 协程的 event loop 与 future
没那么复杂,比如我们有一个 async 函数 foo ,代码执行到 await 的时候,控制权就从 foo 函数让出到别的代码块了,同时向待完成列表里插入 foo 。
等到 foo 的 await 任务完成后,就会向 eventloop 中插入类似于 “foo 已经完成啦,你应该继续 foo 的后续操作”的 task 。
等到 eventloop 循环到这个 task ,就会恢复上下文(也可以说是状态)到 foo ,这也就是为啥无栈协程也可以看做是一种状态机。
希望我的解释比较明朗。
253 天前
回复了 klusfq 创建的主题 职场话题 关于一个项目是不是玩具的界定。
赞同三楼,这不是技术问题,而是屁股问题。
@Radeon 那你自己用 rollup 把 cdn 上的 react.cjs 转一下就行了,不需要直接从源码 build esm 。

你可以参考一下我刚刚写的 demo 或者直接用 dist 文件夹下的产物。

https://github.com/Ray-D-Song/esm-react-transform
这个问题已经存在很多年了,不管是源码还是编译脚本没有考虑过 ESM ,要改的话至少需要几个人一起着手,不是 AI 能干的。
https://github.com/facebook/react/issues/11503
https://github.com/facebook/react/issues/10021

更关键的一点是,React 几乎所有子模块都是 internal ,没法进行摇树,所以提供 ESM 也没啥意义,你为什么不用 UMD 或者 CJS ?
@lisxour
和 pkg 以及 nexe 一样,需要自己使用 esbuild 、ncc 之类的工具把项目转换成单个的 js 文件,所以兼容性是那些工具保证的。
@byte10 你说的应该 nexe 和 pkg 吧,这俩也是打包可执行文件的工具,npx 是执行远程脚本用的。

其实原理都是把代码嵌入到 js 运行时里面,运行的时候再提取代码,不过因为 js 有 cjs 和 esm 两种格式,所以确实有可能兼容性问题。
这玩意 Ruby on Rails 社区早就有类似方案了,叫 Turbo 。

https://www.hotrails.dev/

和 HTMLX 一样,都是不堪重用的东西。
@dragondove 因为这个设置不能搭配 language server 使用,具体的表述是:
Include unimported packages in auto-complete suggestions. Not applicable when using the language server.
@songray 顺带提一嘴,Copilot 5 月开始高级模型调用限制 300 次,超出的 0.04 刀一次。
结合之前微软说过一个 Copilot 用户每个月亏损 80 美元,以及 Cursor 开始砍上下文长度和 Windsurf 涨价,明显各家开始烧不起了。
所以以后只会越来越难用,“想试试便宜的能搭配 deepseek 的看看效果” 还是算了吧...
Cursor 补全强是训练了自己的 MoE 模型,替代品是 Supermaven (已经被 Cursor 收购,但继续提供服务)。
至于 Chat 、Edit 、Agent 就全看上下文长度,Cursor 一开始一骑绝尘,最近也被砍成脑残了,动不动失忆,和 Copilot Chat 处于一个 60 一个 70 的水平。
最强的 Agent 插件还是 Cline + 自己提供 Claude3.7 或者 Gemini 2.5 的 API ,比 Cursor 那个砍了一刀的要强很多。

总结:Supermaven + Cline
形如 Java/Python/JS 的值类型和引用类型是一种「隐式规则」,所以很难说「隐式规则」和「显示指定」之间的优劣,各有各的问题,比如传递后的对象是否还是原来的引用在有些情况下不明确。
各种从祖宗节点找重孙节点和从重孙节点找祖宗节点的地方...
294 天前
回复了 songray 创建的主题 程序员 LLM 还不如低代码
@matrix1010 去年 12 月才免费开放。
295 天前
回复了 sumtsui 创建的主题 程序员 第一次尝试贡献开源受挫
如果你的 pr 质量很高的话,最好的办法就是 fork 一份,然后到处推销你的 fork 。
等作者受不了了就会 merge 掉(笑

不过老实说,开源最大的意义是你可以随便 fork ,而不是可以提 pr 。
合别人的 pr 很累,所以很多作者就是管杀不管埋。
298 天前
回复了 eypidan 创建的主题 程序员 使用 TypeScript 的类型运行 DOOM
之前尝试过用纯 type 实现 Lua 虚拟机,只能说这玩意全是难点。
举个简单的例子,纯 type 实现 通用的整数加法运算:

// 创建长度为 N 的元组类型
type BuildTuple<N extends number, R extends unknown[] = []> =
R['length'] extends N
? R
: BuildTuple<N, [...R, unknown]>;

// 通过元组长度实现加法
type Add<A extends number, B extends number> =
[...BuildTuple<A>, ...BuildTuple<B>]['length'];

但这玩意最多只能算到 45 ,因为 ts 类型系统有递归限制,默认的类型递归深度限制是 50 。
要突破这个限制就只有把整数转为二进制数组,再从二进制数组转回整数。

这样的限制存在方方面面... 所以这老哥真是神人了。
@murmur 可以再套一次 vite 或者 rsbuild 调 babel 。www
svelte 在引入 runes 之前都是纯编译时的框架,如果用 babel 倒腾 ast 的话怕是要卡出屎来了…
话说为啥要在预处理里嵌入 babel ,你对产物跑 babel 不就行了。
313 天前
回复了 gimp 创建的主题 程序员 求推荐个 Cursor/vscode 写 Golang 代码的主题
tomorrow night
1  2  3  4  5  6  7  8  9  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   868 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 22:32 · PVG 06:32 · LAX 14:32 · JFK 17:32
♥ Do have faith in what you're doing.