分类: 开发

细说字符串长度限制的那些坑

2025-04-30

本文深入探讨了字符串长度限制的复杂性。由于字符编码(UTF-8、UTF-16、Unicode码点、音素群)的不同,导致长度计算方法多样,容易造成前后端、数据库等不同层级的不一致,引发bug。作者建议使用Unicode码点计数并进行NFC规范化,虽然并非完美,但相对最佳。文章还探讨了音素群计数、UTF-8字节计数、UTF-16代码单元计数等方法的优缺点,并提供了混合计数方法的示例代码。

开源实验室OSL面临资金短缺危机,急需25万美元救命钱

2025-04-30
开源实验室OSL面临资金短缺危机,急需25万美元救命钱

俄勒冈州立大学的开源实验室(OSL)正面临严重的资金短缺危机。由于企业捐款减少和大学资金削减,OSL需要在5月14日之前筹集25万美元才能避免关闭。这笔资金将用于支付员工、学生薪酬以及日常运营费用。OSL为全球500多个自由和开源项目提供托管服务,其22年历史中培养了130多名学生。 OSL还面临着数据中心即将被淘汰的挑战,寻找新的托管场所也面临困难。

开发

JetBrains AI助手负面评价被删除引争议

2025-04-30
JetBrains AI助手负面评价被删除引争议

JetBrains的AI助手插件下载量超过2200万,但评分仅为2.3星。近日,用户发现部分负面评价被删除,JetBrains解释称这是由于这些评价提及已解决的问题或违反了政策。然而,这一举动引发了用户的强烈不满,许多人认为这是JetBrains试图掩盖AI助手存在的诸多问题,例如:对第三方模型支持有限、延迟频繁、核心功能依赖云服务、用户体验不一致以及文档稀缺等。此外,AI助手未经许可自动安装也成为用户诟病的焦点。虽然JetBrains推出了新的AI代理Junie并增加了免费层级,但高昂的成本和与竞争对手相比缺乏云业务支撑的劣势,依然使其面临挑战。

开发 负面评价

CVE-2025-21756: Linux内核漏洞利用——vsock攻击

2025-04-30

作者在KernelCTF提交中发现了一个简单的Linux内核漏洞CVE-2025-21756,该漏洞允许通过vsock进行提权。漏洞利用的核心在于一个Use After Free (UAF) 问题,修复补丁仅几行代码。作者首先通过分析补丁,确定漏洞点,并尝试进行跨缓存攻击。但AppArmor安全模块阻止了直接利用。作者随后巧妙地利用vsock_diag_dump功能作为侧信道,绕过kASLR并泄漏内核地址。最终,通过精心构造ROP链,调用`commit_creds`函数获得root权限。整个过程充满挑战,作者也获得了宝贵的内核安全知识。

开发 vsock

NotebookLM新增多语言音频摘要功能

2025-04-30
NotebookLM新增多语言音频摘要功能

NotebookLM更新了音频摘要功能,用户现在可以选择输出语言。无论你上传的是葡萄牙语纪录片、西班牙语研究论文还是英语学习报告,系统都能生成你偏好语言的音频摘要,方便创建多语言内容或学习资料。例如,老师可以分享各种语言的亚马逊雨林资源,学生们可以上传这些资源并生成他们母语的音频摘要,打破语言障碍,让信息更易获取。

开发 音频摘要

Agent Reinforcement Trainer (ART): 用最少代码改进LLM性能的强化学习库

2025-04-30
Agent Reinforcement Trainer (ART): 用最少代码改进LLM性能的强化学习库

Agent Reinforcement Trainer (ART)是一个开源强化学习库,用于提升大型语言模型(LLM)在代理工作流程中的性能。ART利用强大的GRPO强化学习算法,通过模型自身的经验进行训练。不同于大多数RL库,ART允许你将代理运行集成到现有代码库中,同时将RL训练循环的复杂性卸载到ART后端。ART包含客户端和服务器两部分,客户端负责与你的代码库交互,服务器则负责推理和训练。训练循环包括推理阶段(收集数据并分配奖励)和训练阶段(使用GRPO算法训练模型并更新LoRA)。ART支持大多数与vLLM/HuggingFace transformers兼容的因果语言模型,目前正处于alpha阶段,欢迎贡献代码。

开发

Bash 静态网站生成器 BSSG:十年磨一剑,开源发布

2025-04-30
Bash 静态网站生成器 BSSG:十年磨一剑,开源发布

作者从90年代末就开始拥有个人网站,历经手动编写HTML、使用可视化工具和动态CMS(如WordPress)的阶段,最终因安全更新和维护成本过高而转向静态网站生成器。他先后尝试了bashblog、Pelican和Nikola,并为Nikola创建了Docker容器。2015年,出于兴趣,他从零开始开发了自己的Bash静态网站生成器BSSG,并不断完善其功能,包括主题支持、归档、标签等。BSSG的优势在于其轻量、便携、高性能和高可访问性,并支持Markdown和多种主题。虽然代码并非完美,但作者决定开源发布,希望它能帮助那些厌倦动态CMS维护的人们。

