美国之旅 Day 1 :From PEK to SFO

Summary

这是跨国旅行的第一天,早上 10 点半就从北京起飞,一直到次日的凌晨 3 点才抵达旧金山。然鹅抵达旧金山时尚且还在中午,于是便在回到酒店稍作休息后,便前往了渔人码头,开始了我和美国景点的第一次接触。

第一天的行程中,相比于景点,我觉得旅途中更加值得关注。因此,本篇会比后续几篇额外多一个交通的章节。

行程

image

交通

PEK(北京) - ICN(首尔)

早上一大早,我们便从北京三元桥出发,前往首都国际机场,等候飞机。

由于首尔的大雪,导致前序航班起飞晚点,实际上我们的起飞比之前要晚了一些,在最后我也通过携程的保险,获得了一些优惠券的赔偿。

但在起飞之前,我其实对于首尔的大雪还没有什么特别大的概念,只是觉得,应该对于我自己的行程不会有特别大的影响,毕竟我的航班之间的间隔时间有 3 个小时,足够重新飞一班航班到首尔了。

落地首尔后 iPhone 就收到了首尔的气象安全局的安全警报,开始略微有一点点慌,毕竟能动用手机自带的告警系统,说明这个事情是严重的。

image

在我们排队进行安检,再次进入机场时,雪开始越下越大。

image

等我过完安检,雪已经成为这个样子了。

到达韩国机场,考虑到中午没怎么吃,就简单吃了点飞机餐,我们就又跑到首尔机场的美食区,去弄了点吃的。

在这个时候,我发现一个很坑的事实:虽然我在微信公众号上看到,在宣传微信支付可以在东南亚如何如何使用,但当我真的到了韩国机场点餐时,人家的点餐系统根本不支持微信支付和支付宝,导致我点完餐才发现不支持微信支付和支付宝,赶紧从护照中拿出信用卡完成了支付。

如果你要出国,我觉得一张 Visa / MasterCard / AE 的信用卡还是必要的,关键时刻顶大用。

ICN(首尔)- SFO (旧金山)

首尔飞旧金山这趟航线,是我第一次坐跨国航线 & 长达 10 个小时的航线,以往单次飞行时长最多也不过 4 个小时(深圳 — 哈尔滨),这次一下拉到了 10 个小时,还涉及到跨时区和倒时差,真的比想象中要痛苦(但某些细节也比想象中的要好)。

比想象中的好:

  • 我乘坐的韩亚航空提供了机上的牙刷牙膏、拖鞋,让你在飞机上可以不用一直穿着自己的鞋,舒服很多。
  • 韩亚航空的航班座位前后的空间较大,所以还有蛮大的空间让你调整姿态, 没有那么难受。
  • 韩亚航空的餐食不错,我们吃到了好吃的餐食(他的餐具甚至是不锈钢的)。
  • 机上 WiFi 还行,中间我在飞机上发了很多消息🤣。

比想象中的痛苦:

  • 10 个小时的航班比我想象中的难熬,并没有那么容易睡觉;
  • 虽然看起来在窗户边可以拍照,但不可能 10 个小时都拍照,反而是因为自己在里面,不太敢起来去上厕所,还挺难受的。

还是商务舱/头等舱香,就是太贵了。。。坐不起。。。

SFO - SF

从 SFO 到 SF 比较简单,下了飞机,完成入境后,取完行李,便乘坐机场的 Blue Line 来到汽车租赁中心,来取我提前在携程上订好的车。

虽然提前做了预定和安排,不过在现场还是排队了很久(取车的人太多了!)。

好在取完车后,就可以慢慢往市区开了!自己在美国自驾,还是很爽的。到了市区后,就把车停在酒店,然后 Uber 通行了~。

景点

渔人码头

在酒店稍作休息,我们便从酒店前往渔人码头 — 旧金山必打卡点。不过,我们去的时候有点晚,已经下午的 5 点多了,我们到的时候,原计划打算吃的店已经关门了,只得作罢,随机选择了一家店,吃了我们的第一餐。

IMG_1257.jpg

IMG_1259.jpg

IMG_1260.jpg

Pier 39

吃完饭,我们便沿着路朝着 Pier 39 走去,在路上看到了大大的摩天轮

