分类: 开发

告别ERB!使用Phlex编写纯Ruby邮件模板

2025-03-03
告别ERB!使用Phlex编写纯Ruby邮件模板

厌倦了在Rails中使用ERB编写邮件模板?本文介绍如何使用Phlex这个Ruby库,用纯Ruby代码编写HTML邮件模板,告别ERB带来的繁琐和低效。作者详细介绍了从ERB迁移到Phlex的步骤,包括创建Phlex视图、布局以及使用roadie-rails内联样式,最终实现整个Rails应用零ERB的优雅目标。文章还附带了完整的代码示例和测试用例,帮助读者快速上手。

TrapC:一种更安全的C语言扩展

2025-03-03
TrapC:一种更安全的C语言扩展

TrapC 是一种对 C 语言的扩展,它去除了 goto 和 union 关键字,增加了 trap 和 alias 关键字,并借鉴了 C++ 的一些安全特性,例如构造函数和析构函数。它还提供了一些 C 和 C++ 中都没有的新特性。尽管 TrapC 作为一种极简主义编程语言,关键字数量与 C 相同,但它却拥有令人惊讶的 C++ 代码兼容性。TrapC 的内存管理是自动的,不会发生内存泄漏,指针的生命周期由系统管理,而不是垃圾回收。它还重用了 C++ 的一些代码安全特性,例如成员函数、构造函数、析构函数和 new 关键字。

CBOR胜过MessagePack?一次纠结的序列化格式选择

2025-03-03

作者在寻找一种用于共享编程语言的序列化格式时,在MessagePack和CBOR之间纠结。MessagePack更酷,更易于理解,但CBOR在性能上表现更优异,编码/解码速度快约200%。虽然CBOR文档更复杂,但其更简洁的设计最终说服了作者。作者最终选择CBOR,但承认其对CBOR的选择带有政治因素的困扰。

开发 CBOR

Tangled:基于AT协议的去中心化Git协作平台

2025-03-03

Tangled是一个新的基于AT协议的社交型Git协作平台,旨在让开发者完全拥有代码,开源社区能够自由自治,并使编码再次变得社交化和有趣。它结合了ActivityPub的联邦模型和Radicle的P2P模型的优点,使用轻量级的“knots”服务器简化了Git仓库的托管。Tangled提供免费托管的knots,并通过tangled.sh应用视图整合整个网络,实现无缝访问和协作。目前Tangled仍处于早期阶段,团队秉持数据所有权、低门槛和优秀用户体验三大原则进行开发,并已开启邀请制内测。

开发

Yoke:真正的基础设施即代码

2025-03-03
Yoke:真正的基础设施即代码

厌倦了Terraform等工具仅仅提供配置而非代码?Yoke项目将基础设施定义编写成Go或Rust代码,编译成WebAssembly,生成Kubernetes清单。这避免了运行时依赖带来的安全风险,并通过Air Traffic Control这一Kubernetes operator,实现声明式基础设施管理,极大简化了部署流程。作者以自身经验为例,展示了Yoke如何通过自定义资源定义(CRD)简化应用部署,并阐述了其基于WebAssembly的安全沙箱机制。

开发

PostgreSQL全文搜索利器:VectorChord-BM25

2025-03-03
PostgreSQL全文搜索利器:VectorChord-BM25

VectorChord-BM25是一个新的PostgreSQL扩展,它利用BM25算法和Block WeakAnd算法,显著提升了PostgreSQL的全文搜索速度和精度。该扩展简化了全文搜索流程,并与PostgreSQL无缝集成。与ElasticSearch相比,VectorChord-BM25在Top1000查询每秒(QPS)方面平均提升了3倍,并在NDCG@10方面取得了可比甚至更优的结果,但需要对分词策略进行调整以确保公平比较。

开发

用动画小人替代滚动条?这创意绝了!

2025-03-03

厌倦了单调的滚动条?试试这个用动画小人替代滚动条的创意!作者用简单的JavaScript代码制作了一个行走的小人,在页面滚动时上下移动,作为滚动条的替代品。目前已经制作了第一个原型,未来计划制作滑板、攀岩者或松鼠等更多有趣的角色。

Chrome 实验性 CSS 函数:自定义函数的强大潜力

2025-03-02
Chrome 实验性 CSS 函数:自定义函数的强大潜力

Chrome 正在原型设计 CSS 函数,这将极大地扩展 CSS 的能力。这项功能允许开发者创建自定义函数,根据参数和自定义属性计算值,类似于高级自定义属性。例如,可以创建一个 `--light-dark()` 函数,根据系统颜色偏好设置返回不同的颜色或字体权重,而无需依赖内置的 `light-dark()` 函数的限制。虽然目前尚处于原型阶段,且功能尚不完整,但开发者已可在 Chrome Canary 中启用实验性 Web 平台功能标志进行测试。这为 CSS 提供了更强大的表达能力和灵活性,打开了诸多可能性。

