分类: 开发

Safari 浏览器中的 text-wrap: pretty:网页排版的新境界

2025-04-08
Safari 浏览器中的 text-wrap: pretty:网页排版的新境界

Safari Technology Preview 216 引入了 `text-wrap: pretty`,彻底改变了网页文本排版。它利用基于段落的算法,解决了长期存在的排版问题,例如过短的最后一行、参差不齐的边缘、以及令人分心的文字河流。与传统的单行算法不同,`pretty` 会评估整段文本,从而优化文本布局,提升可读性和美观度。虽然 Chrome 等浏览器也支持 `pretty`,但 Safari 的实现更为全面,对整段文本进行调整,而非仅限于最后几行。`text-wrap: balance` 则侧重于使每行文本长度一致,适合标题等较短文本。开发者应根据实际需求选择合适的 `text-wrap` 值,并注意性能问题。

开发 网页排版

Coroot:无需代码修改的应用可观测性平台

2025-04-08
Coroot:无需代码修改的应用可观测性平台

Coroot是一个开源的可观测性平台,无需任何代码修改即可自动收集指标、日志和追踪信息,并将其转化为可操作的洞察。它利用eBPF技术实现零侵入式监控,提供服务地图、预定义检查、应用健康概览、分布式追踪、日志分析和性能分析等功能,能够快速识别并解决应用问题,并与Kubernetes和主要云平台集成。Coroot还提供SLO追踪和成本监控,帮助开发者优化应用性能和降低云成本。

开发

Sculptor:AI 驱动的代码工程最佳实践环境

2025-04-08
Sculptor:AI 驱动的代码工程最佳实践环境

Sculptor是一个革命性的代码代理环境,它将软件工程最佳实践嵌入到你的编码流程中。它通过沙盒运行代码,允许你安全地测试、并行解决问题,并为代理分配任务。Sculptor 可以帮助你修复bug、编写测试、添加新功能、改进文档、修复样式问题,并改善你的代码,无论它是人写的还是LLM生成的。目前Sculptor处于早期研究预览阶段,邀请你加入测试,体验其强大功能,并获得Imbue的精美礼品。

开发 代码代理

HNSW:一种高效的近邻搜索算法

2025-04-08
HNSW:一种高效的近邻搜索算法

HNSW 是一种基于分层可导航小世界图的近邻搜索算法,它利用分层结构加速向量嵌入的近邻搜索。该算法通过在不同层次上构建稀疏和密集的图结构,并在搜索时从顶层逐步向下搜索,从而高效地找到最近邻。其代码简洁,使用现代 C++ 和 Eigen 库进行 SIMD 加速,只需约 500 行代码即可实现。

开发

用Sage解开无序根三叉树计数之谜

2025-04-08
用Sage解开无序根三叉树计数之谜

博主运用分析组合学,特别是Flajolet-Sedgewick方法,解决了计数无序根三叉树的难题。文章先以有序根三叉树为例,通过生成函数和奇点分析,推导出渐近逼近公式,并用Sage进行验证。随后,利用Pólya-Redfield计数法处理无序情况,并通过数值解法得到渐近公式,同样得到验证。文章深入浅出地讲解了复杂分析中的关键概念,如Puiseux级数,并提供了Sage代码实现,是一篇优秀的算法与数学结合的案例研究。

LLM Hacker News 插件:一键获取 Hacker News 内容摘要

2025-04-08
LLM Hacker News 插件:一键获取 Hacker News 内容摘要

一个名为 `llm-hacker-news` 的新 LLM 插件可以让你轻松获取 Hacker News 上的对话内容摘要。只需安装插件,然后使用 `llm -f hn:ID '你的指令'` 命令(例如 `llm -f hn:43615912 '总结并引用关键语句'`),即可获得指定对话 ID (ID可在对话链接中找到) 的摘要。插件安装和本地运行方法也已在README中详细说明。

开发

