2024 05 01 HackerNews

2024-05-01 Hacker News Top Stories #

一句话摘要 #

  1. Why SQLite Uses Bytecode 这篇文章讨论了 SQLite 使用字节码的原因,解释了字节码在 SQLite 中的作用以及与其他数据库系统使用对象树的对比。
  2. US drug control agency will move to reclassify marijuana 美国药品执法局(DEA)计划将大麻重新分类为较不危险的药物,这可能是美国药物政策的重要转变,影响全国。
  3. Pyinfra: Automate Infrastructure Using Python Pyinfra 是一个使用 Python 编写的自动化基础架构工具,能够快速扩展并执行从单个服务器到数千个服务器的任务。
  4. 3D framework for the web, built on Svelte and Three.js Threlte 是一个基于 Svelte 和 Three.js 的 3D 框架,允许以声明性方式使用 Three.js 构建交互式 3D 网络应用。
  5. Apple must open iPadOS to sideloading within 6 months, EU says 欧盟要求苹果在六个月内开放 iPadOS 以支持侧载应用程序,符合数字市场法案(DMA)的要求。
  6. FCC fines largest wireless carriers for sharing location data 美国联邦通信委员会(FCC)对 AT&T、Sprint、T-Mobile 和 Verizon 等无线运营商因非法分享客户位置数据而罚款近 2 亿美元。
  7. Reddit is full of bots: thread reposted comment by comment, 10 months later 文章讨论了 Reddit 上机器人泛滥的问题,包括一个帖子在 10 个月后被完全复制,评论逐条被机器人复制的现象。
  8. Borgo is a statically typed language that compiles to Go Borgo 是一种静态类型语言,设计为编译成 Go 语言,提供比 Go 更强的表现力和比 Rust 更简单的语法。
  9. TypeSpec: A new language for API-centric development TypeSpec 是一种新型 API 定义语言,旨在提高 API 开发的抽象化、代码重用和快速开发,支持编译为 OpenAPI、JSON Schema 或 Protobuf 格式。
  10. FireChat was a tool for revolution, then disappeared FireChat,一个曾帮助人们绕过互联网监管的通信工具,突然消失,原因不明,可能与政治因素有关。

Why SQLite Uses Bytecode #

https://sqlite.org/draft/whybytecode.html

这篇文章讨论了为什么 SQLite 使用字节码。在 SQLite 中,准备好的语句是一个代表完成输入 SQL 所需步骤的对象。SQLite 将输入 SQL 转换为字节码,这是一种虚拟机语言,然后由虚拟机解释器运行。相比之下,MySQL 和 PostgreSQL 等系统使用对象树来表示 SQL 的处理过程。

文章列举了使用字节码和对象树表示准备好的语句的优缺点。SQLite 的字节码包含一些高级操作,如从数据库行中提取值、为数据库文件分配 B-Tree 空间等。与其他数据库引擎使用的字节码(如 Java 虚拟机或 WebAssembly)不同,SQLite 的字节码包含了特定于数据库引擎需求的高级操作。

文章还解释了抽象语法树(AST)的概念,以及字节码和对象树在编译 SQL 语句方面的优势。字节码更易于理解和调试,可以逐步运行 SQL 语句,占用更少的内存并且运行更快。然而,对象树的优势在于可以在运行时延迟查询计划决策,并且易于并行化数据流程序。

文章总结了 SQLite 开发人员认为字节码方法最适合 SQLite 的用例,但对象树方法在某些方面具有优势。


HN 评论 186 comments | 作者:todsacerdoti | 22 hours ago #

https://news.ycombinator.com/item?id=40206752

