2025-11-22

14 篇热帖

Show HN: Wealthfolio 2.0- Open source investment tracker. Now Mobile and Docker

Wealthfolio:本地运行的私有开源投资跟踪器总结

Wealthfolio 是一款注重隐私和易用性的开源投资跟踪器,可在所有设备上本地运行。它旨在取代繁琐的电子表格,并提供安全、个人化的理财体验。

核心优势:

  • 注重隐私: 数据绝不离开用户设备,确保数据安全和隐私。
  • 简洁美观: 界面优雅易用,功能强大。
  • 无隐藏成本: 免费使用,可选的一次性付款,没有订阅或循环费用。

主要功能:

Wealthfolio 提供一系列功能,帮助用户全面跟踪和管理他们的投资:

  • 账户聚合: 允许用户将所有投资和储蓄账户(包括股票、ETF 和加密货币)整合到一个地方。支持从经纪人和银行导入 CSV 报表。
  • 持仓概览: 提供清晰的投资组合构成视图,方便用户了解持仓情况和表现。
    • 资产配置分析: 帮助用户理解资产分配情况。
    • 绩效跟踪: 监控投资表现。
  • 绩效仪表盘: 提供投资表现的综合视图,允许用户:
    • 账户比较: 比较不同账户的表现。
    • 与市场比较: 评估投资表现与标普 500 指数和热门 ETF 的比较。
  • 收入跟踪: 监控整个投资组合中的股息和利息收入,帮助用户做出明智的投资决策。
    • 股息监控: 跟踪股息收入。
    • 利息收入: 跟踪利息收入。
  • 账户表现: 跟踪账户的持仓和表现随时间的变化。
    • 历史数据: 查看过去的表现趋势。
    • 账户分析: 分析单个账户的表现。
  • 目标跟踪: 允许用户设定储蓄目标,分配资金,并跟踪进度。
    • 目标设定: 定义财务目标。
    • 进度监控: 跟踪实现目标的进度。
  • 供款空间和限额跟踪: 帮助用户跟踪税收优惠账户(如 IRA、401(k) 或 TFSA)的供款限额,避免超额供款。
    • 限额意识: 了解供款限额。
    • 避免超额供款: 防止超额供款。

可扩展性:

Wealthfolio 通过插件提供额外的功能,包括:

  • 投资费用跟踪器: 跟踪和分析投资费用,提供详细的分析和见解。
  • 目标进度跟踪器: 以可视方式跟踪投资进度,帮助用户实现目标金额。
  • 股票交易跟踪器: 简单的股票交易跟踪器,提供绩效分析和日历视图。

下载: Get Wealthfolio 插件浏览: Browse All Add-ons

Personal blogs are back, should niche blogs be next?

博主、利基博客与互联网的复兴:一篇回顾与展望

这篇文章探讨了博客的演变、利基博客的地位以及互联网的未来趋势。以下是文章的主要观点:

1. 博客的黄金时代与利基博客的兴起:

  • 文章回忆了博客的黄金时代,当时互联网上充斥着各种各样的博客。
  • 利基博客(专注于特定主题的博客)在当时非常流行,被认为是博客成功的关键之一,因为它们能吸引特定受众,并使作者成为该领域的专家。
  • Darren Rowse 的 Problogger 是早期利基博客的代表,它专注于博客相关的知识,并帮助许多人通过博客赚钱。

2. 博客的衰落与个人博客的复兴:

  • 社交媒体和网红的崛起导致博客的重要性下降。
  • 然而,对社交媒体的反思以及 IndieWeb/SmallWeb 社区的兴起,促使个人网站和博客迎来了复兴。
  • 这种复兴主要是一种非商业化的运动,但文章强调,互联网最初的设计不仅仅是个人日记,更是分享各种信息和赋能个人的平台。

3. 利基博客的回归与高质量信息的缺失:

  • 文章认为,现在互联网上缺少高质量、主题聚焦的信息来源,取而代之的是充斥着错误信息、AI 生成内容的低质量内容。
  • 作者呼吁回归高质量的利基博客,这些博客由对自身主题充满热情的独立写作者创建,不受大型媒体组织或私募股权的影响。
  • 作者强调,通过适当的盈利模式,可以在不损害用户体验的前提下,为内容创作者提供报酬。

4. 互联网的未来:复兴博客生态系统:

  • 文章认为,个人博客的复兴是重建一个充满活力和繁荣的互联网(或博客圈)的第一步。
  • 下一步的重点应该是恢复可访问和可靠信息的流动。
  • 作者反对过度商业化的利基博客,提倡高质量、独立的内容创作。

