分类: 开发

瞬息万变的策略:一位程序员的电脑使用哲学

2025-05-13

本文作者是一位程序员,他分享了他独特的电脑使用习惯,核心思想是“瞬息万变”策略:所有事物要么被有组织地永久保存,要么被严格地视为临时数据。他从关闭持久化Shell历史记录、定期清理GUI桌面、频繁关闭浏览器等方面阐述了这一策略,并解释了其背后的原因和益处,例如提高效率、增强组织性、减少数据冗余等。他还讨论了公司记录管理、自动化操作系统设置等相关实践,并指出该策略并非绝对适用,例如电子邮件和浏览器历史记录因其特殊性而例外。

开发 编程习惯

Elixir 之旅:深入 Erlang 虚拟机 BEAM

2025-05-12
Elixir 之旅:深入 Erlang 虚拟机 BEAM

本文是“七步掌握 Elixir”系列的第一篇,深入探讨了 Elixir 语言强大的可靠性根基——Erlang 虚拟机 BEAM。文章介绍了 Erlang 语言的历史、设计目标以及它对 Elixir 的重要性。Erlang 诞生于 80 年代中期,最初用于电信领域,现已成为通用语言,其特性包括分布式、容错、大规模并发和软实时系统。BEAM 虚拟机负责执行 Erlang 代码,管理并发进程,并通过异步消息传递实现系统容错。Elixir 运行于 BEAM 之上,继承了其优点,并拥有更简洁的语法和强大的库。文章最后以一个简单的代码示例展示了 Erlang 和 Elixir 的交互方式,并预告了下一章节关于 Erlang 进程和并发的讨论。

开发

构建你自己的本地语音助手:边缘AI的回归

2025-05-12
构建你自己的本地语音助手:边缘AI的回归

厌倦了依赖云端大型语言模型?本文介绍了一个构建本地语音助手的五步教程,该助手能够理解自然语言、执行应用程序函数,并完全尊重用户隐私。教程涵盖了使用LoRA微调LLaMA 3.1、创建函数调用数据集、进行本地推理以及集成语音输入/输出等步骤。作者强调了MLOps原则在本地AI开发中的重要性,并提供了构建可靠、可维护的本地语音助手的实践指南。

开发

arXivLabs:与社区协作者的实验项目

2025-05-12
arXivLabs:与社区协作者的实验项目

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

开发

一键构建SOC 2合规基础设施

2025-05-12
一键构建SOC 2合规基础设施

还在为SOC 2合规而头疼吗?这款工具提供清晰易用的SOC 2清单,帮助你理解要求并轻松追踪进度。它还能一键生成符合SOC 2标准的基础策略,简化文档准备工作。此外,它支持集中上传证据、将文件直接链接到控制项,并简化审计准备工作。团队协作功能允许你在一个平台上分配任务、跟踪状态和管理证据请求。未来还将推出自动化证据收集、持续控制监控和供应商集成等功能。

开发 SOC 2

Mergeable:GitHub PR 的更佳收件箱

2025-05-12
Mergeable:GitHub PR 的更佳收件箱

Mergeable 是一款提升 GitHub Pull Request 管理效率的浏览器应用。它允许用户通过灵活的搜索查询将 PR 组织成不同的区块,所有数据都存储在本地浏览器,支持快捷键快速导航,并能连接多个 GitHub 实例(包括 GitHub Enterprise)。更重要的是,它能突出显示需要你处理的 PR,无需安装任何 GitHub 应用。 你可以在 https://app.usemergeable.dev 使用公共实例,或参考 https://www.usemergeable.dev 的文档自行部署。

开发

五步掌握N体模拟:Python编程教程

2025-05-12

本教程系列旨在指导初学者使用Python编写快速、简洁的N体引力模拟代码,类似于“CFD Python:12步Navier-Stokes方程”课程。教程循序渐进,即使是编程新手也能轻松掌握。每个步骤都提供了详细的解释和完整的代码,鼓励读者将代码改写成自己的版本以加深理解。完成本教程后,你将能够编写自己的N体模拟代码,并进一步探索相关项目。

开发 N体模拟

arXivLabs:社区协作实验项目

2025-05-12
arXivLabs:社区协作实验项目

arXivLabs是一个让合作者直接在arXiv网站上开发和分享新功能的框架。参与其中的个人和组织都认同arXiv的开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,只与遵守这些价值观的合作伙伴合作。如果你有想法能为arXiv社区增值,那就了解更多关于arXivLabs的信息吧!

开发

OCaml 中 GADTs 的高效内存表示

2025-05-12
OCaml 中 GADTs 的高效内存表示