评论中的观点归纳如下:

    1. SQLite 的字节码执行效率高,大部分 CPU 时间用于 B-Tree 遍历、值比较和记录解码,字节码分发仅占总 CPU 时间的不到 3%。
    1. 编译成机器码可能提供不到 3% 的性能提升,但由于大小、复杂性和可移植性成本,SQLite 选择使用字节码。
    1. 编译成字节码可根据上下文优化代码,特别适用于动态语言。
    1. SQLite 的字节码执行效率高,编译成机器码可能提供不到 3% 的性能提升。
    1. SQLIte 的字节码是高级别的,与低级别字节码相比,字节码开销相对较小。
    1. 使用字节码可实现代码的特定上下文优化,提高性能。

US drug control agency will move to reclassify marijuana #

https://apnews.com/article/marijuana-biden-dea-criminal-justice-pot-f833a8dae6ceb31a8658a5d65832a3b8

根据 AP News 的报道,美国药品执法局(DEA)计划将大麻重新分类为一种较不危险的药物,这是美国几代人药物政策的历史性转变,可能会在全国范围内产生广泛的影响。

这一提议将承认大麻的医疗用途,并承认其相对于一些国家最危险的药物具有较小的滥用潜力。然而,这并不会完全合法化大麻供娱乐使用。DEA 的这一举措得到了五位知情人士的确认,他们匿名发表意见以讨论这一敏感的监管审查。一旦白宫管理和预算办公室批准,DEA 将就将大麻从目前与海洛因和 LSD 等药物同属 I 类药物的分类中移出,重新分类为与氯胺酮和一些合成类固醇同属 III 类药物进行公众评论。这一提议得到了联邦卫生与人类服务部的建议。在公众评论期和行政法官审查之后,该机构最终将发布最终规定。

司法部公共事务主任 Xochitl Hinojosa 在一份声明中表示:“今天,司法部长传达了一项将大麻从 I 类重新分类为 III 类的提议。”司法部是司法部的一个组成部分。司法部长梅里克·加兰的签名为这一举措提供了司法部的全力支持,并似乎表明了其对拜登政府的重要性。这一举措是在总统乔·拜登于 2022 年 10 月要求对联邦大麻法进行审查并开始赦免数千名因持有大麻而在联邦一级被定罪的美国人之后采取的。

他还呼吁州长和地方领导人采取类似措施消除大麻罪记录。这一选举年的公告可能有助于拜登,一位民主党人,提高支持率,特别是在年轻选民中。拜登和越来越多的两党议员一直在推动 DEA 做出这一决定,因为大麻在逐渐被非刑事化和接受,尤其是在年轻人中。去年秋天的盖洛普民意调查发现,70% 的成年人支持合法化,这是该民意调查机构记录的最高水平,是 2000 年的大约 30% 的两倍多。DEA 没有回应多次的置评请求。III 类药物仍然是受控制的物质,受到规则和法规的约束,未经许可进行交易的人仍可能面临联邦刑事起诉。

一些批评者认为 DEA 不应该改变大麻的方向,称重新分类是不必要的,并可能导致有害的副作用。DEA 的前副局长杰克·赖利表示,他对这一提议的改变有所担忧,因为他认为大麻仍然是一种可能导致使用其他药物的“入门药物”。“但就我们清楚地利用资源打击其他主要药物而言,这是一个积极的举措,”赖利指出,单单芬太尼每年在美国就造成超过 10 万人死亡。

另一方面,其他人认为大麻应该像酒精一样对待。纽约州参议院多数党领袖查克·舒默在一份声明中表示:“尽管这一重新分类的公告是历史性的一步,但我仍坚决致力于继续推动类似《更安全银行法案》和《大麻管理与机会法案》的立法工作,通过将大麻从《受控物质法案》中去除,从而使其在联邦层面解除管制。”联邦药物政策近年来落后于许多州,其中 38 个州已经合法化医用大麻,24 个州合法化了其娱乐用途。这有助于推动大麻产业的快速增长,估计价值近 300 亿美元。

