给软件开发者准备的优质简报,每日阅读 10分钟。
Put the zip code first
把邮编放在首位
- 美国邮编仅需5位数字即可自动获取城市、州和国家三个字段,但绝大多数网站仍将邮编放在末位,要求用户先输入街道地址、在50个州中手动查找Illinois、在200多个国家中滚动查找美国
- 解决方案仅需4行代码:调用免费API(如zippopotam.us)获取邮编对应的城市和州,并将国家自动填入"United States",整个过程仅需5个按键
- 这样做有双重好处:用户只需输入邮编即可自动填充3个字段;地址自动补全的搜索范围从1.6亿条地址缩小到几千条,速度更快、准确度更高
- 网站列出四级"耻辱榜":邮编放最后、不利用已有邮编做自动填充、滚动浏览240个国家列表无搜索功能、点击返回后14个字段全部清空
- 技术优化建议:为邮编输入框添加
inputmode="numeric"属性使手机显示数字键盘,并使用正确的autocomplete属性(postal-code、address-line1、country)让浏览器自动填充功能生效 - 核心观点:这是已解决的问题,API免费、代码仅需5行,唯一不做的原因只是产品经理惯性复制2009年的表单模板,从未问过"为什么邮编在最后"
Helix: A post-modern text editor
Helix:后现代终端文本编辑器
- 使用Rust开发的终端文本编辑器,无需Electron、VimScript或JavaScript,可通过ssh、tmux或普通终端使用
- 多选功能作为核心编辑原语,灵感来源于Kakoune,支持同时对多个选区进行并发代码编辑
- 集成Tree-sitter生成容错性强且稳健的语法树,实现更精准的语法高亮、缩进计算和代码导航
- 支持语言服务器协议,提供语言特定的自动补全、跳转定义、文档查看和代码诊断等IDE功能
- 内置模糊搜索、项目全局搜索、精美主题、括号自动配对和surround集成等现代编辑功能
- 与Vim相比,从零开始设计使代码库更精简、默认配置更现代;对Vim新手更友好,无需频繁调整配置文件
How to run Qwen 3.5 locally
Qwen3.5 本地运行指南
- Qwen3.5是阿里巴巴推出的新一代大语言模型系列,包含Small系列(0.8B、2B、4B、9B)和Medium系列(27B、35B-A3B、122B-A10B、397B-A17B),支持256K上下文和201种语言,具备混合推理能力(思考/非思考模式),在智能编码、视觉理解、长上下文任务中表现优异,35B和27B版本可在22GB Mac/RAM设备上运行
- 文档提供详细的硬件内存需求表:Small系列4-bit仅需3.5-6.5GB,27B需17GB,35B-A3B需22GB,122B-A10B需70GB,397B-A17B 4-bit约214GB;397B版本可在单GPU 24GB+256GB系统RAM下通过MoE卸载达到25+ tokens/s
- 推荐使用llama.cpp进行本地推理,推荐参数:最大上下文262144 tokens(可通过YaRN扩展至1M)、temperature根据任务类型在0.6-1.0之间调整、top_p 0.8-0.95、top_k 20;Small系列(0.8B-9B)默认禁用思考模式,需通过
--chat-template-kwargs '{"enable_thinking":true}'启用 - 所有GGUF采用Unsloth Dynamic 2.0量化技术,将4-bit关键层升频至8或16位以保持SOTA性能;2025年3月更新改进了量化算法和使用新imatrix数据,工具调用能力也通过聊天模板修复得到提升,MXFP4层已从Q2_K_XL、Q3_K_XL、Q4_K_XL中移除
- 第三方基准测试显示:397B-A17B原始权重准确率81.3%,UD-Q4_K_XL达80.5%(仅下降0.8分,相对错误增加4.3%),UD-Q3_K_XL达80.7%,内存占用减少约500GB而实际性能损失极小
Notes on writing Rust-based Wasm
Rust + WebAssembly 开发实践模式
- 默认通过
&reference跨 Wasm 边界传递数据,避免消耗所有权——直接获取值会导致 Rust 端释放内存而 JS 端句柄仍存在,造成空指针异常 - 使用
Rc<RefCell<T>>或Arc<Mutex<T>>替代&mut引用,避免 JavaScript 异步特性引发的可重入问题导致的运行时 panic - 禁止在导出类型上派生
Copy,因为这会意外复制实质为轻量句柄的 Rust 值,导致句柄失效为空;仅对纯数据且实现IntoWasmAbi的类型例外 - 采用明确的命名约定区分类型来源:Rust 导出类型加
Wasm*前缀并通过js_name/js_class设为无前缀名称,JS 导入类型加Js*前缀,使代码意图一目了然 - 使用
wasm_refgen宏处理需要跨边界的集合类型,通过 duck typing 在保持类型安全的同时绕过 wasm-bindgen 的限制 - 为所有 Rust 导出错误类型实现
From<YourError> for JsValue,利用js_sys::Error在 JS 端获得完整错误信息,同时保留 Rust 端的类型化错误和?传播能力
Living human brain cells play DOOM on a CL1 [video]
活体人类脑细胞在CL1设备上运行《DOOM》
- Cortical Labs团队使用人类活体脑细胞成功在CL1设备上操控经典游戏《DOOM》,展示了生物计算技术的突破性进展
- 该项目由多位科研人员共同完成,包括Dr. Alon Loeffler、Dr. Brett Kagan等,并公开致谢了整个团队
- 相关技术代码已在GitHub平台开源,由团队成员Sean Cole负责开发,实现脑细胞电信号与游戏操作的交互转换
- 实验引发广泛伦理与科幻联想,部分观众联想到《我没有嘴巴但我必须尖叫》及《黑客帝国》等作品
- 团队同步推出了Cortical Cloud云服务平台、开发者API及技术文档,支持外部研究人员进一步参与开发
- 视频于2026年2月25日发布,11天内获得超7万次观看和2300余次点赞,社区反响热烈
Ask HN: Please restrict new accounts from posting
呼吁限制Hacker News新账户发布功能
- 原帖反映近期HN上大量AI生成帖子来自新账户(绿色标记),尤其Show HN板块问题严重,发帖者希望团队限制新账户发布或提供过滤功能,防止HN变成Twitter
- 管理员dang回应将暂时限制Show HN板块的发布功能,并承认HN无法免疫于宏观趋势;其解释是希望用户有社区参与经历后再发Show HN,而非将其当作推广清单上的一个勾选项
- 社区对限制措施有效性存在分歧:支持者认为可增加_bot运营成本,阻止"打一枪换一个地方"的spam行为;反对者指出这只会迫使机器人预先"养号"以绕过限制
- 用户提出基于karma(声望值)的过滤功能作为替代方案,可设置仅显示特定karma以上账户的帖子;但有人反对全局过滤,认为会激励刷karma行为(如转发旧帖子获取高赞)
- AI生成内容引发质量担忧:发帖者无法深入讨论技术细节,无法激发有价值的交流,LLM生成的代码演示无法引起智力好奇心,且当前 guidelines 未明确禁止AI生成内容
- 讨论提出多种技术解决方案如蜜罐陷阱、反向验证码、用AI检测AI、邀请制等,但普遍承认这些方案长期来看都可能被绕过,呼吁最终需依靠内容本身的质量判断
FrameBook
将2006款MacBook A1181改装为Framework主控的FrameBook项目
- 项目起因是作者对2006年初代黑色MacBook(型号A1181)的喜爱,这是当时少数可选的黑色MacBook之一,也是作者在2015年拥有的第一台MacBook,受他人将旧Mac改装新主板(通常装入M1 mini)的视频和文章启发
- 核心硬件包括Framework Laptop 13主板(Intel® Core™ i7-1280P)、64GB DDR4内存(2×32GB)、CSOT MND307DA1-9 13.3英寸显示屏,以及Anker和EZQuest的USB-C集线器、SVPRO 8MP USB摄像头、Framework扬声器套件和USB 2.0扩展模块
- 键盘和触控板改造通过焊接USB-C线缆连接到外壳电路实现,这是作者首次焊接,首次即成功但后续因线缆拉扯导致焊盘脱落需重做;内部组件使用3D打印支架和强力胶固定
- 左侧I/O接口处理较为复杂,需定制I/O挡板覆盖旧端口孔位并用强力胶粘贴;右侧利用原光驱位凹槽安装USB-C集线器;通过输入转接板和USB模块连接键盘、触控板、摄像头和电源按钮
- 为复刻经典发光Apple Logo,从阿里巴巴定制7×7×0.28 cm超薄LED灯珠,强力胶固定于上盖并连接到USB模块供电;显示屏用遮蔽胶带和铝箔胶带双重固定
- 项目耗时约3个月,作者从焊接新手成长为掌握基本焊接和3D建模技能,感谢社区成员N3rding提供的输入转接板及朋友Phillip指导Blender建模
CasNum
CasNum:基于尺规作图的任意精度算术Python库
- CasNum(Compass and straightedge Number)是一个使用尺规作图几何构造实现任意精度算术的Python库,将数字表示为平面坐标点(x,0)
- 核心基于5种基本尺规作图操作:作直线、作圆、线线交点、线圆交点、圆圆交点,其中圆圆交点涉及四次方程,求解公式超过3600字符
- 算术运算通过几何构造实现:加法借助中点与倍长,乘除借助三角形相似原理,逻辑运算(AND/OR/XOR)同样可通过几何构造实现
- 包含多项优化:如乘以2比通用乘法更高效,取模运算通过移除最高2的幂次再求模提升性能;使用lru_cache缓存计算结果以应对庞大的计算开销
- 集成于修改版PyBoy Game Boy模拟器,ALU所有操作码均通过纯尺规作图执行,首次启动约需15分钟加载,缓存后可达0.5-1 FPS
- 根目录代码采用MIT许可证,PyBoy修改版使用LGPL v3.0,2048.gb ROM使用zlib许可证;依赖包括sympy、pyglet(可选)、pytest-lazy-fixtures和pycryptodome
Beagle, a source code management system that stores AST trees
librdx/be 模块 - Beagle SCM 源代码管理系统
- Beagle SCM 以 AST(抽象语法树)而非二进制差异存储代码,定位为"代码的数据库",可存储所有与代码相关的数据(工单、CI 结果等)
- 后端存储使用 RocksDB 键值数据库,数据格式为 AST BASON(一种支持 CRDT 特性的可合并二进制 JSON)
- 核心组件:BE.c/h(引擎)、BE.http.c(HTTP 服务器)、BESRV.c/h(服务组件)、BESYNC.c/h(同步模块)、GREP.c(搜索功能)、VER.c/h(版本控制)
- 支持 gitignore 规范(IGNO.c/h),包含 test 测试目录,配套 CLI.md、HTTP.md、INDEX.md、STORE.md 等文档
- CLI 命令示例:
be post推送项目到仓库,be get获取项目,本地数据默认存储于$HOME/.be目录 - 项目处于早期实验阶段,可自托管,其他功能稳定性尚不保证,使用需自行承担风险