2024 10 29 HackerNews

2024-10-29 Hacker News Top Stories #

  1. 苹果公司推出新款 iMac,搭载 M4 芯片和 Apple Intelligence,性能提升显著。
  2. 有人为孩子创建了一个无广告的精美着色书网站,供家长和孩子们使用。
  3. 世界银行气候融资缺乏透明度,多达 410 亿美元未被妥善记录和追踪。
  4. NotebookLlama 是一个开源项目,提供从 PDF 到播客的工作流程,供用户参考和学习。
  5. 购买公用电话亭并退休是一个创业项目,通过收购和维护公用电话亭来获得被动收入。
  6. 使用 SQLite 存储静态内容可以提高 Web 服务器的性能和安全性。
  7. 编写易于删除的代码,而不是易于扩展的代码,可以提高代码的可维护性和灵活性。
  8. Android Translation Layer 是一个允许在 Linux 系统上运行 Android 应用的翻译层,支持自定义数据目录和 apk 文件的安装。
  9. HTTP 418 状态码是一个幽默的代码,用于表明服务器的某种限制或拒绝,而不是常规的 HTTP 错误响应。
  10. Ibis 是一个去中心化的维基百科替代品,使用 ActivityPub 协议,允许不同实例之间的文章同步和交互。

New iMac with M4 #

https://www.apple.com/newsroom/2024/10/apple-introduces-new-imac-supercharged-by-m4-and-apple-intelligence/

苹果公司于 2024 年 10 月 28 日宣布推出新款 iMac,搭载强大的 M4 芯片和 Apple Intelligence,外观设计更为纤薄,提供多种鲜艳可选。新款 iMac 在日常生产力任务中性能提升达到 1.7 倍,在处理更高要求的工作负载,如照片编辑和游戏时,性能提升可达 2.1 倍,相较于使用 M1 芯片的 iMac。

新款 iMac 的亮点包括:

  1. **M4 芯片 **:具有更强大的 CPU 和 GPU,日常任务和高强度工作如照片编辑、视频编辑等性能显著提升,同时支持 AI 处理。
  2. Apple Intelligence:这是一种个人智能系统,旨在改变用户的工作和交流方式,同时保护用户隐私。通过该系统,用户可以在写作时进行重写、校对和总结等操作。
  3. ** 新颜色选择 **:新款 iMac 提供七种颜色选择,包括绿色、黄色、橙色、粉色、紫色、蓝色和银色,用户可以根据个人喜好进行选择。
  4. ** 显示技术 **:24 英寸 4.5K Retina 显示屏首次提供纳米纹理玻璃选项,能有效减少反射和眩光,适合放置在光线充足的环境中。
  5. **12MP Center Stage 摄像头 **:新款 iMac 配备的摄像头支持桌面视图,能够在视频通话中同时展示用户和桌面的内容,提升互动体验。
  6. **Thunderbolt 4 连接性 **:所有四个 USB-C 端口支持 Thunderbolt 4,提供超快的数据传输速度,并能连接多个外部设备和高分辨率显示器。
  7. **macOS Sequoia 操作系统 **:新操作系统带来多项新特性,包括 iPhone 镜像功能、Safari 浏览器的新功能、游戏体验增强等。

此外,新款 iMac 在环保方面也做出了努力,采用 100% 回收铝、金和铜等材料,并致力于 2030 年前实现整体碳中和。新款 iMac 的起售价为 1299 美元,教育用户价格为 1249 美元,现已开始接受预订,预计于 11 月 8 日开始发货。