本文探讨了在 OCaml 中使用广义代数数据类型 (GADTs) 来优化内存表示的方法。作者首先解释了 OCaml 多态性的局限性,特别是 List.iter 函数在处理不同数据类型时,由于内存表示的统一性导致的空间效率问题。然后,作者尝试了使用普通变体和对象两种方法来创建一个既能使用普通数组,又能使用字节数组的 Compact_array 类型,但都遇到了类型推断和内存分配效率的问题。最终,作者使用 GADTs 成功地解决了这个问题,实现了对不同数据类型数组的灵活且高效的内存表示,证明了 GADTs 不仅适用于编译器编写,也适用于系统编程,特别是需要优化内存表示的高性能应用场景。

开发

Nix:构建可验证软件供应链的利器

2025-05-12
Nix:构建可验证软件供应链的利器

面对日益严格的软件供应链安全法规,企业常常采用成本高昂的隔离环境和繁琐的审查流程。本文介绍了Nix,一个强大的包和依赖管理器,它如何帮助企业在不影响开发效率的前提下,构建可验证的软件供应链。Nix允许追踪软件的精确来源和完整性,生成可供审计的离线源代码包,满足监管要求,同时降低成本,提高开发效率。通过一个可引导的NixOS镜像示例,文章详细阐述了Nix如何实现从依赖树提取可验证的固定输出派生(FOD)到离线重建整个系统的过程,最终确保软件的完整性和可追溯性。

开发 可验证性

告别HN刷屏焦虑:AI赋能的个性化新闻阅读

2025-05-12
告别HN刷屏焦虑:AI赋能的个性化新闻阅读

作者长期依赖Hacker News获取科技新闻,但繁杂的资讯和不断增长的未读内容让他不堪重负。为此,他开发了两个工具:一个Telegram机器人Tobie,定时推送符合特定条件(例如关键词、点赞数)的HN文章;一个Chrome扩展HaNe,提供付费文章的存档链接、快速定位HN帖子和AI评论摘要功能。这两个工具极大提升了他的阅读效率,减少了屏幕时间,并缓解了信息焦虑。

开发

嵌入式技术:技术写作的未来?

2025-05-12

本文探讨了嵌入技术如何革新技术写作。不同于文本生成模型,嵌入技术通过将文本转换为高维向量(嵌入),实现文本间的语义比较。文章解释了嵌入的生成方式、成本以及不同模型间的差异,并以Voyage-3模型为例,说明其在大文本处理方面的优势。作者通过类比地图坐标,解释了嵌入在高维空间中的表示方式,并以Word2vec为例,展示了嵌入技术捕捉语义关系的能力。最后,文章介绍了嵌入技术在文档网站相关页面推荐中的应用,并展望了其在技术写作领域的巨大潜力。

开发

StarGuard:GitHub 仓库信任评分工具

2025-05-12
StarGuard:GitHub 仓库信任评分工具

StarGuard 是一款命令行工具,用于检测 GitHub 仓库中的虚假点赞活动、依赖项劫持、许可证风险等开源风险信号。它通过分析仓库的点赞数、依赖项、许可证、维护者和代码等方面,生成一个信任评分,帮助 CTO、安全团队和风投公司快速评估开源项目的风险。StarGuard 支持多种输出格式,包括 JSON、Markdown 和纯文本报告,并可以生成星级历史图和 shields.io 徽章。

开发

Ruby 命名空间提案:利弊权衡

2025-05-12

这篇博文对Ruby命名空间的提案提出了质疑。作者认为,该提案旨在解决库名冲突、全局模块共享和多版本gem依赖等问题,但这些问题在实际开发中并不常见,且提案带来的复杂性(例如去重)可能弊大于利。作者更倾向于一种更轻量级的方案,例如限制常量访问,并提供类似BasicObject的机制,以提高代码可维护性和模块化。

开发

LLVM代码行为准则委员会的失败:一个开源贡献者的故事

2025-05-12

一位开源贡献者在LLVM项目中提交了一个bug报告,却遭遇了不公正的待遇。尽管提供了详尽的证据,但代码行为准则委员会却认定他违反了行为准则,而忽略了其他贡献者明显的违规行为。这引发了对开源社区中代码行为准则执行的质疑,以及对公平性和问责制的担忧。该事件甚至蔓延到Mesa项目,进一步凸显了开源社区中需要改进冲突解决机制的问题。

Organic Maps 社区分支 CoMaps 发展迅速

2025-05-12
Organic Maps 社区分支 CoMaps 发展迅速

Organic Maps 的社区分支 CoMaps 项目进展顺利,该项目秉承透明、社区决策、非营利、公益、完全开源和注重隐私的原则。目前正集中精力构建基础设施和技术,首个版本正在开发中。项目名称“CoMaps”暂定,社区成员可在 5 月 20 日前参与投票最终确定。CoMaps 欢迎社区参与开发、组织和决策,以及传播项目、制作宣传素材和捐赠。与 Organic Maps 股东的谈判没有取得实质性进展,Viktor 坚持保留对 Organic Maps 的完全控制权,项目未来仍存在不确定性。