放松联邦法规可能减轻企业的税收负担,根据行业团体的说法,税收负担可能达到 70% 或更高。这也可能使研究大麻变得更容易,因为在 I 类物质上进行授权的临床研究非常困难。重新分类对国家刑事司法系统的直接影响可能会相对较小,因为近年来联邦对简单持有的起诉相对较少。但放宽限制可能会在毒品战争及其他方面带来一系列意想不到的后果。

批评者指出,作为 III 类药物,大麻仍将受到 DEA 的监管。这意味着美国约有 1.5 万家大麻药店必须像普通药房一样向 DEA 注册,并履行严格的报告要求,这是他们不愿意做的,而 DEA 也没有能力处理。此外,还有美国的国际条约义务,其中最重要的是 1961 年《单一麻醉药品公约》,要求对大麻实施刑事化。

2016 年,在奥巴马政府时期,DEA 援引了美国的国际义务和华盛顿联邦上诉法院的裁决,拒绝了类似的重新分类大麻的请求。报道中还提到 Goodman 来自迈阿密,Mustian 来自新奥尔良,AP 作家 Colleen Long 也有贡献。


HN 评论 478 comments | 作者:JacobHenner | 7 hours ago #

https://news.ycombinator.com/item?id=40213591

根据您提供的链接,这篇帖子中的评论观点可以总结为:

大麻店铺将能够合法使用银行和支付处理器,从而减少现金交易的风险;

一些地区的大麻店铺已经采取了安全措施,如设置混凝土柱等;

一些店铺通过在收银台提供 ATM 服务来规避现金问题;

DEA 调度和金融系统的互动仍不明确;大型企业可能会进入市场,但也有人担心小型中型企业被吞并;

大麻合法化可能会带来更多研究机会等观点。


Pyinfra: Automate Infrastructure Using Python #

https://pyinfra.com/

网站 https://pyinfra.com 是一个自动化基础架构的工具,使用 Python 编写。它能够快速地自动化基础架构,并且可以从一个服务器扩展到数千个服务器。pyinfra 非常适合临时命令执行、服务部署、配置管理等任务。以下是你应该尝试 pyinfra 的原因:

  • 🚀 在数千个目标上执行速度超快,性能可预测。
  • 🚨 实时标准输入/输出/错误输出 (-vvv) 实现即时调试。
  • 🔄 幂等操作,可以在进行更改之前进行差异和干预运行。
  • 📦 可通过整个 Python 包生态系统进行扩展。
  • 💻 无需代理执行,适用于任何具有 shell 访问权限的内容。
  • 🔌 集成了 Docker、Terraform、Vagrant 等连接器。

快速入门:

使用 pip 安装 pyinfra:
pip install pyinfra
现在你可以通过 SSH 执行命令:
pyinfra my-server.net exec -- echo "hello world"
或者针对 Docker、本地机器和其他连接器:
pyinfra @docker/ubuntu exec -- echo "Hello world"
pyinfra @local exec -- echo "Hello world"

HN 评论 144 comments | 作者:InitEnabler | 9 hours ago #

https://news.ycombinator.com/item?id=40211655

评论中的观点归纳如下:

Pyinfra 相比 Ansible 更简单,不需要目标机器上的 Python 解释器;

Pyinfra 提供实时标准输入/输出/错误输出的即时调试;

Pyinfra 支持命令式模式,易于处理条件逻辑;

Ansible 在处理“if-this-then-that-else-that”时表现不佳;

Ansible 在声明性方面存在挑战,难以实现某些操作;

Pyinfra 性能优于 Ansible;

Pyinfra 的性能受到关注,特别是在无代理工具方面;

Pyinfra 提供了更直接的 Python 控制,避免了 Ansible 中的复杂性;

Pyinfra 支持声明和无状态操作;

Pyinfra 的性能起源于对无代理工具性能的关注;


3D framework for the web, built on Svelte and Three.js #

https://threlte.xyz/

