分类: 开发

追踪嵌入式软件中的幽灵错误:-22

2025-01-26
追踪嵌入式软件中的幽灵错误:-22

Tweede golf团队在为nRF9160微控制器开发的嵌入式Rust软件中遭遇了一个难以捉摸的bug,该bug会导致数据发送到服务器时返回Error::NrfError(-22)错误。经过长达数周的调查,他们发现问题根源在于libmodem库的初始化函数中,一个指向栈上配置结构体的指针在结构体销毁后仍然被使用,导致程序意外地写入共享内存区域配置,从而使发送数据长度变成0。最终,通过添加`black_box`函数和使用watchpoint调试,他们定位并修复了这个bug,并强调了使用Rust进行嵌入式开发的优势,以避免此类低级错误。

开发

Meta Llama 3.1 社区许可证并非自由软件许可证

2025-01-26

自由软件基金会(FSF)发布评估报告,认定Meta的Llama 3.1社区许可证并非自由软件许可证。该许可证不仅剥夺了用户的自由,还试图将本应由民选政府通过立法行使的权力交给许可方。此外,该许可证应用于机器学习应用,但未能解决此类应用中固有的软件自由挑战。FSF呼吁自由软件社区对此保持警惕,避免使用该许可证及其下的任何软件。

开发

开源可观测性平台SigNoz招募后端工程师

2025-01-26
开源可观测性平台SigNoz招募后端工程师

SigNoz,一家致力于开源可观测性领域的初创公司,正在招聘后端工程师。理想候选人应具备3-6年的Go语言后端开发经验,热爱开源并有相关贡献,深入理解可观测性领域,熟悉Golang的锁、通道和并发机制。工作内容包括产品研发、提升SigNoz的开源采用率、管理产品路线图和功能开发,以及撰写技术文档和构建集成市场等。

开发

图形圣经:电脑图形学终极指南

2025-01-26

《图形圣经》(The Graphics Codex)是一款交互式电脑图形学学习资源,包含400多个图表和方程,涵盖基于物理的着色和渲染等14个章节,并提供多平台编程项目及外部API文档链接。它既可作为参考工具,也可作为教材补充或独立学习指南,每月更新。内容涵盖光线追踪、阴影贴图着色器、渲染方程、菲涅尔方程等,适合学生和专业人士学习使用。

开发

Prolog:简洁的逻辑编程语言

2025-01-26

本文深入探讨了逻辑编程语言Prolog的简洁性和强大功能。与流行的命令式语言(如Python、Java)不同,Prolog采用声明式编程范式,关注问题的描述而非解决步骤。作者通过对比Prolog和Kotlin实现的权限系统,展示了Prolog在简洁性和适应性方面的优势。Prolog代码更精简,且在面对需求变化(例如添加时间维度)时,修改也更轻松。虽然Prolog学习曲线较陡峭,但掌握它能拓宽编程思维,帮助保持系统简洁性。

Notion:你的笔记、任务、Wiki和数据库一体化工作区

2025-01-26
Notion:你的笔记、任务、Wiki和数据库一体化工作区

Notion是一个功能强大的多合一工作区,将笔记、任务管理、Wiki和数据库整合在一个平台上。它灵活的模块化设计允许用户自定义工作流程,无论是个人笔记、团队协作,还是知识库管理,Notion都能胜任。其简洁直观的界面和强大的自定义功能使其成为高效办公和知识管理的理想工具。

开发

Asahi Linux M3 芯片组支持现状

2025-01-26
Asahi Linux M3 芯片组支持现状

Asahi Linux 项目的维基页面详细介绍了其对苹果 M3 系列芯片(M3、M3 Pro 和 M3 Max)的支持情况。该页面以表格形式列出了各种硬件功能在不同 Asahi Linux 版本(如 linux-asahi、asahi-edge 等)中的支持状态,包括已稳定支持、正在开发以及暂未支持的功能。值得注意的是,由于 M3 系列芯片尚未正式发布,许多功能的支持情况是基于苹果公司以往的更新模式进行预测的。页面还特别说明了某些功能(例如 cpuidle)的实现细节和上游合并的困难。

无风险向量搜索赋能现有应用,解锁AI创新

2025-01-26
无风险向量搜索赋能现有应用,解锁AI创新