开发

OCaml机器学习生态系统Raven:挑战Python霸权?

2025-04-30
OCaml机器学习生态系统Raven:挑战Python霸权?

Raven是一个雄心勃勃的项目,旨在为OCaml语言带来完整的机器学习和数据科学生态系统。它提供类似于NumPy、Jupyter和JAX的库,例如Ndarray(高性能数值计算)、Quill(交互式笔记本)和Rune(自动微分和JIT编译),并承诺在保证OCaml类型安全和性能优势的同时,提供与Python媲美的开发体验。目前Raven还处于预发布阶段,但其丰富的组件和积极的社区贡献,使其未来发展潜力巨大,或将为OCaml在数据科学领域带来新的活力。

开发

arXivLabs:与社区协作者共建arXiv新功能

2025-04-30
arXivLabs:与社区协作者共建arXiv新功能

arXivLabs是一个实验性项目,允许合作者直接在arXiv网站上开发和分享新功能。参与者都认同arXiv的开放、社区、卓越和用户数据隐私的价值观。 你有提升arXiv社区价值的想法吗?了解更多关于arXivLabs的信息吧!

开发

十年磨一剑:对话式邮件应用Talanoa诞生记

2025-04-30
十年磨一剑:对话式邮件应用Talanoa诞生记

一位资深网页工程师John Martin,从2014年起便构思一款能像对话一样处理邮件的应用。十年间,他不断完善这个想法,最终在市场上找不到同类产品后,将这一构想变成了现实,推出了Talanoa应用。这展现了持续努力和对产品愿景的坚持,最终克服了市场空白,成就了一款独特的邮件处理工具。

开发

dataframely: 一个Polars原生数据帧验证库

2025-04-30

QuantCo团队为了提高代码的可维护性,将数据管道从pandas迁移到polars,但在处理大型遗留代码库时,发现缺乏对数据帧内容的验证。现有库pandera和patito存在局限性,因此他们开发了dataframely,一个Polars原生数据帧验证库。dataframely支持声明式数据帧验证,可定义模式、验证数据帧内容、支持跨数据帧验证以及软验证等功能,极大地提高了数据管道的健壮性和可读性,使其在多个团队和项目中得到应用。

开发

HP webOS “Eel”项目:一次未竟的创新

2025-04-30
HP webOS “Eel”项目:一次未竟的创新

尽管惠普平板电脑和手机计划大多反响平平,但其软件团队却在开发一些真正创新的设计。代号为“Eel”的webOS新版本,试图扩展最初Palm Pre中引入的“卡片”隐喻。它结合了“卡片堆栈”和“响应式面板”的概念,允许用户将链接打开到左侧的新面板(独立卡片),并能将其滑动或“剪切”到不同的堆栈中,实现灵活的窗口大小和分组,在手机和平板上都易于管理。这展现了webOS在提升生产力方面的创新尝试,可惜最终未能成功。

开发 webOS Palm

不可能的任务:在现实世界中管理AI代理

2025-04-30
不可能的任务:在现实世界中管理AI代理

本文探讨了在软件开发等领域中有效控制AI代理的挑战与策略。作者总结了其经验,强调周密计划和限制AI代理上下文的重要性。文章深入阐述了选择工具、规划任务、制定和修订计划、测试计划以及发现更大问题的技巧,并介绍了规则、性能回报、模型选择和成本控制等关键方面。作者还分享了利用Cursor等工具编写可重用计划的经验,以及如何通过逐步执行计划、不断修订和测试来提高AI代理的可靠性,最终实现高效的软件开发。

开发 计划管理

用DuckDB分析完整Hacker News数据集

2025-04-30
用DuckDB分析完整Hacker News数据集

作者下载了Hacker News自创立以来的所有数据(约20GB JSON文件),并使用DuckDB数据库对其进行了分析。文章详细介绍了数据下载过程以及使用SQL查询计算特定编程语言(Python、JavaScript、Java、Ruby、Rust)在Hacker News中提及频率的12周移动平均值。作者对DuckDB的易用性和分析速度表示赞赏,并幽默地展望了未来可能利用该数据集训练LLM模型的可能性。

开发

在Excel中运行Linux:一个有趣的尝试

2025-04-30
在Excel中运行Linux:一个有趣的尝试

