2025-01-06 Hacker News Top Stories #
- 研究人员设计可穿戴设备,能够更准确地监测血糖水平。
- 一个混乱的实验改变了我对 AI 代码分析的看法。
- NAT 穿透的工作原理。
- 网页设计中常见的烦人元素。
- Show HN: 困扰于 CSS Flexbox?这个 Playground 是为你准备的。
- Guten: 一个定制化的热敏打印机。
- 从手机应用程序中提取 AI 模型。
- 如何通过一个关于男性生殖器的笑话赚到 100,000 美元。
- 为什么我们选择 HTTP 长轮询而非 WebSockets。
- ELKS:16 位英特尔处理器上的 Linux。
Researchers design wearable tech that can sense glucose levels more accurately #
https://uwaterloo.ca/news/media/no-more-needles-tracking-blood-sugar-your-wrist
滑铁卢大学的工程师们开发了一种新技术,旨在帮助糖尿病患者非侵入性地监测血糖水平。这项技术的关键在于将卫星气象监测技术缩小到可以放入智能手表中的规模,从而实现对穿戴者健康信息的实时传输。
目前,糖尿病患者通常需要频繁刺破手指或使用带有微针的侵入性贴片来监测血糖水平。然而,由于新系统的开发,患者将不再需要这种方法,从而降低了疼痛感和感染风险,改善了生活质量。
该系统由滑铁卢大学电气与计算机工程系的副教授乔治・沙克博士及其团队研发。沙克博士表示:“我们已经开发出可以准确感测血糖水平的雷达技术,这项技术能更好地感知血糖,就像眼镜能改善视力一样。”
这项技术的工作原理类似于天气卫星使用雷达监测地球大气变化,沙克博士强调他们已经找到了将这些雷达系统微型化的方法,可以用于可穿戴设备,利用雷达技术观察人体内的变化。
系统的关键组成部分包括一个雷达芯片,能够通过身体发送和接收信号;一个经过工程设计的 “超表面”,用于增强信号的聚焦精度;以及使用人工智能算法处理雷达信号的微控制器。这些算法通过学习数据来提高读数的准确性和可靠性。
这项技术的独特之处在于其开发的超表面,进一步提高了雷达的分辨率和灵敏度,使得血糖检测更加精准。沙克博士指出,与现有需要穿透皮肤的方法不同,该系统完全是非侵入性的,能够检测到血糖水平的微小变化。
尽管目前的设备通过 USB 电缆供电,但团队计划优化为电池供电,以提高便携性。最终,他们希望这项技术能用于收集其他健康相关数据,例如血压。
目前,团队正在与行业合作伙伴合作,计划将这项技术应用于下一代可穿戴设备中。沙克博士表示:“我们已经有一个最小可行产品正在进行临床试验,尽管还有更多工作要做,但我们离市场化设备已经更近了。”
他们的研究论文《用于生物医学应用的雷达近场传感与超表面》最近被《自然通讯工程》期刊刊登。
HN 热度 356 points | 评论 143 comments | 作者:ndrwnaguib | 22 hours ago #
https://news.ycombinator.com/item?id=42599189
- CGM 并不特别具有侵入性,尤其是与多年来的指尖刺戳相比。
- 当前 CGM 测量的是间质液中的葡萄糖水平,而不是直接测量血液中的葡萄糖水平,存在一定的延迟。
- 即使有 15 分钟的延迟,对于糖尿病患者来说也是可以接受的,尤其是在夜间和长时间监测的情况下。
- CGM 的精度可能不如直接测量血液中的葡萄糖水平,但对于糖尿病患者来说,仍然是一个有用的工具。
- 未来可能会有更准确的非侵入性 CGM 技术问世。
- 对于 2 型糖尿病患者来说,CGM 可能是一个更好的选择,因为他们不需要频繁测量血糖水平。
- CGM 的成本可能是一个问题,尤其是对于需要长期使用的患者来说。
- 未来可能会有更便宜的 CGM 选项问世。
- 闭环 CGM 和胰岛素泵系统可能是糖尿病患者的未来。
- 闭环系统可能会使用双激素(胰岛素和胰高血糖素)来控制血糖水平。
- 糖原储存不应该被用于常规血糖控制,因为它们是应急储备。
- 低血糖意识是一个需要学习和发展的技能。
- 家长需要帮助孩子管理 1 型糖尿病,包括使用 CGM 和胰岛素泵。
A messy experiment that changed how I think about AI code analysis #
https://nmn.gl/blog/ai-senior-developer
本文是博客文章,作者 Namanyay 分享了自己在开发 AI 代码分析工具时的经验和收获。文章讲述了作者如何教会 AI 像高级开发人员一样阅读代码,包括如何根据功能和大小对文件进行分组,如何根据上下文提示 AI 分析代码,以及如何让 AI 理解代码的历史和演变。
作者指出,传统的 AI 代码分析工具往往像新手开发人员一样阅读代码,缺乏对代码的深刻理解和历史背景。作者通过改变 AI 的分析方式,包括对文件进行分组和提供上下文提示,成功地让 AI 像高级开发人员一样分析代码。
文章还提到了 AI 分析工具的潜在应用,包括识别代码中的技术债务、建议架构改进、捕捉安全问题等。作者认为,AI 代码分析工具的未来不仅仅是生成代码,而是让 AI 真正理解代码的含义和历史背景。
文章最后,作者提出了几个开放的问题,包括如何刷新和保留历史理解、如何处理代码中的冲突模式、如何暴露分析中的不确定性等。文章结尾处,作者邀请读者在 Twitter 上讨论这些问题。
HN 热度 352 points | 评论 193 comments | 作者:namanyayg | 10 hours ago #
https://news.ycombinator.com/item?id=42601847
- 这篇文章虽然结果不够系统化和科学化,但仍然有价值,因为它分享了使用 LLM 的新颖方法和提示。
- 人们对 AI 工具的批评可能是因为他们感到自己的工作受到威胁。
- 有些人认为,AI 工具可以带来实质性的好处,但需要了解如何有效地使用它们。
- 过度批评 AI 工具可能是因为人们缺乏安全感和对变化的恐惧。
- 仅仅因为 AI 工具不能取代人类的工作并不意味着它没有价值。
- AI 工具可以帮助我们完成一些重复性和耗时的任务,从而提高工作效率。
- 在使用 AI 工具时,我们需要权衡其带来的好处和潜在的风险和缺陷。
- 有些人可能会因为 AI 工具的出现而感到自己的工作受到威胁,但这并不意味着我们应该拒绝使用它们。
- 我们应该尝试找到使用 AI 工具的合适方式,而不是简单地批评它们。
- AI 工具可以帮助我们完成一些任务,但我们仍然需要人工来 review 和校正结果。
- 在使用 AI 工具时,我们需要考虑到其可能带来的潜在问题和风险。
How NAT Traversal Works (2020) #
https://tailscale.com/blog/how-nat-traversal-works
本文讨论了如何实现 NAT(网络地址转换)穿透,以便在两个设备之间建立直接的 UDP(用户数据报协议)连接。文章首先介绍了 NAT 和防火墙的基本概念,然后讨论了如何使用 UDP 协议来实现 NAT 穿透。
文章指出,为了实现 NAT 穿透,需要两个条件:首先,协议应该基于 UDP;其次,需要直接控制网络套接字,以便发送和接收网络包。文章还提到,使用 TCP 协议也可以实现 NAT 穿透,但这会增加复杂性,并可能需要内核定制。
文章接着讨论了防火墙的工作原理,特别是状态防火墙。状态防火墙会记住之前看到的包,并使用这些信息来决定是否允许新的包通过。文章指出,为了实现 NAT 穿透,需要找到一种方法来让防火墙允许入站包,即使这些包不是由防火墙所知的出站包引起的。
文章提出了几种方法来实现 NAT 穿透,包括使用协调服务器来共享 IP 地址和端口信息,以及使用 UDP 包来建立连接。文章还讨论了使用 QUIC(快速 UDP 互联网连接)协议来实现可靠的 UDP 连接。
总的来说,本文提供了一个详细的概述,介绍了如何实现 NAT 穿透,以便在两个设备之间建立直接的 UDP 连接。文章讨论了防火墙的工作原理,UDP 协议的使用,以及几种方法来实现 NAT 穿透。
HN 热度 330 points | 评论 66 comments | 作者:hhthrowaway1230 | 14 hours ago #
https://news.ycombinator.com/item?id=42600846
- TCP 穿透比 UDP 穿透更复杂,但差异不大,值得尝试
- 即使没有 NAT,状态防火墙也会阻碍 P2P 连接
- UDP 穿透在某些网络中可能被阻止,TCP 穿透是一个可行的替代方案
- TCP 穿透需要记录连接状态,可能导致路由器资源耗尽
- TCP 穿透在某些情况下可能被误认为是 SYN 洪水攻击
- 使用 NTP 计算时钟偏差可以提高 TCP 穿透的准确性
- Python 实现 TCP 穿透需要注意时间敏感性和优先级
- 对称 NAT 的绕过是一个更大的挑战,需要更多的研究和开发
Web page annoyances that I don’t inflict on you #
http://rachelbythebay.com/w/2025/01/04/cruft/
这篇文章作者讨论了自己网站上不采用的一些常见网页设计元素和功能,目的是提供一个更简单、更干净的阅读体验。以下是文章的详细总结:
- ** 无 JavaScript**:网站内容可以在最简单的文本浏览器中显示,不依赖 JavaScript,使得即使是老旧的浏览器也能正常读取。
- ** 无强制 SSL/TLS**:用户可以选择是否使用安全连接,如果无法使用,也没有问题。
- ** 无跟踪 **:作者不追踪用户的阅读时间、不使用 Cookies、不使用 IP 地址进行识别,仅在必要时过滤滥用。
- ** 无弹出窗口 **:没有任何会打断用户阅读的弹出窗口或订阅请求。
- ** 无自动播放媒体 **:没有自动播放的视频或音频,相关音频需要用户主动点击播放。
- ** 无离开提示 **:用户在关闭页面或标签时不会收到 “您确定要离开吗” 的提示。
- ** 显示日期 **:每篇文章都有明确的日期,用户可以清楚地知道内容是否过时。
- ** 无悬浮元素 **:页面不会有随滚动而移动的元素,如固定的导航条,用户可根据需要手动滚动回顶部
- ** 无分享按钮 **:没有社交媒体分享或 “喜欢” 按钮,这些通常会向外部服务器发送用户信息。
- ** 无隐藏追踪图标 **:没有隐形图标或其他追踪技术,确保用户的访问不会被监控。
- ** 一次性加载 **:页面一次性加载完成,用户可以在断网后继续阅读。
- ** 图片有 ALT 文本 **:所有图片都附有描述性文本,确保可访问性。
- ** 无点击追踪 **:链接直接指向目标,没有附加跟踪参数,用户点击链接的行为不被记录。
- ** 无重定向 **:用户访问的每个链接都是直接指向的,不经过其他网站。
- ** 无误导性推荐 **:没有低质量的 “你可能感兴趣的内容” 推荐框。
- ** 页面底部保持不变 **:到达页面底部后不会有更多内容插入,用户需要更多内容时可以主动点击。
- ** 无广告 **:网站上没有通过流量产生收入的广告,作者主要通过出售书籍和小额捐赠来支持网站运营。
- ** 所有资源同源 **:页面加载的所有内容都来自同一来源,不会调用外部 CDN 或资源,减少出错的可能性。
- ** 关注内容 **:作者提到自己倾向于保持网站的简单和稳定,尽量不依赖外部链接,以确保网站内容的持久性。
总之,作者的目标是为读者创造一个干净、直观、不被打扰的阅读环境。
HN 热度 307 points | 评论 161 comments | 作者:todsacerdoti | 22 hours ago #
https://news.ycombinator.com/item?id=42599102
- 对于网页中固定的顶部导航栏(“dick bar”),许多用户认为它占用了宝贵的屏幕空间,尤其是在小屏幕上,影响了阅读体验。
- “dick bar” 会干扰使用空格键进行滚动,导致内容被遮挡,使得阅读变得不便。
- 有些用户建议浏览器应更好地服务于用户的需求,而不是开发者,应该允许用户自定义样式以提升浏览体验。
- 许多人希望能通过配置选项来自定义网页元素,例如颜色和导航条的显示方式,以适应不同用户的需求。
- “pull to refresh” 功能常常导致用户意外重新加载页面,特别是在编辑内容时非常恼人。
- 移动浏览器缺乏 “回到顶部” 功能,建议提供更便捷的页面导航选项。
- 一些用户表示,使用浏览器扩展程序(如 uBlock Origin)来屏蔽烦人的元素是解决问题的一种有效方式。
- 对于不强制使用 SSL/TLS 的观点,有人认为这应是个人选择,而不是强制要求。
- 大多数网页设计师并不想造成用户困扰,问题往往来自于商业利益驱动。
- 浏览器在提供功能时,往往忽视了用户的实际体验,导致许多网站的可用性降低。
Show HN: Struggle with CSS Flexbox? This Playground Is for You #
https://yoavsbg.github.io/css-flexbox-playground/
该网页是一个 CSS Flexbox Playground,允许用户实验不同的 flex 属性来理解它们如何影响布局。
用户可以调整控件来实时看到变化,并复制生成的 CSS 代码。网页提供了五个控件:flex-direction、justify-content、align-items、flex-wrap 和 Copy 按钮。
用户可以选择不同的值来改变 flex 容器的布局方式。网页还提供了一个示例容器,展示了当前选择的 flex 属性的效果。用户可以通过调整控件来观察不同 flex 属性的影响,并复制生成的 CSS 代码来应用于自己的项目。
该网页由 Yoav Sabag 创建,提供了一个交互式的学习环境,帮助用户更好地理解 CSS Flexbox 的工作原理。
HN 热度 266 points | 评论 93 comments | 作者:yoav_sbg | 15 hours ago #
https://news.ycombinator.com/item?id=42600586
- flexbox 的属性和值命名不直观,难以理解和记忆。
- 使用 Chrome 的 CSS 检查器可以更直观地理解和设置 flexbox 属性。
- flexbox 的设置需要考虑到盒子内盒子的布局和内容的填充和溢出。
- Tailwind CSS 的命名方式使得 flexbox 更加混乱。
- 了解 flexbox 的主轴和交叉轴可以更好地理解和使用 flexbox。
- grid 布局比 flexbox 更难理解和使用。
- grid 布局的命名方式不直观,难以理解和记忆。
- grid 布局的 fr 单位难以理解和使用。
- grid 布局需要考虑到行和列的布局和内容的填充和溢出。
- flexbox 和 grid 布局的使用需要考虑到元素的层次结构和布局方式。
Guten: A Tiny Newspaper Printer #
Guten 是一个定制化的热敏打印机,每天早上 7:00 AM 自动打印一份小报纸。小报纸的内容包括用户的日程安排(从 Google 日历中获取)、一首诗和当前的新闻(来自纽约时报)。
Guten 得到了朋友和家人的好评,因此作者想知道,如果有机会,人们是否会对使用 Guten 感兴趣。作者提供了一个感兴趣的表格,供有兴趣的人填写。
HN 热度 248 points | 评论 103 comments | 作者:thunderbong | 21 hours ago #
https://news.ycombinator.com/item?id=42599599
- thermal paper feels kinda yucky: it has weird chemicals in it, it fades super quickly, and cannot be recycled.
- 我们应该有 miniaturized 80s electrostatic screen 来代替 thermal paper。
- 使用 thermal paper 每天来打印新闻,会产生大量的浪费。
- thermal paper 对健康有害。
- 我们应该使用环保的 thermal paper 替代品。
- 我们应该减少使用 thermal paper,转而使用电子设备来获取新闻。
- thermal paper 的使用会产生大量的垃圾。
- 我们应该尝试使用其他材料来代替 thermal paper。
- thermal paper 的使用会对环境产生负面影响。
- 我们应该尽量减少使用 thermal paper。
Extracting AI models from mobile apps #
https://altayakkus.substack.com/p/you-wouldnt-download-an-ai
这篇文章讨论了从移动应用中提取人工智能模型的过程,特别是针对微软的 Seeing AI 应用的货币识别功能。作者指出,许多企业正在将 AI 模型直接集成到移动设备上,这种做法在需要快速推断和离线访问的应用中尤为重要。
文章首先介绍了 Seeing AI 应用,这是一款专为视觉障碍人士设计的工具,能够通过摄像头识别物体、文件和货币,并通过语音朗读其内容。为了深入研究这一应用,作者使用 apktool 对 Android 应用的 APK 文件进行了反编译,发现了一个名为 “currency” 的文件,大小超过 16MB,以及一个伴随的 “currency-labels.txt” 文件。作者注意到,这个文件可能是加密的,因为无法直接提取有用信息。
接着,作者讨论了如何尝试逆向工程应用以解密这个货币文件,但他更享受的是完成项目的过程,而不是单纯的逆向工作。最终,作者确认该应用使用了 TensorFlow Lite 框架,这是一种为轻量级设备设计的深度学习框架。他进一步利用 Frida 这个动态插桩工具来追踪应用程序的函数调用,并重写方法,以便将模型提取到磁盘上。
经过一些实验,作者成功提取到了货币检测模型(currency.tflite),并使用 Netron 工具验证了其内容,确认模型及其权重和偏差被成功提取。最后,作者提醒读者,提取的 AI 模型属于知识产权,在使用或修改任何提取的模型之前,需要得到模型所有者的明确许可。
整篇文章结合了技术细节与个人反思,展示了在移动应用中提取 AI 模型的复杂性与挑战,同时也强调了法律与伦理问题的重要性。
HN 热度 237 points | 评论 172 comments | 作者:smoser | 11 hours ago #
https://news.ycombinator.com/item?id=42601549
- 从手机应用程序中提取的 AI 模型仅是第一步,真正的挑战在于逆向工程出 tokenizer 和输入转换,以便在模型中使用。
- 使用 Netron 和 Frida 等反向工程技术可以找出输入预处理步骤和正确的输入编码。
- 仅仅拥有模型文件并不足以运行模型,还需要了解输入 tokenization 格式和模型的输入输出类型。
- 使用 Firebase 主机模型并在使用后删除模型可以提高安全性,但这并不能阻止模型被提取。
- 主机模型的存储 API 看起来与文件存储类似,但可以用于云端推理。
- 同态加密可以用于模型加密,但目前计算成本太高。
- AI 模型被视为知识产权,这可能是一种讽刺,因为这些模型通常是基于从互联网上收集的大量数据训练的。
- 使用开源模型和开源数据训练的模型可以更容易地获取和使用。
The funniest thing I ever did – a.k.a. “How To Make $100K From A Dick Joke.” #
https://imgur.com/gallery/KZ4u3c4
这个网页是一篇文章,讲述了作者如何通过一个简单的想法赚到 100,000 美元。文章的标题是"How To Make $100K From A Dick Joke"(如何通过一个关于男性生殖器的笑话赚到 100,000 美元)。
文章的作者在 2015 年 2 月的时候,正在当酒保。一天,一群新娘派对的女性来到酒吧,带来了很多与男性生殖器有关的东西,比如男性生殖器形状的吸管、充气娃娃和糖果。作者突然想到,如果有人想要告诉别人“去他妈的”,可以送给他们一袋男性生殖器形状的糖果,附上一张纸条,上面写着“EAT A BAG OF DICKS”(吃一袋男性生殖器)。
作者发现,这个想法并不是新的,但是没有人把它变成一个产品,尤其是没有人卖可以匿名寄送给别人的产品。于是,作者决定创办一个网站,卖这种男性生殖器形状的糖果,并提供匿名寄送服务。
文章的作者还提到了一个类似的网站,叫做 SHIPYOURENEMIESGLITTER(给你的敌人寄送闪粉),这个网站会寄送闪粉到客户指定的地址。作者认为,自己的网站和产品比闪粉更有趣和有用,因为男性生殖器形状的糖果可以作为一种无害的、匿名的恶作剧寄送给朋友或敌人。
总的来说,这篇文章讲述了作者如何通过一个简单的想法创办一个成功的网站和产品,并赚到 100,000 美元。
HN 热度 211 points | 评论 89 comments | 作者:imglorp | 15 hours ago #
https://news.ycombinator.com/item?id=42600595
- eBay 没有有效的机制来防止买家欺诈和滥用系统
- eBay 的搜索功能很差,尤其是在寻找特定物品时
- eBay 的买家保护政策偏向于买家,卖家容易受到欺诈和损失
- eBay 上的商品质量参差不齐,容易买到假货或低质量商品
- eBay 的竞争对手,如 Facebook Marketplace 和 Aliexpress,正在蚕食其市场份额
- eBay 尚未被彻底颠覆,但其模式已经过时
- 专业卖家和大批量交易者正在取代个人卖家
- eBay 的安全性和欺诈防范措施仍然不足
- 买家和卖家都需要小心谨慎,避免受骗和损失
Back to basics: Why we chose long-polling over websockets #
https://www.inferable.ai/blog/posts/postgres-nodejs-longpolling.mdx
这篇文章详细介绍了在使用 Node.js、TypeScript 和 PostgreSQL 构建实时系统时,为什么选择 HTTP 长轮询而非 WebSockets,并提供了实施的实用指南。
挑战:实时更新的可扩展性 #
我们的系统面临两个主要挑战:
- ** 工人节点更新 **:数百个工人节点需要及时了解新任务,而不能对 Postgres 数据库造成过大压力。
- ** 代理状态同步 **:代理需要高效地获取执行和聊天状态的实时更新。
长轮询与 WebSockets 的比较 #
- ** 短轮询 **:服务器立即响应,无论是否有数据。
- ** 长轮询 **:服务器保持连接,直到有新数据可用或超时。
- WebSockets:建立持久连接,随时可以发送数据。
长轮询的比喻为:像一列火车在车站等待乘客上车,只有在有乘客的情况下才会发车,否则在超时后会离开。这样可以实现更高效的资源使用。
实施细节 #
实现的核心函数为 getJobStatusSync
,其主要流程如下:
- 接受
jobId
、owner
和ttl
(超时时间)参数。 - 进入循环,定期查询数据库,检查任务状态。
- 若状态为 “成功” 或 “失败”,则返回结果;若未达到 TTL 且没有结果,则继续查询。
数据库优化 #
为提高查询效率,必须对 Postgres 数据库进行适当索引,例如创建以 id
和 cluster_id
为索引的表。
长轮询的隐性优势 #
- ** 可观察性 **:无需修改现有的观察和日志记录系统,因为 HTTP 请求和响应的标准指标可以直接使用。
- ** 简单的认证 **:不需要为 WebSockets 实现新认证机制,可以继续使用现有的 HTTP 认证。
- ** 基础设施兼容性 **:避免了企业防火墙阻止 WebSockets 连接的问题,简化了基础设施配置。
- ** 操作简便 **:无须担心 WebSocket 连接断开的问题,易于调试和故障排除。
客户端实现 #
客户端代码保持简单,只需使用 HTTP 客户端,无需特殊的 WebSocket 库。重连处理通过基本的重试逻辑自动实现。
为何不选择 ElectricSQL #
虽然 ElectricSQL 是一个有趣的解决方案,但我们的使用场景要求对消息传递机制有更高的控制,因此选择了原生的长轮询。
最佳实践 #
在实施长轮询时,必须遵循几个关键最佳实践:
- ** 强制实施 TTL**:每个连接必须有超时时间,以避免连接重置错误。
- ** 客户端可配置的 TTL**:客户端可以指定 TTL,但服务器需施加最大限制。
- ** 基础设施感知的 TTL 设置 **:最大 TTL 应低于整个基础设施中的最小 HTTP 连接超时。
- ** 合理的数据库轮询间隔 **:在数据库查询之间引入合理的等待时间,以防止对数据库的过度请求。
- ** 可选的指数退避 **:在查询失败时逐渐增加轮询间隔,以提高资源使用效率。
WebSockets 的另一面 #
尽管我们认为长轮询是适合我们的解决方案,但 WebSockets 并非不可取,它们在某些情况下依然有效,但需要更多的关注和工程精力来解决可观察性、认证、基础设施、操作和客户端实现等问题。
综上所述,长轮询在我们的特定用例中提供了更大的控制和简单性,而 WebSockets 则需要更复杂的处理和维护。
HN 热度 208 points | 评论 129 comments | 作者:lunarcave | 17 hours ago #
https://news.ycombinator.com/item?id=42600276
- 长轮询有自己的问题,例如客户端超时、服务器超时、代理服务器不支持长轮询等。
- 所有超时问题都是可以配置的,应该调整服务器和客户端的超时时间。
- 长轮询的设计问题不应该归咎于长轮询本身,而应该是开发者的责任。
- 使用队列可以解决长轮询中的竞态条件问题。
- 即使是技术专家,也可能会说出不太明智的话。
- 调整服务器和客户端的超时时间可以解决长轮询中的问题。
- 不应该因为技术专家的名气而不敢提出自己的观点。
- 长轮询的设计问题不应该被忽视,应该被认真解决。
ELKS: Linux for 16-bit Intel Processors #
https://github.com/ghaerr/elks
ELKS 是一个为基于 Intel IA16 架构(16 位处理器:8086、8088、80188、80186、80286、NEC V20、V30 和兼容处理器)的系统提供 Linux-like 操作系统的项目。ELKS 支持网络和安装到硬盘驱动器(HDD)使用 MINIX 和 FAT 文件系统。
ELKS 的内存要求如下:
- 股票图像需要 512k RAM
- ELKS 需要 256k RAM 才能运行,512k 才能真正有用
- 不需要硬件 MMU
- 基于 ROM 的系统可以在 128k RAM 下运行
您可以在线尝试 ELKS,使用 v86 模拟器登录,用户名为“root”,无密码。进入 bin 文件夹,尝试不同的命令。尝试 nxtetris 游戏,按“n”开始游戏。
ELKS 的视频演示:
- ELKS 在 Amstrad PC 2086 上运行(感谢 @pawoswm-arm)
- 在老式 286 MB 上从 1.44MB 软盘引导 ELKS(感谢 @xrayer)
- Epson PC Portable Q150A / Equity LT(Nec V30 8086 - 1989)(感谢 Alejandro)
- 在 ESP32 上通过 IBM PC 模拟器运行 ELKS(感谢 @fdivitto)
ELKS 的截图:
- 在 QEMU 上运行 ELKS
- Olivetti M24 8086 CPU
- ELKS 网络显示 netstat 和进程列表
- 在 PC-9801UV21(NEC V30 CPU)上运行 ELKS Basic
- 在多个控制台上运行 Matrix 和 vi
- 当然还有 Doom
- Telnet 到老式 BBS
资源:
- 与 ELKS 和我们的编程社区相关的其他项目和资源:
- blink16:一个可视化的 8086 模拟器和调试器,能够引导 ELKS 内核进行符号调试,也是一个 ELKS 可执行文件的模拟器。
- Size Optimization Tricks:Justine Tunney 的博客上的一个很棒的文章,介绍了优化代码大小的技巧。
HN 热度 203 points | 评论 104 comments | 作者:emersonrsantos | 1 day ago #
https://news.ycombinator.com/item?id=42596983
- ELKS 可以运行在 16 位英特尔处理器上,并且可以在任何使用传统 “实模式” 的 x86 PC 上运行,实模式下没有 MMU 或硬件保护。
- ELKS 的目标是展示 “小即是美” 的理念,并探索在 64k 代码、64k 数据和 640k RAM 的限制下可以做什么。
- ELKS 可以在 ROM 中运行,例如使用 8018x CPU 和内部 PIT 和 PIC。
- ELKS 可以在 1.44 盘上运行,但需要压缩内核和用户空间工具。
- ELKS 可以在 Amstrad PPC640 上运行。
- ELKS 可以编译 Nethack、Frotz 和 Inform6 等游戏。
- ELKS 的开发者正在努力将其移植到其他平台上,例如 286 和 386 处理器。
- ELKS 的开发者认为,尽管现代硬件已经非常强大,但仍然有必要研究和开发老式系统。
- ELKS 的开发者认为,使用老式系统可以更好地了解计算机的底层工作原理。
- ELKS 的开发者认为,开发老式系统可以帮助人们更好地理解计算机的历史和演变。