一些送朋友的礼物

我最近举办了婚礼,朋友们送给我了不少的礼物,我觉得都很好,故在此记录下来,以便于后续给朋友们送礼时用以参考。

当面拆开礼物包装,并夸奖朋友送的礼物也是一种社交礼仪。

  • 筷子:精美的筷子好看且可以日常使用。
  • 碗:精美的碗好看且可以日常使用。
  • 印章:可以印上朋友的名字,或者是美好的祝福,很不错。
  • 水杯:杯子也是日常用的上的,很不错。
  • 餐垫:可以日常使用
  • 创意可爱的花盆:如果朋友有养花的习惯,这个还挺好。
  • 日历:这个比较卡时间,如果是年底,送一个次年的日历也是不错的选择。我离职的时候,给同组的同事们送了个 2025 年的夸夸日历。
  • 冻干咖啡:可以让大家日常喝。挺好。
  • 五年日记本:可以让大家记录这五年,同时也是一个友谊的长周期认证;
  • 钢笔定制:比如 Lamy 的钢笔定制,也是大家日常用的上的。

WordPress 使用 Caddy 完成静态化缓存

使用 Caddy 处理 WordPress 当中,我提到在用 Caddy 处理 WordPress,且为了性能做了很多优化。

我的博客经历了三重优化:最基础的 PHP OpCache + Redis 数据查询缓存 + 静态化缓存。

其中一个比较有效的,便是在整个站点上加入静态化缓存,绝大多数游客看到的其实是预先生成好的静态页面,从而减少了数据库加载、渲染、计算的成本。

而想要实现静态化,则需要借助于 Cache Enabler 插件和 Caddy 配置来完成。

安装插件并启用

安装 Cache Enabler 插件,并启用插件,启用后,在后台设置中,配置过期时间和对应的清除策略,并保存。这个时候,Cache Enabler 就会自动帮你去生成不同的页面了。

image 5

配置 Caddy 路由转发

首先,你应该在你的 php_fastcgi unix//run/php/php-fpm.sock 前面加入缓存的代码并重启 Caddy,具体如下

image 4

缓存配置如下

     @cache {
		not header_regexp Cookie "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in"
		not path_regexp "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(index)?.xml|[a-z0-9-]+-sitemap([0-9]+)?.xml)"
		not method POST
		not expression {query} != ''
    }

    route @cache {
        try_files /wp-content/cache/cache-enabler/{host}{uri}/https-index.html /wp-content/cache/cache-enabler/{host}{uri}/index.html {path} {path}/index.php?{query}
    }
       
Code language: JavaScript (javascript)

这部分配置先定义了一个 @cache 块,用于后续判断,并在其中加入了多种条件判断,说明了不使用缓存的情况:

  • 如果用户有以下 Cookie,就不使用缓存:
    • comment_author(评论作者)
    • wordpress_[a-f0-9]+ (WordPress 的会话 Cookie)
    • wp-postpass(密码保护文章的 Cookie)
    • wordpress_logged_in(登录状态的 Cookie)
  • 如果当前请求命中了以下路径则不缓存
    • /wp-admin/(后台管理页面)
    • /xmlrpc.php(XML-RPC 接口)
    • 所有 wp-*.php 文件(WordPress 系统文件)
    • /feed/(RSS 订阅)
    • sitemap 相关文件
  • POST 请求不缓存(比如评论)
  • 带查询参数的缓存不请求。

随后,通过 route @cache 定义了命中缓存部分的查找顺序:

  1. 先找 HTTPS 版本的缓存:/wp-content/cache/cache-enabler/{host}{uri}/https-index.html
  2. 再找普通缓存:/wp-content/cache/cache-enabler/{host}{uri}/index.html
  3. 如果找不到缓存,就尝试原始路径:{path}
  4. 最后尝试 PHP 文件:{path}/index.php?{query}

查看效果

打开一个无痕窗口,访问你的网站,如果在 html 底部看到 <!-- Cache Enabler by KeyCDN @ Sat, 04 Jan 2025 03:05:34 GMT (https-index.html) --> ,则说明你已经成功启用静态化缓存了!

参考资料

silver mercedes benz emblem on blue surface

使用 Caddy 处理 WordPress

在用了很久的 Docker 托管 WordPress 后, 近期我把 Blog 迁移到了腾讯云的香港轻量云主机上,以获得更快的访问体验。在这次迁移后,出于 Hack 方便的目的,我将 Nginx 替换成了 Caddy。你目前访问的站点便是一个基于 Caddy 托管的 WordPress 站点。

