分类: 开发

Adélie Linux 1.0-BETA6发布:兼容性更强,功能更丰富

2024-12-16

Adélie Linux发布了1.0-BETA6测试版,该版本支持32位和64位ARM、POWER和x86架构,兼容范围涵盖智能手机、游戏机和超级计算机等。本次更新包含35多个新软件包,更新了GCC 13、LLVM 18、Rust 1.80和Linux内核6.6 LTS分支,并改进了GRUB支持和Wayland支持。此外,还修复了大量bug,提升了用户体验。虽然还存在一些已知问题,但Adélie团队正积极寻求解决方案,并欢迎用户提交bug报告和反馈。

Cyphernetes:云原生 Kubernetes 集群自动化管理利器

2024-12-16

Cyphernetes是一个自动化管理云原生Kubernetes集群的项目,它通过简化部署、升级和管理流程,大大降低了运维复杂度。想象一下,你无需手动操作就能轻松扩展集群规模,应对突发流量,还能自动修复故障,保障服务的稳定性。Cyphernetes就像一位经验丰富的Kubernetes集群管理员,全天候守护你的应用,让你专注于业务创新。

开发

Dillo浏览器:25年风雨兼程,涅槃重生

2024-12-16

Dillo网页浏览器,自1999年诞生以来,经历了25年的风雨洗礼。它曾数次停滞,却始终顽强生存。最初由Jorge Arellano Cid领导开发,历经GTK和FLTK两个主要阶段,期间核心开发者几经更迭,项目也几度沉浮。2024年,Rodrigo Arias Mallo接手项目,在社区的帮助下,成功发布了3.1.1版本,将这款老牌浏览器带回了人们的视野。Dillo的故事,是开源精神的最佳诠释,也是技术传承与创新的传奇篇章。

Hyperbola GNU/Linux-libre:一款坚持自由与长久支持的轻量级操作系统

2024-12-15

Hyperbola GNU/Linux-libre是一个社区驱动的操作系统项目,致力于提供一个完全自由、稳定、安全、简单、轻量级的长期支持发行版。它基于Arch Linux的包管理系统和Debian的安全补丁,遵循GNU自由系统发行指南。Hyperbola支持i686和x86_64架构,并计划推出基于BSD的HyperbolaBSD系统。项目近期新闻包括:继续支持32位系统,停止使用Debian 12之后的补丁集,以及对自由软件基金会关于机器学习的声明表达担忧。

开发

GitHub项目地图:40万+项目可视化探索

2024-12-15

程序员Anvaka利用GitHub公开数据,创建了一个包含40万多个项目的交互式地图。该项目通过Jaccard相似度算法计算项目间的关联,并使用Leiden聚类算法将项目分组,最终呈现出一个直观的可视化效果。用户可以搜索项目,并探索项目间的联系,展现了GitHub项目生态的复杂性和丰富性。

开发 项目关系

Vercel 推出本地 Serverless 函数开发运行时 ƒun

2024-12-15

Vercel 发布了 ƒun,一个本地 Serverless 函数开发运行时,允许开发者在本地环境模拟 AWS Lambda 的运行环境。ƒun 支持多种运行时环境,包括 Node.js 和 Python 等,开发者可以使用它快速测试和调试 Serverless 函数,无需部署到云端。虽然 ƒun 尽可能模拟真实的 Lambda 环境,但仍存在一些差异,例如进程沙盒和用户权限方面。

开发 函数计算

Bevy 0.15 Web端拖放图像功能实现

2024-12-15

本文介绍了如何在Bevy 0.15 Web应用中集成Web原生API,实现拖放图像的功能。文章详细讲解了使用wasm-bindgen、gloo和bevy_channel_trigger等工具,在Rust代码中处理DOM事件、提取文件数据、并将数据传递给Bevy引擎进行图像加载和渲染的过程。整个过程类似于JavaScript中的实现,但使用了Rust的特性,并解决了错误处理和事件监听器内存泄漏等问题。最终实现了将拖放的PNG图片加载到Bevy应用中并显示的效果。

开发

程序员专注状态指示灯:FlowLight 的诞生

2024-12-15

程序员Shae Erisson受到一篇关于工作中断影响的研究启发,DIY了一个名为FlowLight的系统,用于指示程序员是否处于专注的“心流”状态。该系统通过监测Emacs编辑器的空闲时间,当程序员长时间未操作时,系统会通过Adafruit MagTag板上的LED灯变为绿色表示空闲,红色表示忙碌。Erisson还在CircuitPython中编写了HTTP服务器,使得系统能够远程控制LED颜色和显示状态。虽然该系统目前还有一些改进空间,例如更精细的空闲时间监测和更美观的显示效果,但它已经能够有效地帮助程序员避免被打扰,提高工作效率。