本文介绍了如何利用向量搜索技术无风险地增强现有应用程序,无需重新构建整个系统。作者通过在现有数据库中添加向量相似性搜索和AI API调用功能,以一个简单的推荐引擎为例,展示了如何将猫的图片嵌入与TPCC购买历史数据结合,实现基于相似猫图像的商品推荐。这说明了通过简单的SQL查询,就能在现有应用中添加AI功能,提升用户体验,并强调了数据库引擎、向量索引和I/O子系统在高并发负载下的性能测试的重要性。

开发

Apache Iceberg:大数据分析的可靠表格格式

2025-01-26

Apache Iceberg是一个高性能的分析型大数据表格格式,它为Spark、Trino、Flink等多种引擎提供对同一张表的同时安全访问。Iceberg支持灵活的SQL命令,例如数据合并、行更新和目标删除,并能通过数据文件重写或增量更新来优化读写性能。此外,它还支持隐藏分区、时间旅行和回滚功能,方便用户进行高效查询和数据管理。

开发 表格格式

轻量级Linux发行版Chimera:挑战Systemd的简约之美

2025-01-26

Chimera Linux是一个全新的Linux发行版,目标是打造一个“简单、透明、易上手”的桌面系统。它从零开始构建,近期发布了首个测试版。Chimera大胆摒弃了Systemd,采用BSD工具和Dinit init系统,以减少依赖和复杂性,并使用musl C库替代glibc。虽然安装过程需要手动配置,但其简洁的设计和对GNOME/KDE等桌面环境的支持,使其对经验丰富的用户颇具吸引力。Chimera致力于提供一个精简易用的Linux系统,而非卷入关于软件选择的争论。

开发 Systemd

SQLook:怀旧风格的SQLite数据库管理器

2025-01-26
SQLook:怀旧风格的SQLite数据库管理器

SQLook是一款基于Web的SQLite数据库管理器,它拥有复古的Windows 2000界面风格。它结合了现代Web技术和经典美学,提供数据库管理、可视化数据库结构查看器、交互式SQL查询编辑器、表格生成器等功能,并支持数据导出、样例数据生成等。开发者Ralph Barendse受到Windows 2000界面的启发,使用HTML5、CSS3、JavaScript和SQL.js构建了这款工具。

开发

Puck 0.18 发布:全新拖拽引擎,支持 CSS Grid 和 Flexbox

2025-01-25
Puck 0.18 发布:全新拖拽引擎,支持 CSS Grid 和 Flexbox

开源可视化页面构建器 Puck 发布了 v0.18 版本,核心更新是全新的拖拽引擎,全面支持 CSS Grid 和 Flexbox 布局,极大提升了页面构建的灵活性和效率。此版本还新增了动态 DropZone 高度调整、交互式热键、父组件选择器等功能,并移除了一些限制性样式,增强了嵌入其他应用的便捷性。同时,也对一些组件和属性进行了改进和弃用,详细内容请参考更新日志。

用Python面向对象实现恩尼格玛密码机

2025-01-25

本文介绍了一个用Python面向对象编程实现的恩尼格玛密码机。作者基于《密码本》中恩尼格玛机的描述,将恩尼格玛机的各个组件(转子、接线板、反射器等)分别用类来表示,模拟了其加密解密过程。该实现包含三个转子、一个接线板和一个反射器,但简化了环形设置。作者指出,用代码模拟恩尼格玛机比实际制造一台要容易得多,并强调了计算机的强大功能。

WebFFT:网页上最快的傅里叶变换

2025-01-25
WebFFT:网页上最快的傅里叶变换

WebFFT是一个包含多个FFT库的元库,既有JavaScript版本,也有WebAssembly版本。它会自动基准测试所有子库并选择最佳的方案。只需几行代码即可实现快速傅里叶变换(FFT)和二维FFT,并支持实值输入。WebFFT 还提供性能分析工具,方便用户优化代码。

开发 FFT

Tailwind CSS平滑圆角插件:corner-smoothing

2025-01-25
Tailwind CSS平滑圆角插件:corner-smoothing

corner-smoothing是一个Tailwind CSS插件,它能为你的元素创建类似苹果设备般平滑的圆角。安装简单,使用方法也很便捷,只需在你的项目中安装插件并应用相应的类名即可。这个插件受到了Rob的启发,为开发者提供了一种更精细的圆角控制方式,提升用户界面美观度。

开发 圆角

testtrim:一个无法自测的测试工具?直到现在!

2025-01-25