安装 Caddy

安装 Caddy 的过程不需要太过赘述,遵循 Caddy 官方安装文档当中的指南安装即可。

安装 PHP

完成了 Caddy 的安装后,则是安装 PHP,这里我使用的是 ondrej 维护的仓库

sudo add-apt-repository ppa:ondrej/php
sudo apt update
Code language: Bash (bash)

执行上述命令安装 PPA 仓库,就可以继续执行 apt install php 来安装 php & 对应的版本。此外,记得安装相关的依赖包

apt-get install php-fpm php-mysql php-curl php-gd php-mbstring php-common php-xml php-xmlrpc -y
Code language: Bash (bash)

配置 Caddy

完成安装后,就可以正常来配置 Caddy 。得益于社区的集成和 Caddy 官方的支持,Caddy 配置 WordPress 的支持非常简单,可以直接使用 Caddyfile 格式来撰写。

example.ixiqin.com { # 这个配置是给 example.ixiqin.com

    root * /data/caddy/example.ixiqin.com # 我的网站文件都放在 /data/caddy/xxx 下,/data 是我挂载的数据盘

    log { #日志配置
        output file /var/log/caddy/example.ixiqin.com.log  # 日志路径
        format console # 日志格式
    }

    request_body { # 请求体大小
        max_size 20MB # 最大 20MB
    }

    encode zstd gzip # 支持 gzip 和 zstd 压缩
    file_server # 直接提供静态文件(比如图片啥的)
    php_fastcgi unix//run/php/php-fpm.sock # 使用 php_fastcgi 调用 php-fpm 来处理动态 php 文件。
}
Code language: PHP (php)

只需要这样的配置,你就可以完成一个最基础的 WordPress 的站点的配置。

其他配置

对静态文件提供单独的 404 返回

按照上面的配置,其实所有的请求都会转发给 php-fpm 来处理,从而造成额外的 PHP 资源浪费。因此,可以在配置当中加入如下代码,来让 Caddy 直接返回,从而避免对 PHP 性能的浪费。

@static_404 {  
  path_regexp \.(jpg|jpeg|png|webp|gif|avif|ico|svg|css|js|gz|eot|ttf|otf|woff|woff2|pdf)$  
  not file  
}  

respond @static_404 "Not Found" 404 {  
  close  
}

Code language: JavaScript (javascript)

配置缓存头

除了静态文件的 404 处理,你还可以在 Caddy 当中配置静态文件的缓存,从而让浏览器更多的应用缓存,减少服务器的流量,提升加载速度。

@static {  
  path_regexp \.(jpg|jpeg|png|webp|gif|avif|ico|svg|css|js|gz|eot|ttf|otf|woff|woff2|pdf)$  
}  
header @static Cache-Control "max-age=31536000,public,immutable"

Code language: JavaScript (javascript)

40 questions of 2024

以下这些问题,来自 Obsidian CEO kepano 的 40-questions,略有删减。

你今年做了哪些之前从未做过的事?

  • 拔牙:今年趁着字节离职,把智齿给拔了。不过也只拔了两颗 hhh。主要是想起来太晚了,所以没薅到多少羊毛。
  • 办美国签证:同趁着字节离职,去办了个美签。之前虽然可能有资格,但不着急,所以也就一直没搞。反倒是字节,推了我一把,做了点之前没做过的事情。

你身边有人去世了吗?

  • 外婆去世了。😮‍💨

你去了哪些城市/州/国家?

  • 今年因为业务去了不少的地方:三亚、厦门、杭州、珠海、上海。

明年你想要获得哪些你今年没有的东西?

  • 没有啥特别想要的吧,因为现在欲望没有那么的强了。感觉很多东西有也行,没有也行。如果真说起来想要,可能是存钱达到一个新的水平线 hhh

与去年的这个时候相比,你是:感到更快乐还是更悲伤了?变得更瘦还是更胖了?变得更富还是更穷了?

  • 更快乐,但也更胖了。
  • 大面上还是变得更富有了(毕竟过去这一年没有白卷。)

你希望自己能做得更多的是什么?

能够有更多的时间去做一些固定性的产出(作品级别的)。

你希望自己能做得更少的是什么?

胶水工作,互联网闲逛。

你是如何度过节假日的?

看书、看新闻、看代码。