少用htmx,多用HTML:构建更易维护、用户体验更佳的网站

2025-04-08

本文作者分享了他两年来使用htmx构建Web服务的经验,并提出了一种与众不同的观点:尽可能使用纯HTML,少依赖htmx的增强功能,如`hx-boost`。作者认为,`hx-boost`虽然能实现无缝页面更新,但会带来诸多问题,例如与浏览器后退按钮冲突,以及破坏其他库的正常工作。他建议使用标准的HTML链接和表单,结合浏览器的缓存机制(ETags和Cache-Control头),即可实现高效的页面更新和良好的用户体验。作者还提到,现代浏览器已经具备了优秀的性能优化能力,无需过度依赖JavaScript框架来模拟SPA的行为。只有在需要保持页面状态的情况下(例如音乐播放器),才考虑使用`hx-boost`等高级特性。总而言之,作者主张回归HTML和HTTP的简洁性和可靠性,构建更易维护、用户体验更佳的网站。

开发

AI原生工作空间初创公司招募资深全栈工程师

2025-04-08
AI原生工作空间初创公司招募资深全栈工程师

旧金山AI原生工作空间初创公司Paradigm正在招聘经验丰富的全栈工程师,该公司由Y Combinator和Dropbox、Intercom等公司的联合创始人支持。理想候选人应具备构建生产级AI应用的经验,能够在快节奏的环境中工作,并精通GoLang、TypeScript等技术。公司提供丰厚的薪酬和福利,包括股票期权、医疗保险等。

开发

虚幻引擎多人游戏功能的内存优化:意外的收获

2025-04-08
虚幻引擎多人游戏功能的内存优化:意外的收获

一位虚幻引擎开发者在使用内存布局可视化工具时,意外发现虚幻引擎中为支持多人游戏而添加的某些数据结构在单人游戏中是冗余的。这些数据结构占据了相当一部分内存,例如用于复制组件附件和角色移动的自定义结构体分别占据120字节和216字节。通过注释掉这些在单人游戏中未使用的变量及相关代码,最终实现了约392字节/Actor的内存节省。虽然对于大多数项目来说,这并非显著的优化,但对于拥有大量Actor的项目(例如超过10万个),则可能带来可观的内存节省,甚至高达100MB。

开发

GitHub Actions 的 shell 关键字:意料之外的灵活性

2025-04-08

GitHub Actions 中的 shell 关键字允许自定义运行块的 shell,但这比文档描述的更灵活。它不仅支持 bash、pwsh 等预定义 shell,还支持系统 $PATH 中的任何可执行文件。这意味着你可以使用 C 编译器运行 C 代码,甚至动态修改 $GITHUB_PATH 来改变 shell 的行为。虽然这带来了灵活性,但也增加了安全风险,因为文件写入可能暗示执行。这与 GitHub 对“已知”shell 值进行 $PATH 查找的做法形成对比,这种做法出乎意料。

开发

FreeBSD Jail是容器吗?一场关于定义的争论

2025-04-08
FreeBSD Jail是容器吗?一场关于定义的争论

本文探讨了FreeBSD Jail是否属于容器技术的争议。支持者认为,Jail是早于Docker和Podman的容器技术,Allan Jude等FreeBSD开发者也将其称为容器。他们认为,将容器定义限定于Linux的Docker/Podman是不合理的,忽略了BSD系统中长期存在的OS级虚拟化技术。反对者则认为,Jail缺乏OCI容器的特性,例如镜像抽象和部署模型,将其称为容器会误导用户,不利于FreeBSD的推广。争议的核心在于对“容器”定义的理解差异:是泛指OS级虚拟化,还是特指符合OCI标准的容器技术。

开发

AI代码生成工具的局限性与突破:理解代码库的层次化知识图谱

2025-04-08