HN 热度 375 points | 评论 823 comments | 作者:tosh | 9 hours ago #

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

  • 希望欧盟能推动法律要求所有一体机电脑在内部硬件不再足够好或不再受软件更新支持时仍能作为显示器使用
  • 旧设备可以通过最后的固件更新变成专用设备,如 AirPlay 接收器或笔记机
  • 苹果曾为已停产的 AirPort Express Wi-Fi 基站提供 AirPlay 2 功能的固件更新,使其成为连接新设备的热门选择
  • 通过 AliExpress 购买驱动板可以将旧 iMac 变成显示器,成本低廉且效果良好
  • 苹果在环保方面确实投入资源,但更多是为了自身利益,如减少 iPhone 包装和移除充电器以提高利润
  • 为 M1 Max 等设备提供可更换存储选项可以减少碳排放和设备更换成本
  • 通过 Thunderbolt 连接的 M2 SSD 阵列可以解决存储需求,成本约为 2000 美元
  • 使用 SD 卡扩展存储容量,但读写性能远低于内部 NAND,适合存档用途
  • 早期 MacBook 等设备的升级率很高,技术人群对升级需求的估计可能并不夸张

Ask HN: What Are You Working On? October 2024 #

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

这篇文章是关于一个用户在 Hacker News 上分享他正在进行的项目。该用户注意到他的儿子在 YouTube 和 Minecraft 上花费太多时间,而他最喜欢的离线活动之一是涂色。于是,他创建了一个网站,专门收集涂色书供他儿子使用。这个网站虽然简单,但他在创建过程中感到非常快乐。网站的地址是 https://colorango.com/

在评论区,其他用户分享了与涂色相关的经验和项目。有的用户提到他们使用 ChatGPT 生成涂色页面,结果非常出色;还有用户提到他们有未完成的项目,比如一个安卓应用程序,用于生成适合儿童的涂色书页面。有人询问这些涂色页面是如何生成的,是否经过后期处理,并分享了使用不同 AI 模型生成涂色图的尝试。

用户们也讨论了自己孩子对涂色的兴趣,表示这个网站的作品非常精美,能够吸引孩子们的注意。有评论提到,打印整个涂色书可能不如单独打印一页效果好,因为孩子们往往会更愿意完成单张涂色页。

此外,还有人回忆起过去做类似项目的经历,分享了他们的成功案例和收入来源。最后,文章提到了一些技术和编程相关的项目,包括自制电动汽车和编程语言的开发,强调了创造性项目的乐趣。


HN 热度 364 points | 评论 1006 comments | 作者:david927 | 1 day ago #

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

  • 有人为孩子创建了一个无广告的精美着色书网站,孩子和家长都很喜欢
  • 有人提到妻子使用 ChatGPT 生成着色页,效果非常好
  • 有人计划开发一个生成着色书页面的 Android 应用,但尚未完成
  • 有人尝试用 ChatGPT 和 Imagen 3 生成着色页,效果不错但存在一些细节问题
  • 有人希望网站能提供 PDF 格式的下载,方便打印成册
  • 有人建议增加数字着色版本,适用于平板或手机
  • 有人请求增加独角兽和猫的类别
  • 有人希望增加恐龙类别,因为孩子喜欢恐龙
  • 有人提到 20 年前通过设置着色书页面并投放广告获得高额收入
  • 有人分享了移动时代通过开发着色书应用等赚取收入的故事
  • 有人认为这是一个简单但有价值的想法,适合很多家庭
  • 有人称赞网站设计美观,图片令人愉悦

Up to $41B in World Bank climate finance unaccounted for, Oxfam finds #

https://www.oxfam.org/en/press-releases/41-billion-world-bank-climate-finance-unaccounted-oxfam-finds

根据 Oxfam 国际发布的一份新报告,世界银行在过去七年内发放的气候融资中,多达 410 亿美元(约占所有气候资金的 40%)未被妥善记录和追踪。该报告在世界银行和国际货币基金组织年会召开前发布,揭示了气候融资的透明度和问责制问题。

Oxfam 对世界银行 2017 年至 2023 年气候融资项目的审计发现,介于 240 亿到 410 亿美元的气候融资在项目批准到关闭之间没有明确的记录,公众无法清楚知道这些资金的去向和用途,这使得评估其影响变得不可能。此外,也不清楚这些资金是否真正用于旨在帮助低收入和中等收入国家应对气候危机、投资清洁能源的相关项目。

Oxfam 国际华盛顿办公室负责人凯特・唐纳德表示,世界银行往往强调其气候融资的数额,但这些数字仅反映了计划支出的金额,而非项目实际支出的情况。她比喻说,这就像让医生通过你的购物清单评估你的饮食,而不去检查冰箱里的实际食物。

