第329期 — 2025-08-16

在浏览器中阅读

周e信

扫描二维码关注微信公众号

Node.js

现代 Node.js 模式2025🔗
  1. 模块系统: 使用 ESM 模块,并使用 node: 前缀显式声明内置模块的引入。使用 Top-Level Await 简化初始化流程。

  2. 内置 Web API: 利用内置的 Fetch API 代替外部 HTTP 请求库,并使用 AbortController 实现操作取消。

  3. 内置测试: 使用 Node.js 内置的测试运行器进行测试,无需额外依赖。

  4. 异步模式: 采用增强的 Async/Await 错误处理模式和 AsyncIterators 处理事件流。

  5. 流(Streams): 利用 Web Streams 的互操作性,并使用 pipeline 函数简化流处理。

  6. Worker Threads: 对于 CPU 密集型任务,使用 Worker Threads 实现真正的并行处理。

  7. 开发体验: 使用内置的 Watch Mode 和环境变量管理,简化开发流程。

  8. 安全和性能监控: 使用实验性的权限模型增强安全性,并利用内置的性能监控工具。

  9. 应用分发和部署: 使用单个可执行应用简化分发。

  10. 错误处理和诊断:使用结构化错误处理,并利用高级诊断工具进行分析。

  11. 包管理和模块解析: 使用 Import Maps 和动态导入实现更灵活的模块加载。

kashw1n

Javascript

“p-fast trie” - 新数据结构🔗

优点:精确匹配时就是一次哈希表查询,找前驱 / 后继只需要一次遍历,理论上查询效率是 O (log k)(k 是键的长度),比 qp-trie 的 O (k) 更快。 缺点:比 qp-trie 费内存,因为需要更多内部节点;缓存表现可能较差,查询时会在长前缀间跳转,不如 qp-trie 的短前缀容易被缓存;实现时要避免前缀复制浪费空间,比较 tricky。

Tony Finch

前端

Nicholas-L-Johnson

Python

Chris Fenton

人工智能

我的开源项目被AI使用,然后它拒绝了我的求职🔗

作者的开源项目enigo被价值超过600亿美元的AI公司Anthropic的Claude Desktop使用,用于实现“Claude Computer Use”功能。

作者通过朋友得知Anthropic有一个团队正在使用enigo开发Claude Desktop的秘密功能,并为此投了简历。然而,他最终收到了拒信,这让他有些失落。作者原本希望能够作者调侃地猜测拒信是否是Claude AI写的,并表示自己现在应该可以避免Roko's Basilisk。

Benjamin Kampmann

帮助我摆脱 AI 10 倍工程师综合症的事情🔗
  1. AI并没有使工程师普遍提高10倍效率: 作者认为“10倍工程师”的说法被夸大,实际工作中存在诸多瓶颈,如代码审查、产品讨论等,这些环节很难实现10倍提速。软件工程中人为的因素不会因为AI的出现就发生巨大的变化。即使代码编写速度提升,整体效率的提升也远达不到10倍。

  2. 作者亲身试验AI编码工具: 作者尝试了多种AI编码工具,发现它们在某些方面(如生成样板代码)表现良好,但在理解大型代码库上下文、处理不常见的库、避免代码错误方面仍然存在不足。

  3. 使用AI的正确心态: 作者认为学习使用AI并不难,但过度依赖AI可能导致忘记基本技能。工程师不应盲目追求AI带来的效率提升,而应保持享受编码过程的心态,并重视代码质量和长期可维护性。

  4. 对AI炒作的质疑: 作者指出,许多关于AI提升效率的说法来自既得利益者,如AI创业公司或为了降低员工期望值的管理者。工程师应保持怀疑态度,不要被这些炒作所影响。

  5. 好领导应该怎么做:作者认为,领导者不应强迫工程师使用AI,而应信任他们的判断。如果工程师认为AI能带来实际效益,自然会主动使用。制造焦虑不利于长期发展。

  6. 结论: 作者强调,没有所谓的“AI编码革命”,工程师不必感到焦虑。重要的是信任自己,享受工作,并避免沉迷于社交媒体上的炒作。并指出了一个好的工程师,可以注重如何使用AI来防止不必要的工作。

Colton Voege

构建我的离线 AI 工作空间🔗

这个AI工作空间(运行AI生成的代码)的核心组件包括:

  • 本地LLM: 使用Ollama运行本地模型,保证数据隐私。
  • 容器化执行: 利用Apple的Container技术,为代码执行提供隔离的虚拟机环境,确保代码不会影响主机系统。
  • 浏览器自动化: 使用Playwright实现headless浏览器功能,用于在线搜索信息,例如查找工具的安装说明。

该系统通过映射宿主机上的~/.coderunner/assets目录到容器中的/app/uploads目录,实现文件共享,同时保持代码与宿主机的隔离。

Manish

AI公司正在使用隐的爬虫来规避禁止抓取的指令🔗

