分类: 开发

霍比特人社群关系数据库建模

2025-02-17

这段代码展示了一个简单的关系数据库建模,描述了《指环王》中霍比特人及其朋友之间的关系。代码使用SQL语句插入数据,定义了'friend'类型的边,连接了诸如Frodo、Sam、Gandalf、Aragorn、Legolas、Gimli、Bilbo等角色,展示了他们之间的友谊网络。这为分析角色关系和构建社群网络提供了基础数据。

开发

6.4TB 的 SQLite 数据库:searchcode.com 的技术升级

2025-02-17

searchcode.com,一个代码搜索引擎,将数据库从 MySQL 迁移到了 SQLite,并最终创建了一个惊人的 6.4TB 的 SQLite 数据库。这源于作者对单二进制部署的追求和对减少依赖的渴望。虽然迁移过程中遇到了一些挑战,例如数据库锁定错误和跨编译问题,但作者通过使用两个数据库连接、纯 Go 版本的 SQLite 和文件系统级别的压缩(BTRFS with zstd)成功解决了这些问题。最终,searchcode.com 的性能得到了显著提升,搜索速度更快,并且具备了更大的扩展潜力。

Umami:一款注重隐私的Google Analytics替代方案

2025-02-17
Umami:一款注重隐私的Google Analytics替代方案

Umami是一个简单、快速且注重隐私的Google Analytics替代品。它支持MariaDB、MySQL和PostgreSQL数据库,安装过程简单,只需克隆GitHub仓库、安装依赖项并配置数据库连接即可。默认情况下,它会在http://localhost:3000启动。同时提供Docker镜像,方便用户部署。Umami提供详尽的入门指南,方便用户快速上手。

开发

Kindle越狱工具WinterBreak发布

2025-02-17

新年伊始,名为WinterBreak的Kindle越狱工具横空出世。该工具由HackerDude发布,基于Mesquito开发,为用户提供了便捷的越狱途径。安装过程需要将WinterBreak文件解压到Kindle,重启设备后即可通过Kindle商店运行。过程中可能遇到一些错误,例如Kindle商店意外错误,解决方法包括恢复出厂设置并删除缓存目录。值得一提的是,该项目得到了众多Beta测试者的贡献,感谢他们为WinterBreak的完善付出的努力。

编译器中的寄存器分配:从简单示例到现实挑战

2025-02-17
编译器中的寄存器分配:从简单示例到现实挑战

本文深入浅出地解释了编译器中寄存器分配的复杂性。它从一个简单的函数示例出发,逐步展示了如何将变量映射到寄存器,以及当寄存器数量不足时如何使用栈空间(溢出)。文章详细阐述了线性扫描和图着色两种算法,并探讨了实际架构中额外的挑战,例如调用约定和指令集限制。即使是看似简单的寄存器分配,也充满了优化和权衡的难题,这使得它成为编译器实现中一个极具挑战性的方面。

开发

AI 编码工具的双刃剑:速度与理解的博弈

2025-02-17
AI 编码工具的双刃剑:速度与理解的博弈

新一代程序员依赖AI编码工具(如Copilot)提高效率,但牺牲了对代码底层逻辑的理解。作者对比了以往程序员通过Stack Overflow学习的深度学习模式,指出AI工具带来的便捷性掩盖了对基础知识的缺失,最终可能导致开发者缺乏解决复杂问题的能力。文章建议程序员在使用AI工具的同时,保持批判性思维,积极参与技术讨论,并尝试从零构建项目以加深理解。

(nmn.gl)
开发

资深开源驱动开发者Karol Herbst因理念不合辞任Nouveau维护者

2025-02-17