IMG_1267.jpg

并在 Pier 39 拍到了可爱的海狮和恶魔岛。

IMG_1355.jpg

IMG_1268.jpg

唐人街

逛完 Pier 39 ,我们便打车前往唐人街 —— 前往天下为公牌坊,去看了看这个美洲大陆上最早的中国人聚集地。

IMG_1361.jpg

IMG_1363.jpg

餐饮

晚餐吃的 Nick's Light House,点了蛤蜊汤和沙拉,草草的吃了一餐。

住宿

金普顿布坎南酒店,在 IHG 定的酒店,感觉还不错。而且因为旁边就是 JapanTown,可以少去一个景点 🤣。

城市

旧金山给我的整体感觉是比较有设计感的,我在坐 Uber 前往不同的地点的时候,看到很多不同设计的小房子,很舒服!

此外一个就是感觉,我熟悉的很多产品都在 SF 打广告,比如 Stripe、Notion、Twillo、Vercel!感觉非常亲切!

image
image

如何快速清空七牛的存储空间中的所有文件,并删除存储空间

如果你和我一样,有很多历史的文件存储在七牛上,但如今已经不再需要使用,那么就可以考虑删除七牛的存储空间,来节省费用。

但七牛为了保证安全,所以要求必须删除所有的文件后才能删除空间,以避免误删除,所以需要一个个删除所有的文件。为了快速删除七牛存储空间的文件,我写了个简单的脚本,帮助你快速删除七牛空间下的所有文件。

具体操作可参考如下脚本,你只需要

  1. 在本地安装七牛 SDK :pip install qiniu
  2. 创建一个新文件 run.py 并复制下方的代码,修改其中的访问密钥和存储空间名称
  3. 执行 python run.py 就可以了。
# -*- coding: utf-8 -*-
# 导入七牛云 SDK 所需的模块
from qiniu import Auth
from qiniu import BucketManager, build_batch_delete
# 七牛云账号的访问密钥
access_key = '你的 ACCESS Key'
secret_key = '你的 Secret Key'
# 要清理的存储空间名称
bucket_name = '你要清空的空间名称'


# 使用 AK、SK 初始化授权对象
q = Auth(access_key, secret_key)
# 初始化存储空间管理器
bucket = BucketManager(q)

# 设置每次列举的最大条目数
limit = 1000

# 循环列举并删除存储空间中的文件
while True:
    # 列举存储空间中的文件
    # ret: 包含文件信息的字典
    # eof: 是否已列举完所有文件
    # info: 请求的状态信息
    ret, eof, info = bucket.list(bucket=bucket_name)
    # 从返回结果中提取文件名列表
    keys = [item['key'] for item in ret['items']]
    # 构建批量删除操作
    ops = build_batch_delete(bucket_name, keys)
    # 执行批量删除操作
    ret, info = bucket.batch(ops)
    # 检查删除操作是否成功
    if info.status_code == 200:
        print(f"success delete {len(keys)} files!")
    
    # 判断是否已经列举完所有文件
    if eof:
        break
    else:
        continue
# 输出清理完成的提示信息
print(f"delete all files in {bucket_name}")
Code language: Python (python)

执行成功后,你会看到如下面这样的命令,接下来等他自动执行即可,你就不用做任何事情了。

image

当工具提示你 delete all files in 你的 kodo 名时,你就可以回到七牛控制台,删除掉空的 kodo 了。

image

2025 年,计算机专业还应该读么?

这个文章源自于  V2ex 热帖《2024 年计算机专业还值得选吗?》,谈谈我对于这个问题的看法。

前情提要,在 2024 年,刚好我大姑家的堂弟要选专业,我帮他选择了计算机专业,也最终招录到计算机专业,在北京就读,所以针对这个问题,我的答案一定是 YES。接下来的内容,则重点关注,为什么是 YES?

为什么是计算机专业?

计算机算法思维

计算机一个很大的好处是,过去有不少非常明确且经典的算法,可以用在日常的生活当中,帮助你更好的生活。