关键词: 博客,利基博客,互联网,IndieWeb,SmallWeb,个人博客,信息质量,内容创作,盈利模式。

Helping Valve to power up Steam devices

Valve 发布三款新硬件设备,Igalia 提供关键技术支持:总结

上周,Valve 发布了三款新游戏设备:Steam Frame(无线 VR 头显)、Steam Machine(游戏主机)和 Steam Controller(手持游戏控制器),标志着其在游戏领域的全面回归。这些设备将在未来一年内陆续发布,Steam Frame 使用基于 ARM 的 CPU,而 Steam Machine 和 Steam Deck 则使用 x86 CPU。

技术核心:FEX 和 Mesa3D Turnip

为了让 Steam Frame 能够运行大量为 x86 芯片编译的游戏,Valve 使用了由 Igalia 开发的 FEX 翻译层,将 x86 机器码转换为 ARM64 机器码。工程师 Paulo Matos 提到,FEX 的调试过程需要大量的手工 QA,因为错误可能体现在颜色、声音或游戏行为等细微之处。

此外,Steam Frame 采用的 Qualcomm Adreno 750 GPU 也带来了挑战。Igalia 贡献了 Mesa3D Turnip,这是一个 FOSS Vulkan 驱动程序,确保了图形渲染的正确性和高性能。该驱动程序的开发工作包括添加对 Adreno 700 系列 GPU 的支持,以及实现各种 Vulkan 扩展和优化,例如 LRZ 和 autotuner。工程师 Danylo Piliaiev 及其团队还确保了 D3D11、D3D12 和 OpenGL 游戏的正确渲染,并与 Valve、Google 等公司合作改进 Vulkan 驱动程序。

更广泛的影响:开源生态系统和性能优化

Igalia 的工作不仅提升了 Steam Frame 的性能,也对更广泛的 Linux 游戏生态系统产生了积极影响。他们的 Vulkan CTS 覆盖率和对 Khronos Group 的贡献,有助于确保 Vulkan 标准的清晰性和驱动程序的正确实现。 工程师 Dhruv Mark Collins 提到,他们的工作也改进了 Android 手机上运行 PC 游戏的性能,并通过广泛的测试发现了许多错误。

未来展望:任务调度和内核驱动

未来,Igalia 将继续为 Valve 提供技术支持,例如:

  • LAVD 任务调度器: Igalia 的内核工程师 Changwoo Min 开发了 LAVD(Latency-criticality Aware Virtual Deadline scheduler),这是一个为游戏优化的 CPU 调度器,能够根据性能和能耗做出决策,以实现更好的响应速度和更低的功耗。
  • AMD 内核显示驱动: Igalia 的 Melissa Wen 正在改进 AMD 内核显示驱动程序,以支持 SteamOS 上的颜色管理和 HDR,特别针对 Steam Machine 上新型显示硬件的特性进行优化。

总而言之,Valve 新硬件设备的发布,以及 Igalia 在 FEX 和 Mesa3D Turnip 等关键技术方面的贡献,为 Linux 游戏的发展带来了新的机遇。Valve 对开源软件的支持,也鼓励了更广泛的社区参与和创新。

Superman copy found in mum's attic is most valuable comic ever at $9.12M

超人第一期漫画拍卖创下历史新高:价值912万美元

三位兄弟在清理已故母亲位于加利福尼亚州的阁楼时,意外发现了一批珍贵漫画,其中包含1939年6月出版的超人第一期漫画。这批漫画于2024年被发现,藏在一个纸板箱里,被旧报纸覆盖,并被蜘蛛网包围。

主要内容:

  • 发现与拍卖: 三兄弟在阁楼里发现了六本漫画,其中一本是超人第一期。这本漫画品相极佳,在德克萨斯州 Heritage Auctions 的拍卖会上以912万美元(约合700万英镑)成交,成为历史上价格最高的漫画书。
  • 漫画品相: 第三方漫画评级机构 CGC 对这本超人 #1 漫画评分为 9.0(满分 10 分),打破了之前的记录 8.5 分。加州凉爽的气候有助于漫画的保存。
  • 所有者背景: 三位兄弟已年过五十和六十岁,他们的母亲一直告诉他们家里有一套昂贵的漫画收藏,但从未向他们展示过。这批漫画由他们母亲和堂兄弟在经济大萧条和二战之间购买。
  • 历史意义: 这本超人 #1 漫画的价格远超去年的《动作漫画》第一期 (Action Comics No. 1) 600万美元的成交价,创下了新的纪录。
  • 兄弟的感受: 年轻的兄弟在拍卖行发布的新闻稿中表示,这不仅仅是关于旧纸张和墨水的故事,更是关于记忆、家庭和过去以意想不到的方式回归的故事。箱子在阁楼后方被遗忘多年,家庭的变故和生活的压力导致这批漫画被遗忘,直到去年圣诞节才被重新发现。