Cloudflare发现Perplexity(一个AI驱动的问答引擎)使用隐蔽的、未声明的爬虫来规避网站的禁止抓取指令(no-crawl directives)。

Perplexity 最初使用其声明的用户代理进行爬取,但当其IP被封锁后,它会伪装爬虫身份,试图绕过网站的限制。Cloudflare观察到Perplexity不断修改其用户代理和更改源ASN,以隐藏其爬取活动,并且忽略甚至不获取 robots.txt 文件。

Gabriel Corral, Vaibhav Singhal, Brian Mitchell, Reid Tatoris

Kitten TTS – 25MB大小CPU-Only,开源 TTS 模型🔗

Kitten TTS是一个开源的文本转语音(TTS)模型,大小小于25MB,专为轻量级部署和高质量语音合成而设计。该模型只有1500万个参数,CPU优化,无需GPU即可运行

KittenML

运维

摩尔定律的不可持续性🔗

建芯片工厂成本每五年翻倍、能建的公司数量减半,当前面临技术(如 “纳米” 指标失真、光刻胶性能受限、晶体管结构迭代逼近极限等)和经济(如光掩模价格飙升、小公司难以承担先进制程成本等)多重挑战

Charles Rosenbauer

算法的时间复杂度好,不代表实际运行速度就一定快,还得看在硬件上的表现🔗

简单的加减、移位在 CPU 上效率高,而除法这类复杂操作会拖后腿。最好的算法是既能减少工作量,又能利用硬件优势(比如高指令执行效率)的,就像施泰因算法这样平衡两者的方案。

减法版欧几里得算法:不断用大数减小数,直到两数相等。时间复杂度是 O (max (a,b)),看起来较差。但它主要用减法,而 CPU 处理减法很快,每秒能执行很多次。 取模版欧几里得算法:用除法(取模)代替减法,步骤少很多,时间复杂度是 O (log (max (a,b))),理论上更优。但除法在 CPU 里很慢, latency 高(需要几十到上百个时钟周期),而且一次只能处理一个,效率低。 施泰因二进制算法:利用二进制特性,用移位(代替除法)和减法,时间复杂度和取模版一样,但移位操作在硬件上很快,还能利用 CPU 的高效指令,平衡了步骤数和硬件效率。

Abhinav Upadhyay

发送一次性验证码比密码更糟糕🔗

文章主要批评了一种越来越普遍的登录方式,即网站/服务向用户邮箱或手机发送一次性六位数验证码进行登录。作者认为这种方式比密码更糟糕,因为它存在以下安全隐患:

  • 攻击者可以轻易地将用户的邮箱地址提供给合法服务,从而触发验证码发送流程。
  • 用户无法确定收到的验证码是否真的应该在当前的网站/服务中使用,这使得用户容易被欺骗。
  • 常用的防钓鱼手段,如密码管理器,在这种情况下也无法提供保护。

评论区解释的攻击模式:

1) 用户访问 BAD 网站并注册。

2) BAD 网站显示“我们已向您发送了一封电子邮件,请输入 6 位代码!电子邮件将来自 GOOD,因为他们是我们的登录合作伙伴。

3) BAD 的机器人使用用户的电子邮件在 GOOD 网站上启动“使用电子邮件一次性代码登录”流程。

4) GOOD 向用户的电子邮件地址发送一次性登录代码电子邮件。

5) 用户很可能会信任这封电子邮件,因为它来自 GOOD,如果它不是正确的登录,为什么 GOOD 会发送它?

6) 用户在BAD的网站上输入代码。

7) BAD使用代码以用户身份登录GOOD网站。BAD 现在可以完全访问用户的 GOOD 帐户。

Daniel Huang

其他

Telo MT1- 一款全电动迷你卡车🔗

车辆续航里程为 350 英里(约 563 公里),功率为 500 马力。

TELO Trucks

赫尔辛基全年实现零交通死亡🔗

芬兰赫尔辛基在2024年实现了全年零交通死亡的记录。该成就要归功于长期规划、基础设施改造和降低限速。超过一半的赫尔辛基街道限速为30公里/小时,学校附近的限速也降低至30公里/小时。此外,街道布局、交叉路口和人行横道经过重新设计以提高安全性,自行车和步行基础设施也得到了扩展。交通执法的改进,包括增加自动测速和有针对性的巡逻,也发挥了作用。 优秀的公共交通降低了汽车使用率,车辆安全标准的提高也有助于减少事故伤亡。虽然电动滑板车带来了一些挑战,但通过调整停车规则、限制速度和改进标志等措施,问题也得到了控制。赫尔辛基的交通安全战略将持续到2026年,包括保护行人、儿童和骑自行车者的特殊措施。城市还通过数字监控交通流量和事件报告,改进了数据收集。欧盟的目标是在2050年之前消除所有交通死亡事故,赫尔辛基将此目标作为决策的框架。

helsinkitimes

扫描二维码关注微信公众号