比如:

  • 迭代和递归:你在处理日常的事情的时候,如果你能理解迭代的概念,就会对于需要重复处理的事情有了概念。如果事情可以简单重复,则设定简单的迭代条件,使其不断执行即可。递归则可以帮助你更好的对自己重新复盘、理解。不断的 ASK WHY,发现问题的解法。
  • 深度优先和广度优先:在生活当中,我们总是会面临各种的选择。有些时候要优先选择看不同的选项,有的时候则需要优先选择抓住一个具体的问题不断下钻分析。当你知道了不同的选项的好与坏,也就可以更快的做出决策。
  • 分治:针对问题的分治思维,可以帮助你将一个问题从复杂转换为简单,从而拆解任何复杂的问题。这个思路和思想,可以帮助你去直面这个世界的任何问题。

行业加成

如果说,计算机专业所带来的对认知的改变是个人方向的考虑。计算机专业所带来的行业加成则是从更加大局观的视角来看这个问题。

诚然,如今的计算机专业已经不如十年前那般火热,甚至我们已经开始讨论计算机是一个很卷的专业。但不可否认的是,计算机经过 20 年的飞速发展,已成为社会的基础设施。你很难想象如果我们身边的很多软件产品消失后,你的生活会变成什么样的?生活将倒退回没有信息技术的时代。互联网作为如今的基础设施,所面临的必然是增长放缓,不如当年。

6e4b6a1a fdfe 47fe bb89 fce7bd924668
智研咨询的计算机行业的产值

但,即使是放缓的互联网行业,对比很多已经开始走下坡路的行业,依然是还可以的选择

此外,计算机行业虽然我们常说饱和、卷,但如果下钻到很多细分领域,会发现大量的草台班子的存在,只要你认真做事,提升自己,更有机会脱颖而出,享受行业的溢价,拥有更多的可能。传统行业虽然也有机会,但成功率不同的。计算机行业的生产资料只有 PC & 互联网,你可以轻易的获取到生产资料,但在传统行业,可就没这么简单了。

职业生涯

考虑到我国的现状,计算机(这里的计算机指 PC)的使用率和普及率并没有那么的高。而作为一个当下的基础设施,当你掌握了相关的技能之后,你完全可以借助你的相关技能去走其他的可能性。

实际上,相比于推荐大家去读计算机,我更推荐有识之士依赖自己的业余时间去学习计算,并学习一个其他行业,这样会帮助你在其他行业借助你的计算机技能脱颖而出,从而获得跨行业的技能和可能性,赢得更多的可能性。

什么情况下不要选择计算机专业?

对于不选择计算机专业的情况,我的眼中只有一种情况 —— 你已经知道你想要的是什么?你已经知道了你接下来几十年想过什么样的生活。

当你有了这样的目标,那么再无脑选计算机可能就是一个错误的选择。你完全可以借助业余时间来完成计算机相关的学习,并借助这些计算机的技能,帮助你更好的达成目标。比如你想要成为医生,虽然说计算机可以帮助你成为一个更懂计算机的医生,但把更多的精力放在医学本身上是一个更好的选择。

说到底计算机是一个实践学科,只要你多看、多学、多动手,这些问题,都不难。

使用 Cloudflare 配置 301 转发

我的 newsletter 一部分使用 Ghost.js 进行托管,还有的在使用 Quail 来进行托管,而对应的域名则放在 Cloudflare 上进行解析。最近给 Quail 的 newsletter 绑定了域名,因为其只支持绑定一个域名,所以我就在 Cloudflare 上配置了 301 转发,来确保我的 @ 和 www 域名都访问同一部分内容。

这里我设定是 www 域名是真实绑定了 Quail 的后台,并通过 Cloudflare 完成相应的 CNAME 配置,确保网页可以正常访问,并要实现在 Cloudflare 上配置 301 转发,能够将根域名转发到 www 域名上。

image

在 Cloudflare 上配置域名解析,并开启代理模式

在 Cloudflare 上新增一个 CNAME 域名配置,配置你要转发的域名,目标可以选择你的 www 域名,或者是你的 www 域名的对应的 cname 域名。然后再打开代理

image

配置规则

在 Cloudflare 左侧侧边栏找到「规则」,进入规则页面,以配置规则。

image

在规则页面,创建一个新的规则,这里模板你可以选择「从 www 重定向到根」(如果你和我相反,是先建设好的根域名,将 www 转发过来,那直接使用这个规则就行。)