开发

WASM程序绕过node:wasi文件沙箱限制

2024-12-15

该项目展示了一个概念验证,说明WASM程序如何绕过node:wasi的预打开目录限制,访问外部文件。通常情况下,WASM程序只能访问预先指定的目录,但通过巧妙地利用符号链接替换文件,并在精确的时间点运行外部进程,可以突破这一限制。这并非node:wasi的实际安全漏洞,而是其在极端情况下可能存在的边缘情况。该项目强调了在使用node:wasi时,不应依赖其完全阻止恶意代码访问外部文件。

开发 node:wasi

MacOS GPU 性能优化难题:浪费资源换取速度

2024-12-15

Anukari 的开发者在 MacOS 系统上进行 GPU 性能优化时遇到瓶颈。由于系统对 GPU 性能的控制有限,导致 Apple 的 GPU 性能调控机制在 Anukari 的应用场景下表现不佳,出现音频卡顿等问题。最终,开发者采取了一个“笨办法”:用一个 GPU 线程组的 warp 进行无用计算,以此来“欺骗”系统,强制提升 GPU 频率,从而显著降低音频计算延迟,提升性能。虽然方法粗糙,但效果显著,解决了 MacOS 下的性能问题。然而,在不同 DAW 软件(Ableton 和 GarageBand)中,性能提升效果差异较大,后续仍需进一步优化。

大型语言模型能否终结编程?

2024-12-15

近年来,大型语言模型(LLM)在代码生成方面展现出令人印象深刻的能力,引发了“编程终将过时”的讨论。然而,本文作者认为这种观点过于乐观。文章从程序合成(Program Synthesis)的计算复杂性入手,指出生成正确程序代码是一个难题,其复杂度属于PSPACE-complete级别,这意味着即使对于中等规模的输入,算法也可能需要指数级的运行时间。虽然LLM可以作为辅助工具,提高编程效率,但其局限性决定了它不可能完全取代程序员。编程的本质仍然是解决问题和设计系统,而这需要人类的智慧和创造力。

开发 编程未来

乐观计算:软件的未来走向何方?

2024-12-15

本文探讨了一种“乐观计算”的理念,并非盲目乐观,而是基于对诸多优秀理念的融合:极简易用(“启动即杀”)、本地优先、用户赋能。作者认为,通过限制依赖、简化流程,创造“即装即用”的体验,并赋予用户更多控制权,可以构建更可靠、安全、长久的软件。这种理念不仅适用于个人用户,也适用于企业软件开发,最终目标是创造一个尊重用户隐私和数据所有权的数字世界。

开发 乐观计算

Spark、DuckDB和Polars性能大比拼:小型到中型工作负载的最佳选择

2024-12-15

本文对Spark、DuckDB和Polars三种数据处理引擎进行了基准测试,比较了它们在处理10GB和100GB数据集时的性能、成本和开发难度。结果显示,对于大型数据集和ETL任务,Spark凭借其分布式计算能力和成熟的生态系统仍然占据优势,而DuckDB和Polars在小型数据集的交互式查询和数据探索方面表现出色。作者建议根据实际需求选择合适的引擎,并可以结合使用这三种引擎,例如使用Spark进行ETL,DuckDB进行交互式查询,Polars用于特定场景。

从零开始构建快速LLM推理引擎

2024-12-15

本文讲述了作者如何使用C++和CUDA从零开始构建一个LLM推理引擎,无需任何库。通过这个过程,作者深入学习了LLM推理的全栈知识,从CUDA内核到模型架构,并了解了各种优化如何影响推理速度。目标是创建一个程序,可以在单CPU+GPU服务器上加载常用开源模型的权重,进行单批推理,并迭代改进令牌吞吐量,最终超越llama.cpp。文章详细介绍了CPU和GPU上的优化步骤,包括多线程、权重量化、SIMD、内核融合以及KV缓存量化等,并分析了遇到的瓶颈和挑战。最终实现了接近最先进性能的本地LLM推理。

开发

抛弃设计文档,拥抱代码冲刺:一种更有效的软件开发方法

2024-12-15

软件开发中,传统的设计文档加渐进式开发模式并不总是高效。作者Doug Turnbull提出了一种“代码冲刺”方法:先用临时PR快速实现原型,尽早获得团队反馈,完善设计后再逐步拆分出可部署的PR。这种方法鼓励快速迭代,尽早发现问题,并认为代码本身就是最好的文档。虽然设计文档在特定情况下仍有价值,但作者更推崇“行动胜于言辞”,通过代码原型快速验证和迭代,从而更高效地完成软件开发。