不过今年会开始泡澡,因为发现北方的洗浴中心是低配版的度假酒店

你是否有讨厌某个你去年此时不觉得讨厌的人呢?

没有,实际上,我大部分时候不讨厌任何人。

你最喜欢的电视节目是什么?

今年比较喜欢欢乐喜剧人,或者说,今年开始看一些喜剧类的节目来下饭。

你生日那天做了什么?

在家呆了一天,啥都没干。

是什么让你保持理智?

  • 压力、理想和损失厌恶:我对于自己的目标有想法有追求,所以不敢「发疯」,这些沉没成本,让我始终保持理智。

你想念哪些人?

  • 父亲

今年你学到了什么宝贵的人生经验?

  • just keep shipping!

能够总结你这一年的一句话是什么?

  • 拥抱变化,走出新路径。
image 1

洗浴中心就是低配的度假酒店

在过去,我很长一段时间都是「旅行」派,去一个地方,往往关注的是一个地方的独特风格、独特文化、独特人文风貌,也一直无法感受到「度假」的魅力。

但后续,我了解到度假其实和「旅行」不同, 度假的风格是 —— 找到一个舒服的度假酒店,然后呆一天,什么都不做 —— 都市牛马太累了,需要找个地方安安静静的呆着,吃吃喝喝过一天。

但,度假的成本坦诚的讲,还是比较高的,不管是度假酒店的价格,还是度假酒店的餐饮(毕竟一般酒店只包早餐自助),成本都不低,一次度假一两千是很正常的。

出于省钱的考虑,即使我知道了度假酒店的玩法,但实际上也并没有真的去以度假的方式住过度假酒店。

作为一个北方孩子,大小就跟着父亲去澡堂子洗澡,洗浴中心倒是一直也没有在我新的心中成为一个特别的存在。而真正改变我的,是来字节后的第一次团建 —— 当时我们的团建是去汤泉良子泡澡!我自己难以想象,怎么还泡澡!太尴尬了。不过好在实际体验也还不错,和我小时候体验的澡堂子也完全不同,大家可以穿着睡衣,在大厅里玩耍,吃饭,体验很好。

image 1
洗浴中心的汤泉

而后续再去的洗浴中心,则就和我小时候的澡堂子就不同了,这些洗浴中心开始提供自助餐、开始有游乐区、露天温泉等等,多种多样

image
天津某洗浴中心的楼层牌

而得益于丰富的内容 —— 你会发现,你获得了等同于度假酒店的体验:

  • 你只需要支付 188 ~ 288 不等的入场费用,即可进入到洗浴中心(相比于动辄上千的度假酒店成本)。
  • 你可以在洗浴中心待一天(一般都是 18 小时,也有 24 小时的),在里面吃喝玩乐(洗浴中心会有自助餐、水果、饮料,让你无需走出来,就可以各种消费),和度假酒店没什么太多的区别。
  • 你还可以自己带电脑,在洗浴中心上网。
  • 晚上还可以回家,好在洗浴中心一般不会特别的远, 1 ~ 2 个小时肯定能回家。

是不是感觉还不错?

对于我来说,此刻度假酒店不是我愿意消费的,洗浴中心,就刚刚好,能懂东北人喜欢洗浴中心的感觉了。

2025 年新年规划

上次发布新年规划,还是 2022 年底,时间一晃,两年过去了。我又重新拾起了新年规划,来继续开始我的 2025 新年之旅。

坦白来讲,时间过去的很快,甚至我自己都没发现,我已经这么久没有写过新年的规划了,可见过去的两年里过得多么浑浑噩噩,还是需要时不时的想起来,提醒自己,按照使命愿景和未来规划做事。

新的一年规划,依旧按照 OKR 的方式来设计:

O1:在保证长期身体状态的基础上,提升身体健康水平

我近几年来,虽然身体不算差(指标没有特别可怕的),但依然不能算是一个正常体型的人,2025 年希望 BMI 可以进一步降低,控制回 24.

KR1:BMI 控制到 24 左右

KR2: 2024 年健身时长(力量+有氧)突破 300 小时。

O2:持续输出内容,聚焦个人品牌和影响力

过去在字节经历了不少事情,因此也有不少内容可以写,今年要把过去的这些事情和内容都输出出来,提升自己稳定输出内容的能力,增长个人品牌价值,扩大影响力。

KR1: 每周各渠道共计 1 篇优质内容更新