image

在弹出的规则配置页面设置你的转发规则,比如下图这样的设置就行。

image

这样当你的规则生效后,如果用户访问 AIStarter.dev/xxx,就会自动转发到 www.aistarte.dev/xxx。从而帮助你完成相关的配置能力。配置完成后,保存稍等片刻就可以生效了。这个时候你就可以使用 curl -I xxxx.xxx 来看你的域名转发情况,是否能正常返回 301 response。

image
human

白宦成简史

更新记录:

2022 年 2 月 9 日:创建本文档

2025 年 1 月 10 日:修订,新增 2021 年 ~ 2024 年的更新。


如何想要了解白宦成,你就需要了解他的成长历史。表面给你提供的内容寥寥,可能不足以你很好的对白宦成产生更加立体的形象。

2003 年

白宦成的父亲白玉信先生是一位公务员,得益于公务员的身份,可以接触到电脑。小时候的白宦成比较顽劣,但很喜欢电脑。借父亲工作之便利,可以接触到电脑,打游戏。

当年比较喜欢的游戏包括:红色警戒2 、暴力摩托

2005 年

2005年,白宦成一生中的一个很重要的伙伴 —— 赵晓冬带着白宦成去了一个很重要的地方,小学门口的电脑装机店。因为赵晓东的父亲与店主关系较好,赵晓冬和白宦成可以放学后在装机店呆着。