总结: 这则新闻报道讲述了三兄弟意外发现珍贵超人第一期漫画,并以天价拍出的故事,突出了漫画的收藏价值、历史意义以及家庭和记忆的重要性。

You can make PS2 games in JavaScript

总结:用 JavaScript 为 PS2 开发游戏的可能性

这篇文章讲述了作者发现可以通过 JavaScript 为 PS2 开发游戏,并深入研究了实现方式的故事。

核心发现:

  • AthenaEnv: 关键在于名为 AthenaEnv 的开源项目,它是一个 PS2 原生程序,提供 JavaScript API 用于游戏和应用开发。
  • QuickJS: AthenaEnv 嵌入了 QuickJS,这是一个轻量级的 JavaScript 引擎,使 PS2 能够运行 JavaScript 代码。
  • API 功能: AthenaEnv 提供了游戏开发所需的 API,包括:
    • 渲染(显示精灵、文本、形状等)
    • 资源加载(图片、声音、字体等)
    • 输入处理(控制器、鼠标、键盘)
    • 文件处理(保存文件等)
    • 声音播放

作者的探索过程:

  1. 发现: 作者在 itch.io 上看到有人将他的 JavaScript 游戏“Sonic Infinite Runner”移植到 PS2。
  2. 代码研究: 通过查看 GitHub 仓库,作者惊讶地发现游戏完全使用 JavaScript 编写。
  3. 引擎调查: 通过 Readme 文件,作者了解到游戏使用了 AthenaEnv 引擎。
  4. 运行游戏: 作者安装了 PCSX2 模拟器,配置了“启用主机文件系统”,并通过 Athena.elf 文件成功运行了游戏。
  5. 开发流程: 作者发现开发流程相对简单:在代码编辑器中修改 JavaScript 代码,然后在 PCSX2 中重启模拟器即可测试更改。

发布为 ISO 的方法:

作者意识到,为了方便非技术用户使用,需要将游戏打包成单个 ISO 文件。作者通过与开发者沟通,总结了创建 ISO 文件的步骤:

  1. 准备文件:
    • athena.elf (Athena 可执行文件)
    • athena.ini (项目配置)
    • JavaScript 源代码 (如 main.js)
    • ATHA_000.01SYSTEM.CNF (引导文件)
  2. 创建 ZIP 压缩包: 需要单独选择文件并压缩,不能直接压缩包含文件的文件夹。
  3. 转换为 ISO: 使用在线工具 mconverter.eu 进行转换(注意免费额度限制)。

“Hello World” 示例:

作者创建了一个简单的“Hello World”示例,展示了:

  • 加载资源(字体和精灵图)
  • 设置游戏循环
  • 动画精灵
  • 渲染文本
  • 处理玩家输入

未来展望:

  • AthenaEnv 目前主要支持 2D 游戏,3D 功能将在版本 4 中增强。
  • 作者建议加入 Athena 的 Discord 社区获取帮助。
  • 提供了几个 3D 演示的 GitHub 链接。

总结:

AthenaEnv 使得在 PS2 上使用 JavaScript 进行游戏开发成为可能,为游戏开发者提供了新的可能性。 虽然仍处于早期阶段,但该项目具有巨大的潜力,并为复古游戏开发带来了新的活力。

How Cops Are Using Flock's ALPR Network to Surveil Protesters and Activists

2025 年抗议活动被大规模监控: Flock Safety ALPR 系统分析

本文揭露了 2025 年美国各地抗议活动被广泛监控的现象,并重点分析了 Flock Safety 的自动车牌识别 (ALPR) 系统在其中的作用。