网站 https://threlte.xyz/ 是关于快速构建交互式 3D 网络应用的文档。Threlte 是一个基于 Svelte 和 Three.js 的 3D 框架,让您以声明性方式使用 Three.js 的每个功能。

您可以使用 Threlte 的渲染组件来组合场景,并让 Threlte 处理其余部分。此外,Threlte 还提供了与 Rapier(一流的物理引擎)、Theatre.js(带有专业动画设计工具集的动画库)和 @threlte/gltf(将 GLTF 文件转换为 Threlte 组件的工具)的集成。@threlte/extras 还提供了一系列有用的组件和实用工具。Threlte 的核心是一个名为 \u003cT\u003e 的单个组件,但有时您可能需要更多。

您可以使用插件为 \u003cT\u003e 添加自定义属性和自定义事件。网站还展示了一些用户的评论,包括自由职业者、Theatre.js 的创作者、设计师和计算机科学与艺术学生等。您可以通过 Discord 加入 Threlte 社区。


HN 评论 60 comments | 作者:spxneo | 1 day ago #

https://news.ycombinator.com/item?id=40205509

    1. Threlte 的作者介绍了他们目前的工作,包括使 Threlte 适配 Svelte 5 和开发 Threlte Studio。
    1. 有人对 Threlte Studio 的发布日期进行了询问,作者表示将在 Threlte 8 发布后推出。
    1. 有人比较了 Threlte 和 React-Three-Fiber 在功能和性能方面的差异。
    1. 有人分享了使用 Threlte 制作的 3D 棋盘,并表示对 3D UI 的潜力感到兴奋。
    1. 有人提到 Threlte 在项目中的使用,称其为出色的开源项目。
    1. 有人对 Threlte 的优势进行了讨论,包括路由/状态管理和插件系统。
    1. 有人提到了 Threlte 的轻量级文档,并希望能看到更多关于首页动画和互动性的内容。
    1. 有人关注 Threlte 的可访问性,并提到 WebGL 应用对屏幕阅读器的可见性问题。
    1. 有人提到了 A-Frame 作为另一种选择,适用于喜欢更原始方法的人。
    1. 有人对 Threlte 的性能和可用性提出了一些担忧,指出在旧设备上可能会出现问题。

Apple must open iPadOS to sideloading within 6 months, EU says #

https://arstechnica.com/apple/2024/04/apple-must-open-ipados-to-sideloading-within-6-months-eu-says/

根据 Ars Technica 的报道,欧盟要求苹果在 6 个月内将 iPadOS 开放给侧载应用程序。自 2024 年 3 月起,欧盟的数字市场法案(DMA)要求 iPhone 遵守一系列规定,包括支持替代应用商店、应用侧载和第三方浏览器引擎。如今,欧盟监管机构宣布将苹果的 iPadOS 也列为“守门人”,意味着 iPad 很快将受到与 iPhone 相同的规定约束。

欧盟从 2023 年 9 月开始调查 iPadOS 是否符合“守门人”标准,当天决定 iOS、Safari 浏览器和 App Store 都是“守门人”。欧盟在博客中表示:“苹果现在有六个月的时间确保 iPadOS 完全符合 DMA 的义务。”

尽管苹果在 2019 年将平板电脑操作系统从 iPhone 分离出来,开始将其称为“iPadOS”而不是 iOS,但从实际角度来看,这两个操作系统在内部几乎没有区别。iOS 和 iPadOS 共享相同的软件版本号,它们同步更新(极少例外),最重要的是,为了符合 DMA 的要求,它们都从同一个受限制的 App Store 获取软件。

通过替代应用商店或第三方网站分发的应用程序将不得不遵守苹果的许多规定,通常仍然受限于使用苹果的公共 API。然而,在 iPad 的大屏幕上使用替代应用商店和浏览器引擎(以及桌面级 M 系列芯片)可以使平板电脑更好地替代笔记本电脑,使其能够执行更多类似 Mac 用户在其系统上所能做的事情。