作者长期以来对AI代码生成工具的局限性感到沮丧,这些工具常常犯重复性错误且不理解代码库的整体结构。为了解决这个问题,作者开发了一种名为“棱镜式递归总结”(PRRS)的算法,该算法将代码库视为层次化的知识图谱,并通过多个“镜头”(例如架构、数据流、安全)来分析代码的重要性,从而帮助AI更好地理解代码的上下文和关系。这种方法显著提高了AI代码生成的准确性和效率,并解决了诸如文件放置、模式遵循、代码复用等问题。作者认为,未来AI代码生成工具需要更深入地理解代码库,而不仅仅是基于简单的词元预测。

(nmn.gl)
开发

Tailwind CSS 4 和 FOMO:一个程序员的教训

2025-04-07

作者在使用 Tailwind CSS 4 的过程中遭遇了巨大的挫折:由于其依赖 Bun.js,导致其在旧款 Mac Pro 上因缺少 AVX2 指令集而无法运行。这让他耗费了数天时间进行调试,最终不得不购买新电脑并放弃 Tailwind CSS 4。这篇文章探讨了科技界“害怕错过”(FOMO)的现象,以及盲目追逐新技术可能带来的负面影响。作者反思了自身选择新技术的冲动,并呼吁开发者要谨慎选择技术,优先考虑自身需求和项目实际情况,避免被技术潮流裹挟。

开发

arXivLabs:与社区合作的实验性项目

2025-04-07
arXivLabs:与社区合作的实验性项目

arXivLabs是一个允许合作者直接在arXiv网站上开发和分享新功能的框架。参与arXivLabs的个人和组织都认同并接受了arXiv关于开放性、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,只与坚持这些价值观的合作伙伴合作。如果您有想法能为arXiv社区增值,请了解更多关于arXivLabs的信息。

开发

轻量级MCP服务器:为Claude提供实时天气数据

2025-04-07
轻量级MCP服务器:为Claude提供实时天气数据

这个项目构建了一个轻量级的模型上下文协议(MCP)服务器,能够让像Claude这样的AI助手访问并解读实时天气数据。用户只需在Claude配置中添加服务器地址、运行`go build`命令编译可执行文件,并配置好天气API密钥,即可在Claude中获取指定城市的天气信息。该项目采用模块化设计,包含服务器端处理、业务逻辑、测试模拟以及视图模板等部分,并遵循MIT开源许可证。

程序员悬赏1万美元求职:逆向招聘策略引爆LinkedIn

2025-04-07
程序员悬赏1万美元求职:逆向招聘策略引爆LinkedIn

两位软件工程师Argenis De La Rosa和Ryan Prescott另辟蹊径,在LinkedIn上发布悬赏:支付1万美元给能帮他们找到年薪六位数软件开发职位的人。此举引发热议,他们收到了大量求职建议,甚至有些人不求回报提供帮助。在竞争激烈的科技就业市场,此举不仅帮助他们获得多个面试机会,也证明了大胆创新的求职策略的重要性。

React 组件树与状态机:理解异步更新和并发特性

2025-04-07
React 组件树与状态机:理解异步更新和并发特性

本文阐述了将 React 组件树视为状态机的模型,这有助于理解异步更新和 React 并发特性的影响。React 应用可以被看作一个状态机模型,UI 是状态的函数:UI = f(state)。然而,异步更新会打破这种同步保证,导致用户可能触发无效更新。文章建议使用乐观更新或中间状态(pending)来解决此问题,并强调 React 并发特性(如 startTransition)也需要类似的同步处理以避免无效操作。

开发 异步更新

Git 二十周年:从简单的内容追踪器到统治世界的版本控制系统

2025-04-07
Git 二十周年:从简单的内容追踪器到统治世界的版本控制系统

