分类: 开发

用DuckDB-WASM构建基于SQL的Doom克隆游戏

2025-04-22
用DuckDB-WASM构建基于SQL的Doom克隆游戏

作者突发奇想,尝试使用DuckDB-WASM数据库引擎构建一个基于SQL的3D游戏引擎。他以一个简易的文字版Doom游戏为目标,将游戏地图、角色位置、敌人都存储在DuckDB表格中,通过SQL语句控制游戏逻辑和渲染。令人惊奇的是,他利用SQL的递归CTE实现了光线追踪和三维场景渲染,JavaScript则负责键盘输入、游戏循环和精灵绘制。虽然过程中遇到了许多挑战,例如WASM加载、SQL方言差异、查询规划器问题和异步操作的竞态条件,但他最终成功地运行了一个6-7 FPS的Doom克隆游戏,这展现了SQL在非传统用途上的强大能力以及DuckDB-WASM的出色性能。

怀旧与创新的结合:SerenityOS桌面操作系统

2025-04-22

SerenityOS是一个对90年代用户界面致敬的桌面操作系统,它拥有一个定制的类Unix内核。它从其他各种系统中汲取灵感,将90年代后期生产力软件的美学与2000年代后期类Unix系统的强大用户访问性相结合。这是一个由开发者团队为自身需求而创建的项目,基于他们对技术的热爱。该项目在GitHub上开源,并提供Discord服务器、手册页以及漏洞赏金计划。

开发 类Unix

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

2025-04-22
arXivLabs:与社区协作者合作的实验项目

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

开发

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

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

arXivLabs是一个开放平台,允许合作者直接在arXiv网站上开发和分享新的功能。参与者都认同arXiv的开放、社区、卓越和用户数据隐私的价值观。你有提升arXiv社区价值的想法吗?快来了解arXivLabs吧!

开发

程序员的「老式健身房」:拒绝AI代码自动补全,拥抱编程的纯粹乐趣

2025-04-22
程序员的「老式健身房」:拒绝AI代码自动补全,拥抱编程的纯粹乐趣

Shopify CEO提倡AI辅助编程,但作者却反其道而行之,选择回归“老式健身房”——专注于手动编写代码,享受解决问题的挑战和成就感。作者认为AI擅长处理重复性工作,但核心编程思维、设计和架构决策仍需人工完成,才能真正提升技能,避免成为只会依赖工具的“熟练工”。文章呼吁程序员们在AI时代保持独立思考,将AI作为辅助工具而非替代品,在解决问题的过程中获得成长,最终成为更优秀的工程师。

开发

GiveCampus招聘资深软件工程师

2025-04-22
GiveCampus招聘资深软件工程师

GiveCampus,一家为非营利教育机构提供筹款平台的公司,正在招聘一位资深软件工程师。该公司在2015年获得Y Combinator的种子投资,并取得了持续的盈利和增长。此次招聘面向全美,工作地点灵活,提供丰厚的薪资和福利,以及参与大型项目的机遇。理想的候选人应具备8年以上全栈开发经验,精通Ruby、Python或Javascript/Node.js,熟悉各种数据库和框架,并有良好的团队合作能力。

开发 GiveCampus

FreeDOS 1.4发布:焕新升级的DOS体验

2025-04-22

FreeDOS 1.4正式发布!此次更新包含大量程序更新,例如修复了FreeCOM、Xcopy、Move和Fdisk等命令行工具中的bug,并提升了mTCP的可靠性。此外,FDHelp帮助系统也进行了重写,并新增了多种语言支持。为了精简安装包,一些冗余的图形桌面程序被移除,并用功能更强大的DOSVIEW图像查看器替代了BMP2PNG。通过改进的打包流程,FreeDOS 1.4的Live CD和Bonus CD体积都显著减小,安装体验更流畅。

开发

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

2025-04-22
arXivLabs:与社区协作者的实验性项目

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

开发

Verus:一款用于验证 Rust 代码正确性的静态分析工具

