Hegwin.Me

疏影横斜水清浅,暗香浮动月黄昏。

Stripe大冒险:利用 Subscription Schedule 更新订阅

Utilizing Subscription Schedules in Stripe: A Journey of Discovery

使用 Stripe API 更新 Subscription 算是一个常规操作,其 API 使用也不困难;但有时由于账单日期或产品订阅类型的原因,我们无法立即更新一个Subscription,这就需要利用 Subscription Schedule 的功能来在未来的某个时间创建或更新订阅。 Subscription Schedule是一个非常强大的功能。然而,就我个人的开发体验而言,最初...

从手动到自动,部署 Ruby 代码到 AWS Lambda

How to Deploy Ruby Code on AWS Lambda: A Brief Guide from Manual to Automated

最近做了一些新的尝试,将一部分与项目主业务关联性不大的功能,单独作为 AWS Lambda 去开发和部署——也算是在 serverless 开发的大潮流中向前迈进了一步。这篇文章主要是基于我在部署 Ruby 代码到 AWS Lambda 过程中,我所学习到的一些方法和心得。 目前 AWS Lambda 支持的语言有 Node, Python, Java, .NET, Ruby 和 G...

Counter Cache 和 counter_culture

Counter Cache and counter_culture

你是否遇到过这样的需求:假设我们是一个书评网站(比如豆瓣),在书目的列表中,我们需要显示每本书的评价数量。我们会有一个 Book model,以及一个 Review model,他们是一对多的关系,即 `Book.has_many :reviews ` 。 最直接的做法就是在书目的列表页面这样 `books.each { |book| book.reviews.count }`,它可以...

升级 Ruby 到 3.2

Upgrade Ruby from 3.0 to 3.2

眼看着 Ruby 3.3 的 preview 2 版本都已经发出来了, 于是我就着手把一个 3.0 的项目升级到 3.2了。可能是我这样直接从 3.0 到 3.2 升级跨度点大,还是遇到了一些不大不小的问题,我在这里做一个整理,希望可以帮助到大家。 ## Bundled gems 在 Ruby 3.1 中,有些 lib 从标准库变成了 bundled gems,比如我项目中用到的...

JavaScript 中的 Observer API

Notes about Observer APIs in JavaScript

最近,我要在网页中需要实现一个功能。它的背景是这样,我们在页面顶部有一个左右滑动的导航条 nav,当用户在往下滚动页面时,我们会给导航条中对应的项目增加一个名为 active 的 class,当这个 active item 没有完全在页面上展示时,我们需要将那个 item 水平滑动到屏幕中间。用户也可以手动点击导航条中的项目,此时我们需要将页面上下滚动到对应的位置。 这里就涉及到两个问...

Ruby Conf China 2023 参会笔记 Day 2

Takeaways from Ruby Conf China 2023 Day 2

今年,AI真是一个大热的议题,从 EverythingGPT 到 LLM,大家都在讨论着这一场新的技术变革。为期两天的 Ruby Conf China 2023 上,也有三个议题关注到 AI 和 LLM,令人感到兴奋。 这篇文章记录一下我在 Ruby Conf 第二天学习到的内容。这天有2位讲师在讲如何让 Ruby 和 AI一起工作,有深奥的理论(比如 Attention,但我没懂),...

Ruby Conf China 2023 参会笔记 Day 1

Takeaways from Ruby Conf China 2023 Day 1

上周末(2023年8月19-20日),Ruby Conf China 在上海成功举办。这也算是 Covid-19 以来,第一次在线下举办Ruby Conf —— 大家等待了三年之久。非常奇妙的是,会场就是三年前为 Ruby Conf 2021 订下的会场(明天广场 JW 万豪);那次由于疫情问题,不得不改为线上会议。酒店方面还是比较厚道,三年后并没有在会场和餐食方面涨价。顺便一说,万豪轩的自...

光刻机的极限--读《代码的未来》产生的疑问

The Limits of Photolithography - Questions from reading The Future of Computing by Matz

最近读完了松本行弘(Matz)的一本书《代码的未来》;这是 Matz 在2012年出版的一本书,虽然距离出版过去了十年,书里面提到的技术有的已经消失,有的“未来”已经实现,但在这个年代读来依然还是颇有收获的。 《代码的未来》主要讨论的是20年后、100年后的编程会是什么样子?要回答这个问题,计算机硬件的更新是必须要考虑到的一个因素。在过去的40年中,摩尔定律一直在发挥着作用。但是芯片集...

关于衰老与老年生活质量,以及《最好的告别》

A Thought-Provoking Exploration of Aging and End-of-Life Care and A Review of Being Mortal by Atul Gawande

你得做好“那样”的准备,我父亲的医生把我单独从病房里叫出来,对我这样说。 在2022年5月,我的父亲因中风住院,我回到他的城市照顾了他四个月,这是这十几年来我呆在老家最久的一次。父亲的出院诊断的项目有十多条,多发性脑梗死和左侧偏瘫是这次住院主要原因,另外也做了颈动脉支架,希望藉此疏通狭窄的颈动脉防止之后再度中风,除此之外还有高血压3级(极高危)、动脉粥样硬化、II型糖尿病、高尿酸血症、...

Rails 7升级过程中针对cookie一系列变化的应对策略

Rotate cookies when upgrading to Rails 7

最近在进行Rails项目从 6.1 到 7 的升级,这个过程并非一蹴,而是分了好几次部署才完成最终的设置。Rails 7在带来一些新功能的同时,也带来不少 breaking changes,使得这一次的版本升级比之前的都要麻烦一些。这其中比较折腾人的就是关于 cookie的一些变化,Rails修改了默认的cookie serilaizer,以及默认的加密方式,造成了新旧cookie的不兼容,...