开发

在Bash脚本中使用大型语言模型进行提示

2025-03-02
在Bash脚本中使用大型语言模型进行提示

作者开发了一个名为ofc的工具,允许在Bash脚本中轻松集成Ollama大型语言模型。该工具支持自定义系统提示,方便用户比较不同提示下的模型行为。文章举例说明了如何使用ofc生成数据集测试Harper,以及如何利用模型自生成提示来进行更深入的探索。ofc可以通过cargo命令从crates.io或GitHub仓库安装。

开发

在NixOS上搭建支持Nvidia GPU的Kubernetes集群:一场兔子洞冒险

2025-03-02

作者为了扩展其名为MAZE的机器学习框架,尝试在其由三个迷你PC和一台旧工作站组成的Kubernetes集群中启用Nvidia GPU。这个过程远比预期艰难,作者经历了一系列挑战,包括Nvidia设备插件的配置、NixOS环境下的复杂性以及PKI证书的部署。最终,他成功运行了集群,并分享了使用NixOS、Ansible和Sops部署Kubernetes集群的经验,以及对CRI、CDI、nvidia-container-toolkit等技术的深入理解。他还开发了一个名为nix-playground的工具,用于简化开源项目的代码修改和构建过程,并利用Grok 3辅助调试。过程中,作者也遇到了其他问题,例如PyCharm无法打开WSL NixOS项目,以及Kubernetes RuntimeClass的配置。整个过程如同爱丽丝梦游仙境般跌宕起伏,展现了作者强大的执行力和解决问题的能力。

开发 Nvidia GPU

用旋转子替代四元数进行3D图形旋转?

2025-03-02

本文深入探讨了在3D图形渲染中使用旋转子进行旋转的数学原理和实践应用。旋转子源于几何代数,提供了一种比四元数更优雅简洁的旋转表达方式。文章首先从理论上解释了楔积、几何积等概念,以及如何利用它们进行向量反射和旋转。然后,提供了C++代码示例,展示了如何创建、组合、反转旋转子,以及如何将其应用于向量变换和矩阵生成。最后,文章还讨论了旋转子插值方法,包括nlerp和slerp,并分析了它们的优缺点。

开发 旋转子

LLM代码幻觉:并非洪水猛兽

2025-03-02

开发者常抱怨大型语言模型(LLM)在代码生成中出现“幻觉”——编造不存在的方法或库。但作者认为,这并非LLM用于代码生成的致命缺陷。代码幻觉易于通过编译器或解释器报错直接发现并修正,甚至一些“智能”系统会自动纠正。真正的风险在于LLM生成的错误代码在运行时才暴露,这需要强大的手动测试和QA技能来规避。作者建议开发者提升代码阅读理解和评审能力,并介绍了减少LLM代码幻觉的技巧,例如尝试不同模型、充分利用上下文、选择成熟技术等。

开发

SmallPond:基于DuckDB和3FS的轻量级数据处理框架

2025-03-02
SmallPond:基于DuckDB和3FS的轻量级数据处理框架

SmallPond是一个基于DuckDB和3FS构建的轻量级高性能数据处理框架,能够轻松处理PB级数据集,无需长时间运行的服务。它支持Python 3.8到3.12版本。通过简单的API,用户可以加载、处理和保存数据。GraySort基准测试显示,SmallPond在由50个计算节点和25个存储节点组成的集群上,在30分钟14秒内对110.5TiB的数据进行排序,平均吞吐量达3.66TiB/min。

开发 3FS

交互式Web应用:一个Orwellial

2025-03-02

本文介绍了一个高度交互式的Web应用程序,需要JavaScript支持。作者拒绝将其称为“Bluetorial”,而是称之为“Orwellial”,并附上了一张搞笑的动图。这暗示了该应用可能具有复杂的功能和互动性,而非简单的HTML界面。

开发

Matt's Script Archive: 丰富的免费CGI脚本资源

2025-03-02

Matt's Script Archive (MSA) 提供了大量免费的 Perl 和 C++ CGI 脚本,涵盖访客计数器、表单邮件发送、留言簿、讨论区、搜索引擎等多种功能。这些脚本自1995年起便广受欢迎,下载量超过百万次。MSA 还提供配套的文档、帮助中心以及付费的托管服务,方便用户使用和维护。

开发 CGI脚本

枚举类型中的“其他”陷阱:版本兼容性与开放式枚举

2025-03-02
枚举类型中的“其他”陷阱:版本兼容性与开放式枚举