长期为开源Nouveau驱动程序工作的开发者Karol Herbst,因与Linux内核开发者社区在包容性和尊重方面的理念差异,宣布辞去Nouveau内核驱动维护者的职务。Herbst在辞呈中指出,“我们应该以平等、互相尊重的态度在开源社区工作”,并对社区中维护者发表的“我们是最后的防线”等具有排他性的言论表示不能认同。他认为,这些言论在当前的政治环境下,特别是美国,造成了伤害,并最终导致他辞去职务。Red Hat的Lyude Paul和Danilo Krummrich将继续担任Nouveau内核维护者,Red Hat还在开发基于Rust的新型开源NVIDIA内核驱动程序NOVA。

开发 Nouveau驱动

Windows 95安装程序:一个被低估的操作系统

2025-02-17
Windows 95安装程序:一个被低估的操作系统

本文讲述了Windows 95安装程序的幕后故事。为了创建一个简单的安装程序,开发团队不得不在MS-DOS环境下从零开始构建一个微型操作系统,包含图形库、窗口管理器、多语言支持等功能,甚至还需要考虑兼容Windows 3.1环境。最终,他们意识到与其重新造轮子,不如直接使用现成的Windows 3.1运行时环境,避免了巨大的开发工作量。这突显了软件工程中“复用”的重要性,也揭示了Windows 95安装程序的复杂性远超人们想象。

开发

CSS 颜色新规范:oklch() 的革命性意义

2025-02-17
CSS 颜色新规范:oklch() 的革命性意义

CSS 颜色模块 4 引入了新的 oklch() 颜色表示法,它以感知亮度 (L)、色度 (C) 和色相 (H) 来定义颜色,并可选地包含透明度 (a)。这解决了 hsl() 中感知亮度不一致的问题,使颜色修改和调色板生成更直观、更易预测,并提升了辅助功能。oklch() 支持广色域 P3 颜色,增强了网页设计的色彩表现力。虽然 oklch() 生态系统仍在发展中,但它在代码可读性和颜色操作方面的优势使其成为未来 CSS 颜色表示法的有力竞争者。

彻底搞懂如何在各种Shell下配置PATH环境变量

2025-02-17

本文深入浅出地讲解了如何在bash、zsh和fish等不同shell环境下添加目录到PATH变量中,并详细解释了各种可能遇到的问题和解决方法,例如不同shell的配置文件位置、PATH变量的重复项处理以及在cron任务中配置PATH等。作者以实际案例出发,一步步引导读者掌握PATH配置技巧,避免常见的陷阱,最终顺利运行程序。

开发 PATH

COBOL日期错误:并非语言缺陷,而是精巧的数据结构

2025-02-17
COBOL日期错误:并非语言缺陷,而是精巧的数据结构

流传甚广的COBOL系统将缺失日期默认设为1875年5月20日的传闻并非事实。文章揭示,这源于早期系统对数据存储空间的极致优化。为了节省存储空间,当时的程序员采用巧妙的数据结构,以1875年作为基准年,将日期编码成更短的字符数。这种方法在当时资源受限的环境下是高效且合理的,并非COBOL语言的缺陷,而是程序员对数据结构的精妙运用。

开发 历史编程

SuperSplat 2.0:开源3D建模平台重大更新

2025-02-17
SuperSplat 2.0:开源3D建模平台重大更新

开源3D Gaussian Splats编辑和发布平台SuperSplat迎来重大更新!它搬到了新域名superspl.at,并新增了网页发布功能,用户只需登录PlayCanvas账户即可轻松将作品分享到网络。此外,2.0版本还加入了时间线功能,方便创建相机飞越动画,以及.ssproj项目文件格式,方便保存和加载项目。支持AR和VR沉浸式体验,可在Meta Quest 2/3、安卓手机和Apple Vision Pro上使用。SuperSplat采用MIT开源许可证,欢迎社区贡献!

开发 SuperSplat

Lumigo Copilot:秒级故障诊断,告别日志地狱

2025-02-16
Lumigo Copilot:秒级故障诊断,告别日志地狱

