2025-12-14

14 篇热帖

VPN location claims don't match real traffic exits

VPN 地理位置欺骗调查:IPinfo 发现 17 家 VPN 提供商声称的国家与实际出口国家不符

IPinfo 对 20 家流行的 VPN 服务进行了大规模分析,发现其中 17 家 VPN 的流量出口国家与其宣称的国家不符。 尽管许多 VPN 提供商声称拥有 100 多个国家/地区的服务器,但实际上许多流量都指向美国或欧洲少数几个数据中心。

关键发现:

  • 17/20 的 VPN 提供商 流量出口国家与声称的国家不符。
  • 38 个国家/地区 在数据集中被标记为“虚拟专用”,即至少一家 VPN 提供商声称存在,但在测试中从未观察到实际流量出口国家。
  • 只有 3 家 VPN 提供商 (Mullvad, IVPN, Windscribe) 能够完全验证其所有宣称位置的准确性。
  • 测试了大约 15 万个 VPN 出口 IP 地址,IPinfo 的互联网测量平台 ProbeNet 检测到大约 8000 个案例,其中广泛使用的 IP 数据集将服务器置于错误的国家/地区,有时相差数千公里。

调查结果:

调查分析了 VPN 和 IP 数据提供商的数据,并深入研究了两个特别有趣的案例 (巴哈马和索马里)。 研究还探讨了基于测量 IP 数据的重要性,以及调查的具体方法。

VPN 提供商的匹配情况:

以下表格显示了每个 VPN 提供商声称的国家/地区数量与其测量的实际 VPN 流量国家/地区的重叠程度。 较低的百分比表明 VPN 提供商的声称列表与实际数据最匹配。

提供商 声称的国家/地区 虚拟或无法测量的百分比
IPVanish 108 61%
CyberGhost 100 57%
ExpressVPN 105 57%
NordVPN 126 53%
PIA (Private Internet Access) 91 52%
ProtonVPN 110 51%
FastVPN 112 49%
X-VPN 89 43%
Surfshark 100 41%
BelkaVPN 63 41%
ZoogVPN 76 34%
VyprVPN 63 27%
FastestVPN 47 26%
TrustZone 39 18%
PrivateVPN 62 13%
TunnelBear 47 9%
VeePN 84 6%
IVPN 41 0%
Mullvad 50 0%
Windscribe 70 0%

虚拟专用位置的含义:

VPN 应用程序显示“国家/地区 X”(例如巴哈马),但这并不总是意味着流量会经过该国家/地区。 许多情况下,流量实际上会流向完全不同的地方,例如迈阿密或伦敦,但会显示为流量位于您选择的国家/地区。 这种设置被称为虚拟位置。

案例研究:

  • 巴哈马: 五家 VPN 提供商 (NordVPN, ExpressVPN, PIA, FastVPN, IPVanish) 声称在巴哈马有服务器,但所有流量都测量到美国。
  • 索马里: NordVPN 和 ProtonVPN 声称在索马里有服务器 (明确标记为摩加迪沙),但流量实际出口到法国和英国。

IP 数据提供商的差异:

传统 IP 数据提供商通常依赖于 VPN 提供商的自我声明数据,因此如果 VPN 宣称某个 IP 位于特定国家/地区,这些提供商也会将其标记为该国家/地区。 IPinfo 则采用基于测量的方案,通过 ProbeNet 从全球 1200 多个地点进行实时 RTT 测试

I tried Gleam for Advent of Code

2025 年 Advent of Code 使用 Gleam 语言的总结

作者连续七年完成了 Advent of Code 的所有星级挑战,并表示这已经成为他每年都会重复的技术传统。今年,他选择了 Gleam 语言进行挑战。

挑战概述:

  • Advent of Code 今年改为 12 天,共 24 个部分,而不是往常的 25 天和 50 个部分。
  • 虽然天数减少,但难度不减,一些简单的题目比往年更具挑战性,而难题则依然充满乐趣。
  • 这改变了挑战的节奏,作者感觉需要更早地构建工具箱。

选择 Gleam 的原因:

  • Gleam 语法简洁,编译器提供帮助,错误信息清晰易懂。
  • 该语言鼓励一种适合 Advent of Code 的编程风格:解析文本、转换数据、折叠、重复。
  • 作者喜欢管道操作,Gleam 提供了丰富的管道机制。
  • 良好的编辑器体验,LSP 工作表现出色。
  • 作者偏爱函数式编程 (FP),它能帮助开发者描述解决方案,而不是编写指令。