2025-04-22
Verus:一款用于验证 Rust 代码正确性的静态分析工具

Verus 是一款用于验证 Rust 代码正确性的静态分析工具。开发者编写代码规范,Verus 静态检查可执行 Rust 代码是否始终满足所有可能执行情况下的规范。它不依赖运行时检查,而是依靠强大的求解器来证明代码的正确性。Verus 目前支持 Rust 的子集(正在扩展中),在某些情况下,它允许开发者超越标准 Rust 类型系统,静态检查例如操作原始指针的代码的正确性。Verus 仍在积极开发中,功能可能存在问题或缺失,文档也不完整。

开发

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

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

arXivLabs是一个开放平台,允许开发者与arXiv社区合作,直接在arXiv网站上开发和分享新功能。参与者必须遵守arXiv的开放、社区、卓越和用户数据隐私等核心价值观。你有提升arXiv社区价值的想法吗?快来了解arXivLabs吧!

开发

Pahole:Linux内核调试信息瑞士军刀的演进

2025-04-22

Pahole,一款用于探索和编辑调试信息的强大工具,在Linux内核开发中扮演着关键角色。它目前负责将编译器生成的调试信息转换为BPF验证器可用的BTF格式。文章介绍了Pahole的最新进展,包括新增协同维护者、改进的BTF处理、对灵活数组和bpf_fastcall的支持,以及对Rust的支持增强。未来,Pahole有望随着GCC对-gbtf选项的支持完善而逐渐淡化其在DWARF到BTF转换中的作用,从而加快内核构建速度。

开发 调试信息

Go语言垃圾回收机制下的竞技:构建高效的Arena分配器

2025-04-21
Go语言垃圾回收机制下的竞技:构建高效的Arena分配器

本文深入探讨了Go语言垃圾回收机制的细节,并基于此构建了一个高效的Arena分配器。作者巧妙地利用Go语言GC的特性,在不违反语言规范的前提下,实现了比Go内置分配器更快的内存分配速度,尤其是在大规模内存分配场景下。文章详细阐述了Arena分配器的设计原理、实现方法以及性能测试结果,并分析了其在高并发环境下的表现。

开发

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

2025-04-21
arXivLabs:与社区协作者合作的实验项目

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

开发

Cursor AI 的 AI 支持机器人“幻觉”出不存在的政策

2025-04-21
Cursor AI 的 AI 支持机器人“幻觉”出不存在的政策

代码编辑器 Cursor AI 的 AI 支持机器人错误地告知用户一项不存在的政策,禁止在多台设备上登录。这一事件引发用户不满,Cursor 的联合创始人 Michael Truell 在 Reddit 上公开道歉,承认该回复是由 AI 支持机器人生成的“幻觉”。Truell 解释称,问题源于旨在提高会话安全的更新,导致部分用户会话失效。目前,该问题已修复,所有 AI 支持回复均已明确标注。该事件凸显了 AI 模型“幻觉”的风险,以及在使用 AI 提供客户支持时进行充分测试的重要性。

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

2025-04-21
arXivLabs:与社区协作者共建实验项目

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

开发

Wine 10.6发布:增强CMD、Bcrypt及游戏兼容性

2025-04-21

开源软件Wine迎来了10.6版本更新,修复了27个bug,提升了游戏和应用程序的兼容性。此版本更新了命令处理器CMD中的词法分析器,为Bcrypt添加了PBKDF2算法支持,并增强了WindowsCodecs对图像元数据的支持。Unity游戏、Alan Wake以及GDI+问题等都得到了修复。

开发

Go语言内存分配的惊人陷阱:一个30%性能回归的故事

2025-04-21
Go语言内存分配的惊人陷阱:一个30%性能回归的故事

一个Go语言项目中,看似无害的代码重构导致性能下降30%。罪魁祸首是`ImmutableValue`结构体的`GetBytes`方法使用了值接收器,导致每次调用都进行一次堆分配,而堆分配比栈分配代价高得多。究其原因,是Go编译器的逃逸分析不够精确,未能识别出值接收器不会逃逸。最终,将值接收器改为指针接收器解决了问题。这个案例说明,理解Go编译器对内存分配的决策,以及使用合适的接收器类型,对于编写高性能Go代码至关重要。