二十年前,Linus Torvalds 提交了 Git 的第一个 commit。如今,Git 已成为最主要的版本控制系统。本文回顾了 Git 的早期历史,从最初作为 Linux 内核开发社区解决版本控制和协作问题的工具,到演变成如今的样子。作者 Scott Chacon 分享了他与 Git 的故事,以及 Git 如何从一个简单的“愚蠢”的内容追踪器,发展成为拥有丰富功能的版本控制系统,并最终改变了软件开发的世界。文章还讲述了 Git 一些核心命令的起源,以及 GitHub 标志性吉祥物 Octocat 的诞生故事。

开发

Lua 新包管理器 Lux:告别 Luarocks 的历史包袱

2025-04-07

Lux 是一个全新的 Lua 包管理器,旨在解决 Luarocks 的历史问题,为 Lua 生态系统带来现代化的管理体验。它拥有简洁的 CLI、强大的锁文件支持、并行构建、以及与 Neovim 和 Nix 的良好集成。Lux 支持 TOML 配置文件,强制执行 SemVer 版本规范,并能兼容 luarocks 生态系统。它将极大地提升 Lua 项目的构建、依赖管理和可重复性,尤其对 Neovim 插件开发者而言,将带来显著的效率提升和稳定性改善。

开发

Kahuna:IndexedDB 数据库管理神器

2025-04-07
Kahuna:IndexedDB 数据库管理神器

Kahuna 是一款 Firefox 和 Chromium 系浏览器扩展程序,用于管理 IndexedDB 数据库。它可以创建数据库、修改数据库结构,以及查看、查询、编辑、导入和导出数据库中的数据。Kahuna 提供了友好的用户界面,支持数据过滤、页面分页、JavaScript 代码执行等功能,并支持多种数据格式的导入导出。虽然文档还在建设中,但这款工具对于开发者处理 IndexedDB 数据库将非常方便。

开发

浏览器MCP:本地化浏览器自动化工具

2025-04-07

Browser MCP是一款本地化的浏览器自动化工具,它以速度快、安全私密、方便易用为特点。由于自动化操作在本地执行,因此性能更好,避免了网络延迟,也保护了用户的浏览器活动隐私,不会将数据发送到远程服务器。它使用用户的现有浏览器配置文件,保持用户在所有服务的登录状态,并通过使用真实的浏览器指纹来避免机器人检测和验证码。

开发

OpenPrompt:轻松将代码文件导入大型语言模型

2025-04-07
OpenPrompt:轻松将代码文件导入大型语言模型

OpenPrompt 是一款便捷工具,用于将文件夹和文件快速序列化成 XML 格式,以便轻松地将代码导入 Claude、GPT-4、Grok 等大型语言模型。它支持多种操作系统,并提供可执行文件下载。用户只需选择目录、设置过滤器、选择文件并添加指令,即可生成 XML 提示并复制到剪贴板,方便代码审查、文档生成、重构建议、错误查找、学习新代码库以及架构分析等多种用途。

开发

用Web Audio API模拟Game Boy音效:傅里叶级数与波形塑造器大比拼

2025-04-07

作者在开发一款基于Web的Game Boy风格音乐追踪器时,遇到了模拟Game Boy标志性方波音效的挑战。Game Boy的脉冲通道支持多种占空比,而Web Audio API的OscillatorNode仅支持50%占空比的方波。文章比较了两种解决方案:使用傅里叶级数生成自定义波形和使用WaveShaperNode对锯齿波进行整形。傅里叶级数方法精度高,但计算成本高;WaveShaperNode方法简单易懂,但可能产生杂音。作者最终选择了WaveShaperNode方法,因为它更易于实现,且能产生更接近Game Boy原声的音效。

开发 音效模拟

GitMCP:让AI轻松访问GitHub项目文档

2025-04-07
GitMCP:让AI轻松访问GitHub项目文档