开发人员Nadav收到了Lumigo的错误警报:GitHub仓库解析失败。借助Lumigo Copilot,他仅用几秒钟就获得了完整的故障诊断:GitHub API返回404错误,原因是仓库不存在或GitHub App被移除。Copilot不仅精准定位问题根源,还提供了受影响的项目ID、用户以及事件队列信息,帮助Nadav快速解决问题,避免了漫长的日志排查。

开发 故障诊断

6502汇编代码生成器:比GCC和LLVM更快?

2025-02-16

一位开发者构建了一个针对6502架构的编译器,其生成的代码速度竟然超过了GCC、LLVM和其他编译器。这并非源于高级优化,而是代码生成阶段的巧妙设计。该编译器使用了“非法”指令、高计算成本的指令选择以及空间换时间的优化策略。其核心算法将指令选择与寄存器分配相结合,并巧妙地利用了延续传递风格,通过DAG和SSA形式的中间表示,生成多种汇编代码组合,再利用动态规划和分支限界法进行剪枝,最终通过求解PBQP问题选择最优组合。虽然存在一些“作弊”之处,但该编译器在基准测试中表现出色,为代码生成技术提供了新的思路。

开发

提升Shell命令效率的小技巧:用图标快速识别历史命令

2025-02-16
提升Shell命令效率的小技巧:用图标快速识别历史命令

频繁在Shell历史记录中查找并重新运行命令?作者分享了一个巧妙的技巧:在命令前添加图标或文字标识符(例如:✅; ./utils/check.sh)。这些标识符不影响命令执行,却能显著提升视觉识别效率,快速找到所需命令,有效缓解了频繁翻阅历史记录的困扰。这是一个简单却实用的提升Shell使用效率的方法。

Caddy:安全至上的Web服务器,获学术界权威背书

2025-02-16
Caddy:安全至上的Web服务器,获学术界权威背书

Caddy Web服务器因其默认安全设置、最佳实践和独特的高级功能集,得到学术界和业界专家的高度推荐。多篇同行评审期刊文章指出,Caddy几乎普遍部署HTTPS,并使用现代TLS配置,在会话票据密钥轮换等方面也领先同行。这使得Caddy成为一个安全可靠、易于使用的Web服务器选择,值得关注。

开发

Elm社区的治理危机:一位贡献者的控诉

2025-02-16

一位长期Elm贡献者因Elm核心团队的领导方式和对原生模块的限制而离开社区。作者详细描述了核心团队的专断、缺乏透明度和公平性,以及其对社区贡献者的压制。他认为Elm核心团队的行为违背了开源精神,并对社区成员,特别是那些非英语母语者或少数群体成员造成了不公平的影响。文章引发了对开源社区治理和公平性的思考。

开发 原生模块

告别 Getter/Setter:拥抱不可变性与更简洁的代码

2025-02-16
告别 Getter/Setter:拥抱不可变性与更简洁的代码

本文批判了过度使用 Getter/Setter 方法的弊端,指出其导致代码可变性增加,难以维护和推理。作者建议尽可能使用不可变对象,并介绍了`with`模式和Builder模式来创建不可变对象的副本,以应对需要修改数据的情况。最后,作者强调,如果确实需要可变性,应将其限制在尽可能小的范围内,并摒弃无意义的 Getter/Setter 方法,从而编写出更简洁、易于理解和并发的代码。

开发 不可变性

Vim之魂:开源编辑器在创始人离世后如何延续?

2025-02-16
Vim之魂:开源编辑器在创始人离世后如何延续?

Vim创始人Bram Moolenaar于2023年8月去世后,其开源社区展现了令人钦佩的韧性。维护者Christian Brabandt在VimConf 2024上讲述了这段故事:他们克服了GitHub账户继承、基础设施迁移等诸多挑战,发布了纪念Moolenaar的Vim 9.1版本,并吸纳了新的维护者。尽管目前Vim处于维护模式,专注于修复bug和改进现有功能,但社区依然活跃,并致力于改进文档和流程,以确保Vim的长期发展。