本文探讨了在C++枚举类型中使用“其他”值(例如WidgetFlavor::Other)的潜在问题。当添加新的枚举值时,如何处理这些新值,以及如何保证与旧版本代码的兼容性,是一个难题。作者建议避免使用“其他”值,而应将枚举声明为开放式,让程序自行处理未识别的值,从而更好地解决版本兼容性问题。这避免了添加新枚举值时可能造成的代码混乱,并确保新旧代码能平滑过渡。

TypeScript 5.8 弃用枚举:一场优雅的告别

2025-03-02
TypeScript 5.8 弃用枚举:一场优雅的告别

TypeScript 5.8 版本发布,引入了 `--erasableSyntaxOnly` 标记,正式宣告了枚举和命名空间的时代终结。虽然字面量联合类型在便捷性方面更胜一筹,但作者却表达了对枚举的怀念之情。文章重点探讨了枚举的一个重要优势:其成员的文档支持,包括弃用声明,这在大型代码库中尤为重要,而字面量联合类型则缺乏此功能。作者呼吁 TypeScript 团队在未来版本中改进字面量联合类型的文档支持。

CSRF、CORS与同源策略:浏览器安全机制的博弈

2025-03-02

本文探讨了网页安全中的CSRF(跨站请求伪造)和CORS(跨源资源共享)机制。虽然两者都与跨站请求有关,但它们的作用和机制却大相径庭。默认情况下,浏览器遵循同源策略,限制跨站写入,但允许跨站读取。CSRF利用了这一策略的漏洞,而CORS则提供了一种机制来允许特定跨站请求。文章深入分析了SameSite属性对CSRF的影响,以及浏览器在整个安全体系中的关键作用,并指出浏览器对SameSite=Lax默认设置的采用率将直接影响互联网的安全性。

开发 CSRF

DeepSeek的smallpond和3FS:为超大规模数据集设计的DuckDB扩展

2025-03-02
DeepSeek的smallpond和3FS:为超大规模数据集设计的DuckDB扩展

DeepSeek AI发布了smallpond和3FS,旨在扩展DuckDB数据库以处理PB级数据集。smallpond是一个轻量级的分布式数据处理框架,允许DuckDB在多节点上并行处理数据;而3FS则是一个高性能并行文件系统,利用SSD和RDMA网络技术提供极高的吞吐量。然而,这两个工具的部署和使用较为复杂,需要专业的硬件和DevOps技能,对于10TB以下的数据集,使用单节点DuckDB或其他更简单的方案更有效率。只有在处理超大规模数据集时,smallpond和3FS才展现出其优势。

告别被动数据:赋能型业务对象的时代来临

2025-03-02
告别被动数据:赋能型业务对象的时代来临

过去,企业数据如同沉睡的巨人,被动地等待人工处理。如今,人工智能赋予了数据自主性,业务对象不再是简单的字段集合,而是能够自主行动的智能体。文章探讨了“赋能型业务对象”(ABO)的概念,它能够自主处理流程、协调资源,甚至与其他系统沟通协作,极大提升效率并解放人力。作者以发票为例,阐述了ABO如何自主完成审批、支付等流程,并展望了在销售、支持、人力资源等领域的应用前景。这将改变企业软件架构,让人们从数据操作者转变为流程编排者,释放人力专注于更具创造性的工作。

开发

程序员关于编程语言的常见误解

2025-03-02
程序员关于编程语言的常见误解

本文列举了软件本地化行业中程序员关于编程语言的诸多误解,例如:所有语言的句子结构都像英语一样容易模板化;所有语言的单词长度都与英语单词长度一致;所有语言的翻译长度都与原文长度一致等等。文章以幽默的笔触,揭示了这些误解的荒谬之处,并强调了语言多样性和复杂性,提醒程序员在进行软件本地化时应注意文化差异和语言规范。

开发

Ladybird浏览器项目月度进展:WPT达百万级,拥抱OpenSSL

2025-03-02
Ladybird浏览器项目月度进展:WPT达百万级,拥抱OpenSSL

Ladybird开源浏览器项目本月取得重大进展,合并了来自35位贡献者的281个PR。WPT通过子测试数量突破177万,向iOS替代浏览器引擎90%通过率的目标迈进。项目采用OpenSSL替代自研加密库,并迁移网络栈至curl,还增加了对Firefox DevTools的支持,提升了调试效率。此外,Ladybird新增了CSS图像光标、新的CSS伪类、文本装饰错误提示等特性,并实现了TextEncoderStream和Resource Timing API,优化了样式失效机制,以及增加了aarch64 Linux持续集成。

Recommendarr:AI驱动你的影音推荐

2025-03-02
Recommendarr:AI驱动你的影音推荐