Gleam 语言的优势:

  • echo 函数: 方便快速检查中间值,无需格式化字符串。
  • Options 类型: 在处理网格问题时,能够安全地检查邻居节点,避免越界错误。
  • 强大的列表工具箱: Gleam 提供了很多常用的列表函数,减少了编写自定义代码的需求。
    • list.transpose 在处理矩阵转置问题时非常有用。
    • list.combination_pairs 可以方便地生成所有可能的配对组合。
  • fold_until 函数: 允许在满足条件时提前退出循环,提高了代码的可读性和效率。

Gleam 语言的不足:

  • 文件 IO 不在标准库中: 需要使用第三方库 simplifile
  • 正则表达式也是依赖项: 需要引入 gleam_regexp
  • 列表模式匹配的限制: 无法进行灵活的列表分割。
  • 显式的比较操作: 比较结果是 order 类型,在简单的比较场景下略显冗余。

其他技术细节:

  • 大整数 (bigi): 在需要处理大整数时使用,特别是在 JavaScript 目标环境下。
  • XOR 运算: 在第 10 天的挑战中,利用 XOR 运算作为位掩码,巧妙地解决了问题。
  • 记忆化 (Memoization): 在第 11 天的挑战中,使用复杂的记忆化键,将状态信息包含在键中,提高了效率。
  • 调用外部工具 (glpsol): 在第 10 天的挑战中,由于缺乏 Z3 绑定,作者不得不调用外部线性规划求解器 glpsol

总结:

作者对使用 Gleam 语言进行 Advent of Code 感到满意,认为它具有清晰的语法、强大的列表工具和函数式编程的优势。虽然存在一些不足,但 Gleam 仍然是一个值得尝试的语言,作者计划将其用于实际项目,例如构建 Web 服务器。

Why Twilio Segment moved from microservices back to a monolith

告别微服务:从数百个问题儿童到一颗超级巨星 (Goodbye Microservices: From 100s of problem children to 1 superstar)

本文讲述了 Twilio Segment 公司如何从最初采用微服务架构,最终转向单体架构的转变过程。

微服务架构的初衷与问题:

Twilio Segment 最初采用微服务架构,旨在提高模块化程度、降低测试负担、改善功能组合、隔离环境和赋予开发团队自主权。 其核心产品包含上百种服务器端目的地(Server-side destinations),用于将事件数据转发给不同的 API (例如 Google Analytics, Optimizely)。 最初架构简单,通过 API 接收事件,并将事件放入分布式消息队列。 事件是包含用户和操作信息的 JSON 对象。

然而,随着业务增长,微服务架构逐渐暴露出问题:

  • 复杂度爆炸: 微服务数量增多,系统复杂度急剧增加,团队难以应对。
  • 效率下降: 开发效率降低,缺陷率上升,工程师花费大量时间维护系统。
  • 队头阻塞(Head-of-line blocking): 单个队列包含所有目的地的数据,如果某个目的地出现问题,会阻塞整个队列,影响所有目的地的数据传输。
  • 测试和部署困难: 微服务数量过多,测试和部署变得复杂且耗时。
  • 共享库版本不一致: 为了方便开发,创建了共享库,但由于部署和维护不便,导致不同微服务的共享库版本不一致。

转向单体架构的决策:

为了解决上述问题,Twilio Segment 决定回归单体架构。

单体架构的优势:

  • 简化运维: 将 140+ 个微服务合并为一个服务,减少了运维负担。
  • 提高开发效率: 开发人员无需部署多个服务,一个服务即可完成所有更改,大大提升了开发效率。
  • 优化资源利用: 单体架构允许更好地混合 CPU 和内存密集型目的地,优化资源利用率。
  • 统一代码库: 将所有目的地代码合并到一个代码库中,方便统一管理和维护。

关键技术与实践:

  • Centrifuge: 取代了每个目的地单独的队列,负责将事件发送到单体服务。
  • Traffic Recorder: 基于 yakbak,用于录制和回放目的地测试流量,从而提高测试的稳定性和速度。
  • 共享库: 创建共享库以实现通用功能,例如 HTTP 请求处理,提高代码复用率。