因为我同时在维护的站点比较多,所以不能保证所有渠道每周都有优质内容更新,因此,确保各渠道共同至少有一篇优质内容在更新。

KR2: 参与线上、线下分享 12 次,向社区开放自己的经验

O3:多元化收入,探索新的增长点

过去几年一直嚷嚷着要多元化收入,但其实没怎么做到。2024 年底,因为加入哥飞的社群,开始真的有一些多元的收入了(Adsense)。所以接下来就是进一步扩大战果,让收入扩大。

KR1:Adsense 月收入年底突破 $9000

2025 年年初数据:日收入 $1

KR2:独立产品年底收入 $x 元

KR3:年化投资收益率突破 6%

KR4:完成储蓄目标,为投资收益提升打基础

其他探索事项

  • 阅读时长 300 小时;
  • 每个季度回一次家,看望母亲;
  • 完成美国旅游一次和中国大陆旅游 3 次;

open book lot

白宦成个人说明书 / 2025 版

适用范围

此说明书用于更好地和白宦成协作。

我感兴趣且长期关注的领域

我个人关注的领域较多,但底层的核心逻辑是我关注的领域大多和个人的自我实现有关。

在此基础之上,可以细分为:

  • 大模型落地应用:我在上家公司,做了一年多的大模型企业落地实践,如果你对这个话题感兴趣,可以来找我聊聊(我做的主要是商业化相关的赋能)。
  • Web3:Web3 作为现实中金融体系的无监管版本,对于我来说,是一个学习的好地方,并且可以和现实生活中的金融进行对比,更好地理解金融。
  • 内容创作产业:帮助更多人走上内容创作的道路
  • 自动化工具:解放生产力,让每个人可以去做自己想做的事情。

我会长时间关注上述领域,如果你和我沟通上述领域的内容,我会非常高兴和你详细聊一聊。

我的性格特质

我的 MBTI 类型:INTJ

我的排名前10位的盖洛普优势才干为:理念、专注、行动、沟通、完美、搜集、积极、分析、关联、取悦。

我是什么样的人

我既可以与人沟通,也可以与自己沟通,且我大部分时间都与自己沟通。如果我们见面沟通,那么,我会希望你我可以有不一样的观点可以分享。

我的个人从业经历

以下经历按时间倒序

  • 字节跳动飞书 AI 产品经理
  • 字节跳动飞书开放平台产品经理
  • 字节跳动火山引擎轻服务产品经理
  • 音播 WavPub Golang 工程师
  • 腾讯云云开发产品运营

初次见面聊什么好?

我很喜欢和别人聊一些不一样的体验。如果是第一次见面,不妨聊一聊最近看的书,最近去过的地方,我都很有兴趣听你分享你的故事。

喜欢的合作伙伴

  • 比起同步沟通更喜欢异步沟通的人
  • 比起语音更喜欢文字的人
  • 有逻辑有条理的人

工作/学习偏好

  • 习惯深夜工作/学习
  • 习惯在安静的地方工作,或者自带白噪音的环境
  • 不喜欢在家工作(写代码时除外,因为需要双屏)

我喜欢的沟通模式

对于细节问题,我会更倾向异步的沟通方式,你可以将问题的细节整理好,发送邮件给我,我在看到邮件后会和你具体的沟通。

对于宏观问题,我会更倾向同步的沟通方式,我们可以在这种同步的沟通方式中,探索出新的可能。

喜欢的办公场所

  • 咖啡馆:小众咖啡厅最佳,在背景音下工作体验非常好。
  • 书店:聊完可以一起逛一下书店,带两本喜欢的书回去。

我日常 base 天津,不过因为朋友/业务都在北京,所以经常京津两地跑。

活跃时间

  • 8:00 AM ~ 10:00AM:读书时间,勿扰。
  • 10:00 AM ~ 7:00PM:工作时间
  • 7:00 PM ~ 11:00PM: 读书/学习/处理邮件时间,勿扰。

不喜欢什么样的人

不尊重专业的人:既然不尊重专业,那何须来找我呢?

抗拒将问题细节化的人:细节意味着上下文,只有充足的上下文,我们才能更好的解决问题。

如何付费

我的咨询报价为 $1000/h(折合人民币约 7,298.70 元/小时)

开始咨询,你需要支付至少 1 小时的费用;实际费用按照小时为单位进行结算。咨询时长按照向上取整计算。

其他