开发

C语言时间API的改进方案:告别遗留代码的困扰

2025-02-16

C语言的时间API充斥着过时的设计决策,导致代码冗长且难以维护。本文作者以一个简单的打印当前时间的例子为例,展示了C语言时间API的不足,并提出了一个改进方案:使用更简洁的数据结构和函数,支持纳秒级精度和浮点表示,并对时区处理和日期格式化进行了优化。这个新的时间库虽然并非旨在广泛使用,但却有效地展示了C语言时间API可以改进的方向,并为其他语言的时间库设计提供了借鉴。

开发 时间API

Intel OpenVINO为Audacity带来AI音频特效

2025-02-16

Intel发布了一套基于OpenVINO的Audacity AI插件,包含降噪、转录、音乐生成和分离功能。降噪功能类似Audacity自带功能;转录功能基于Whisper.cpp,支持转录和翻译;音乐生成和风格重混功能利用Stable Diffusion生成新音乐;音乐分离功能可将歌曲分离成主歌、伴奏或人声、鼓、贝斯等部分。目前仅提供Windows版本下载,可在GitHub获取。

Rust:蚕食JavaScript生态的性能怪兽

2025-02-16
Rust:蚕食JavaScript生态的性能怪兽

Rust,凭借其速度、可靠性和内存效率,正逐步蚕食JavaScript生态系统。众多前端构建工具,如Webpack、Babel、Prettier等,都面临着由Rust编写的替代品(如SWC、esbuild、Rome)的挑战。这些Rust工具以其显著的性能提升,吸引着Next.js、Deno等项目采用。虽然Rust学习曲线陡峭,但其在性能上的优势,以及WebAssembly的支持,使其成为JavaScript工具链未来发展的关键力量。新的项目如雨后春笋般涌现,例如Rspack、Biome等,进一步巩固了Rust在该领域的影响力。

开发

十种Terraform配置根目录结构最佳实践

2025-02-16
十种Terraform配置根目录结构最佳实践

本文介绍了十种经过验证的Terraform配置根目录结构,涵盖单环境、多环境、多区域、多云、微服务、多租户SaaS等多种场景。每种结构都配有示例和优缺点分析,帮助你选择最合适的方案,提升代码可维护性和团队协作效率。从简单的单环境单配置到复杂的团队协作模式,文章详细阐述了每种方案的适用场景、结构示例以及优缺点,并特别强调了模块化复用和环境隔离的重要性。

开发

Python 持续称霸 TIOBE 编程语言排行榜

2025-02-16
Python 持续称霸 TIOBE 编程语言排行榜

TIOBE 2025年2月编程语言排行榜显示,Python 继续领跑,稳坐编程语言之王宝座。尽管速度并非其优势,但Python在非软件工程师中的普及度使其持续保持高排名。C++、Go、Rust等速度型语言也表现强劲,排名上升。榜单中,SQL上升至第七位,Go下降至第八位,Delphi/Object Pascal重回前十。总体而言,排行榜反映了编程语言领域的动态变化,速度和易用性成为开发者关注的焦点。

开发 TIOBE指数

GIMP 3.0 插件开发指南:拥抱 Python 3 和 GTK 3

2025-02-16

GIMP 3.0即将发布,它将使用GTK 3和Python 3,这使得插件开发更加便捷和可持续。本文总结了GIMP 3插件开发资源,包括Python 3教程、API文档以及插件存放位置等信息。作者还提到,插件可以使用C、Python 3、Scheme、JavaScript和Vala编写,并建议将插件放在`~/.config/GIMP/3.0/plug-ins/`目录下。此外,文中还介绍了GIMP的Python REPL以及如何处理外部Python模块。

开发 插件开发

轻量级配置管理工具Remco:etcd和Consul的完美伴侣

2025-02-16
轻量级配置管理工具Remco:etcd和Consul的完美伴侣