单体架构的权衡:

  • 故障隔离困难: 单个错误可能导致整个服务崩溃。
  • 内存缓存效率降低: 缓存数据分散在多个进程中,命中率降低。
  • 依赖版本更新可能影响多个目的地: 更新依赖版本可能需要同时更新多个目的地代码。

结论:

尽管单体架构存在一些权衡,但 Twilio Segment 认为,在特定情况下,回归单体架构可以显著提高开发效率和运维效率。关键在于拥有完善的测试体系,并对架构决策的权衡进行充分评估。

Analysis finds anytime electricity from solar available as battery costs plummet

电池储能成本下降推动太阳能成为全球可调度电力来源

关键要点:

Ember智库的一份报告指出,电池储能技术的成本大幅下降,加上性能指标的提升,使得太阳能电力具备可调度性,并以具有竞争力的价格在全球范围内提供随时可用的电力。

主要发现:

  • 成本显著下降: 2024年,核心电池储能系统 (BESS) 设备的成本与2023年相比下降了40%,达到每千瓦时 (kWh) 165美元的创纪录低点。过去十年,安装成本平均每年下降20%,而部署量则每年增长约80%。
  • 全球项目资本支出: 在美国和中国以外的全球市场,大型、长时程的公用事业级电池储能系统项目的总资本支出 (Capex) 目前约为每千瓦时125美元。 其中,来自中国的核心设备(包括电池外壳、功率转换系统 (PCS) 和能源管理系统 (EMS))成本为每千瓦时75美元,本地安装、工程和并网活动成本为每千瓦时50美元。
  • 电平化成本 (LCOS): 这些资本成本转化为65美元/兆瓦时的电平化成本 (LCOS),反映了将电力转移到不同时间段的成本。
  • 提升性能: 电池寿命延长、效率提高(例如LFP技术具有20年设计寿命、90%效率)以及项目融资成本降低(由于收益模式风险降低)也降低了LCOS,即使在未考虑设备价格下降的情况下,也能降低35%。
  • 可调度太阳能的经济可行性: 将太阳能日产量中50%的电力储存起来以满足夜间需求,会增加发电成本33美元/兆瓦时。 考虑到2024年全球平均太阳能发电价格为43美元/兆瓦时,可调度太阳能的总成本为76美元/兆瓦时。
  • 美国市场: 由于关税和《通货膨胀削减法案》(IRA) 对国内内容的要求,美国市场的核心设备成本可能高达每千瓦时100美元或更高。 四小时项目的总设备成本更便宜10%到15%,但美国仍然是仅次于中国的全球第二大BESS市场,并在2025年第一季度实现了创纪录的增长。
  • 未来展望: 太阳能已经超越了白天发电,通过与储能结合,可以成为随时可用的电力,并有望满足全球未来能源需求的很大一部分。

总结:

电池储能成本的持续下降,使得太阳能电力具备了经济上的可行性,并可以作为一种可靠、可调度、随时可用的电力来源,对全球能源转型具有重要意义。

Some surprising things about DuckDuckGo

DuckDuckGo:一些令人惊讶的事实 (DuckDuckGo: 一些令人惊讶的事实)

以下是关于DuckDuckGo搜索引擎及其相关服务的总结:

核心业务与发展:

  • 独立搜索引擎: DuckDuckGo自2008年成立以来,一直是独立的公司,拥有自主的搜索引擎索引。他们持续开发知识图谱、本地搜索和即时答案索引,并近年来大力发展更广泛的网页索引,以支持其“Search Assist”和“Duck.ai”功能。
  • 浏览器: DuckDuckGo拥有自己的浏览器,适用于iOS、Android、Mac和Windows平台。这些浏览器内置了隐私保护功能,并提供可自定义的“火”按钮,用于快速清除数据。其iOS浏览器在美国市场份额已排名第三,Android市场份额排名第四。
  • 隐私保护: DuckDuckGo的核心理念是保护用户隐私,不追踪用户搜索行为。他们还积极倡导隐私保护标准,例如“Global Privacy Control”和“搜索偏好菜单”。
  • 盈利模式: DuckDuckGo已经盈利约15年,并开始投资相关的初创公司。

独特特性:

  • 彩蛋Logo: DuckDuckGo拥有594个(截至本文发布)以吉祥物Dax Brown为主题的彩蛋Logo,当用户进行特定搜索时会随机出现。
  • AI策略: DuckDuckGo的AI策略强调隐私、实用性和可选性,用户可以选择使用或关闭AI搜索答案和聊天功能。
  • 分布式团队: DuckDuckGo的团队完全分布在全球30多个国家,共有300多名员工,其中不到一半在美国。