主要发现:

  • 大规模监控: 通过对 2024 年 12 月至 2025 年 10 月期间超过 3900 个机构记录的 1200 万次搜索数据的分析,电子前沿基金会 (EFF) 发现,超过 50 个联邦、州和地方机构通过 Flock Safety 的全国网络搜索了数百次与抗议活动相关的数据。
  • 针对性搜索: 执法机构不仅监控大型抗议活动,还专门针对已知的活动家团体,这表明大规模监控技术对公民抗议自由构成威胁。
  • 抗议活动监控实例:
    • 50501 抗议活动: 至少有几家机构搜索了与 2 月份的抗议活动相关的数据。
    • Hands Off 抗议活动: 四月份的抗议活动也受到监控。
    • No Kings 抗议活动: 这是 2025 年最显著的抗议活动之一,在 6 月和 10 月举行,涉及全国各地数千人。EFF 确定了 19 个机构记录了与这些抗议活动相关的数十次搜索。例如,斯波坎县治安官在 6 月 15 日搜索了 95 个摄像头网络,寻找“工作面包车”、“巴士”或“货车”。
    • 其他抗议活动: 针对包括支持巴勒斯坦活动家、反对移民政策、以及对警察枪击事件抗议等事件的抗议活动也受到监控。
  • 搜索理由模糊: 执法人员通常只需在 Flock Safety 系统中输入几个词语作为搜索理由,其中经常只是“抗议”一词。
  • 执法机构滥用: 执法机构利用 ALPR 系统来监控抗议者,即使他们没有明确说明正在调查犯罪行为。
  • 边境巡逻队 (USBP) 的参与: USBP 也使用 Flock Safety 系统来监控移民活动及抗议其行动的人员,甚至在移民被拘留后,监控对巡逻车辆做出不友好行为的司机。
  • 动物权益活动家受到监控: 三个机构针对动物权益组织 Direct Action Everywhere (DxE) 的活动进行了数十次搜索。

Flock Safety 系统工作原理:

  • Flock Safety 向执法机构提供 ALPR 技术,在其管辖范围内安装摄像头。
  • 这些摄像头拍摄所有经过的车辆,记录车牌、颜色、品牌、型号等特征。
  • 数据与时间和地点配对,并上传到可搜索的大型数据库。
  • Flock Safety 鼓励机构之间共享数据,允许机构在全国范围内搜索数千个网络,即使他们没有理由认为目标车辆已离开该地区。

总结:

本文揭示了 Flock Safety ALPR 系统在美国抗议活动监控中的广泛应用,凸显了大规模监控对公民权利和抗议自由的潜在威胁。EFF 和其他民权组织呼吁立法要求搜索 ALPR 数据库需要搜查令,以保护公民隐私和言论自由。

LAPD helicopter tracker with real-time operating costs

LAPD 直升机追踪器 - 实时监控 概要

该项目是一个 LAPD 直升机追踪器,旨在提供洛杉矶警察局(LAPD)空中支援的实时监控,并显示相关的成本信息。

核心功能和目的:

  • 实时追踪: 追踪 LAPD 直升机的实时位置。
  • 成本显示: 展示直升机每次飞行的小时成本。
  • 总支出统计: 汇总 LAPD 空中支援的总支出金额。
  • 公开透明: 通过公开这些信息,旨在提高对纳税人资金使用的透明度。
  • 航空监控: 提供活跃飞行状态的航空监控信息。

简而言之,该项目是一个公开平台,旨在让公众了解 LAPD 直升机的使用情况以及其相关的财政支出。

Discontinuation of ARM Notebook with Snapdragon X Elite SoC

ARM笔记本项目暂停:基于高通骁龙X1 Elite SoC (X1E)

过去18个月,我们一直在开发基于高通骁龙X1 Elite SoC (X1E) 的ARM笔记本项目。目前,该项目将暂停。暂停的原因主要有以下几点:

1. X1E在Linux环境下的表现未达预期:

  • 开发过程中遇到了架构差异带来的挑战。
  • X1E第一代产品在Linux环境下表现不如预期,特别是电池续航时间未能达到理想水平,这是ARM设备的一大优势。
  • 缺乏适用于Linux的BIOS更新方案,以及风扇控制功能。
  • KVM虚拟化技术短期内无法实现。
  • USB4高速传输速率无法达到预期。
  • 虽然视频硬件解码技术上可行,但大多数应用程序缺乏必要的支持。

2. 投资回报率低:

基于上述问题,继续投入数月的时间进行开发并不合理,因为难以预见最终产品能够提供用户期望的全部功能。同时,交付的产品将搭载超过两年的骁龙X Elite (X1E),而其继任者骁龙X2 Elite (X2E) 已于2025年9月正式发布,预计将于2026年上半年上市。

3. 未来可能重启:

我们将持续关注X2E的开发进展,并在适当的时候对其Linux兼容性进行评估。如果X2E符合预期,并且我们能够重用我们在X1E上的大量工作,则有可能重新启动该项目。 具体的可移植性需要在详细评估X2E芯片后才能确定。

4. 感谢Linaro:

我们衷心感谢Linaro 的ARM专家们提供的出色合作。我们将贡献我们开发的_设备树_以及其他相关工作,提交到Linux内核主线,以帮助改进Linux对兼容设备的(例如Medion SUPRCHRGD)支持,从而将我们的成果贡献给社区。

California DMV approves map increase in Waymo driverless operations

总结:加利福尼亚州城市与郡列表