世界银行是全球最大的多边气候融资提供者,占所有多边开发银行气候融资总流量的 52%。在即将召开的阿塞拜疆气候大会(COP)上,各国将就新的全球气候融资目标进行谈判。气候活动人士呼吁发达国家每年向发展中国家提供至少 5 万亿美元的公共融资,以偿还气候债务,帮助那些对气候变化负责任最小但受影响最严重的国家和社区。

Oxfam 警告称,缺乏可追踪的支出记录可能会破坏全球气候融资努力的信任。唐纳德指出,气候融资稀缺,尽管交付过程困难,但不追踪资金的使用情况并不是简单的官僚失误,而是根本性的信任危机,这可能会妨碍今年在 COP 上达成必要的进展。

Oxfam 的调查还发现,获取世界银行气候融资使用情况的基本信息非常困难,研究团队需要层层筛选复杂且不完整的报告,数据中充满了空白和不一致之处。唐纳德对此表示,这种信息难以获取和理解令人担忧,气候行动所需的数十亿美元的支出不应该让专业研究人员去费力地查找,应该对所有人透明可及,特别是那些应该从气候融资中受益的社区。


HN 热度 329 points | 评论 134 comments | 作者:wallbrownf | 1 day ago #

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

  • 世界银行应提高财务透明度,让公众可以查看每一笔支出
  • 审计报告指出的未记录资金范围较大,可能是因为记录存在冲突和不确定性
  • 缺乏透明的财务记录并不等同于资金被挪用,但无法证明资金未被挪用
  • 在大型组织中,小规模的资金滥用几乎不可避免
  • 透明度有助于防止公共资金的滥用和挪用
  • 完全公开财务可能涉及保密信息,影响进一步调查
  • 世界银行作为国际组织,应对其成员国政府负责,而非直接对公众负责
  • 公民无权查看混合了他国资金的组织的全部财务记录,这与个人财务隐私类似
  • 世界银行的财务透明度标准应与私营部门区分开来,因为涉及国际资金和保密要求

NotebookLlama: An open source version of NotebookLM #

https://github.com/meta-llama/llama-recipes/tree/main/recipes/quickstart/NotebookLlama

NotebookLlama:一个开源的 NotebookLM

这是一个指导性教程/笔记本系列,可以作为参考或课程来构建一个从 PDF 到播客的工作流程。您还将学习如何使用文本到语音模型的实验。

概述

这是一个逐步的想法(pun intended)来完成任务:

  1. 预处理 PDF:使用 Llama-3.2-1B-Instruct 预处理 PDF 并将其保存为 .txt 文件。
  2. 脚本写作:使用 Llama-3.1-70B-Instruct 模型从文本中写出一个播客脚本。
  3. 戏剧性重写:使用 Llama-3.1-8B-Instruct 模型使脚本更具戏剧性。
  4. 文本到语音工作流:使用 parler-tts/parler-tts-mini-v1 和 bark/suno 生成一个对话式播客。

注意事项

  • 在步骤 1 中,我们提示 1B 模型不要修改文本或总结它,只是清除额外的字符或垃圾字符,这些字符可能会由于 PDF 编码而被选中。
  • 在步骤 2 中,您也可以使用 Llama-3.1-8B-Instruct 模型,我们建议尝试并查看是否有任何差异。70B 模型在此处使用,因为它为测试示例提供了稍微更具创意的播客脚本。
  • 在步骤 4 中,请尝试使用其他模型扩展方法。这些模型是基于样本提示选择的,并且在测试中效果最佳。新模型可能听起来更好。

运行笔记本的详细步骤

  • 要求:GPU 服务器或 API 提供者以使用 70B、8B 和 1B Llama 模型。

  • 运行 70B 模型时,您需要一个具有约 140GB 聚合内存的 GPU,以在 bfloat-16 精度下推断。

  • 请确保使用 Hugging Face CLI 登录,然后启动 Jupyter 笔记本服务器,以确保您可以下载 Llama 模型。

  • 您需要 Hugging Face 访问令牌,可以在设置页面获取。然后运行 huggingface-cli 登录并复制和粘贴 Hugging Face 访问令牌以完成登录,以确保脚本可以下载 Hugging Face 模型(如果需要)。

  • 首先,请从此处安装要求,然后运行以下命令:

    
    

