分类: 开发

不变的Linux发行版:适合你吗?

2024-12-25
不变的Linux发行版:适合你吗?

本文探讨了不变性Linux发行版,这类发行版通过将核心系统锁定为只读来提高稳定性和安全性。文章介绍了不变性Linux发行版的概念、优势以及选择它的标准,并推荐了几款桌面和服务器版本,例如Fedora Silverblue、Vanilla OS和openSUSE Aeon等。作者分享了个人经验,并讨论了不变性发行版与传统发行版以及快照工具(如Timeshift和Btrfs)的区别。总而言之,不变性Linux发行版为追求稳定性和安全性的用户提供了一种新的选择,虽然牺牲了一定的灵活性,但换来了更轻松的维护体验。

Jujutsu版本控制工具:高效的代码合并与分支管理

2024-12-25
Jujutsu版本控制工具:高效的代码合并与分支管理

本文介绍了使用Jujutsu版本控制工具进行高效代码合并和分支管理的方法。作者提出了一种“megamerge”工作流,通过创建合并提交作为工作区,并在完成部分工作后使用`jj squash`将更改压缩到合适的父提交中。更进一步,`jj absorb`命令可以自动将更改整合到合适的父提交,简化了工作流程。这种方法使得开发者可以方便地管理多个并行的工作流,提高开发效率,尤其在处理大型、长期运行的升级项目时优势明显。

开发 代码合并

T2 SDE:跨架构操作系统开发环境的重大更新

2024-12-24

T2 SDE是一个低代码、超便携的软件包管理器和Linux发行版,支持对各种架构(ARM、x86-64等)进行自动化、可重复的交叉编译,构建定制操作系统。最新版本T2 24.12包含37个预编译的ISO镜像,支持25种CPU架构,并包含LibreOffice、OpenJDK等众多软件包,甚至支持在Nintendo Wii U上运行。T2持续改进,并致力于支持IA-64 Itanium架构,不断增强安全性及性能,例如增加了完整的磁盘加密和硬件视频编解码支持。

开发 交叉编译

AI反弹:开发者渴望实用性而非炒作

2024-12-24
AI反弹:开发者渴望实用性而非炒作

InfoWorld文章指出,开发者们对AI的过度炒作感到厌倦,他们更需要的是实用且易于集成的AI工具。文章以RamaLama项目为例,展示了如何利用容器技术简化AI模型的部署和使用,并强调了小型化、易于理解的AI模型的重要性。开发者希望AI能够无缝融入现有工作流程,而不是成为一个独立的“特殊事物”。这种“AI反弹”恰恰为AI技术的有效落地提供了契机。

国际空间站尿液罐实时监测应用上线

2024-12-24
国际空间站尿液罐实时监测应用上线

一位开发者创建了一款名为pISSStream的macOS菜单栏应用,实时显示国际空间站尿液罐的满载程度。该应用虽然代码风格并非完美,但其创意独特,以轻松幽默的方式呈现了太空生活中的一个细节。开发者表示,未来不会添加其他数据,只专注于尿液罐的填充情况。

开发 macOS应用

提升PGP加密邮件安全性的实战指南

2024-12-24
提升PGP加密邮件安全性的实战指南

这份指南并非教你如何安装和使用PGP加密邮件,而是教你如何更安全地使用PGP进行邮件通信。它强调除了加密邮件内容外,更要关注操作流程安全,包括邮件撰写、存储、密钥管理等方面。指南建议使用文本编辑器撰写邮件,避免在邮件客户端保存草稿;定期生成新的密钥,并及时销毁旧密钥;避免在密钥服务器上发布公钥;邮件主题应保持为空,以减少元数据泄露;使用`gpg --throw-keys`选项加密数据,以防止泄露密钥元数据;默认情况下启用邮件加密,并明确选择是否签名邮件。总之,这份指南旨在帮助用户将PGP的安全性能最大化。

开发 PGP 邮件安全

广域事件:一种提升可观测性的实用指南

2024-12-24

本文介绍了一种名为“广域事件”的可观测性方法,它通过在每个工作单元中发出包含所有可收集信息的单个事件来改进系统监控和调试。作者详细介绍了如何选择合适的工具(如Honeycomb)、添加丰富的属性(包括服务元数据、实例信息、构建信息、HTTP请求和响应细节、用户和客户信息、速率限制、缓存信息、本地化信息、运行时间、指标、异步请求摘要、采样信息和定时信息等),以及处理错误和特性标志。文章还解决了常见的疑虑,例如数据量过大、重复数据和与现有指标的关系等问题,并强调了这种方法在实际应用中的巨大价值。

Rust 语言能否添加细化类型?

2024-12-24