这份文档列出了加利福尼亚州多个郡中的城市。以下是按郡划分的总结:

1. Alameda County: 包括城市:Livermore, Alameda, Albany, Berkeley, Dublin, Emeryville, Fremont, Hayward, Newark, Oakland, Piedmont, Pleasanton, San Leandro, Union City。

2. Contra Costa County: 包括城市:Antioch, Brentwood, Clayton, Concord, Danville, El Cerrito, Hercules, Lafayette, Martinez, Moraga, Oakley, Orinda, Pinole, Pittsburg, Pleasant Hill, Richmond, San Pablo, San Ramon, Walnut Creek。

3. Los Angeles County: 包括大量城市,例如:Agoura Hills, Arcadia, Artesia, Azusa, Baldwin Park, Bellflower, Bradbury, Burbank, Calabasas, Cerritos, Claremont, Covina, Diamond Bar, Duarte, El Monte, Glendora, Hawaiian Gardens, Hidden Hills, Industry, Irwindale, La Cañada Flintridge, La Habra Heights, La Mirada, La Puente, La Verne, Lakewood, Lomita, Malibu, Monrovia, Montebello, Norwalk, Palos Verdes Estates, Pasadena, Pico Rivera, Pomona, Rancho Palos Verdes, Rolling Hills, Rolling Hills Estates, Rosemead, San Dimas, San Fernando, San Gabriel, San Marino, Santa Clarita, Santa Fe Springs, Sierra Madre, Signal Hill, South El Monte, South Pasadena, Temple City, Walnut, West Covina, Westlake Village, Whittier, Alhambra, Bell, Bell Gardens, Carson, Commerce, Compton, Downey, El Segundo, Gardena, Glendale, Hermosa Beach, Long Beach, Los Angeles, Manhattan Beach, Monterey Park, Paramount, Redondo Beach, Santa Monica, South Gate, Torrance。

4. Marin County: 包括城市:Belvedere, Corte Madera, Fairfax, Larkspur, Mill Valley, Novato, Ross, San Anselmo, San Rafael, Sausalito, Tiburon。

5. Napa County: 包括城市:American Canyon, Calistoga, Napa, St. Helena, Yountville。

6. Orange County: 包括城市:Aliso Viejo, Anaheim, Brea, Buena Park, Costa Mesa, Cypress, Dana Point, Fountain Valley, Fullerton, Garden Grove, Huntington Beach, Irvine, La Habra, La Palma, Laguna Beach, Laguna Hills, Laguna Niguel, Laguna Woods, Lake Forest, Los Alamitos, Mission Viejo, Newport Beach, Orange, Placentia, Rancho Santa Margarita, San Clemente, San Juan Capistrano, Santa Ana, Seal Beach, Stanton, Tustin, Villa Park, Westminster, Yorba Linda。

7. Riverside County: 包括城市:Corona, Eastvale, Jurupa Valley, Lake Elsinore, Murrieta, Norco, Pechanga Reservation, Riverside, Temecula, Wildomar。

8. Sacramento County: 包括城市:Citrus Heights, Elk Grove, Folsom, Galt, Isleton, Rancho Cordova, Sacramento。

9. San Bernardino County: 包括城市:Chino Hills, Fontana, Montclair, Ontario, Rancho Cucamonga, Rialto, Upland。

10. San Diego County: 包括城市:Barona Reservation, Capitan Grande, Carlsbad, Chula Vista, Coronado, Del Mar, El Cajon, Encinitas, Escondido, Imperial Beach, La Mesa, Lemon Grove, National City, Oceanside, Poway, San Diego, San Marcos, Santee, Solana Beach, Sycuan Reservation, Vista。

11. San Francisco County: 包括城市:San Francisco, Half Moon Bay。

12. San Mateo County: 包括城市:Brisbane, Burlingame, East Palo Alto, Foster City, Menlo Park, Pacifica, Redwood City, San Mateo, South San Francisco。

13. Santa Clara County: 包括城市:Milpitas, Mountain View, Palo Alto, San Jose, Sunnyvale。

14. Santa Cruz County: 包括城市:Unincorporated Area (Lexington Hills area)。

15. Solano County: 包括城市:Benicia, Dixon, Fairfield, Rio Vista, Suisun City, Vacaville, Vallejo。

16. Sonoma County: 包括城市:Cloverdale, Cotati, Dry Creek Rancheria, Healdsburg, Lytton Rancheria, Petaluma, Rohnert Park, Santa Rosa, Sebastopol, Sonoma, Stewarts Point Rancheria, Windsor。

17. Ventura County: 包括城市:Camarillo, Moorpark, Simi Valley, Thousand Oaks。