开发 代码原型

高效团队的秘密:跨记忆系统

2024-12-15

本文探讨了高效团队运作的基石——跨记忆系统。它并非指团队成员个体记忆力的强大,而是指团队如何有效地共享和利用成员间的知识和技能。文章介绍了三种团队记忆类型:工作记忆、长期记忆和跨记忆系统,并重点阐述了跨记忆系统如何提升团队绩效。文章指出,跨记忆系统包含两个要素:成员间的协作模式和每个成员的专业知识。通过构建跨记忆系统,团队能够充分发挥集体智慧,克服成员变动带来的影响。文章还推荐了例如能力梳理、团队手册和刻意练习等方法,帮助团队快速建立和完善跨记忆系统。

同构 Web 组件:服务器端渲染不再是难题

2024-12-15

长期以来,服务器端渲染Web组件被认为难以实现。本文作者挑战了这一观点,通过巧妙地利用Happy DOM模拟浏览器环境,实现了对现有Web组件的服务器端渲染。文章详细介绍了两种方法:一种是利用`template`标签直接渲染,另一种是通过模拟DOM环境运行组件代码,从而生成HTML。作者强调这种方法的优势在于其对Web组件的兼容性,以及在JavaScript加载失败时仍能保证基本功能的健壮性,有效解决了服务器端渲染Web组件的难题,避免了对特定框架的依赖。

开发 同构

极简虚拟计算机SVC16:挑战你的编程极限

2024-12-15

SVC16是一个极简的16位虚拟计算机,其设计目标是极致的简洁性。它没有CPU寄存器,所有操作都在一块内存中进行,指令集极其精简,没有花哨的功能,例如声音、可变屏幕大小等。开发者需要自行编写机器码和编译器,挑战在于用最简单的工具创造出令人惊叹的作品。该项目提供了一个模拟器,用户可自行编写程序并在模拟器中运行,甚至可以尝试编写游戏。这是一个适合学习计算机底层原理以及锻炼编程能力的绝佳项目。

Railgun Labs发布高性能Unicode算法库Unicorn

2024-12-15

Railgun Labs发布了名为Unicorn的Unicode算法库,它以其高速度、可嵌入性、跨平台性和安全性而著称。Unicorn支持多种Unicode算法,包括规范化、大小写转换、排序和分词等,并提供UTF-8、UTF-16和UTF-32编码的解码器、编码器和验证器。该库完全可定制,并经过广泛测试,确保其准确性和可靠性,符合MISRA C:2012标准,并具有线程安全特性(除少数例外)。

开发 Unicode算法

Home Assistant远程访问安全隐患

2024-12-15

博主Frederik Braun尝试使用Home Assistant实现智能家居远程控制,但发现其架构设计导致无法有效保障互联网访问安全。Home Assistant虽然支持用户名密码和双因素认证,但其不支持URL嵌入凭据以及必须在根路径部署的限制,使得无法添加额外的安全机制,例如Web服务器身份验证或隐藏服务路径。这使得Home Assistant的安全完全依赖于其内部安全措施,存在安全风险。文章呼吁Home Assistant社区改进其安全性配置灵活性。

开发

XFCE 4.20发布:Wayland实验性支持及诸多改进

2024-12-15

历经近两年开发,XFCE 4.20正式发布!该版本着重于Wayland支持的准备工作,目前已为大多数组件提供实验性Wayland支持,但仍处于早期阶段,建议高级用户使用。此外,XFCE 4.20还包含大量新功能、错误修复和改进,例如改进的图标缩放、性能提升的图标视图、增强的Thunar文件管理器等。值得注意的是,Wayland支持尚不完整,部分组件和功能尚未移植。

开发 XFCE

Ruby零基础构建对象系统:从匿名函数到元编程

2024-12-15

本文讲述了如何在Ruby中从零开始构建一个简单的对象系统。作者巧妙地运用匿名函数和哈希表,实现了方法查找、原型继承、Mixin和元编程等核心概念。通过逐步构建“构造函数”、模拟私有变量和公共接口,最终实现了类似于面向对象编程中类和继承的功能,为读者深入理解对象系统原理提供了清晰的实践路径。文章以实例代码演示了如何创建对象、定义方法、实现继承和Mixin,并最终实现了类似于Ruby的`attr_accessor`的元编程功能,极具学习价值。

开发

TeaVM 0.11.0 版本发布:全新 WebAssembly 后端

2024-12-15