git clone https://github.com/meta-llama/llama-recipes cd llama-recipes/recipes/quickstart/NotebookLlama/ pip install -r requirements.txt


**笔记本 1**

此笔记本用于处理 PDF 并使用新型羽毛轻模型将其处理为 .txt 文件。

*   请更新第一个单元格中的 PDF 链接,您想使用它。
*   请尝试更改 Llama-3.2-1B-Instruct 模型的提示,并查看是否可以改善结果。

**笔记本 2**

此笔记本将采用来自笔记本 1 的处理输出,并使用 Llama-3.1-70B-Instruct 模型创造性地将其转换为播客脚本。

*   请尝试实验模型的系统提示,并查看是否可以改善结果。
*   请尝试使用 8B 模型并查看是否有很大的差异。

**笔记本 3**

此笔记本采用来自前一个笔记本的脚本,并使用 Llama-3.1-8B-Instruct 模型使其更具戏剧性。

*   请尝试更改系统提示,并查看是否可以改善结果。
*   我们鼓励测试羽毛轻 3B 和 1B 模型。

**笔记本 4**

最后,我们采用来自最后一个笔记本的结果,并使用 parler-tts/parler-tts-mini-v1 和 bark/suno 模型将其转换为播客。

*   请尝试实验,并查看是否可以改善结果。
*   请注意,目前存在一个问题:Parler 需要 transformers 4.43.3 或更早版本,而管道的步骤 1-3 需要最新版本,因此我们只需在最后一个笔记本中切换版本即可。

---

### HN 热度 301 points | 评论 67 comments | 作者:bibinmohan | 1 day ago

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

- 该项目实际上并不是开源的,缺少许可证文件
- 项目的内容和方法论值得阅读和参考,即使不能直接使用
- 该项目可能是错误地标注为开源,与README中的描述不符
- 代码和模型权重的许可证应该分开明确说明
- NotebookLM的音频效果非常自然,可能是基于多模态模型生成的
- 音频工程师在采访中确认音频和文本是分开生成的
- NotebookLM的音频生成模型比现有的开源或商业模型更先进
- 有时主持人会互相完成对方的句子,这可能是因为模型的序列预测训练目标
- 使用两个独立的语言模型生成对话可能更接近人类对话
- NotebookLM的“播客”功能对非技术人员有极大的吸引力
- 对于不听播客的人来说,NotebookLM的播客功能可能没有实际用途
- 视频和播客形式的内容对于不擅长阅读的人有帮助,但对其他人来说可能浪费时间

---

## Buy payphones and retire

https://computer.rip/2024-10-26-buy-payphones-and-retire.html

这篇文章,讨论了公共电话亭(payphone)的历史和发展。文章指出,公共电话亭曾经是电话公司的专利业务,但是在1968年的Carterfone案件之后,允许客户使用自己的设备连接到电话网络。1970年,Robotguard公司引入了一种新的公共电话亭,称为COCOT(Customer-Owned Coin-Operated Telephone),它可以内部处理硬币支付,并且不需要电话公司的特殊线路。

文章还提到,尽管COCOTs起初发展缓慢,但在1984年AT&T的分拆之后,COCOTs的数量大幅增加。新的COCOTs使用电子控制系统,可以模拟电话交换机的计费决策,并且可以远程编程。这些智能公共电话亭(smart payphones)简化了公共电话亭的运营,并且被电话公司采用。

文章还讨论了公共电话亭行业的发展和变化,包括公共电话亭的技术进步和法律法规的变化。文章最后提到,公共电话亭行业已经经历了很大的变化,但仍然存在一些机会和挑战。

---

### HN 热度 300 points | 评论 171 comments | 作者:cratermoon | 7 hours ago

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