GitMCP是一个免费开源的服务,它可以将任何GitHub项目无缝转换为远程模型上下文协议(MCP)端点,使AI助手能够轻松访问和理解项目的文档。无需任何设置,GitMCP即可开箱即用,并且完全免费和私密,不收集任何个人身份信息或查询。用户可以使用简单的URL格式访问GitHub仓库或GitHub Pages站点,AI助手可以通过GitMCP访问项目的文档,并利用语义搜索功能优化token使用。GitMCP通过实现MCP来充当GitHub仓库文档和AI助手之间的桥梁,确保高效准确的信息传递。

开发

逆向工程90年代的希伯来语-英语文字处理器

2025-04-07
逆向工程90年代的希伯来语-英语文字处理器

本文讲述了作者团队如何逆向工程一个90年代中期使用Turbo Pascal编写的DOS时代的希伯来语-英语文字处理器QText,并破解其文档加密。由于加密算法简单,且密钥包含在文件中,作者尝试了暴力破解和逆向密钥生成算法两种方法。最终,他们成功重建了密钥生成算法,并编写了Python脚本实现了自动解密。此案例展现了早期软件开发的加密技术和逆向工程的技巧,也体现了信息安全技术的发展历程。

开发

Excel日期解析的诡异Bug:一个跨越400年的故事

2025-04-07
Excel日期解析的诡异Bug:一个跨越400年的故事

Quadratic团队在开发AI电子表格时,深入研究了Excel的日期解析机制,发现了许多奇特的bug。例如,输入“1/2”并加1,结果是45660;输入“10:75”,结果是0.46875。这些诡异的结果源于Excel的日期存储方式:将日期存储为自1900年1月1日起的连续序号。然而,由于历史原因(1900年被错误地认为是闰年,以及格里高利历的改革),Excel的日期计算存在偏差。Quadratic团队采用Rust的chrono库,避免了这些问题,并能更好地与Python、SQL等现代工具集成。

开发 日期解析

cURL的安全开发实践:如何构建数十亿次安装的可靠代码

2025-04-07
cURL的安全开发实践:如何构建数十亿次安装的可靠代码

cURL项目团队分享了他们在使用C语言开发安全可靠的网络传输工具方面的经验。他们强调了测试的重要性,包括静态代码分析、模糊测试等。文章指出,约40%的安全漏洞源于C语言本身的内存安全问题,但通过严格的代码规范、风格检查、以及避免使用危险函数等措施,他们将漏洞数量控制在较低水平。cURL团队还制定了严格的代码规范,例如限制行长、缩短变量名、避免编译警告等,以提高代码可读性和可维护性。他们还注重错误处理、API稳定性和内存管理,确保软件的可靠性和安全性。

开发 C语言安全

别再为“无用”工作挥洒汗水了!

2025-04-07

许多工程师专注于改进性能、无障碍性等非营利性工作,却因不被重视而被解雇。文章指出,科技公司以盈利为目标,工程师的价值取决于其工作对公司盈利的贡献。作者建议工程师了解公司商业模式,将自身工作与公司盈利关联起来,才能获得稳定职位。即使是看似无用的工作,在大型公司也能通过规模效应产生价值。

优化Cloudflare D1数据库查询的历程

2025-04-07
优化Cloudflare D1数据库查询的历程

一位前端开发者在使用Cloudflare Workers和D1数据库的过程中,遭遇了数据库查询效率低下的问题。通过监控D1 dashboard、检查查询语句和行读写计数等方法,他发现了几个关键问题:单次查询耗时过长、批量写入效率低下、更新操作包含ID字段导致额外行读取、计数查询导致全表扫描、多表连接导致笛卡尔积爆炸以及批量插入效率问题。通过使用D1批量操作、排除ID字段、使用游标分页、拆分多表连接查询以及优化批量插入语句等方法,他显著提升了数据库查询效率,将某些查询的执行时间从78ms缩短到14ms。这个经验总结强调了持续监控和迭代优化的重要性,以及服务器端问题与客户端问题的不同之处。

开发 Cloudflare D1
1 2 118 119 120 122 124 125 126 213 214