尽管苹果已经对 iOS 进行了多项更改以符合 DMA,欧盟监管机构已经在调查苹果(以及谷歌和 Meta)的“不合规”行为。根据调查结果,欧盟可能要求苹果对允许第三方应用程序安装到 iOS 的方式以及允许第三方开发人员宣传非苹果应用商店和支付选项的方式进行更多改变。苹果为了符合调查结果可能对 iOS 进行的任何更改很可能也会传导到 iPad 上。

当然,这并不直接影响美国的 iPhone 或 iPad 用户,他们的设备仍然受限于苹果的应用商店和 WebKit 浏览引擎。尽管如此,我们已经看到一些最近的 App Store 规则变更,可以说是源自苹果试图遵守 DMA 的努力,其中最引人注目的是允许(一些而非全部)复古游戏主机模拟器首次进入 App Store 的政策变更。


HN 评论 332 comments | 作者:rezonant | 20 hours ago #

https://news.ycombinator.com/item?id=40207322

评论中的观点归纳如下:

    1. 有人认为 iPad App Store 限制了硬件和用例,希望能够在 iPad 上运行 Linux VMs,增加灵活性;
    1. 有人转向 Surface Go 3 运行 Fedora,认为 iPad 过大滚动不便,软件限制工作;
    1. 有人认为 Apple 故意限制 iPad 用途,避免与 Mac 竞争;
    1. 有人认为 Apple 更愿意同时销售 MacBook 和 iPad,而不是合并设备;
    1. 有人讨论 Apple Pencil 在 iPhone 上不可用的原因;
    1. 有人认为 iPad 和 MacBook 分开销售更有利可图;
    1. 有人讨论 iPad 上运行 Linux VMs 的可能性和影响;
    1. 有人讨论 iPad 和 MacBook 合并的商业考量;
    1. 有人讨论 iPhone 和 Apple Watch 的关联;
    1. 有人讨论 iPad 上运行 Linux 的可能性和优势。

FCC fines largest wireless carriers for sharing location data #

https://docs.fcc.gov/public/attachments/DOC-402213A1.txt

这份文件是关于美国联邦通信委员会(FCC)对 AT&T、Sprint、T-Mobile 和 Verizon 等四家最大的无线运营商的罚款情况。这些运营商被罚款近 2 亿美元,因为它们未经客户同意就非法分享客户的位置数据,并且没有采取合理措施保护这些信息免受未经授权的披露。其中,Sprint 和 T-Mobile 因合并而面临的罚款分别超过 1200 万美元和 8000 万美元,AT&T 被罚款超过 5700 万美元,Verizon 被罚款近 4700 万美元。

FCC 主席 Jessica Rosenworcel 表示,通信提供商拥有我们的一些最敏感信息,但这些运营商未能保护这些信息。这些信息包括客户的实时位置信息,揭示了他们去过哪里以及是谁。FCC 对这些运营商进行了调查,发现它们将客户的位置信息出售给“聚合商”,然后由这些“聚合商”将信息转售给第三方基于位置的服务提供商。而这些运营商试图将获得客户同意的责任转嫁给位置信息的下游接收方,导致许多情况下未获得有效的客户同意。而当这些运营商意识到他们的保护措施无效时,他们继续出售位置信息的访问权,而没有采取合理措施保护信息免受未经授权的访问。

根据通信法第 222 条,运营商有责任采取合理措施保护客户信息,包括位置信息。运营商还必须保持此类客户信息的机密性,并在使用、披露或允许访问此类信息之前获得客户的积极、明确同意。这些义务同样适用于运营商与第三方分享客户信息的情况。

这些罚款是基于 2018 年美国参议员 Ron Wyden 首次提出的使用案例展开的调查,调查发现这些运营商未经客户同意或其他法律授权向密苏里郡警长披露客户的位置信息。尽管意识到这种未经授权的访问,但这四家运营商仍继续运营他们的程序,而没有采取合理措施确保那些访问他们客户位置信息的众多基于位置的服务提供商实际上获得了客户的同意。