作者Mathieu Fenniak讲述了他为testtrim(一个优化软件测试执行的实验性项目)添加系统调用追踪功能的历程。最初,testtrim通过strace追踪系统调用来识别测试间的依赖关系,但无法用于自身测试,因为strace无法追踪已在追踪中的进程。作者尝试了两种嵌套追踪方案,第一种方案导致性能极差,第二种方案由于进程间共享状态和strace输出的非原子性而失败。最终,作者通过使用FIFO管道和共享内存来实现父子进程间的数据流实时传递,解决了嵌套追踪问题,成功使testtrim能够自测,并验证了其在减少测试目标方面的价值。

JetBrains IDE 的 GitHub Actions 集成工具:Actionate

2025-01-25
JetBrains IDE 的 GitHub Actions 集成工具:Actionate

Actionate 是一款将 GitHub Actions 集成到 JetBrains IDE 的插件,它让开发者能够在统一的环境中管理和运行 GitHub Actions 工作流,无需在 IDE 和 GitHub 网站之间切换。Actionate 支持多 GitHub 账户,可以查看和重新运行工作流,并提供详细的日志和错误信息。它还支持手动触发工作流和自定义参数。总而言之,Actionate 显著提升了开发效率。

开发 JetBrains IDE

告別查詢構建器:直接用SQL写查询更优雅

2025-01-25

这篇文章探讨了在编写数据库查询时,直接使用SQL语句而非借助查询构建器的优势。作者以多个例子说明,通过巧妙运用SQL的特性(如`IS NULL`、`COALESCE`、`ARRAY_REMOVE`、`STRING_TO_ARRAY`等),可以简洁地处理可选参数、数组、分页和批量更新等常见场景,减少Rust代码的复杂度,并提高代码可读性和可测试性。作者认为,直接使用SQL不仅能减少代码量,还能更容易地进行数据库测试和调试。

开发

HTML 元素全览:一次完整的 HTML 元素之旅

2025-01-25

本文以生动有趣的方式,逐一介绍了 HTML 的各种元素,从常见的标题、段落、列表到鲜为人知的 ``、``,以及废弃的 ``、`` 元素,应有尽有。文章还包含一个交互式问卷,让读者更深入地理解 HTML 元素的应用。这是一次充满乐趣的 HTML 学习之旅,带你领略 HTML 元素的丰富性和多样性。

开发 HTML 元素

开源爱心协议:用表情符号点赞网站

2025-01-25

Open Heart Protocol 允许匿名用户向 URL 发送表情符号反应。用户可以使用简单的 POST 请求发送表情符号,服务器则统计每个表情符号的出现次数并以 JSON 格式返回。该协议简单易用,开发者可以使用 Cloudflare Worker 或 Glitch 等平台快速搭建自己的服务端。相比 WebMention,它更加轻量级,也更容易实现。

开发

用 BQN 征服 Advent of Code 2024

2025-01-25

作者参与了 2024 年的 Advent of Code 挑战,并选择学习 BQN 数组语言。文章详细记录了学习过程,包括环境搭建、文档和工具的使用体验,以及对 BQN 语言特性的介绍,例如其独特的运算符、数组操作和函数定义方式。作者还分享了几个 Advent of Code 题目解法,展示了 BQN 在处理数组和网格问题上的优势,并对比了 BQN 与命令式语言的差异。虽然初期学习曲线陡峭,但作者最终认为 BQN 是一种有趣且强大的语言,特别适合解决编程谜题。

开发 BQN

Gleam编程语言初体验:兼具友好社区和高效开发

2025-01-25
Gleam编程语言初体验:兼具友好社区和高效开发

作者在陪产假前学习并使用Gleam编程语言完成了一个项目。他被Gleam友好的社区、简洁的设计、强大的类型系统以及对Erlang和JavaScript的编译支持所吸引。虽然在项目中也遇到了一些小问题,例如重复键入类型名称,但他对Gleam的整体体验感到满意,并计划继续学习和使用。他希望Gleam未来能支持WebAssembly/WASI和Python后端。

开发

YC孵化器公司Inboxbooster招聘JVM字节码工程师

2025-01-25
YC孵化器公司Inboxbooster招聘JVM字节码工程师