Remco是一款轻量级的配置管理工具,受confd启发,它能够使用存储在etcd或Consul等键值存储中的数据来保持本地配置文件的最新状态,并处理模板资源,自动重新加载应用程序以获取新的配置文件更改。与confd相比,Remco支持每个模板资源使用多个源/目标对,以及每个模板资源使用多个后端,并采用Pongo2模板引擎。此外,它还具有僵尸进程清理支持、插件扩展后端功能以及使用JavaScript轻松创建自定义模板过滤器的能力。安装方式简单,支持从源码构建和下载预编译版本。

开发 etcd Consul

Gixy:Nginx 配置安全审计工具

2025-02-16
Gixy:Nginx 配置安全审计工具

Gixy 是一个用于分析 Nginx 配置的工具,旨在预防安全错误配置并自动化缺陷检测。它支持 Python 3.6-3.13 版本,主要在 GNU/Linux 系统上测试。Gixy 可检测多种 Nginx 配置问题,例如 HTTP 分裂漏洞。安装方式多样,支持 pip、yum 和 Docker。用户可指定配置文件路径或使用管道输入,并可跳过特定测试。Gixy 积极维护,欢迎贡献代码和改进文档。

开发

Ollama:在Mac上本地运行大型语言模型

2025-02-16
Ollama:在Mac上本地运行大型语言模型

苹果公司在WWDC 2024上发布了Apple Intelligence,但其承诺的“AI for the rest of us”似乎遥遥无期。与此同时,Ollama这个工具却允许用户在Mac上本地运行大型语言模型(LLM),例如llama3.2。它类似于LLM的Docker,易于使用和管理模型。Ollama利用llama.cpp,并通过Modelfiles配置模型行为,使用OCI标准分发模型。本地运行模型具有隐私、成本、延迟和可靠性等优势。Ollama还提供HTTP API,方便开发者集成到应用中,例如文中提到的Nominate.app,它利用Ollama智能重命名PDF文件。文章鼓励开发者抓住机遇,使用Ollama立即构建下一代AI应用,无需等待苹果的承诺。

开发

Ken Thompson的C编译器后门:一段关于信任的反思

2025-02-16

UNIX 共同作者 Ken Thompson 在其论文“Reflections on Trusting Trust”中讲述了一个惊人的故事:他如何在 C 编译器中植入后门,并在编译登录程序时自动插入该后门,从而绕过系统安全。更令人震惊的是,该后门能够自我复制,即使源代码中删除了后门代码,编译器也能在编译过程中重新插入它。这个故事深刻地阐述了对软件信任的局限性,以及即使在源代码级别进行审查也无法完全保证软件安全的现实。

开发

Gulf of Mexico编程语言:颠覆编程规则的奇特设计

2025-02-16
Gulf of Mexico编程语言:颠覆编程规则的奇特设计

DreamBerd更名为Gulf of Mexico,这是一种奇特的编程语言,其特性包括:以感叹号结尾语句,分号作为“非”运算符,四种声明类型(常量常量、常量变量、变量常量、变量变量),数组从-1开始索引,支持浮点数索引,使用`when`关键字检查变量变化,内置垃圾回收器,支持自定义变量生命周期,以及独特的负生命周期变量提升机制。此外,它没有循环语句,安装过程十分复杂,布尔值包含“maybe”,使用空格表示算术运算优先级,支持分数和数字名称,强制缩进为3个空格,支持多种比较运算符,函数声明方式灵活,除以零返回undefined,字符串声明方式多样,支持区域货币插值,类型注解仅供参考,支持正则表达式类型,以及`previous`、`next`和`current`关键字访问变量历史值。代码可通过五个或更多等号分割成多个文件,支持代码逆向执行,支持全局变量,自动插入感叹号、括号和引号等。Gulf of Mexico还支持富文本和异步函数的轮流执行机制。

开发 奇特设计
1 2 158 159 160 162 164 165 166 213 214