这份文件还提到了 FCC 对这些运营商的罚款是在 2020 年 2 月发出的通知后做出的最终裁决。AT&T 和 Sprint 的罚款金额自通知阶段以来未发生变化。而在进一步审查各方对通知的提交后,T-Mobile 和 Verizon 的罚款金额有所减少。法律不允许在发出通知后对特定违规行为的罚款金额进行递增。

此外,FCC 主席于 2023 年成立了隐私和数据保护工作组,该工作组专注于协调机构在隐私和数据保护领域的规则制定、执法和公众意识需求,包括涉及电信提供商的数据泄露和涉及为受监管的通信提供商提供服务的第三方供应商的漏洞。


HN 评论 181 comments | 作者:coloneltcb | 1 day ago #

https://news.ycombinator.com/item?id=40202695

评论中的观点归纳如下:

    1. 透明度核心问题,应该公开公司出售/提供个人信息的对象和销售限制;
    1. 一切都应该是自愿的,公司应该主动告知用户数据共享的益处并征得同意;
    1. 欧盟在真实追踪同意方面做得不错,但执行不力;
    1. 对广告同意或购买订阅的“同意或购买”模式存在问题,可能导致进一步侵犯隐私;
    1. 广告是可以接受的,但追踪、整合和出售数据则不可接受;
    1. 欧盟应要求选择点必须对用户自动可导航;
    1. 对广告同意或购买订阅的模式可能导致公司不愿提供和支持订阅选项;
    1. 应禁止收集位置数据,除非明确需要并由收集者自己使用;
    1. 对公司存储此类数据应要求购买保险,以赔偿受到数据收集(和泄露)损害的人;
    1. 罚款应该足够大,以便公司从一开始就遵守法律。

Reddit is full of bots: thread reposted comment by comment, 10 months later #

https://lemmy.blahaj.zone/post/11615413

这篇文章讨论了 Reddit 上存在大量机器人的问题,指出了一个帖子在 10 个月后被完全复制,评论逐条复制的情况。

讨论中提到了在 Reddit 上出现的重新发布问题,以及使用机器人在重新发布上复制评论的新低。还有人提到了对 Reddit 的不满,认为这是他们不再阅读 Reddit 的部分原因。

讨论中还涉及了关于机器人在社交媒体上的问题,以及如何应对这些问题的建议,包括建立信任链功能来过滤内容。文章还提到了 Lemmy 社区对机器人发布的反对态度。


HN 评论 251 comments | 作者:SushiHippie | 10 hours ago #

https://news.ycombinator.com/item?id=40211010

这篇帖子中的评论观点主要集中在 Reddit 存在大量机器人,使用新的 LLM 产品模仿真实用户在 Reddit 上进行讨论并在评论中推广产品。

评论者担心当 Reddit 不再有用且包含与 Google 搜索结果相同的 AI 生成内容时,信息资源的单点故障会暴露出来。

有人认为 Wikipedia 是唯一仍然未受影响的网络信息资源,但在政治敏感话题上可能存在审查。

评论还提到了企业公关和编辑人员的活跃程度,以及维基百科编辑者的统计数据。

此外,还有关于政治和历史事件的偏见,以及关于身份验证和隐私保护的讨论。

评论中还提到了使用 AI 生成内容和机器人在 Reddit 上推广产品的现象,以及如何寻找在 Reddit 上仍然有价值的小众子论坛。


Borgo is a statically typed language that compiles to Go #

https://github.com/borgo-lang/borgo

这个 GitHub 地址是关于 Borgo 编程语言的内容。Borgo 是一种静态类型语言,可以编译成 Go 语言。Borgo 语法类似于 Rust,但有可选的分号。