其他信息:

  • 谣言澄清: DuckDuckGo并非Google所有,创始人曾作为证人出席过美国反垄断诉讼。最初的域名duck.com曾被Google拥有,后于2018年被DuckDuckGo收购,目前用于其电子邮件保护服务。
  • 审查制度: DuckDuckGo不审查搜索结果,因此在中国和一些其他国家/地区被屏蔽。
  • 用户群体: 约有13%的美国成年人自述是DuckDuckGo的“现有用户”。
  • DuckDuckGo Pro订阅: 提供VPN、更高级的AI模型以及在美国地区的个人信息删除和身份盗窃恢复服务。
  • 慈善捐赠: DuckDuckGo 累计捐款超过800万美元,用于支持隐私保护组织。
  • 用户请求: DuckDuckGo欢迎用户提出彩蛋Logo创意和文章主题建议。

总而言之,DuckDuckGo是一个致力于隐私保护的独立搜索引擎,拥有独特的业务模式和文化,并积极推动网络隐私保护的进步。

Recovering Anthony Bourdain's (really) lost Li.st's

总结:从公共网络档案中恢复安东尼·伯登的失落列表 (Summary: Recovering Lost Anthony Bourdain Lists from Public Web Archives)

本文描述了作者利用公共网络档案(Common Crawl)尝试恢复安东尼·伯登的失落列表(li.st)的过程,这些列表最初由 Greg TechnoLogy 整理并发布。作者基于之前在安全和网络爬取领域的经验,使用 Claude 和 Python 编写脚本 commoncrawl_search.py,从 Common Crawl 中搜索并提取相关内容。