本文探讨了在 Rust 语言中添加细化类型的可能性。作者基于其先前开发的静态分析器 YAIOUOM (一个使用细化类型检查单位的例子) 的经验,分析了如何在 Rust 类型系统中实现细化类型,并提出了几种方案:通过调整 trait 解析、类型变量统一或引入可插拔关键字等方式,在编译过程的后期阶段进行类型检查。作者认为,乐观型方案(在编译早期阶段忽略单位信息,后期再进行检查)更可行,并讨论了 API 设计和错误消息处理等问题。最终,作者指出后续工作包括收集反馈、编写支持插件的 rustc 驱动程序以及实现几种细化类型。

开发 细化类型

计算机科学的本质:优雅胜于复杂

2024-12-24

这篇由Edsger W. Dijkstra撰写的文章探讨了计算机科学的本质。Dijkstra认为,计算机科学应成为数学的一个高度形式化的分支,注重方法论而非事实知识,从而消弭理论与实践的界限。他批评了当前学术界对复杂性的追捧以及由此带来的对简洁有效的解决方案的忽视,并呼吁计算机科学家追求优雅的解决方案,从中获得乐趣。

开发

AI生成的低质量漏洞报告淹没开源项目

2024-12-24
AI生成的低质量漏洞报告淹没开源项目

开源项目维护者们正被AI生成的低质量漏洞报告所困扰。这些报告通常质量低劣,浪费维护者宝贵的时间。Python软件基金会的安全开发人员Seth Larson指出,AI系统无法理解代码,生成的报告常常是错误的,甚至带有恶意性质。Curl项目也经历了类似的问题,维护者Daniel Stenberg直言不讳地批评了这种行为。这不仅浪费了志愿者的精力,还可能导致安全漏洞被忽视。解决这个问题需要开源社区的共同努力,包括增加资金支持,提高维护者的工作效率,以及开发更有效的过滤机制来识别和处理AI生成的垃圾报告。

开发 漏洞报告

JavaScript性能测试的困境:JIT编译器、引擎差异与计时精度

2024-12-24
JavaScript性能测试的困境:JIT编译器、引擎差异与计时精度

JavaScript的性能测试并非易事。文章指出,JIT编译器会根据代码运行情况动态优化,导致不同测试运行结果差异巨大;不同JavaScript引擎(如V8、JavaScriptCore)的性能差异显著,同一代码在不同引擎下的表现可能大相径庭;浏览器为了防止计时攻击,有意降低计时精度,使得精确的性能测量变得困难。作者建议,在服务器端可以使用d8等工具控制优化级别和垃圾回收,而在浏览器端则只能依赖于开发者工具提供的有限信息。总而言之,JavaScript的性能测试需要考虑JIT编译器、引擎差异、计时精度等诸多因素,这使得它比其他语言的性能测试更为复杂。

Rust借用检查器的四个局限性

2024-12-24

本文讨论了Rust借用检查器的四个令人惊讶的局限性,这些局限性即使经验丰富的Rust程序员也可能遇到。第一个局限是借用检查器无法充分考虑match和return语句,导致在处理HashMap时需要额外的检查。第二个局限与异步编程有关,目前Rust无法表达某些异步回调的类型签名。第三个局限是FnMut闭包不允许重新借用捕获的变量,限制了异步操作中对可变状态的访问。最后一个局限是Send检查器缺乏控制流感知能力,导致某些本应是Send的Future被错误地标记为非Send。作者通过具体的代码示例和解决方法,阐述了这些局限性及其带来的挑战,并呼吁改进Rust的类型系统以提升开发效率。

开发

AI赋能的本地化书签管理应用Hoarder强势来袭

2024-12-24
AI赋能的本地化书签管理应用Hoarder强势来袭

Hoarder是一款可自托管的书签管理应用,它不仅能存储链接、笔记和图片,还能利用AI技术进行自动标签化和全文搜索。它支持本地模型(如ollama),并具有OCR、Chrome/Firefox插件、iOS/Android应用、RSS订阅、REST API、页面存档等功能,旨在解决用户在多平台浏览信息后难以整理和检索的问题。项目目前处于积极开发中,但已提供demo供体验。

开发

Npflared:免费自托管的私有 npm 注册表

2024-12-24

Npflared 是一款免费开源的自托管私有 npm 注册表,基于 Cloudflare 的 Worker、D1 和 R2 服务,无需任何成本即可轻松搭建。它与现有的 npm 客户端完全兼容,让您和团队能够安全地管理私有 npm 包。只需简单的几步,即可获得一个功能完整的私有 npm 注册表,提升开发效率和安全性。

利用__bool__重载实现符号执行

2024-12-24
利用__bool__重载实现符号执行

本文介绍了一种巧妙的技巧,通过重载Python Z3库中的__bool__函数,实现了对Python代码的符号执行。作者发现,利用Z3库的特性,可以将Python代码中的条件语句转换为Z3表达式,从而实现路径探索和结果分析。这种方法避免了复杂的AST遍历,并可以直接在Python代码中使用,使得符号执行更加便捷。