该语言旨在提供比 Go 更具表现力但比 Rust 更简单的应用程序编写语言。Borgo 支持 Go 现有的包,并提供了许多特性,如代数数据类型和模式匹配、Option 类型代替 nil、Result 类型代替多返回值、使用?操作符进行错误处理等。

此外,还提供了一个猜数字游戏的示例,展示了如何在 Borgo 中实现类似 Rust 书中的小游戏。你可以通过在线演示了解更多语言特性,也可以查看测试文件以了解 Borgo 代码的编写方式。

Borgo 是用 Rust 编写的,因此需要使用 cargo 来编译 Borgo 代码。通过运行 cargo 命令,可以将.brg 文件编译成.go 文件,然后像运行普通 Go 代码一样运行生成的文件。


HN 评论 203 comments | 作者:manx | 9 hours ago #

https://news.ycombinator.com/item?id=40211891

评论中的观点归纳如下:

    1. 有人希望 Go 语言能够加入枚举类型和 try/catch 块;
    1. 有人认为 Go 不需要 try/catch,而是采用 panic/recover/error 处理错误更稳定可读性更高;
    1. 有人认为不需要枚举类型和接口,Go 语言的简洁性和稳定性更重要;
    1. 有人认为枚举类型在 API 和数据库设计中很有用;
    1. 有人提到 Haxe 是一个很好的跨语言编译器,支持多种目标语言。

TypeSpec: A new language for API-centric development #

https://typespec.io/blog/2024-04-25-introducing

这篇文章介绍了一种名为 TypeSpec 的新型 API 定义语言,旨在满足 API 开发人员、架构师和管理人员在不断复杂和关键的 API 交付环境中不断演变的需求。TypeSpec 不仅仅是一种新语言,更是一个平台,可以实现抽象化,鼓励代码重用,并利用现代工具进行快速开发。它可以使用简洁、熟悉的语法描述 API,并提供优秀的编辑工具支持,如 Visual Studio 和 VS Code。TypeSpec 可以将常见数据类型、API 模式和 API 指南封装为高级、可重用的组件,可在团队或生态系统中共享。它可以编译为符合标准的 OpenAPI、JSON Schema 或 Protobuf 格式。

TypeSpec 具有以下关键特点:

  • 互操作性:TypeSpec 不仅仅是另一种 API 描述语言;它是一种高级定义语言,能够定义您的 API,然后输出许多不同的协议、客户端、服务器、文档等,甚至同时进行。这使其成为一种多功能工具,可以适应各种开发场景。
  • 生产力:TypeSpec 提供卓越的开发人员体验,使定义数据和 API 的过程既愉快又高效。该语言简洁,能够用最少的输入定义复杂的数据和 API 结构。
  • API 模式:TypeSpec 通过将常见数据类型、API 模式和 API 指南封装为高级、可重用的组件来提高 API 质量。
  • 熟悉性:受到 TypeScript 和 C#的启发,TypeSpec 易于学习,对许多开发人员来说感觉熟悉,减少了学习曲线。
  • 可扩展性:TypeSpec 可以通过自定义装饰器词汇和类型模板进行扩展,允许您在业务或应用逻辑领域中建模 API。它的可扩展性使其能够描述许多不同的协议、序列化格式或领域特定的元数据,作为与 API 相关的任何事物的真实来源。
  • 生态系统:TypeSpec 允许将常见类型、语言扩展、检查器和发射器打包成包,可以在您的组织内或跨生态系统分发到 NPM。
  • 社区和协作:TypeSpec 是开源的,我们邀请来自各个背景的开发人员加入公共测试版,亲身体验 TypeSpec 的强大功能。您的反馈对塑造 TypeSpec 的未来至关重要,我们鼓励您在我们的社区论坛上分享您的想法、建议和错误报告。