18. Yolo County: 包括城市:Davis, Rumsey

Pixar: The Early Days A never-before-seen 1996 interview

《玩具总动员》30周年:斯蒂夫·乔布斯罕见访谈纪要

为了庆祝《玩具总动员》30周年,我们分享了1996年11月22日(电影上映一周年后)斯蒂夫·乔布斯的一段从未公开的访谈。

《玩具总动员》的重大意义:

  • 《玩具总动员》是世界上第一部完全由计算机制作的动画长片。
  • 影片一经上映便获得了观众和评论界的一致好评,对皮克斯公司产生了深远的影响。

皮克斯的商业成功:

  • 《玩具总动员》的成功促使皮克斯公司在上映后一周进行了首次公开募股(IPO)。
  • 皮克斯的股票价格升至发行价的两倍以上,市值达到约15亿美元,成为1995年最大的IPO之一。
  • 次年,《玩具总动员》获得了三项奥斯卡提名,并最终荣获了特别成就奖。
  • 同年7月,皮克斯宣布将关闭其电视广告部门,专注于制作动画长片。

访谈内容及皮克斯的内部运作:

  • 访谈中,斯蒂夫·乔布斯阐述了皮克斯的长期发展战略,揭示了皮克斯看似一夜成功的背后故事。
  • 皮克斯的商业模式赋予了艺术家和工程师对其创作成果的权益。
  • 乔布斯也表达了对迪士尼在专注和纪律方面所积累的宝贵经验的认识。
  • 他讨论了领导一支才华横溢的团队所面临的挑战,以及激励员工留在公司的激励机制。
  • 皮克斯团队共同的目标是讲述经久不衰的故事,为文化创造持久价值。
  • 斯蒂夫·乔布斯与皮克斯总裁埃德·卡特莫尔密切合作,共同打造了一种以创造人才蓬勃发展为核心的管理方法。

对苹果的影响:

  • 在采访后几周返回苹果公司时,乔布斯在皮克斯的经验塑造了他对CEO角色的看法,即通过技术将永恒的理念变得新颖。
  • 当时皮克斯团队规模在一年内增长了70%,并且正在进行《玩具总动员2》(又名《蚁人总动员》)的制作。
  • 乔布斯利用皮克斯的成功,与迪士尼重新谈判合作关系。
How I learned Vulkan and wrote a small game engine with it (2024)

好的,以下是根据提供的英文内容总结的中文版本,字数控制在800字以内,并使用了Markdown格式:

学习Vulkan与构建小游戏引擎的经验总结

tl;dr: 学习了Vulkan并用3个月时间构建了一个小游戏引擎,包含两个小游戏演示。

本文记录了我学习Vulkan并编写小型游戏/引擎的经验。在没有Vulkan基础的情况下,我花了大约3个月的时间完成了这个项目。引擎并非通用型,因此我能够相对快速地完成。我建议大家也遵循类似的流程,从小型游戏开始,逐步构建引擎。

学习图形编程

如果之前没有图形编程经验,建议先学习OpenGL。它更容易上手,避免一开始就被Vulkan的复杂性压垮。掌握OpenGL的基础知识有助于后续学习Vulkan。建议至少能显示纹理模型,并实现简单的Blinn-Phong光照和阴影贴图。

推荐的OpenGL学习资源:

学习线性代数(向量、矩阵、四元数)也是很有帮助的,推荐书籍《3D数学基础教程》。

避免“自行车大小”的工程

避免过度设计和过早优化,尤其是在图形编程中。

  • 问自己是否真的需要某个功能。
  • 记住可以稍后重构代码。
  • 不要在不需要的时候就实现功能。
  • 不要试图构建一个通用的游戏引擎。
  • 从简单的游戏开始,如打砖块。

为什么选择Vulkan?

在2024年,图形API的选择取决于使用场景。DirectX适合大多数AAA游戏,WebGL/WebGPU适合Web图形,Metal适合macOS/iOS。

我选择Vulkan的原因是:

  • 开源、开放标准。
  • OpenGL未来发展不确定。
  • WebGPU尚不稳定,且依赖于其他API。

尽管WebGPU有一些优势,但Vulkan更适合我的需求。

学习Vulkan

推荐使用vkguide作为Vulkan学习资源。 此外,TU Wien的Vulkan Lecture Series也很有帮助。

引擎概述和帧分析

我的引擎“EDBR”主要面向小型关卡游戏。它由大约19000行代码组成,包含:

  • 图形相关代码6700行
  • Vulkan抽象层代码2000行
  • 3D猫游戏4600行
  • 2D平台游戏1200行