GitHub新项目AuthorTrail:追踪你的Git代码贡献

2024-12-24
GitHub新项目AuthorTrail:追踪你的Git代码贡献

AuthorTrail是一个新的GitHub项目,旨在帮助开发者追踪他们在Git仓库中曾经修改过的所有文件。它提供基于作者邮箱的搜索功能、分层文件树可视化、代码查看器以及在默认编辑器中快速打开文件的便捷功能。该项目使用React、TypeScript、Tailwind CSS等技术构建,并支持深色模式。开发者只需克隆仓库、安装依赖并运行即可使用。

开发

深入浅出调试器:运行程序的剖析

2024-12-24
深入浅出调试器:运行程序的剖析

本文深入探讨了运行程序的底层机制。作者以游戏机卡带为例,类比解释了现代操作系统中程序的虚拟化执行方式,包括虚拟地址空间、执行线程、可执行映像、加载器、模块和进程等关键概念。文章详细阐述了虚拟地址空间如何通过页表机制将虚拟地址映射到物理地址,从而实现多个程序共享物理内存而互不干扰。此外,文章还介绍了执行线程的调度机制、可执行映像的格式(PE和ELF)、加载器的作用以及模块的动态加载和卸载。最后,文章总结了进程的概念,它作为运行程序的实例,整合了线程、模块和虚拟地址空间等资源。

开发 程序执行

Rye语言:一种基于电子表格的高级编程语言

2024-12-24

Rye 是一种新型编程语言,其核心概念是将电子表格作为一等公民,从而更贴近人类思考方式。文章介绍了 Rye 如何创建、加载和操作电子表格,支持从 CSV、SQL 和 Excel 文件导入数据,并提供丰富的函数进行数据处理,例如过滤、排序、筛选等。通过将电子表格作为基本数据结构,Rye 简化了数据操作,并提供了更直观的编程体验,尤其在处理表格数据时,代码简洁高效,远超其他语言。

开发

Perl迎来全新骆驼Logo

2024-12-23

经过多年的讨论和设计,Perl语言终于迎来了一个全新的官方Logo——一只友好的骆驼。这个Logo由Zach Roszczewski设计,经过Perl社区多位成员的反馈和完善,最终以CC-BY许可证发布。它旨在代表Perl语言及其社区,并鼓励更广泛的使用。虽然并非强制性采用,但该Logo旨在统一社区形象,未来有望在perl.com和metacpan.org等平台上使用。

开发

Phrack 杂志 40 周年:征稿启事

2024-12-23

Phrack 杂志,一个为黑客提供分享知识、寻求真理和突破系统限制的平台,即将迎来 40 周年纪念。他们发布了第 72 期征稿启事,主题涵盖漏洞利用、持久性、模糊测试、代码分析、数据混淆、反取证、Web 应用安全、云安全等多个方面。Phrack 呼吁黑客社区共同参与,延续其宝贵的资源和文化,为未来 40 年的持续发展贡献力量。

开发 Phrack杂志

C++:浴火重生,重拾编程乐趣

2024-12-23
C++:浴火重生,重拾编程乐趣

作者回顾了十多年编程生涯,感慨诸多语言(JavaScript、Python、Ruby等)都未能重燃他儿时对编程的热情。直到近期,他通过在roguelike游戏开发中运用C++,才再次体验到编程的乐趣。他认为C++一度因模板元编程的滥用而声名狼藉,但在C++11之后,标准委员会的努力让其焕发生机,新增了自动类型推断、nullptr、range-for循环等特性,极大提升了开发效率和体验。如今的C++功能强大,拥有丰富的库和工具,同时又避免了过度流行带来的负面影响,社区相对纯粹,让开发者可以专注于创造,这才是编程的乐趣所在。

开发

KeyPub.sh:基于SSH密钥的隐私保护身份验证服务

2024-12-23

KeyPub.sh 是一款无需安装配置的公共服务,它利用你现有的 SSH 公钥作为身份标识,将 SSH 公钥与邮箱地址关联,简化身份验证流程。用户只需通过简单的邮箱验证,即可注册并管理其 SSH 密钥,控制其邮箱地址的可见性。这为基于 SSH 的应用程序提供了轻量级且注重隐私的替代方案,开发者无需自行构建用户验证系统,用户也能更好地掌控自己的隐私。

开发 SSH密钥

2024年Fogus年度总结:编程、阅读与生活感悟

2024-12-23

Fogus在其2024年年度总结博客中,回顾了这一年在编程、阅读和生活方面的收获。他分享了阅读的优秀文章和书籍,包括关于精英游戏、业余无线电、日本浴室文化和WordStar的历史等;也提到了他最喜欢的技术书籍《And so FORTH》和非技术书籍《屠夫的十字路口》;此外,他还分享了在Clojure编程语言方面的经验,以及对Joy、Forth等其他编程语言的探索。最后,Fogus展望了2025年的计划,包括Clojure 1.13的发布和对Juxt项目的继续探索。