- 被动收入的概念几乎是一个剪刀概念,一方面它显然很好,另一方面如果所有人都能获得被动收入,社会将停滞不前。
- 被动收入的初衷是你做了一些只有你能做的事情,然后这些成果会在你付出最少努力的情况下继续为你赚钱。
- 完全不进行任何生产活动,只投入初始资本就能获得更高回报的被动收入模式通常是骗局。
- 投资并不是骗局,它可以通过不同的资产类别获得回报,但每种投资都有其风险。
- 如果所有人都尝试获取某种特定的收入资产,该资产的价格将变得过高,回报不再值得承担风险和资金的时间价值。
- 并不是每个人都有足够的资本来购买美国国债,因此并不是每个人都能成为赢家。
- 被动收入对个人来说可能不是骗局,但对整个社会而言,如果每个人都试图通过拥有某些资产来赚钱,而不提供任何服务,这将不可持续。
- 通过投资支持的公司和政府项目,那些没有直接投资的人也可能间接受益。
- 资本主义的基本定理表明,富人通过其财富和资本配置能力获得回报,这既促进了社会进步,也加剧了阶级分化。

---

## Using SQLite as storage for web server static content

https://clace.io/blog/sqlite/

Clace 是一个开源项目,旨在为团队内部工具提供一个安全的平台。Clace 可以用来开发呈现简单 Web UI 的后端操作,并且实现了一个应用服务器,用于托管容器化的 Web 应用程序。

背景
Clace 主要用于托管 Web 应用程序,特别是内部工具。Clace 提供了通常由 Web 服务器和应用服务器分别处理的功能。当 Clace 开发开始时,第一个决定就是如何存储应用程序数据(文件)和元数据。应用程序元数据显然应该存储在数据库中,因为应用程序是动态创建的。应用程序数据(静态文件、应用程序代码、配置文件等)通常由大多数 Web 服务器存储在文件系统中。

使用 SQLite 存储文件
对于 Clace,决定使用 SQLite 来存储应用程序文件,而不是使用文件系统。主要原因是为了实现原子版本更新。当更新应用程序时,由于可能有很多文件需要更新,使用数据库可以在事务中原子地更新所有文件。这样可以防止在版本更新期间提供破碎的 Web 页面。

Clace 将所有文件上传到 SQLite 数据库中,文件可以从 GitHub 或本地磁盘上传。只有在开发模式下,才使用本地文件系统。

使用 SQLite 的好处
使用 SQLite 存储文件的决定带来了许多额外的好处(有些是意想不到的)。

事务更新:这是主要的好处。更新多个文件可以在一个事务中完成。隔离确保在更新期间没有破碎的 Web 应用程序。

部署回滚:事务的另一个好处是可以在出错时回滚部署。如果多个应用程序正在更新,则可以在一个事务中回滚所有更新。回滚数据库事务比清理文件系统上的文件更容易。

文件去重:Clace 自动版本化所有更新。这可能会导致很多重复的文件。文件数据存储在一个表中,使用 SHA256 散列作为主键存储文件内容。这意味着即使多个版本的应用程序有相同的文件,文件内容也只存储一次。

跨应用程序去重:每个生产应用程序在 Clace 中都有一个分阶段应用程序。应用程序可以有多个预览应用程序。这可能会导致很多文件重复。使用数据库可以避免所有重复,即使在应用程序之间,也有很多文件有相同的内容。

备份:使用 SQLite 意味着备份很容易。整个系统的状态,包括元数据和文件,可以使用 SQLite 备份工具轻松备份。

内容散列:对于浏览器上的内容缓存,Web 服务器返回 ETag 标头。使用数据库存储文件使得可以在文件上传时保存内容 SHA256 散列,而不需要以后重新计算。

压缩:文件内容以 Brotli 压缩格式存储在 SQLite 表中。数据库方法的好处是可以轻松地以多种格式存储内容。可以通过添加列来添加 GZip 压缩数据和未压缩数据。

性能
对于 Clace,SQLite 数据库方法提供了出色的性能。没有等效的实现来比较,所以没有进行直接的基准测试。根据 SQLite 团队的基准测试,SQLite 在某些工作负载下可以比直接使用文件系统更快。