TeaVM 0.11.0 版本重磅发布,核心在于全新的 WebAssembly 后端。旧版 WebAssembly 后端存在已久,但因性能提升不显著且开发体验差,并未被广泛采用。新后端基于 WebAssembly GC 提案,解决了旧版的问题,例如与浏览器 JS API 交互困难以及生成文件过大等。虽然目前新后端功能略逊于 JS 后端,但已支持 JSO(Java-to-JS 交互 API),并计划在下一版本中达到与 JS 后端相同的功能水平。此版本还修复了 BitSet 实现中的错误,并添加了对更多 JS API 的支持,例如文件读取、触摸事件、Popover API 和 Navigator.sendBeacon 等。

开发 TeaVM

告别无尽会议:高效率软件开发新方法

2024-12-15

厌倦了无休止的会议和冗长计划?本文介绍一种高效率的软件开发方法:以代码为中心,快速迭代。作者以烘焙为例,阐述了通过快速尝试、频繁测试和持续改进,最终获得最佳方案的理念。该方法强调减少文档编写,直接用代码表达想法,利用mock数据和热重载工具加快开发速度,并通过简洁的代码风格和命名规范提高代码可读性。作者提倡将项目拆分成独立可执行文件,最小化重启时间,并使用默认语言工具进行调试。这种方法虽然看起来像“混乱的实验室”,但却能高效地完成项目,避免了传统方法中的冗余和低效。

开发

Vim:超越编辑器的编程语言

2024-12-15

Vim不仅仅是一个文本编辑器,更是一种与计算机交互的语言。它简洁高效的命令结构,易于记忆和理解,也易于计算机解析。虽然Vim自身功能强大,但其核心优势在于其模式已被集成到几乎所有主流代码编辑器中,这使得开发者可以灵活选择自己喜欢的编辑器界面,同时保留Vim高效的命令语言。因此,NeoVim作为Vim语言最完整一致的实现,其价值在于它提供了这种高效的编辑语言,而非仅限于编辑器本身。

开发

编程语言:安全与强大的权衡

2024-12-15

本文探讨了编程语言中安全性和强大性的权衡问题。传统观念认为,强大的语言往往伴随着更高的风险,例如C语言的高性能伴随着手动内存管理的复杂性和危险性。然而,作者认为这种观点是过时的。现代编程语言研究表明,通过更强大的表达能力,我们可以兼顾安全性和强大的功能。文章以Lisp、Scheme和Racket宏的演变为例,说明了如何通过改进语言设计,在保证安全性的同时提升宏的强大功能。Racket的宏系统被认为是最佳实践,因为它在保证代码卫生的同时,允许进行复杂的代码操作。文章最后强调,安全可靠的系统能够构建更强大、更可靠的软件,并推荐了进一步学习Racket宏的资源。

开发

Python依赖管理:一场熊熊大火

2024-12-15

本文深入探讨了Python依赖管理的复杂性,将其比作在干旱森林中生火。作者指出,Python依赖并非简单的pip install,而是涵盖项目包、系统包、操作系统、硬件和环境等多个层面。良好的依赖管理至关重要,它确保代码的可重复性,即在不同环境下都能获得相同结果。文章详细介绍了版本控制、环境隔离以及定义文件、锁定文件等关键概念,并对pip、venv、virtualenv、pip-tools、Pipenv、Poetry、PDM、pyenv、pipx、uv、Conda、Mamba、conda-lock和Pixi等多种工具进行了全面比较,分析了它们的优缺点和适用场景。最终,作者根据不同场景(管理员权限、依赖类型、操作系统等)提供了相应的工具推荐,并展望了未来Python依赖管理工具的发展趋势。

LLVM C库GPU加速:让C代码在GPU上飞速运行

2024-12-14

LLVM项目推出了一款令人兴奋的GPU C库,允许开发者直接在GPU上运行C/C++代码中的libc和libm函数。该库支持两种主要模式:作为OpenMP、CUDA或HIP等异构计算框架的补充库,以及直接编译C/C++代码为GPU目标代码。文章详细介绍了这两种模式的使用方法,包括编译选项、链接方法以及针对AMD GPU和NVIDIA GPU的特定构建步骤。通过该库,开发者可以利用GPU的并行计算能力,显著提升程序性能,而无需深入学习复杂的GPU编程模型。

开发 C库

开源全文搜索应用Buzee:两年磨一剑,终成佳作

2024-12-14

Buzee是一款由Rust和Svelte开发的跨平台全文搜索应用程序,它能够快速搜索本地文件、文件夹、浏览器历史记录等,并支持OCR提取PDF和图片中的文本。作者耗时两年,克服了诸多技术挑战,最终完成了这个项目,并将其开源。Buzee采用Tauri框架提升性能,使用SQLite和Tantivy进行数据存储和索引,目前已支持多种文件类型,但仍有一些功能尚待完善。

开发
1 2 3 4 6 8 9