总的来说,TypeSpec 是一种强大的工具,可以彻底改变您处理 API 开发的方式。通过促进“API 优先”方法,它允许您提前定义 API,从而实现更高效的开发和更高质量的最终产品。它支持各种协议,结合其可扩展性和强大的生态系统,使其成为一种适应各种开发场景的多功能工具。建议您尝试 TypeSpec,亲身体验其好处。


HN 评论 107 comments | 作者:ubolonton_ | 23 hours ago #

https://news.ycombinator.com/item?id=40206124

    1. 有人认为 TypeScript 的类型系统非常先进,希望 API 语言简单直接。
    1. 一些人认为 OpenAPI 的 ‘type system’ 也很先进,支持显式区分的联合等,但不适用于所有语言。
    1. 有人提到了 JSON Schema 和 Java 在表示 JSON 结构方面的能力。
    1. 有人认为 TypeScript 太强大,无法用 OpenAPI 规范所有 TypeScript 构造。
    1. 有人对 TypeSpec 提供的自动生成功能表示赞赏,认为比手动编写 OpenAPI 更方便。
    1. 有人讨论了 TypeSpec 与 GraphQL、Smithy 等工具的比较。
    1. 有人质疑新语言的必要性,认为使用已有编程语言如 Go 更好。
    1. 有人提到了异步和事件驱动 API 在 TypeSpec 中的应用。
    1. 有人讨论了 API 规范的编写方式,以及规范与服务器实现之间的关系。
    1. 有人谈到了 API 规范的生成和服务器实现的关系,以及如何自动生成服务器存根处理程序。
    1. 有人提到了 TypeSpec 适用于多语言的优势,以及生成符合各种语言习惯的代码的复杂性较低。
    1. 有人对 TypeSpec 的用例进行了探讨,强调了 API 规范在多语言环境下的重要性。

FireChat was a tool for revolution, then disappeared #

https://www.fromjason.xyz/p/notebook/firechat-was-a-tool-for-revolution-then-it-disappeared/

这篇文章讲述了 FireChat 曾经是一种革命工具,然后突然消失的故事。

FireChat 曾帮助人们绕过互联网的监管者,如专制政府和控制我们行动的公司,通过专有数据中心和深海电缆网络。FireChat 之所以成为一种有效的革命工具,是因为它能够绕过中心化且经常垄断的互联网服务提供商。FireChat 于 2011 年由 Open Garden 推出,允许人们在没有互联网连接的情况下进行通信。该移动应用巧妙地利用了我们手机已经发出的蓝牙和 WiFi 信号,创建了被称为网状网络的点对点连接。

然而,2020 年 2 月的一天,随着 COVID-19 席卷全球,FireChat 的访问完全被切断,没有任何解释。四个月后,明尼苏达州的一名警察谋杀了一名黑人男子,导致美国各地爆发抗议活动。这些抗议引发了对这个国家不公正的意识。但在为我们的权利而战的人们却无法使用这个从未存在过的人民互联网。

至今,FireChat 已经消失,而没有任何收购公告或创始人发表的感人“这是一段不可思议的旅程”的公开信。FireChat 以及后来的母公司 Open Garden 在没有任何承认的情况下关闭了业务。FireChat 之所以消失,是因为 FireChat 对其绕过的系统构成了威胁。


HN 评论 120 comments | 作者:evah | 1 day ago #

https://news.ycombinator.com/item?id=40204516

评论中的观点归纳如下:

    1. FireChat 被关闭原因未知,可能与 COVID-19 有关;
    1. 有人质疑 NewNode 团队未能直接回答关闭原因;
    1. 一些用户反馈 NewNode 注册流程存在问题;
    1. 有人认为 FireChat 关闭可能与政治因素有关;
    1. 有人提出使用 Signal 等替代方案;
    1. 有人认为 FireChat 并非安全通讯工具;
    1. 有人建议在革命中不要携带电子设备,只与信任的人交流;
    1. 有人认为技术无法解决所有问题。