Inboxbooster,一家由Y Combinator孵化的初创公司,正在招聘一名远程JVM字节码工程师。该公司正在开发一项能够自动并行化Java应用程序的技术,通过后编译转换字节码来实现,已实现2.8倍的提速。该职位需要深入了解JVM内部机制、字节码操作和Java并发性,并参与将原型系统转化为生产就绪系统。这是一个充满挑战和机遇的职位,适合有志于改变软件性能的工程师。

开发 并行化

Rails 应用:IO 密集型的神话?

2025-01-25

许多人认为 Rails 应用是 IO 密集型的,数据库是性能瓶颈,Ruby 性能不重要。但这篇文章挑战了这一观点。作者认为,虽然数据库是扩展时的瓶颈,但这并不意味着应用大部分时间都在等待 IO。通过分析 YJIT 的效率提升以及常见的性能问题(例如缺少数据库索引),作者指出许多 Rails 应用实际上是 CPU 密集型的。文章还强调了 CPU 饥饿和 IO 等待之间的混淆,以及不同执行模型(异步、多线程、多进程)的选择取决于应用的 IO/CPU 比例。作者呼吁关注 Ruby 性能,并指出一些 Rails 代码可以优化以提高性能。

开发

梯度下降优化算法概述

2025-01-25
梯度下降优化算法概述

本文深入浅出地讲解了梯度下降优化算法,这是优化神经网络和其他机器学习算法的首选方法。文章从梯度下降的变体(批量梯度下降、随机梯度下降、小批量梯度下降)开始,探讨了训练过程中的挑战,例如学习率选择和鞍点问题。随后,文章详细介绍了各种流行的基于梯度的优化算法,包括动量法、Nesterov 加速梯度法、Adagrad、Adadelta、RMSprop、Adam、AdaMax、Nadam和AMSGrad,并解释了它们的原理和更新规则。此外,文章还涵盖了并行和分布式设置下优化梯度下降的算法和架构,以及其他一些提高梯度下降性能的策略,例如洗牌和课程学习、批量归一化、提前停止和梯度噪声。

开发

Notion:你的笔记、任务、Wiki 和数据库的一站式工作区

2025-01-25
Notion:你的笔记、任务、Wiki 和数据库的一站式工作区

Notion 是一款多合一的工作区,它将笔记、任务管理、Wiki 和数据库功能整合在一个平台上。你可以用它来记录笔记,管理待办事项,创建团队Wiki,甚至构建自定义数据库。Notion 的强大之处在于其灵活性,它可以根据你的需求进行高度定制,无论是个人使用还是团队协作,都能找到适合的方案。它简洁直观的界面也方便上手,让你轻松管理各种信息,提升工作效率。

开发

无Cookie分析真的不需要Cookie横幅吗?

2025-01-25

本文探讨了声称无需Cookie也能进行网站分析的“隐私感知分析”工具是否真的不需要Cookie横幅。作者深入研究了欧盟的隐私法规,特别是《电子隐私指令》(ePrivacy Directive),发现即使是所谓的“无Cookie”分析,也可能因访问用户设备上的信息(例如User-Agent)而需要获得用户同意,从而需要显示Cookie横幅。作者认为,目前的技术手段难以完全规避欧盟隐私法规对数据访问的要求。

开发

基于MQTT的安卓短信网关:将你的安卓手机变为短信中转站

2025-01-25
基于MQTT的安卓短信网关:将你的安卓手机变为短信中转站

这个项目将你的安卓手机变成一个强大的短信网关,利用MQTT协议进行短信收发。它支持发送短信、接收短信并将其发送到服务器,以及发送已发送和已送达通知。此外,它还支持USSD请求和多SIM卡功能,并具有短信发送失败重试机制。虽然部分功能(如USSD和多SIM卡)的兼容性取决于手机型号和运营商,但该项目提供了完整的源代码,方便开发者根据自身需求进行编译和修改。

开发 短信网关

Helix 编辑器集成文件浏览器

2025-01-25
Helix 编辑器集成文件浏览器

Helix 编辑器迎来重大更新!开发者 drybalka 通过一个精简的代码改动,为 Helix 集成了文件浏览器功能。这个文件浏览器类似于 Telescope 文件浏览器,但它巧妙地利用了 Helix 现有的文件选择器,只修改了少量核心代码,极大提升了用户的浏览体验。虽然目前功能相对基础,但已足够满足大多数用户的日常需求。此次更新解决了用户长期以来对文件浏览功能的渴望,为 Helix 的便捷性和易用性添砖加瓦。

开发
1 2 176 177 178 180 182 183 184 213 214