一位开发者成功地在Excel中运行了Linux系统!他利用一个名为mini-rv32ima的精简版模拟器,将其编译成DLL文件,再通过VBA宏调用,最终实现了在Excel表格中显示Linux输出。虽然该项目存在一些bug,并且作者承认这并非严格意义上的“从零开始”,而是利用了外部DLL,但这无疑是一个充满创意和趣味的尝试,展现了程序员的巧妙构思和技术实力。

开发

自动稀疏微分:让高维Hessian矩阵计算不再痛苦

2025-04-30

机器学习中,高维Hessian矩阵的计算一直是瓶颈。本文介绍自动稀疏微分(ASD),一种利用矩阵稀疏性加速Hessian和Jacobian矩阵计算的方法。ASD通过稀疏性模式检测和矩阵着色技术,将多个结构正交的列(或行)组合成一个向量进行计算,从而减少计算量和内存需求。文章详细解释了ASD的原理,包括正向和反向模式自动微分、稀疏矩阵表示、着色算法等,并通过Julia语言的示例演示了其应用和性能优势,最终指出ASD在需要计算稀疏Jacobian或Hessian矩阵的应用中具有显著优势,例如牛顿法等优化算法。

Linux 的 PATH 环境变量:真相大揭秘

2025-04-29

你是否好奇 Linux 系统是如何找到你执行的命令的?答案是:它依赖于 shell,而不是内核!本文深入探讨了 PATH 环境变量的工作机制,揭示了 shell(例如 dash)如何通过 `padvance` 函数在 PATH 中搜索可执行文件,而内核的 `execve` 系统调用实际上已经获得了文件的完整路径。Python、Go 和 Rust 等编程语言的子进程库也各自实现了 PATH 搜索功能,最终都依赖于底层 `execvp` 等函数。文章还解释了为什么 shebang 需要绝对路径,以及 `/usr/bin/env` 的巧妙作用。

开发

亚马逊RDS for PostgreSQL多AZ集群的快照隔离性问题

2025-04-29

Jepsen团队对亚马逊RDS for PostgreSQL多可用区集群进行了测试,发现其并未完全保证快照隔离性,存在G-非相邻循环等异常现象,违反了快照隔离的规则。这些异常现象包括长分支(Long Fork),表明RDS for PostgreSQL可能提供了稍弱的并行快照隔离。这意味着在高并发场景下,读事务可能会对事务执行顺序产生不一致的观测结果。用户应注意事务结构,避免长分支,或仅使用写入端点以恢复快照隔离。

将旧Kindle改造成家庭信息仪表盘

2025-04-29

一位父亲为了解决女儿上学迟到的问题,突发奇想地将闲置的Kindle改装成了一个家庭信息仪表盘。他首先越狱了Kindle,然后通过编写脚本和搭建后端API,实现了在Kindle上显示天气、公共交通信息和女儿学校作息时间等信息。后端API使用Cloudflare Workers、Hono JS等技术构建,并巧妙地解决了图像格式转换等难题,最终成功打造了一个实用的个性化信息显示设备。

开发

用Zip Bomb对抗恶意爬虫:一个网站主人的自卫战

2025-04-29
用Zip Bomb对抗恶意爬虫:一个网站主人的自卫战

网站面临恶意机器人攻击?一位网站主分享了他用Zip Bomb对抗恶意爬虫的经验。Zip Bomb是一个小巧的压缩文件,解压后会膨胀成巨大的文件,从而耗尽攻击者的服务器资源。作者通过检测恶意请求,返回一个压缩的Zip Bomb文件,成功击退了多次攻击,有效保护了自己的网站。虽然Zip Bomb并非万无一失,但对于应对简单的恶意爬虫攻击,它仍然是一个有效的自卫工具。

开发 Zip Bomb

开发人员,请关注用户体验!

2025-04-29
开发人员,请关注用户体验!

作者讲述了因银行App占用空间过大、导致无法支付房租的经历,以此批判部分开发人员忽视用户体验,追求开发速度而牺牲用户利益的行为。文章指出,过大的App体积、冗余的代码和追踪脚本不仅浪费用户手机资源,还增加了用户成本,最终损害了用户利益。作者呼吁开发人员要重视用户体验,关注实际应用场景,避免为了追求所谓的“开发速度”而牺牲用户体验,造成实际问题。

开发

Beatsync:高精度多设备同步Web音频播放器

2025-04-29
Beatsync:高精度多设备同步Web音频播放器

Beatsync是一款高精度Web音频播放器,支持多设备同步播放。它采用类似NTP的时间同步机制,实现毫秒级精度;支持跨平台,可在任何现代浏览器上运行(Chrome浏览器性能最佳);具有空间音频功能,可通过虚拟声源控制设备音量,实现有趣的音效;拥有精致的界面,内置流畅的加载状态、状态指示器和所有UI元素;并且可以自托管,只需几条命令即可运行自己的实例。目前尚处于早期开发阶段,仅桌面版Chrome浏览器完全支持,移动设备同步功能尚处于实验阶段且可能不稳定。