多节点支持
Clace 目前在单个节点上运行。当添加多节点支持时,计划使用共享的 Postgres 数据库代替本地 SQLite 存储元数据和文件数据。这将带来延迟问题。计划使用本地 SQLite 数据库作为文件缓存,以避免访问 Postgres 时的延迟。

为什么这种方法不常见?
使用文件系统的主要原因是便利性。文件更新可以使用任何文件系统工具完成:rsync、tar 等都可以用于复制文件。另一个原因可能是历史原因:在有良好的关系数据库可用之前,文件系统就是使用的方式。使用数据库意味着需要某种 API 接口来上传文件,这并不总是可行。

---

### HN 热度 253 points | 评论 118 comments | 作者:ajayvk | 1 day ago

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

- 使用SQLite作为存储静态内容的方法在几年前就已经有人尝试过,性能表现良好,但实际应用不多。
- SQLite可以用来存储地图瓦片,通过MBTiles格式实现。
- Clace框架支持使用Go模板和HTMX构建超媒体驱动的UI,并提供内容哈希文件名功能,简化文件引用。
- SQLite的持久连接和内置缓存机制可以减少上下文切换,提高静态文件读取速度。
- 通过内容哈希命名文件可以避免浏览器加载时出现新旧资源混合的问题,但需要确保所有资源引用都使用具体的内容哈希或版本名。
- 使用SQLite存储静态内容的备份比文件系统更复杂,文件系统可以进行更细粒度的备份。
- 为了避免过多的系统调用和用户空间与内核之间的数据复制,任何方法都可能比文件系统快35%。
- SQLite可以作为元数据存储,与文件系统结合使用,实现更灵活的资源管理和版本控制。
- 通过内容哈希或版本号命名资源文件,可以确保浏览器加载的资源版本一致性,避免更新过程中出现页面损坏。
- SQLite可以被挂载为文件系统,使用FUSE实现,但这种方式可能不如直接使用文件系统方便。
- 在某些情况下,子资源可能需要独立于HTML文档进行版本控制,以便单独更新而不影响整个页面的缓存。

---

## Write code that is easy to delete, not easy to extend (2016)

https://programmingisterrible.com/post/139222674273/write-code-that-is-easy-to-delete-not-easy-to

这篇文章讨论了如何编写易于删除的代码。作者认为,编写可重用的代码会使代码更难以改变和删除。相反,作者建议编写易于删除的代码,通过复制和粘贴代码,避免创建依赖关系,分层代码,写更多的样板代码,避免写样板代码,最后写一个大块的代码。作者认为,这样做可以使代码更容易维护和改变。

文章的第一步是不要写代码,作者认为,避免写代码是最简单的方法。第二步是复制和粘贴代码,作者认为,这样做可以避免创建依赖关系。第三步是不要复制和粘贴代码,作者认为,这样做可以避免代码冗余。第四步是写更多的样板代码,作者认为,这样做可以使代码更容易使用。第五步是避免写样板代码,作者认为,这样做可以避免代码冗余。最后一步是写一个大块的代码,作者认为,这样做可以使代码更容易维护和改变。

文章还讨论了分层代码的重要性,作者认为,分层代码可以使代码更容易维护和改变。作者还提到了 Requests 和 urllib3 的例子,说明了如何通过分层代码来使代码更容易使用。

---

### HN 热度 247 points | 评论 88 comments | 作者:stanulilic | 16 hours ago

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

- 简单的代码更健壮,但处理边缘情况也很重要
- 从易于删除的代码开始,可以更灵活地消除边缘情况
- 过度简化可能导致底层错误,影响上层代码
- Wayland相比X11更复杂,因为屏幕相关功能需要通过多个可选扩展实现
- 清晰的策略与机制分离是编程的重要原则,X11的设计虽然有缺陷,但Wayland的设计难以维持
- 自动测试可以帮助确保边缘情况在修改代码时不会出错
- 第一次写代码,第二次复制,第三次考虑重构
- 代码重复有时会导致相同的bug多次出现,但过度避免重复也会增加复杂性
- 代码是否需要扩展是决定是否重构的关键,避免不必要的抽象
- 代码是廉价的,复杂性会限制系统的扩展,尤其是在早期项目中
- 早期项目中避免抽象CRUD操作,以免创建复杂的准ORM层