开发

开源命令行AI助手Open Codex:本地运行,无需API密钥

2025-04-21
开源命令行AI助手Open Codex:本地运行,无需API密钥

Open Codex是一款完全开源的命令行AI助手,受OpenAI Codex启发,支持phi-4-mini等本地语言模型。无需API密钥,所有操作都在本地执行。它支持自然语言到Shell命令的转换,提供单次模式和交互式模式(即将推出),并具有命令确认、剪贴板复制、彩色终端输出等功能。支持macOS、Linux和Windows。

开发 本地模型

Kate编辑器:一款二十年磨一剑的强大代码编辑器

2025-04-21

作者详细介绍了其二十年来一直使用的Kate文本编辑器的强大功能和个性化设置。文章涵盖了插件使用、视图分割、语言服务器、调试器、代码格式化、快捷键自定义、项目管理、颜色主题等方面,并重点阐述了其高效的工作流程和便捷的特性,例如快速文件切换、动作搜索和强大的构建运行功能。作者对比了VS Code,强调了Kate的简洁、稳定和开源的优势,并表达了对Kate开发团队的赞赏。

开发

本地LLM推理:潜力巨大,但工具尚需完善

2025-04-21
本地LLM推理:潜力巨大,但工具尚需完善

本文评测了llama.cpp、Ollama、WebLLM等本地LLM推理框架的性能。结果显示,llama.cpp和Ollama速度惊人,但仍慢于OpenAI的gpt-4.0-mini。更大的挑战在于模型选择和部署:众多模型版本令人眼花缭乱,即使是量化后的7B模型也超过5GB,下载和加载缓慢,影响用户体验。作者认为,未来本地LLM推理需要更便捷的模型训练和部署工具,并与云端LLM紧密集成,才能真正走向实用。

开发

在任天堂Wii上运行生产环境的NetBSD博客

2025-04-21

作者在一个旧的任天堂Wii游戏机上成功运行了NetBSD操作系统,并将其作为生产环境来托管自己的博客。这篇文章详细描述了整个过程,包括软改Wii、安装NetBSD、配置轻量级Web服务器lighttpd以及监控系统资源。尽管Wii的硬件配置落后(单核PowerPC 750),但通过优化和使用反向代理,作者成功克服了性能瓶颈,实现了博客的稳定运行。这是一个有趣的实验,展示了在资源受限的硬件上运行生产环境的可能性,并强调了作者对NetBSD操作系统的赞赏以及对挑战性项目的兴趣。

开发

GTK-LLM-Chat:基于GTK的LLM聊天GUI

2025-04-21
GTK-LLM-Chat:基于GTK的LLM聊天GUI

gtk-llm-chat是一个使用GTK构建的简洁易用的图形界面,用于与大型语言模型(LLM)进行交互。它支持多个独立窗口的并发对话,集成了python-llm库,并能与各种LLM模型进行对话。该应用具有现代化的界面、实时响应流、Markdown渲染、对话管理、快捷键、片段支持以及小程序模式等功能。安装简单,只需使用pipx安装llm并运行llm install gtk-chat即可。

开发

在 1989 年的 486 上运行现代 Linux:一个疯狂的科学项目

2025-04-21

作者在一个 1989 年的 AMD 5x86 486 电脑上成功安装并运行了 2017 年的 Linux 内核 4.14.8。这并非易事,他克服了诸多挑战,包括使用 Gentoo Linux(一个需要自行编译所有软件包的发行版), 解决老旧硬件的驱动问题,以及处理 80 针 PATA 数据线与主板不兼容等问题。最终,这台老旧的电脑成功运行了 Python、Git 和 Nginx 等现代软件,尽管启动需要 11 分钟,关机需要 5.5 分钟。这个项目证明了 Linux 对老旧硬件的惊人兼容性,同时也展现了作者的惊人毅力。