主要内容:

  • 项目背景: 受到 Greg TechnoLogy 发布安东尼·伯登失落 li.st 列表的启发,作者尝试从公共网络档案中恢复这些内容。Mirandom 也在进行类似尝试,并已发布其发现 (https://mirandrom.github.io/bourdain-lists/)。
  • 技术方法: 作者使用 Common Crawl 的公共 S3 存储桶,并编写 Python 脚本 commoncrawl_search.py 来搜索相关页面。该脚本依赖于 Common Crawl 的文档和索引。
  • 恢复内容: 作者成功从 Common Crawl 中恢复了多篇列表,这些列表包含伯登的个人偏好和观察,涵盖了以下主题:
    • 生活中的不再想做的事情 (Things I No Longer Have Time or Patience For)
    • 令人愉悦的景色 (Nice Views)
    • 如果被困在荒岛上会选择的三部电视剧 (If I Were Trapped on a Desert Island With Only Three Tv Series)
    • 未曾拍摄的电影 (The Film Nobody Ever Made)
    • 渴望找回的物品 (I Want Them Back)
    • 心仪的物品 (Objects of Desire)
    • 喜欢的间谍小说 (Four Spy Novels by Real Spies and One Not by a Spy)
    • 心爱的酒店 (Hotel Slut (That’s Me))
    • 最爱的食物 (Steaming Hot Porn)
    • 手机照片 (5 Photos on My Phone, Chosen at Random)
    • 想成为的人 (People I’d Like to Be for a Day)
    • 想吃的食物 (I’m Hungry and Would Be Very Happy to Eat Any of This Right Now)
    • 海滩观察 (Observations From a Beach)
    • 小确幸 (Guilty Pleasures)
    • 纽约三明治 (Some New York Sandwiches)
    • 纽约酒吧 (Great Dead Bars of New York)
  • 限制与未来: 图像文件未能恢复,作者计划继续尝试。作者将代码发布到 GitHub 仓库 (https://github.com/thecsw/bourdain),希望能够吸引更多人参与到恢复和整理伯登作品的行动中来,并建立一个公共档案。

总而言之,本文描述了一个利用公共网络档案技术,尝试恢复安东尼·伯登失落作品的实践案例,并展现了作者对伯登作品的热情和对技术应用的探索。

Are we stuck with the same Desktop UX forever? [video]

YouTube 简介 (YouTube Introduction)

YouTube 是一个在线视频分享平台,旨在让用户享受喜欢的视频和音乐,上传原创内容,并与朋友、家人和全世界分享。

核心功能:

  • 视频观看: 用户可以在 YouTube 上观看各种类型的视频和音乐。
  • 内容上传: 用户可以上传自己的原创视频内容。
  • 内容分享: 用户可以将视频分享给他们的社交圈。

其他信息:

  • 网站链接: 提供了关于 YouTube 的详细信息、新闻稿、版权信息、联系方式、创作者支持、广告服务、开发者资源、使用条款、隐私政策、安全政策以及关于 YouTube 如何运作的说明。
  • 新功能测试: 用户可以参与测试 YouTube 的新功能。
  • NFL Sunday Ticket: YouTube 提供 NFL Sunday Ticket 服务。
  • 版权信息: © 2025 Google LLC。
An off-grid, flat-packable washing machine

离网平装式洗衣机:为贫困社区带来洗衣革命

摘要:

前戴森工程师Navjot Sawhney 发起的英国社会企业 The Washing Machine Project (TWMP) 正在为全球贫困社区带来洗衣革命。该项目发明了名为 Divya 的离网、可平装的洗衣机,旨在解决全球约五亿人因手洗衣物而面临的难题,特别是对女性和年轻女孩造成的时间和体力负担。

Divya 洗衣机及其工作原理:

Divya 洗衣机由内外两层滚筒组成,采用手动曲柄驱动。一个完整的洗涤周期需要大约 30 分钟,可以清洗 5 公斤的衣物。具体操作如下:

  1. 将衣物、洗衣液和水放入滚筒。
  2. 静置 10-15 分钟。
  3. 转动曲柄 2 分钟。
  4. 静置 10 分钟。
  5. 重复转动曲柄 2 分钟。
  6. 静置 10 分钟。
  7. 通过前方的水龙头排水。

项目发展与改进:

该项目的研发并非一蹴而就。TWMP 团队深入了解用户需求,并根据实际使用环境进行改进。例如,在乌干达湖维多利亚的一个小岛上,由于运输困难,需要设计更简单、更易于当地维修的机器。通过与用户进行研讨会和焦点小组访谈,TWMP 团队改进了洗衣机的耐用性、易用性和可靠性,采用了更坚固的金属框架、简化了操作流程,并改进了密封件和水龙头。

影响与未来展望:

目前,Divya 项目已经影响了近 5 万人的生活。TWMP 计划在 2030 年之前惠及 100 万人。为了实现这一目标,TWMP 正在建立合作伙伴网络,包括非政府组织、联合国机构和当地社区,并获得了 Whirlpool 基金会的支持。

其他重要信息:

  • Divya 洗衣机可节省高达 75% 的时间,并减少用水量 50%。
  • 2026 年初,将在印度开始本地化生产,生产新一代的洗衣机,更贴近用户。
  • TWMP 正在试点“中心”模式,提供组装、分销、培训、研讨会和教育活动,以扩大 Divya 洗衣机带来的益处。
  • TWMP 也在积极推动政策制定,将洗衣设施纳入水、卫生、健康和性别平等策略中。

中文翻译说明:

  • 力求准确传达原文信息,避免个人观点和未提及的内容。
  • 采用 Markdown 格式,方便阅读和排版。
  • 语言简洁明了,避免使用过于专业或复杂的词汇。
  • 重点突出项目的主要功能、改进过程以及未来发展规划。
Dick Van Dyke turns 100

迪克·范·戴克百岁庆典:一位永不衰老的传奇

本文庆祝演员迪克·范·戴克迎来百岁生日,并回顾了他辉煌而漫长的演艺生涯。

主要成就与特点:

  • 长寿传奇: 范·戴克是好莱坞屈少数能活到百岁,且仍保持活力和精神的明星之一。他远超许多导师、合作者和伴侣的寿命,甚至超越了对他在《玛丽·波平斯》中口音的调侃。
  • 魅力与感染力: 范·戴克以其独特的魅力和感染力著称,这种魅力源于他积极乐观的态度和对快乐的追求。他曾被形容为“让世界变得更快乐”的人。
  • 多元化的演艺生涯: 从二战期间为军队表演,到与沃尔特·迪士尼等传奇人物共事,范·戴克的职业生涯横跨音乐厅滑稽表演和螺丝钉喜剧。他塑造了Stan Laurel和Jimmy Stewart的结合体,一个既滑稽又正直、聪明过人的形象。
  • 标志性角色: 他在《迪克·范·戴克秀》、《玛丽·波平斯》和《奇蒂·奇蒂·邦邦》等作品中塑造了经典角色,如与玛丽·泰勒·摩尔之间充满火花的互动,以及《玛丽·波平斯》中活泼好动的扫地工伯特。
  • 持续的活力: 即使年事已高,范·戴克仍然保持着活跃的社会参与,例如参加《蒙面歌王》节目、拍摄Coldplay的音乐视频,并积极为伯尼·桑德斯竞选而奔走。
  • 生活智慧: 为了分享自己的长寿秘诀,范·戴克甚至出版了一本书《100条活到100岁的法则》。他认为自己的长寿归功于良好的基因、坚固的友谊和积极的心态。

总结:

迪克·范·戴克是一位美国演艺界的传奇人物,他以其永葆活力的精神、独特的魅力和多元化的演艺生涯,为世界带来了欢乐。他不仅是一位演员,更是一位时代的象征,一位活生生的历史。他的一生是“一场壮丽的放纵”,充满了热爱和分享。

The Rise of Computer Games, Part I: Adventure

个人电脑文化中游戏扮演的角色

本文探讨了个人电脑文化早期发展中游戏的重要性,以及它们对个人电脑产业的塑造。早期爱好者将电脑视为一种娱乐工具,而1975-1976年加入这个群体的人很多都是因为对时间共享系统中的BASIC游戏文化有所了解,并希望在家中也能继续玩游戏。

早期游戏及其市场

早期个人电脑游戏主要通过三种方式传播:

  1. 朋友或同事间的复制: 早期,许多人直接复制纸质或磁带游戏,版权意识相对薄弱。
  2. 杂志和书籍的“键入”游戏: 许多杂志和书籍会刊登完整的BASIC程序(“键入”游戏),用户需要手动输入代码才能运行。Dave Ahl的《BASIC电脑游戏》是此类出版物中的代表作,销量超过一百万份。
  3. 商业游戏: 随着商业软件的兴起,出现了专门的软件出版商。D.E. Hipps的《星际迷航》游戏和SCELBI的《银河》游戏都是将源代码作为“键入”游戏出售的早期例子。

早期游戏文化

早期的个人电脑游戏文化继承了时间共享系统的传统。这些游戏通常是基于文本的,依赖策略和计算,而非反应速度。流行的游戏包括《汉谟拉比》、《内战》和《月球着陆器》等模拟类游戏,以及棋类、骰子类游戏等。星际战争类游戏,特别是Mike Mayfield的《星际迷航》,尤其受欢迎。

图形界面的出现与游戏变革

随着电脑图形显示技术的进步,特别是Apple II等电脑的出现,游戏开始借鉴街机游戏的特点,强调动作和实时性。然而,个人电脑游戏也逐渐形成自己的特色,例如更深入的模拟、更广阔的冒险世界和更复杂的地下城探索。

冒险游戏

冒险游戏起源于Will Crowther在PDP-10系统上创建的文本冒险游戏《Colossal Cave Adventure》(又称《Colossal Cave》或《Adventure》)。Crowther将洞穴的结构从肯塔基州Mammoth洞穴中提取,并结合了《龙与地下城》的元素。Don Woods后来对游戏进行了扩展,增加了更多房间、谜题和功能。

Scott Adams是第一个将《Adventure》商业化的个人电脑游戏开发者。他创建了“Adventureland”系列游戏,并以24.95美元的价格出售。

Infocom 和《Zork》

Infocom由一群MIT的程序员创立,他们将Crowther-Woods的《Adventure》移植到微电脑上,并创造了《Zork》。《Zork》以其智能的解析器和丰富的文本交互而闻名,成为了冒险游戏领域的标杆。它通过虚拟内存技术,使得在当时内存有限的微型电脑上运行大型游戏成为可能。

Mystery House

Ken和Roberta Williams开发的《Mystery House》是第一个图形冒险游戏。他们使用VersaWriter设备来捕捉图像数据,并以24.95美元的价格出售。该游戏开启了图形冒险游戏的新时代。

总结

个人电脑游戏文化在早期个人电脑发展中扮演了至关重要的角色。从最初的文本游戏到图形冒险游戏,游戏推动了硬件和软件技术的进步,并为个人电脑的普及奠定了基础。游戏不仅是娱乐,更是个人电脑文化的重要组成部分。

Linux Sandboxes and Fil-C

总结:Fil-C 与沙箱结合以增强安全性

本文探讨了如何将沙箱技术与 Fil-C 的内存安全特性结合,从而构建更强大的安全防御体系。核心观点是,内存安全和沙箱是两种不同的安全机制,结合使用效果最佳。

内存安全与沙箱的区别:

  • 内存安全: 确保程序在内存操作过程中不会出现错误(如缓冲区溢出),但无法阻止程序访问系统资源。
  • 沙箱: 限制程序对系统资源的访问,即使程序存在内存安全漏洞,攻击者也难以利用。

示例:

  • 内存安全但未沙箱化: 纯 Java 程序读取和写入文件,但依赖操作系统权限。即使内存安全,恶意用户仍可覆盖文件。
  • 沙箱化但未内存安全: 用汇编写的程序请求操作系统撤销所有权限,只能进行计算。即使存在内存安全漏洞,攻击者也无法覆盖文件。

Fil-C 的优势:

Fil-C 是一种内存安全的 C/C++ 实现,它能在代码与 Linux 系统调用之间强制执行安全,并且其运行时足够健壮,可以用于低级系统组件。

OpenSSH 沙箱的实现:

OpenSSH 使用 seccomp-BPF 沙箱来保护其非特权 sshd-session 进程,本文探讨如何将 OpenSSH 的 seccomp 基础沙箱代码移植到 Fil-C 中。OpenSSH 使用以下 Linux 工具进行沙箱化:

  • chroot: 限制文件系统视图。
  • 运行在 sshd 用户和组下,且该用户/组没有特权。
  • setrlimit: 限制打开文件、启动进程或写入文件的能力。
  • seccomp-BPF 系统调用过滤器:只允许合法的系统调用,其他系统调用会导致进程崩溃。

Fil-C 移植的关键步骤:

  1. 防止线程创建: 由于 Fil-C 运行时使用多线程进行垃圾回收,因此需要添加一个新 API zlock_runtime_threads(),强制运行时立即创建所有线程,并禁用按需启动。
  2. 调整 OpenSSH 沙箱:
    • 将 seccomp 过滤器失败结果改为 SECCOMP_RET_KILL_PROCESS,确保所有线程在沙箱违反时被杀死。
    • MAP_NORESERVE 添加到 mmap 允许列表中,因为 Fil-C 内存分配器会使用它。
    • 允许 sched_yield 系统调用,因为它在 Fil-C 锁实现中被使用。
  3. Fil-C 实现 prctl: Fil-C 运行时通过内部 API filc_runtime_threads_handshake,对所有运行时线程进行“握手”,确保 PR_SET_NO_NEW_PRIVSPR_SET_SECCOMP 系统调用影响所有线程,防止攻击者利用其他线程绕过过滤器。

结论:

结合内存安全和沙箱是构建强大安全防御体系的最佳方法。本文展示了如何利用 Fil-C 和 Linux 上的沙箱技术,在不降低沙箱保护级别或 Fil-C 内存安全保证的前提下,实现这一目标。

If a Meta AI model can read a brain-wide signal, why wouldn't the brain?

磁感受能力:从细菌到人类,大脑的磁场与意识的奥秘

本文探讨了生物体对地球磁场的感知能力(磁感受能力),以及由此引发的关于大脑工作机制和意识本质的思考。

磁感受能力广泛存在于生命体中:

磁感受能力并非人类独有,而是进化过程中普遍存在的现象。从单细胞生物到高等动物,生命体都进化出了感知地球磁场的机制。例如:

  • 磁细菌: 利用磁铁矿链作为内置指南针。
  • 陆地植物: 磁场影响其生长、发芽和趋向性。
  • 蜜蜂: 腹部含有的磁铁矿和磁罗盘用于觅食导航。
  • 美国蟑螂、果蝇、帝王蝶、海龟、鲫鱼、鲨鱼、灯泡螈、箱龟、家鸡、鸽子、盲鼹鼠、牛、鹿、家犬、人类: 都展现出对磁场的不同程度的感知和利用。

人类的磁感受能力:

研究表明,人类也具备磁感受能力。2019年,加州理工学院的研究人员利用磁场发生器在屏蔽地球磁场的房间内,通过脑电图(EEG)观察到受试者对磁场变化的反应,证实了人类大脑对磁场敏感。

生物磁性:生物体产生的磁场

除了感知磁场,生物体还会产生磁场,这被称为生物磁性。例如:

  • 弱电鱼: 利用电器官产生脉冲电流,周围的磁场可直接记录。
  • 蚯蚓、小龙虾、青蛙、豚鼠、猫、猴子、兔子、人类: 它们的神经活动会产生微弱的生物磁场,可以通过磁共振成像、SQUID等技术进行检测。
  • MEG (脑磁图): 是一种功能性神经影像技术,通过记录大脑产生的磁场来绘制大脑活动图。
  • Meta AI 的研究: 利用脑磁图技术,成功将大脑的磁场解码为图像和文字,展示了大脑磁场所承载的信息量。

大脑磁场与意识:

文章提出了一个大胆的假设:大脑的磁场可能代表了大脑当前状态的“类比压缩”。大脑通过制造特定尺寸的生物磁性晶体,能够读取和操纵自身的磁场,从而实现自我优化。 这种机制可能与“结合问题”(how our brain combines different pieces of information into a unified perception) 有关,也可能解释了我们主观意识体验的本质。

神经递质系统:

文章特别强调了蓝斑(locus coeruleus, LC-NA)系统的作用。LC-NA系统释放去甲肾上腺素,调节大脑的警觉性、专注力、可塑性等,并对多种认知功能产生影响。作者推测,LC-NA系统可能作为大脑的“全局写入系统”,参与大脑磁场与神经化学之间的互动。

空气污染与阿尔茨海默病:

文章最后探讨了空气污染对大脑磁感受能力的影响。空气中的污染物颗粒物会进入大脑,干扰大脑磁性晶体的正常功能,可能导致认知障碍,并与阿尔茨海默病的发病机制相关。蓝斑是其中受影响的关键区域。

总结:

本文通过对磁感受能力的研究,提出了一个引人深思的观点:大脑可能利用自身的磁场进行信息压缩和自我优化,而意识可能正是这种压缩机制的副产品。同时,也提醒我们关注空气污染对大脑健康的影响。

I fed 24 years of my blog posts to a Markov model

马尔可夫文本生成器 "Mark V. Shaney Junior" 总结 (Markov Text Generator "Mark V. Shaney Junior" Summary)

这篇文章介绍了作者 Susam Pal 开发的一个名为 "Mark V. Shaney Junior" 的小型马尔可夫文本生成器。该程序灵感来源于 1980 年代的传奇程序 Mark V. Shaney,该程序使用马尔可夫模型生成文本并发布到 Usenet 新闻组。

主要内容:

  • 程序简介: 该程序用 Python 编写,代码量仅 30 行左右,注重简洁性而非效率。作者鼓励读者理解并修改代码。
  • 创作动机: 作者经常进行探索性编程,通过编写小型程序来探索各种想法。该项目是作者将一个探索性程序完善并分享到 GitHub 和 Codeberg 的一个案例。
  • 生成结果 (Gibberish):
    • 作者用查尔斯·狄更斯的《圣诞颂歌》训练模型,产生了有趣的“胡言乱语”。
    • 作者还用自己 24 年博客的 20 万字文章训练模型,生成了更加古怪的文本。博客评论区(约 4 万字)未被用于训练。
    • 展示了多个生成文本示例,例如包含 "Lisp 源文件" 和 "自尊" 等短语的文本,这些短语来自作者的不同博客文章。
  • 马尔可夫属性 (Markov Property):
    • 默认情况下,该程序使用三元组(三个相邻单词的序列)作为模型。
    • 模型通过记录每个单词对及其后续单词来构建。
    • 文本生成器随机选择一个单词对作为起始点,然后根据模型选择后续单词。
    • 模型依赖于当前状态(前两个单词),不依赖于之前的历史,体现了马尔可夫属性。
  • 与大型语言模型 (LLMs) 的对比: 作者指出,在 LLM 普及的今天,简单的马尔可夫模型在捕捉全局结构和长距离依赖方面存在局限性。
  • 模型阶数 (Order): 可以通过命令行参数设置模型阶数(即考虑的单词数量)。 增加阶数可以提高文本的连贯性,但过高的阶数会导致模型直接引用博客文章内容。
  • 初始提示 (Prompt): 程序可以接受初始提示,然后根据提示生成文本。

总结:

"Mark V. Shaney Junior" 是一个简单的马尔可夫文本生成器,展示了马尔可夫模型的基本原理。尽管在现代 LLM 面前显得简单,但它仍然是一个很好的入门级语言模型示例。