---

## ATL: A layer to run Android apps on Linux

https://gitlab.com/android_translation_layer/android_translation_layer/-/blob/master/README.md

Android Translation Layer 是一个允许在 Linux 系统上运行 Android 应用的翻译层。它可以通过命令行运行,支持自定义数据目录和apk文件的安装。


![](https://simages.sanxingwushen.xyz/img/BkX1bmaQBoCyjixFYIVcFPTTnGd.png)

**构建和运行**

要构建 Android Translation Layer,需要按照 build 文档中的步骤进行。运行时,可以使用 `RUN_FROM_BUILDDIR` 环境变量指定运行目录,并使用 `LD_LIBRARY_PATH` 环境变量指定库路径。

**运行示例**

可以使用以下命令运行一个示例应用:

RUN_FROM_BUILDDIR= LD_LIBRARY_PATH=./ ./android-translation-layer /path/to/test_apks/org.happysanta.gd_29.apk -l org/happysanta/gd/GDActivity

**应用数据**

Android Translation Layer 使用默认数据目录 `~/.local/share/android_translation_layer/` 存储应用数据。每个应用的数据目录以apk文件名命名,例如 `~/.local/share/android_translation_layer/[apk-name]_`。

**安装apk**

可以使用 `--install` 命令行选项安装apk文件。安装后,apk文件会被复制到 `_installed_apks_` 目录中,并使用xdp门户安装一个.desktop文件。

**调整**

可以使用命令行选项指定初始分辨率,例如:

android-translation-layer path/to/org.happysanta.gd_29.apk -l org/happysanta/gd/GDActivity -w 540 -h 960

**潜在问题**

在X11上,Gtk可能会决定使用GLX,这会完全破坏EGL依赖的代码。可以使用 `GDK_DEBUG=gl-egl` 环境变量强制使用EGL。在Apple Silicon上,页面大小是非标准的,ART可能会遇到问题,可以使用 `-X '-Xnoimage-dex2oat' -X '-Xusejit:false'` 命令行选项强制使用解释器。

**贡献**

如果您想贡献代码,可以按照以下步骤进行:

1. 查看应用失败的位置(通常是类或方法未找到)。
2. 创建满足应用需求的桩代码。
3. 一旦应用启动,可以实现缺失的功能。
4. 查看文档中的快速帮助和架构描述。

**路线图**

* 修复上述问题
* 修复丑陋的黑客
* 实现更多功能
* 探索使用bubblewrap强制安全策略

---

### HN 热度 209 points | 评论 32 comments | 作者:AbuAssar | 23 hours ago

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

- 该项目目前还不是即插即用,需要手动创建满足应用需求的存根
- 一些应用会通过设备名称、是否运行签名版Android等简单启发式方法检测运行环境,绕过这些检测通常可以在Stackoverflow找到方法
- 与Anbox相比,ATL是一个使用GTK进行渲染的自定义Android运行时,但实现难度更大
- Waydroid作为Anbox的继任者,每个应用可以独立运行在单独的窗口中,支持鼠标、键盘和触摸操作
- Waydroid并不需要linux-zen内核,只需要支持binder模块的内核即可
- ATL有望在Linux手机上提供更好的即插即用体验,减少配置复杂性
- 如果Android二进制文件是为ARM架构编译的,而Linux运行在x86架构上,则需要额外的ARM到x86翻译层
- Android本身已经包含了ARM到x86的翻译层
- ATL与Wine/Proton类似,都是在更高层次上实现应用与平台库之间的接口
- Android应用运行在Linux内核上,但不运行在GNU/Linux发行版上,因此使用GNU/Linux这一术语有其必要性
- ATL对Pinephone用户来说是个好消息

---

## 418 I’m a teapot

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/418

HTTP 418 “我是一个茶壶” 状态响应代码表示服务器拒绝冲泡咖啡,因为它永久性地是一个茶壶。根据这个标准,如果一个兼具咖啡和茶功能的壶暂时缺少咖啡,则应该返回 503 状态码。



这个错误是对 “超文本咖啡壶控制协议”(Hyper Text Coffee Pot Control Protocol)的引用,该协议最初是在 1998 年和 2014 年的愚人节玩笑中定义的。一些网站会使用这个响应来处理他们不想处理的请求,例如自动化查询。



总的来说,418 状态码是一个幽默的代码,用于表明服务器的某种限制或拒绝,而不是常规的 HTTP 错误响应。

---

### HN 热度 208 points | 评论 132 comments | 作者:csomar | 19 hours ago

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

- 使用418状态码回复非法机器人请求既有趣又便于日志过滤
- FreeSolitaire.win是一款优秀的单机纸牌游戏,适合作为PWA,离线也能玩
- 建议增加倒置模式,使手机用户更容易操作
- 可以通过CDN在边缘处拦截请求,提高响应速度
- 444状态码比418更快,但不如418有趣
- 使用fail2ban可以根据Nginx日志永久封禁频繁请求非法URL的地址
- 在应用中加入表情符号会引发不必要的讨论,增加沟通成本
- 有些人不喜欢在工作中加入无意义的趣味元素,认为这会降低专业性并增加维护成本
- 工程师在提交信息中加入火箭表情可以稍微提升心情,值得鼓励
- 管理层和客户可能会因为这些小细节而分心,影响对主要功能的关注

---

## Ibis: Federated Wikipedia alternative

https://ibis.wiki/article/Announcing_Ibis,_the_federated_Wikipedia_Alternative

**Ibis:一个去中心化的维基百科替代品**

维基百科是最受欢迎的在线百科全书,但它存在许多问题,例如编辑人员的滥用职权、信息的不准确等。为了解决这些问题,作者提出了一个去中心化的维基百科替代品——Ibis。

**Ibis 的特点**

Ibis 使用ActivityPub协议,允许不同实例之间的文章同步和交互。用户可以创建、读取和编辑文章,每篇文章都有一个编辑历史,显示所有的修改记录。Ibis 还支持多语言和多主题,用户可以创建自己的实例,专注于特定的主题或领域。

**Ibis 的优势**

Ibis 的去中心化设计使得它比传统的维基百科更安全、更灵活。用户可以自由选择他们信任的实例,并且可以轻松地创建自己的实例。Ibis 还支持多样化的内容,用户可以创建自己的主题和领域,丰富整个维基百科社区。

**Ibis 的现状**

Ibis 仍然处于早期开发阶段,缺乏许多重要的功能,例如用户个人设置、讨论功能、语言本地化等。作者呼吁其他开发者加入项目,帮助完善 Ibis。同时,作者也接受捐赠,支持 Ibis 的进一步开发。

**如何参与**

如果您想参与 Ibis 的开发,可以通过以下渠道联系作者:

* Github
* Matrix
* Lemmy

如果您没有时间或技能参与开发,也可以通过以下方式捐赠:

* Liberapay
* Bitcoin
* Monero

---

### HN 热度 196 points | 评论 136 comments | 作者:mostcallmeyt | 1 day ago

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

- Ibis 项目指出了维基百科的一些问题,但未详细说明如何解决这些问题
- 维基百科的编辑历史公开,这是其主要优势之一
- 联邦制意味着个人可以托管实例,并与其他独立实例通信,因此 Ibis 比维基百科更分散
- 维基百科的编辑历史虽然公开,但实际上很少有人查看,因为信息量太大
- Ibis 项目引用的维基百科丑闻发生在十多年前,且来源不可靠
- 维基百科存在一些问题,但可以通过学习过去的错误并进行改进,而不是完全放弃
- 维基百科在某些语言版本中,特别是在受审查和宣传影响的国家,文章可能偏向一方,难以改变
- 联邦制可能允许不同观点的维基百科版本存在,但其内在动态可能无法完全解决问题

---