如果你看了上述信息,仍然认为有必要与我建立联系,达成沟通,那么你可以扫描下方二维码和我取得联系。飞书消息少,回的快,主要也是搞些和 AI、研发相关的事情,微信则更多是一些生活化的东西。

image
image 1

a computer screen with a bunch of text on it

又准备折腾博客了

我写博客经历过两个阶段 :

  1. 2012 ~ 2014 年:买虚拟主机、云主机,折腾性能和技术。在这个阶段,我的博客也经历过几轮变迁,也因为我自己没做好生产环境和测试环境的分离,导致数据丢了不少。目前的博客只能回溯到 2016 年便是因此。
  2. 2016 ~ 至今:不再折腾博客,开始专注于内容写作,并且保持每年都有更新,做一个活博客。

写了十年,我也算是没少搞和 WordPress 相关的事情,不过,时间久了,脑子里那些工程师的想法,难免重新冒出来 —— 我是不是应该自己写一个 Blog 系统。对于曾经的我来说,可能是不容易的,我并没有那么丰富的开发经验。但对于如今的我来说,确实是不那么困难的事情。

不过,写总是要有个目的和收益评估,不能「为了写而写」,而是应该有一个明确的目的,评估 ROI。

我为什么想写?

  • 觉得 WordPress 还是太臃肿,有不少我用不上的能力。
    • 那么我自己的 Blog 系统应该有一个明确的 Feature List。这样才能避免需求无限的膨胀。
  • 我的需求已经逐步稳定下来,不太需要新的主题/插件了。
    • 这些年的确主要是更新内容,博客的形式、内容啥的,基本上都是稳定不变了。

我为什么不能写?

  • 写 Blog 对于我来说没有什么特别的收益。
    • 毕竟这玩意没办法卖,除非写的过程中有别的收益,可能还好,不然大概率亏本。

我如果要写一个 Blog 系统,我需要哪些 Feature?

  • 文章系统:包含标题、描述、内容、Slug、目录、标签几个核心属性和实体。
    • Slug 需要自动翻译:我特别依赖这个功能。懒得自己翻译 Slug
  • 支持图片自动上传 S3
    • 我现在的图片都是用的外链,这样服务器自身的压力没那么大。
  • 支持评论
    • 评论还需要能够自动发送邮件更新。
    • 评论要能实现反垃圾。
    • 历史的 600+ 评论可导入
  • 简洁稳定的主题设计
    • 坦白来讲,这几年我很少做主题方面的变更了,基本上就是在几个景点主题上来回切换。
  • 支持 RSS Feed 等能力
  • 支持在线编写(可能非必需,最近开始逐步用 Ulyssess 写作,其实对于网页写文章的诉求越来越小了,maybe Hexo 是可接受的方案。)
50342a0124d0cd161f80dfaee427b33d

人情往来的关键在「往来」

坦白来讲,我不是一个很擅长人情往来的人。

50342a0124d0cd161f80dfaee427b33d

这次来西安,看到了钟楼旁的大唐文创市集上的那句「我在乎的不是礼,而是往来」,让我意识到我对于人情往来的错误认识,也意识到自己过去的傲慢。

过去,我认为,礼嘛,人不到,但是礼到。没问题的,交给大伯帮我捎上礼就行。但其实,对方需要的是人到,反而不在乎这个礼。是的,谁又在乎这个礼呢?没有人在乎礼钱。

礼钱是个心意,多少随心。关键是,你心中是否有我?

我赠予你礼,你是否会回礼?你赠予我礼,我是否会回礼?有来有往,方成人情。

a computer screen with a drawing of two people talking to each other

Solution as a Service, not Software as a Service

在软件领域,我们有非常经典的 IaaS、PaaS、SaaS 模型,我们使用这个模型定义着我们的产品。

但另一方面,这个定义也局限了很多人的想法 —— SaaS just Software as a Service。

实际上,如果你是一个独立开发者 / 直面用户的岗位,你需要深刻的明白 —— SaaS 更大的价值不应该是 Software ,而应该是 Solution —— 用户从来不关心你是不是有 Software,用户只关心你的 Solution 能不能解决你的问题。

如果你不知道你的 Software 是在解决谁的问题 —— 不妨想想,是不是你没有找到你的Software 到底应该如何放在 Solution 当中 ,以及那个 Solution 对应的问题到底是什么。

持续关注用户的问题,尝试提供靠谱的 Solution 去解决他的问题 —— 而不是关注你的 Software。除了你,没有人真正在意你的 Software。