开发

极致性能:手写 ARM Cortex-A53 NEON 汇编内核

2025-04-21

本文深入探讨了如何针对 ARM Cortex-A53 编写高性能 NEON 汇编内核。作者以 y[n] = ax[n] + b 为例,详细阐述了如何利用 Cortex-A53 的指令时序特性(部分双发射能力和顺序执行),巧妙地处理 64 位加载数据路径的限制,并通过指令流水线和预取技术最大化性能。与 LLVM 生成的代码相比,手写汇编内核的性能提升显著,证明了在缺乏完善的 CPU 模型情况下,手工优化汇编代码的巨大潜力。

开发 NEON

Tcl 过程中的关键字参数:优雅的解决方案与令人头疼的元编程

2025-04-21

作者厌倦了某些编程语言缺乏关键字参数以及内置功能无法供用户使用的现状,于是尝试在Tcl中实现关键字参数。文章展示了一个巧妙的`proc*`命令,允许在Tcl过程中使用关键字参数,并解释了其实现细节。然而,由于Tcl元编程能力的不足,作者不得不借助正则表达式实现字符串模板系统,最终代码复杂且难以维护,突显了Tcl在元编程方面的局限性。

开发

用MCP多路复用工具简化LLM与Kafka交互

2025-04-21

本文介绍了一个名为`kafka-mcp-server`的项目,它使用Model Context Protocol (MCP) 构建了一个LLM接口来与Apache Kafka交互。作者发现,简单的操作往往需要调用多个MCP工具,因此开发了一个多路复用工具,可以一次性调用多个工具,并使用PROMPT_ARGUMENT机制将前一个工具的结果作为后一个工具的参数。这个工具简化了需要多次调用工具才能完成的任务,例如列出Kafka主题、读取消息和创建主题副本等。未来,作者计划添加Lua解释器和分支逻辑来增强工具的功能。

开发

基于表格的极简编程环境:8个按键的编程体验

2025-04-21

受到m8便携式音乐合成器的启发,作者构想了一种基于表格的极简编程环境。该环境仅需8个按键和一块小屏幕,通过表格化的代码结构(每个函数最多五个表达式)和上下文菜单,实现无键盘编程。这种限制反而促进了代码的模块化和可维护性,并降低了语法错误。文章以经典的演示场景特效(等离子体和隧道)为例,展示了该环境的编程方式和能力,并探讨了其在像素艺术编辑器、音乐工具等领域的应用潜力。

C语言字符串函数速览:strlen(), strcpy(), strcat() 等

2025-04-21
C语言字符串函数速览:strlen(), strcpy(), strcat() 等

本文快速概览了几个常用的C语言字符串处理函数,包括:`strlen()`用于获取字符串长度;`strcpy()`用于字符串复制;`strcat()`用于字符串拼接;`strncat()`用于安全地拼接指定长度的字符串;`strcmp()`用于字符串比较;`strcspn()`用于查找字符串中第一个不在指定字符集中的字符;`strerror()`用于获取错误码的描述字符串;`memchr()`用于在内存块中查找指定的值;`strrev()`(非标准)用于反转字符串。这些函数是C编程中处理字符串的基石,掌握它们对于编写高效的C代码至关重要。

告别事件驱动:事件隐藏架构的崛起

2025-04-21
告别事件驱动:事件隐藏架构的崛起

十年来,云原生应用的分布式架构盛行,但事件驱动带来的复杂性让开发者苦不堪言。本文介绍了一种新的架构模式——事件隐藏架构。它利用React+状态管理框架、持久化执行系统(如Temporal)和反应式增量计算框架(如Skip),将事件处理隐藏在底层,为开发者提供更简洁、高效的开发体验。开发者无需关注底层事件,专注于业务逻辑,提升开发效率和应用可靠性,并获得透明性、状态处理和可重播性等新能力。

1 2 106 107 108 110 112 113 114 213 214