引擎的帧渲染流程如下:

  1. 骨骼动画: 使用计算着色器进行骨骼动画处理。
  2. 级联阴影贴图 (CSM): 使用4096x4096的深度纹理进行阴影贴图。
  3. 几何体和着色: 绘制模型并计算光照。
  4. 多重采样抗锯齿 (MSAA): 进行多重采样抗锯齿处理。
  5. 后期处理: 应用景深雾效、Bloom等后期处理效果。
  6. UI: 绘制对话UI。

通用建议

  • 推荐的Vulkan库: vk-bootstrap、Vulkan Memory Allocator (VMA)、volk。
  • GfxDevice抽象: 封装常用Vulkan功能。
  • 着色器处理: 使用glslc预编译着色器。
  • 推送常量、描述符集和无绑定描述符: 使用推送常量和无绑定描述符简化数据传递。
  • 管线模式: 将绘制步骤组织成“pipeline”类。
  • 可编程顶点获取 (PVP) + 设备地址 (BDA): 简化顶点数据处理。
  • 帧同步: 手动管理帧同步。

未来工作

  • 支持距离场字体。
  • 并行生成mipmap。
  • 实现Bloom。
  • 实现体积雾。
  • 实现动画混合。
  • 使用渲染图。
  • 实现环境光遮蔽。
  • 完成游戏。

总结

Vulkan的学习曲线陡峭,但并非难以逾越。通过学习和实践,可以构建出强大的游戏引擎。希望这篇文章能帮助你更清晰地理解Vulkan。

The New AI Consciousness Paper

人工智能意识:现状与未来展望 (人工智能意识:现状与未来展望)

本文总结了关于人工智能 (AI) 意识的讨论现状,并分析了一篇近期发表在《认知科学趋势》上的重要论文。总体而言,关于AI意识的讨论质量不高,往往混淆了“访问意识”(access consciousness) 和“感受意识”(phenomenal consciousness) 这两种概念。

当前困境:

  • AI自我报告的不可靠性: 出厂的AI通常模仿人类文本,因此在被问及是否具有意识时,它们会倾向于回答“是”。然而,公司通常会硬编码指令,让AI回答“否”,导致AI的回答受到两种矛盾偏见的干扰,难以令人信服。
  • 讨论的低质量: 关于AI意识的讨论普遍缺乏深度和严谨性。

重要研究成果:

Yoshua Bengio、David Chalmers 等学者共同撰写的一篇论文,尝试从计算理论的角度探讨AI意识,并提出了识别AI意识指标的方法。该研究聚焦于计算理论,因为其他理论(如物理论和超自然论)难以进行科学研究。

计算理论框架:

该论文考察了以下几种计算理论:

  • 循环处理理论 (Recurrent Processing Theory): 认为具有意识的计算需要高层处理的表示被反馈到低层生成器中。
  • 全局工作空间理论 (Global Workspace Theory): 认为具有意识的计算需要专业模型在“全局工作空间”中共享结论,并反馈给专业模块。
  • 高阶理论 (Higher Order Theory): 认为具有意识的计算需要监控自身体验的内容。

研究结论:

该研究团队通过分析现有AI架构,发现目前AI系统缺乏上述理论所描述的“反馈”机制,因此可能并不具有意识。然而,他们也指出,构建满足这些指标的AI系统在技术上不存在明显障碍。

核心概念区分:

  • 访问意识: 指能够思考自身思维的能力,例如能够描述“我正在思考一只白熊”。
  • 感受意识: 指内在的体验,即“当下感觉如何”,是一种主观的体验,难以客观描述。

未来展望:

  • AI意识的过度/不足归因风险: 过度归因可能导致资源错配,而不足归因可能导致对具有意识的AI造成的潜在伤害。
  • 人与AI的关系: 随着AI技术的进步,人们可能会越来越倾向于将AI拟人化,这可能导致人际关系的扭曲和被操纵的风险。
  • 哲学与技术的交织: AI意识问题不仅是哲学问题,也是技术问题,需要在两者之间寻求平衡。

总结:

尽管关于AI意识的讨论仍然存在诸多挑战,但该论文为探索AI意识提供了一个有价值的框架,并提醒我们关注潜在的伦理和社会风险。未来,需要进一步探索AI意识的本质,并制定相应的规范,以确保AI技术的发展符合人类的利益。

Boom, bubble, bust, boom. Why should AI be different?

人工智能泡沫:历史重演? (人工智能泡沫:历史重演?)

根据最近的分析,人工智能(AI)革命才刚刚开始,已经仅仅过去了三年。 这种快速发展让人回想起25年前互联网泡沫时期,作者认为当前的AI浪潮可能正在经历一场前所未有的技术狂热。