在装机店里,白宦成学习了如何组装家用电脑。后来,白宦成甚至一个暑假都呆在这个装机店里,学习如何维修电脑。(是的,白宦成真的会修电脑

2006 年

2006 年,梦幻西游进入白宦成的世界,白宦成开始玩游戏,疯狂的玩游戏。甚至半夜不睡觉,偷偷从家里跑出来,去家附近的网吧打游戏,再被父亲抓回去(屡次)。

2007 年

在家附近的旧书店购买到了 《电脑爱好者》、《黑客 X 档案》、《大众硬件》、《大众软件》、《电脑迷》,并对其中的《黑客X档案》特别感兴趣,开始研究成为炫酷的「黑客」。

并试着用《黑客X档案》学到的技术,在网吧成功的逃避了网费的支付(这可能白宦成离黑客最近的一次)

2008 年

白宦成在阅读《黑客X档案》的时候,开始对更加广袤的编程世界感兴趣,迫于英语不好,无法理解更复杂的编程逻辑,只能从「易语言」开始学起。

2009 年

白宦成进入初中开始学习,由于被选中作为纪律委员,开始试着与过去的自己告别,不再做那个屡次被叫家长的坏孩子。试着开始变成一个好孩子。

也受到地理老师的赏识,地理老师授予了办公室的钥匙,允许白宦成在放学后,留在办公室里浏览互联网。

感谢白宦成的地理老师 —— 董向才老师。

在这个阶段,白宦成开始试着用易语言编写一些简单的程序。

2010 年

白宦成开始和自己的同学慕沁阳一起订阅《电脑报》,购买《电脑迷》,两个人轮流购买,一周白宦成买,另一周慕沁阳买。

2011 年

准备开始中考,暂时将精力放在学习上。

2012 年

考上高中,并加入高中的《话剧社》,成为一名后期。经由学姐培训,掌握了基本的 Adobe Audition 的使用技巧。并在 2012 年,加入学校的《文学社》,使用易语言为文学社制作电子社刊。

2013 年

开始正式进入互联网的范畴,买了虚拟主机和域名,搭建自己的第一个博客(xqgz.info,域名早已不续费了)

并在同年折腾了很久的虚拟主机优化以后,决定购买了一个 VPS。第一个 VPS 是在淘宝买的, 28 一个月。

买了 VPS 以后,了解 lnmp.org 军哥的一键包,同年还研究了其他 VPS 上个人博客的各种优化。

后使用 AMH 面板(当年的帖子 http://amh.sh/bbs/post-803-1-1.htm)

同年开始使用阿里云,并和好友妙正灰(mf8.biz) 一同成为阿里云论坛的版主。

2014 年

经由 AMH 面板,开始初步涉猎 PHP 开发,并延展到更有价值的 WordPress 主题开发和插件开发领域。

同年,考上大学。

白宦成在大学加入了「新媒体研究会」,学习了解新媒体的事情,并在当时打下了写公众号的基础。

得益于大学的班助制度(程翔先生,很有才华的一个学长,他获得了我们学校的魅力学子,白宦成也在他离开大学那年,获得了魅力学子的荣誉称号),班助发现白宦成有搞新媒体的能力,便带着白宦成一起搞事情。

同年,得益于学长介绍,在 2014 年和另外一个学长合作,开始做外包项目。早期使用 DeDeCms 开发企业网站。

2014 年,加入 Linux.cn ,担任译者

2015 年

2015年,响应大学生创业的号召,白宦成前往红安县注册了企业「红安县稳云网络科技有限公司」,同年暑假,在红安县做外包项目赚钱。

同年,成为腾讯云论坛版主,并开始为腾讯云论坛制作视频教程。

同年,加入腾讯云校园布道师计划。

同年,在 Linux.cn 贡献项目和代码,逐渐深入组织。

2016 年

2016 年,小程序横空出世,白宦成使用昵称「西秦公子」为极客学院制作视频课程《微信小程序进阶实战之分答应用开发》、《微信小程序入门实战(仿V2EX)》

同年,得网易的领导尧漂海先生赏识,白宦成得以在 2016 年在网易实习。

2017 年

这一年,白宦成基本上都在上课 + 做外包项目赚钱,同时,还在学习小程序技术,并不断的产出视频教程。

同年,开发小程序「运维密码」

2018 年

这一年,白宦成开始进入知识付费领域,并在 GitChat 的支持下,写了自己的第一个专栏《人人都能学会的 WordPress 实战课》,该专栏现已全面开放 https://www.easywpbook.com/

同年 开发小程序「Linux」

2019 年

前往深圳,加入青寕信安科技,担任嵌入式工程师

同年在深圳 GDG、台湾 COSCUP 等多处活动分享

同年开发出自己的第一个爆款开源项目 —— logoly.pro

2020 年

加入腾讯云,担任云开发团队的产品运营。

2021 年

开发出自己的第二个爆款项目 —— NESHouse

自由职业者

加入字节跳动,成为「轻服务」产品的产品经理。

同年 8 月,re-locate 到北京工作 & 生活。

2022 年

轻服务业务调整,加入飞书开放平台,担任飞书开放平台产品经理。

开启 APILetter.com 输出开放平台相关的内容

开发 ChatGPT-Feishu 项目,获得关注。

2023 年

通过 APILetter 获取到不少关注。

同年 10 月,机缘巧合,转岗至 Lark AI Incubator 团队,担任 AI 产品经理,负责企业内部 AI 赋能。

2024 年

12 月,再次从字节跳动离职,成为独立开发者。

如何修改 Advanced Media Offloader 使其可以批量将历史文件上传至对象存储?

Advanced Media Offloader 提供了 Bulk Offload 功能,可以实现将历史的文件上传到对象存储中,从而降低本地的存储压力,使得站点自身变得无状态。

但其默认的 Bulk Offload 功能每次只能加载 50 个图片,如果附件太多,则需要点击 N 次,十分麻烦。

image 6


不过,可以通过简单的修改,来实现一次上传,将多个图片进行 Offload。

在 WordPress 后台的插件管理器中,找到 Advanced Media Offloader 插件,并将includes/BulkOffloadHandler.php文件打开,找到其中的 get_unoffloaded_attachments 函数,修改函数定义中的 $batch_size = 50 为你想要的大小即可使其一次批量加载多个文件了。

image 8
修改位置

修改后效果:

image 7

一些送朋友的礼物

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

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

  • 筷子:精美的筷子好看且可以日常使用。
  • 碗:精美的碗好看且可以日常使用。
  • 印章:可以印上朋友的名字,或者是美好的祝福,很不错。
  • 水杯:杯子也是日常用的上的,很不错。
  • 餐垫:可以日常使用
  • 创意可爱的花盆:如果朋友有养花的习惯,这个还挺好。
  • 日历:这个比较卡时间,如果是年底,送一个次年的日历也是不错的选择。我离职的时候,给同组的同事们送了个 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!

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

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