kdlfmt: 一款强大的KDL代码格式化工具

2025-05-12
kdlfmt: 一款强大的KDL代码格式化工具

kdlfmt是一个基于Rust的命令行工具,用于格式化KDL (KDL)文档。它支持多种安装方式,包括Cargo、Homebrew、npm和预编译二进制文件。kdlfmt 提供了 `format` 命令用于格式化KDL文件,`check` 命令用于验证文件格式,以及 `completions` 命令用于生成shell自动补全功能。它还支持`.kdlfmtignore`文件来忽略特定文件或目录,并提供了多种配置选项,例如指定KDL版本和日志级别。无论是通过管道输入还是直接处理文件,kdlfmt都能高效地格式化你的KDL代码,提高代码的可读性和一致性。

开发 KDL

Dart 编译器指南:从入门到精通

2025-05-12
Dart 编译器指南:从入门到精通

这篇指南详细介绍了 Dart 编译命令 `dart compile` 的使用方法,它可以将 Dart 程序编译到目标平台。你可以通过不同的子命令生成包含 Dart 运行时的可执行文件或模块(快照)。指南涵盖了 `exe`、`aot-snapshot`、`jit-snapshot`、`kernel`、`js` 和 `wasm` 等子命令,并详细解释了每种输出类型的用途和特性,例如自包含的可执行文件、AOT 模块、JIT 模块、可移植的 Kernel 模块、JavaScript 代码以及 WebAssembly 代码。此外,指南还介绍了交叉编译、代码签名、以及优化生产环境 Web 编译的方法。

开发

Armbian重大更新:集成OpenMediaVault及其他改进

2025-05-12
Armbian重大更新:集成OpenMediaVault及其他改进

Armbian团队本周发布了重大更新,涵盖用户体验、引导加载程序和系统支持等方面。最引人注目的是集成了OpenMediaVault,允许用户轻松将单板计算机变成网络存储设备。此外,改进包括移除冗余的无线热点提示,提升了Orange Pi 5 Max和PocketBeagle2的引导加载程序,并优化了Rockchip64平台的性能和稳定性。Armbian持续改进基础设施,清理了无用代码,并为未来的测试做准备。

PyPI后端Warehouse测试套件性能优化:从163秒到30秒

2025-05-12
PyPI后端Warehouse测试套件性能优化:从163秒到30秒

Trail of Bits团队对PyPI后端Warehouse的测试套件进行了优化,将执行时间从163秒缩短到30秒,测试数量从3900个增加到4700多个。他们通过以下方法实现了81%的性能提升:使用pytest-xdist并行化测试执行;利用Python 3.12的sys.monitoring进行更高效的覆盖率检测;优化测试发现;消除不必要的导入。这些优化方法对许多Python项目都适用,特别是那些测试套件不断增长并成为开发瓶颈的项目。

开发 测试优化

开发者在韩国Airbnb中逆向工程Windows安全中心

2025-05-12

一位开发者在韩国Airbnb度假期间,利用仅有的MacBook和远程调试环境,克服重重困难,成功逆向工程了Windows安全中心,并开发了一个名为defendnot的工具,实现了无需依赖其他反病毒软件即可禁用Windows Defender的功能。这篇文章详细描述了开发过程中遇到的各种挑战,包括跨平台调试、延迟问题、以及对Windows令牌和安全机制的深入理解。最终,开发者成功完成了项目,但同时也感叹了这令人抓狂的开发经历。

编程语言排行榜:Python、Rust和JavaScript领跑

2025-05-12

五月编程语言排行榜新鲜出炉!Python凭借其易用性和广泛应用继续占据榜首,而Rust凭借其性能和安全性持续走红,JavaScript在Web开发领域的统治地位依然稳固。本月值得关注的新闻包括C++嵌入式环境安全高效研讨会、Kotlin Compose Multiplatform稳定版发布以及Python 3.14.0 beta 1的推出。各大排行榜(PyPL、TIOBE、GitHub Pushes)的排名略有差异,但Python、JavaScript和C系的语言始终占据前列,反映了它们在不同领域的影响力。

开发

利用GNOME扩展提升专注力:将电脑时钟变成专注提醒

2025-05-12
利用GNOME扩展提升专注力:将电脑时钟变成专注提醒