Recommendarr 是一款基于 AI 的网页应用,它能根据你 Sonarr、Radarr 和 Plex 库里的内容,为你生成个性化的电影和电视剧推荐。它整合了 Sonarr 和 Radarr,直接分析你的媒体库;可选的 Plex 整合则会分析你的观看历史,提供更精准的推荐。你可以选择使用 OpenAI、本地模型 (Ollama/LM Studio) 或任何兼容 OpenAI 的 API。支持自定义推荐数量、模型参数等,并提供深浅模式和海报图片显示。安装方便,支持 Docker 和手动安装。你的数据始终在你的掌控之中,不会被上传到任何第三方服务器。

TOTP标准的混乱:一个测试套件的诞生

2025-03-02
TOTP标准的混乱:一个测试套件的诞生

当前TOTP规范存在严重缺陷,Google、Apple和Yubico等主要厂商的实现方式存在细微差异,导致各种身份验证应用出现各自不同的变体。本文作者创建了一个测试套件,用于检测TOTP标准的实现是否正确,并指出规范中关于数字位数、哈希算法、时间步长、密钥长度和标签等方面的模糊之处,呼吁改进规范,避免未来出现更多问题。

开发

一款简单的VPN工具命令行参数详解

2025-03-02
一款简单的VPN工具命令行参数详解

这是一款命令行驱动的VPN工具,允许用户指定私有网络目标地址(-d)、全局路由(-g)、本地地址(-l)、远程服务器地址(-s)、服务器模式(-srv)、客户端和服务器端TUN设备IP地址(-tc, -ts)以及TUN设备名称(-tname)。需要注意的是,服务器必须能够访问私有网络,否则数据包会在服务器端丢失。

开发

Devlands:在游戏中学习Git

2025-03-02
Devlands:在游戏中学习Git

两年来,作者一直致力于开发可视化Git工具。最初的Git-Sim虽然成功,但仅限于有一定Git基础的用户。于是,作者构思了一个更具沉浸感的版本:Devlands。它将Git仓库转化为一个像素世界,分支是走廊,提交是房间,用户可以漫步其中探索代码。游戏还包含一个Git教程,并集成了AI代码解释器,旨在降低Git学习门槛,让更多人轻松掌握代码版本控制。

Firefox 的替代品?一个长期用户的困惑

2025-03-02
Firefox 的替代品?一个长期用户的困惑

一位使用了 Firefox 20 年的资深用户,由于 Mozilla 近期在广告、AI 等方面的策略调整,开始寻找替代浏览器。他尝试了 LibreWolf,但其对 Firefox 的依赖性让他犹豫。使用 Debian 仓库的 Firefox 版本虽然安全,但需要经常检查设置变化。他还考虑了独立应用、Tor 浏览器和终端浏览器 links,但都无法完全满足需求。最终,他决定暂时继续使用 Firefox,并持续关注其发展方向。

开发

基于Rust的Python框架Robyn:性能飞跃

2025-03-02
基于Rust的Python框架Robyn:性能飞跃

一位在Rust开源搜索引擎公司工作了一年多的工程师高度评价了用Rust重写软件以提升性能的理念。他认为,用Rust重写的Python框架Robyn令人印象深刻,其基于Rust的多线程运行时将为高吞吐量应用带来巨大性能提升,并对Robyn的未来发展充满信心。

punktf:跨平台点文件管理器,告别多系统配置烦恼

2025-03-02
punktf:跨平台点文件管理器,告别多系统配置烦恼

还在为不同系统配置不同的点文件而烦恼吗?punktf 应运而生!它是一个跨平台的点文件管理器,支持 Windows、Linux 和 macOS,使用简洁的命令即可在多个目标系统上编译和部署点文件。它支持Handlebar-like指令,允许条件编译和变量插入,并提供预/后钩子自定义行为。你只需要一份配置,就能让你的所有设备拥有相同的开发环境!

框架迷思:精通前端开发的秘密武器并非框架

2025-03-02
框架迷思:精通前端开发的秘密武器并非框架

许多文章强调开发者不应过度依赖框架,而应深入理解底层语言。但真正的原因并非框架的兴衰更迭,而是:不懂底层机制,你无法成为前端大师。现代前端栈通常包含React等框架及其众多中间层,CSS也通过JavaScript工具间接应用。虽然这些工具很方便,但理解浏览器生态系统能让你更轻松地调试JavaScript和CSS错误,编写自定义CSS,理解客户端浏览器中出现的错误原因。作者分享了自身经验,指出许多看似复杂的前端问题,如多色页脚、自定义图标和webfont优化,都可以通过扎实的CSS和JavaScript知识轻松解决,而无需依赖臃肿的npm包。作者认为,虽然大多数开发者能编写优秀的React和TypeScript代码,但很少有人能判断CSS代码的优劣,而这直接影响网站性能。掌握浏览器和网络工作原理,才能构建健壮易维护的应用,在紧急情况下快速定位和解决问题。最终,精通底层语言才是成为资深前端工程师的关键。

开发
1 2 147 148 149 151 153 154 155 213 214