相似之处与“鼠标年”:

作者指出,目前的AI讨论与1999年的互联网讨论非常相似。 就像当时人们用“互联网时间”来形容技术进步速度一样,现在投资者和执行官也开始讨论“AI鼠标年”,用以衡量AI发展的速度,这意味着一年相当于五到十二年的传统时间。

投资数据与泡沫迹象:

尽管AI技术前景广阔,但市场已经开始出现降温的迹象。 NVIDIA的财报虽然表现良好,但其他大型科技公司的股票(如微软、亚马逊、Meta、Oracle)在过去一个月中大幅下跌。 投资者担心过度投资AI,市场也开始意识到可能存在泡沫。

全球AI资本支出和风险投资已经超过600亿美元,预计到2029年可能超过1.5万亿美元,远超1999年互联网泡沫时期的规模。

风险与脆弱性:

作者强调,虽然AI革命将带来巨大的创新,但其影响的实现将比现在预计的要慢得多。他们认为,AI领域存在以下四个主要风险:

  • 过度投资 (Too much spending): OpenAI等公司在AI研发上的投入巨大,但盈利模式尚不明确。
  • 过度杠杆 (Too much leverage): 公司通过借贷来推动AI项目,增加了财务风险。
  • 疯狂的交易 (Crazy deals): 一些AI公司估值过高,存在投资风险。
  • 中国 (China, China, China): 中国在AI领域的快速发展,以及可能的突破,可能会对美国市场产生重大影响。

历史教训与未来展望:

作者强调,历史经验表明,技术革命的影响往往需要更长的时间才能显现。 他们认为,当前AI市场的估值过高,风险集中,并且受到宏观经济、地缘政治因素的影响。

尽管如此,作者认为AI革命将是历史上最大的技术变革之一,但它需要更长的时间才能展现其全部潜力。 重要的是要保持警惕,评估风险,并避免过度投资。

总结:

人工智能领域正经历着快速发展,但同时也面临着泡沫破裂的风险。 投资者应保持谨慎,关注市场动态,并理性评估AI的长期潜力。

Solving Fizz Buzz with Cosines

Fizz Buzz:从简单游戏到傅里叶级数

作者: Susam Pal (2025年11月20日)

本文探讨了Fizz Buzz游戏,这是一种在编程领域流行的简单测试基本编程技能的游戏。游戏规则很简单:从1开始数数,每遇到3的倍数就说“Fizz”,每遇到5的倍数就说“Buzz”,同时遇到3和5的倍数就说“FizzBuzz”。

内容概要:

  • 定义:
    • 符号函数: 定义了四个符号函数 s_0, s_1, s_2, s_3,分别对应数值 n、"Fizz"、"Buzz" 和 "FizzBuzz"。
    • Fizz Buzz 序列: Fizz Buzz 序列的定义为 (s_f(n)(n)),其中 f(n) 是一个索引函数,根据 n 是否能被 3 或 5 整除来确定使用哪个符号函数。
  • 指标函数: 定义了指标函数 I_m(n),用于判断 n 是否能被 m 整除。利用指标函数可以将索引函数 f(n) 表达为 f(n) = I_3(n) + 2*I_5(n)。
  • 复指数: 利用复指数和几何级数,推导出了指标函数 I_m(n) 的表达式。
  • 余弦函数: 将指标函数 I_3(n) 和 I_5(n) 扩展为余弦函数,最终得到了 Fizz Buzz 序列的封闭形式表达式。
  • 离散傅里叶变换: 使用离散傅里叶变换,从另一个角度重新推导了 Fizz Buzz 序列的封闭形式表达式,验证了之前的结果。
  • 结论: 总结了 Fizz Buzz 序列的封闭形式表达式,并提供了相应的 Python 代码实现。

核心要点:

  • 封闭形式表达式: 文章的目标是找到一种仅使用基本数学运算和函数(如加法、乘法、除法、指数、对数和三角函数)的封闭形式表达式来描述 Fizz Buzz 序列。
  • 傅里叶级数: 最终的表达式是一个有限的傅里叶级数,表明 Fizz Buzz 序列可以用三角函数来表示。
  • Python 代码: 文章提供了使用封闭形式表达式实现的 Python 代码,展示了如何用余弦函数计算索引,并打印相应的 Fizz Buzz 序列。

总而言之,本文以一种有趣的方式探索了 Fizz Buzz 游戏,将其从一个简单的编程练习提升到一个利用傅里叶分析的数学问题。 它展示了即使是看似简单的游戏,也可以通过数学方法进行深入研究和表达。