作者因经常分心而苦恼,于是巧妙地利用Ubuntu GNOME桌面环境的“面板日期格式”扩展和一个简单的bash脚本,将电脑时钟变成了专注力提醒。脚本允许用户设置当前专注的任务,并将任务名称显示在时钟旁边。这种方法无需意志力,利用人们频繁查看时钟的习惯,潜移默化地提升专注力,且不会打断工作流程。

从零开始写垃圾回收器:一个程序员的20年历程

2025-05-12

一位拥有20年编程经验的工程师,在学习Immix垃圾回收算法后,决定为Guile Scheme实现一个新的垃圾回收器。他最初的目标是创建一个通用的内存管理接口,但最终开发出了名为Nofl的新型垃圾回收器,其核心思想是将标记-清除算法的辅助表用于bump-pointer分配。作者还分享了其将研究成果投稿到学术会议的经历,以及对学术研究和工业界的思考。

开发

Rust编写的分布式SQL数据库toyDB:一个教育项目

2025-05-11
Rust编写的分布式SQL数据库toyDB:一个教育项目

toyDB是一个用Rust从零开始构建的分布式SQL数据库教育项目。它旨在以简单易懂的方式演示分布式SQL数据库的架构和概念,支持大多数常见的SQL特性,包括连接、聚合和事务。虽然性能和可扩展性并非其主要目标,但它包含一个基准测试工具,用于评估不同工作负载下的性能。toyDB采用Raft共识算法管理事务性键值存储,并在此之上构建SQL查询引擎。

开发

JAX 中的快速扫描法求解 Eikonal 方程

2025-05-11

本文介绍了使用 JAX 实现快速扫描法求解 Eikonal 方程,该方程在界面演化和图像处理等领域应用广泛。文章首先解释了水平集方法和 Eikonal 方程的概念,然后详细阐述了快速扫描法的算法原理,包括网格设置、迭代更新以及 Godunov 上风差分格式的使用。最后,作者提供了基于 NumPy 和 JAX 的代码实现,并进行了性能比较,结果显示 JAX 版本显著提升了计算效率。此外,文章还探讨了并行化快速扫描法的尝试及遇到的挑战。

Scraperr:基于XPath的精准网页数据抓取工具

2025-05-11
Scraperr:基于XPath的精准网页数据抓取工具

Scraperr是一款自托管的网页数据抓取应用,使用XPath选择器精准提取网站数据。它提供简洁的界面来管理抓取任务、查看结果和导出数据。支持队列管理、域名爬取、自定义请求头、媒体文件下载、结果可视化和多种数据导出格式,并提供通知功能。请务必遵守robots.txt、网站服务条款和限速规则,仅用于允许抓取的网站。

开发 网页爬虫

沙盒库的挑战:通往安全之路荆棘密布

2025-05-11
沙盒库的挑战:通往安全之路荆棘密布

本文探讨了构建沙盒库面临的巨大挑战。作者深入分析了威胁模型、内存篡改、跨语言互操作以及代码复用等问题。即使是像Java这样的语言,由于反射、全局方法和原生方法等特性,也难以实现完全的沙盒隔离。Joe-E语言作为一种基于能力的编程语言,虽然极大地限制了Java的功能,但为沙盒库的设计提供了宝贵的经验。然而,这种方法也带来了“上帝对象”问题,即需要一个对象来控制所有权限,这与良好的面向对象设计原则相悖。Chrome的Mojo系统则提供了一种基于进程间通信的沙盒解决方案,但它也存在着API不稳定、代码复用困难以及性能开销等问题。总而言之,构建安全的沙盒库仍然是一个复杂且有待解决的难题。

开发

200行Clojure代码实现的LSP客户端:轻量级语言服务器交互

2025-05-11

本文讲述了作者如何用不到200行Clojure代码实现一个精简的LSP客户端,并以此为基础构建了一个命令行代码检查工具。文章详细介绍了LSP协议的基础通信层、JSON-RPC层以及客户端API的实现,并讨论了在实际应用中遇到的挑战,例如大多数语言服务器依赖通知而非请求来提供诊断信息,导致构建简单的命令行工具变得复杂。作者最后总结了LSP的优缺点,并展望了未来基于WASM的语言服务器技术。

开发

Rust开发者眼中的C++内存泄漏:一场与指针的较量

2025-05-11
Rust开发者眼中的C++内存泄漏:一场与指针的较量

Rust开发者常常戏谑C++程序员与内存泄漏相伴,如同宿命。但这篇文章却反其道而行之,通过一个简单的C++程序演示如何主动制造并追踪内存泄漏。作者巧妙地运用`_CrtDumpMemoryLeaks`等调试工具,将内存泄漏的查找过程比作一场与指针的较量,最终成功找出并定位泄漏点,为C++开发者提供了一种有效的排查内存问题的思路。

开发
1 2 90 91 92 94 96 97 98 213 214