命令行工具Spacer:优雅分割日志输出

2024-12-23
命令行工具Spacer:优雅分割日志输出

Spacer是一个简洁的命令行工具,用于在命令输出停止时插入分隔符。如果你习惯在日志尾部按几次Enter键来区分不同请求的输出,那么Spacer正合你意!它默认每隔1秒钟插入分隔符,但你可以通过`--after`参数自定义间隔时间(支持小数)。需要注意的是,Spacer仅监控STDOUT,如果你的命令主要输出到STDERR,请使用`|&`代替`|`将STDERR重定向到STDOUT。

开发 日志处理

Ruby 中巧妙的记忆化实现:挑战与突破

2024-12-23
Ruby 中巧妙的记忆化实现:挑战与突破

本文深入探讨了在 Ruby 中实现记忆化技术的复杂性。作者从简单的局部变量到复杂的线程安全实现,逐步讲解了记忆化技术的方方面面,包括记忆化运算符的局限性、参数感知记忆化、记忆化 DSL 的构建,以及在处理冻结对象、内存管理和线程安全方面的挑战。文章还介绍了弱引用和软引用的概念,并最终给出了一个高效且线程安全的记忆化 DSL 实现,并强调了选择合适的记忆化库的重要性,避免重复造轮子。

开发 记忆化

uBlock Origin:高效的浏览器广告拦截器

2024-12-23
uBlock Origin:高效的浏览器广告拦截器

uBlock Origin是一款高效的、轻量级的浏览器广告拦截器,适用于Chrome和Firefox。它默认使用EasyList、EasyPrivacy等多个过滤列表,可以有效拦截广告、追踪器、恶意软件等,保护用户隐私。uBlock Origin还支持自定义规则和过滤器,并提供简单和高级两种模式以满足不同用户的需求。值得注意的是,使用广告拦截器并非盗窃行为,它保护用户的隐私安全。

开发

JMAP十周年:开源邮件协议的十年征程

2024-12-23
JMAP十周年:开源邮件协议的十年征程

Fastmail公司庆祝JMAP开源邮件协议十周年。十年来,JMAP从最初的构想,历经行业研讨、与开发者合作、IETF标准化等阶段,逐步完善,现已涵盖邮件、联系人、日历等功能。未来,Fastmail计划进一步改进Cyrus IMAP服务器,并继续推动JMAP在邮件领域的应用,提升用户体验,最终目标是让JMAP成为邮件行业的标准协议。

WebExtension.net 推出精选 Chrome 扩展程序合集

2024-12-23
WebExtension.net 推出精选 Chrome 扩展程序合集

WebExtension.net 网站近日上线了精选 Chrome 扩展程序合集功能,方便用户快速查找和使用优质扩展。该功能允许用户创建和分享自己整理的扩展程序列表,目前已收录涵盖语言学习、设计工具、前端开发等多个领域的扩展程序合集,例如针对设计师的必备工具合集以及前端开发的实用扩展合集等。这为用户提高效率和改善工作流程提供了极大便利。

开源RAG日志记录工具RAG-logger问世

2024-12-23
开源RAG日志记录工具RAG-logger问世

RAG-logger是一个开源的日志记录工具,专为检索增强生成(RAG)应用程序而设计。它提供轻量级的替代方案,专注于RAG的特定日志需求。RAG-logger能够全面记录RAG管道,包括查询跟踪、检索结果(文本和图像)、LLM交互记录以及逐步性能监控。它使用基于JSON的日志格式,按天组织日志,并自动管理文件和元数据丰富。其简洁易用的API方便开发者快速集成,例如`logger.log_query()`用于记录查询,`logger.log_retrieval()`用于记录检索步骤,`logger.log_llm()`用于记录LLM交互。

开发

单体应用数据基础设施:Litestack 宝石闪耀

2024-12-23
单体应用数据基础设施:Litestack 宝石闪耀

Litestack 是一款 Ruby gem,为 Ruby 和 Ruby on Rails 应用提供一体化数据基础设施解决方案。它巧妙地利用 SQLite 的强大功能,在一个软件包中集成完整的 SQL 数据库、高速缓存、强大的作业队列、可靠的消息代理、全文搜索引擎和指标平台,替代了传统方案中需要单独部署的服务器和数据库。Litestack 通过嵌入式数据库和缓存降低内存和 CPU 使用率,简化开发流程,显著提升性能和效率,并降低成本。它支持 ActiveRecord 和 Sequel 集成,并能自动检测 Fiber I/O 框架以优化资源利用。

开发 Ruby gem
1 2 201 202 203 205 207 208 209 213 214