AI赋能CAD:Hestus招募机器学习工程师

2025-04-29
AI赋能CAD:Hestus招募机器学习工程师

Hestus公司,一家位于Peninsula的快速发展的AI驱动CAD初创公司,正在招聘一名经验丰富的机器学习工程师。你将参与设计、开发和维护基于Python的强大且可扩展的软件应用,创建和调整定制机器学习模型和嵌入,并与跨职能团队合作开发新功能。理想候选人应具备至少四年机器学习工程经验,精通Python,熟悉深度学习框架(如PyTorch),并能够在快节奏的环境中高效工作。公司提供具有竞争力的薪酬、股票期权和优厚的福利待遇。

开发

火狐浏览器基于社区反馈推出标签分组功能

2025-04-29
火狐浏览器基于社区反馈推出标签分组功能

火狐浏览器新推出的标签分组功能源于社区平台Mozilla Connect上4500多名用户的强烈需求。该功能允许用户将浏览器标签页分组,方便管理大量的打开页面。这一功能的开发过程充分体现了社区反馈对产品迭代的重要性,开发团队认真倾听了用户的意见,并通过beta测试不断改进,最终推出了一个兼顾灵活性和易用性的标签分组功能。未来,火狐还将推出基于AI的智能标签分组功能,进一步提升用户体验。

开发 标签分组

ArkFlow:高性能Rust流处理引擎

2025-04-29
ArkFlow:高性能Rust流处理引擎

ArkFlow是一个基于Rust和Tokio构建的高性能流处理引擎,支持多种输入/输出源和处理器。它具有强大的数据流处理能力,内置SQL查询、JSON处理、Protobuf编码/解码等功能,并支持扩展。用户可通过YAML配置文件轻松配置输入源(Kafka、MQTT、HTTP、文件等)、处理器(JSON、SQL、Protobuf等)和输出目标(Kafka、MQTT、HTTP、标准输出等),实现灵活的数据处理流程。ArkFlow还提供缓冲机制以应对反压,并支持多种错误输出目标。

开发

性能优化:一场与复杂性抗争的持久战

2025-04-29
性能优化:一场与复杂性抗争的持久战

这篇文章深入探讨了代码性能优化的挑战。作者指出,优化并非简单的技能提升,而是需要面对大量尝试和错误的“蛮力”任务。各种优化策略之间存在复杂的相互作用,甚至看似优秀的方案也可能因为一些意想不到的原因失效。编译器虽然能提供帮助,但其能力有限,盲目依赖反而可能适得其反。针对不同架构的CPU,优化策略也大相径庭,例如x86架构有丰富的资料,而Apple Silicon则缺乏完善的文档支持,这给开发者带来了巨大的挑战。文章最后总结道,性能优化是一门艺术,微小的改进累积起来就能带来显著的提升,值得开发者投入时间和精力。

开发

内在动机:学习的秘密武器

2025-04-29
内在动机:学习的秘密武器

作者分享了自己学习经历的转变,从之前的毫无动力到后来的专注投入。他认为这种动机变化的关键在于“内在动机”,即因活动本身的乐趣而驱动。文章深入探讨了自我决定理论(SDT),解释了自主性、胜任感和归属感这三个关键要素如何影响内在动机。研究表明,奖励有时会适得其反,而自主选择和积极的反馈则能提升内在动机。作者结合自身经历和研究,阐述了如何培养内在动机,并探讨了竞争与内在动机的复杂关系。

基于ROS2的在线高斯散点可视化工具ROSplat

2025-04-29
基于ROS2的在线高斯散点可视化工具ROSplat

ROSplat是一个基于ROS2的在线3D场景可视化工具,它利用高斯散点渲染技术,能够实时渲染数百万个高斯点。该工具使用自定义ROS2消息和GPU加速的排序和渲染技术,支持从PLY文件加载数据,并与ROS2工具(如bag录制)集成。ROSplat需要NVIDIA显卡才能获得最佳性能,并提供多种安装方式,包括使用pip安装依赖项或使用Docker镜像。该项目由Shady Gmira开发,并感谢Qihao Yuan和Kailai Li的指导和支持。

一种用于树形遍历的新型控制流结构

2025-04-29
一种用于树形遍历的新型控制流结构

本文提出了一种名为`for_tree`的新型控制流结构,旨在简化树形数据的遍历。与传统的递归函数相比,`for_tree`更简洁易读,并支持`break`、`continue`和`prune`等操作,从而提高代码的可维护性和可读性。作者还提供了一个C++实现作为概念验证,展示了其在遍历不同类型树结构(包括内存中树和通过生成器创建的树)时的灵活性。

1 2 100 101 102 104 106 107 108 213 214