Django 中的 select_for_update(skip_locked)

2021 年 12 月,Django 在新发布的 4.0 版本中提供了对 MariaDB 数据库后端的 QuerySet.select_for_update()skip_locked 参数的支持。这个参数在 MariaDB 10.6 中被引入,而八个月后,Django 的下一个主要版本便宣布了这个参数提供的支持。

Copilot 使用体验

我可能是全网最后一个体验 Copilot 的用户了。由于最新又在做一些好玩的小项目,而其中的很多基础逻辑都跟以前的项目很类似,因此摆在我面前的有两个选择:从以前的代码库中把相关代码抄下来,或者重新写一遍逻辑近似、但不完全相同的代码。

话说回来,虽然在不同的项目中要实现的逻辑是类似的(例如都要实现用户登陆的功能),但由于每个项目的具体应用场景存在区别,因此具体到每个项目中,相似功能的实现也存在较大差别,无法简单地复用先前的类似代码。我想到了 Copilot。

一张来自 Visual Studio Code 代码编辑器的屏幕截图,展示了用户在编写少数上下文的情况下,Copilot 插件能够根据用户上下文提供代码建议
Copilot 能够根据上下文自动提供代码建议,这是基于 OpenAI Codex 实现的

与光——我的二零二二年

一张烟花图片。可见许多游客在滨海湾广场举起手机拍摄空中的烟花。背景是新加坡摩天轮与金沙酒店
新加坡滨海湾的跨年烟花,摄于 2023 年 1 月 1 日当天,新加坡市中心区

伴随着滨海湾长达八分钟的跨年礼花声,这里每个人的二零二二年都就此落下了帷幕。想必身处不同地区的人们对过去的一年都有着不一样的感受和体验。而对于我来说,二零二二年带给我的,是无数且广阔的经历、故事,以及光。

自由占有人,人却逃避它

有年底跟发小儿去杭州,他说要借着度假的机会写年终总结,这回我又要去杭州,但发小儿已经到星加坡开辟新天地去了。在这里,迟到地祝他生日快乐!

今年两度经历封校,五月份时正值硕论准备答辩,忽遭封校,快递外卖断绝,只艺博处留出快递窗口,学生区家属区隔开,尚属首次。五一节在紫操与一众不相识的人喝酒侃大山,看情人坡、西操办的演唱会,今天回想,校内玩得嗨(当然我并非),校外一片寂然,这种由学校安排的群体狂欢,与躲进小楼自成一统的小天地小日子想法合在一起,确实无坚不摧了,只要低级欲求力有个出口,就好办,但对于高级欲求力,则逃避之、禁锢之。

WordPress + Nginx 客户端证书验证的坑

我始终在关注各种能够提升访客访问本站点体验以及安全性的优化措施。继去年底将博客接入 Cloudflare 后,在最近一段时间本站又将博客源服务器进行了扩容升级。借着本次升级,我们配置了 Nginx 中一项被称为客户端证书验证的安全措施,随之踩了不少坑,遂撰本文以分享,希望能帮助更多人。

tl;dr不要为 WordPress 站点开启源服务器上的客户端证书验证功能

惠普的“打印即服务”——HP Instant Ink

来新加坡的这段时间,因为平常有打印需求,所以购买了一台惠普 HP DeskJet 2722e All‑in‑One Printer 打印机。这款在官网上标价 69 新加坡元(约合 50 美元)的打印机具备喷墨打印、扫描与无线打印等基本功能。但最令我感兴趣的是随附的名为“Instant Ink”的订阅服务,这款能够以订阅的方式获得邮寄墨盒的服务在网上能搜索到的中文简介和使用体验较少,遂撰写本文以记录。

为初创团队审计代码五年——我从中学到的

本文翻译自《Learnings from 5 years of tech startup code audits》一文,译文标题略微进行了改动;原作者 Ken Kantzer 在软件工程领域经营多年,对安全性问题有着深入思考;感谢 Twitter 用户 @greatested 分享了文章英文版本

我在 PKC 的那段时间,我们的团队做了超过二十次的代码审计,其中大多数,是为那些已经完成 A 或者 B 轮融资的初创企业进行的(经常是当这些企业已经渡过了市场契合度的挑战,手里有现金并且意识到最好应该深入研究安全性的时候)。

这是一项引人入胜的工作——我们跨越广泛的领域,并且深入到了各种堆栈和架构的组合。我们发现了从“有点意思的”一直到“灾难性的”各种安全问题。并且我们也有机会与高级研发领导以及 CTO 进行广泛交谈,了解他们在开始拓展时遇到的各种工程性和产品上的挑战。

揭幕无图型设计的神话

本文翻译自《Debunking the Myth of Going Schemaless》一文,原作者为 John Page,他是一名苏格兰人,现在 MongoDB 担任工程师;本篇文章的英文原文版本由 MongoDB 赞助

译者按

在面向有状态(Stateful)应用程序开发的过程中,通常会使用数据库对程序的状态进行持久化存储。与关系型数据库管理系统(RDBMS)使用前需要定义数据库图型(Schema)不同,诸如 MongoDB 在内的一系列数据库是无图型(Schemaless)的。开发者基于无图型数据库设计时,通常会有一些使用误区。本文原文作者从一个概括的角度讨论了这些误区,并提供进行无图型设计时的最佳用例。

Wasabi 对象存储服务使用实践

本文更新于 2024 年 3 月,更新了 Wasabi 服务的价格信息。

先前一段时间,我在浏览 Cloudflare 带宽联盟页面的时候了解到了 Wasabi。Wasabi 是一家提供对象存储服务的企业。与其他竞争对手(通常是大型云服务提供商)不同的是,Wasabi 的对象存储服务提供了极其简单且可预测的价格模型。根据官方网站的宣传,Wasabi 对象存储服务的使用成本要比 AWS S3 低 80% 左右。

先前在考虑如何托管博客图片、搭建网盘以及存储备份/日志数据时都考虑过各个云服务商的对象存储服务,但是复杂的存储层级和不可预测的计费模式均成为了当时选择的阻碍。了解到 Wasabi 提供的服务后,我花了一些时间对其进行调研使用,遂撰写本文,以向大家分享 Wasabi 对象存储服务的使用实践。