作者归档:白宦成

关于 白宦成

独立开发者, 自由职业者, 写作者

b29692084bbb

如何 Debug WordPress 的 Pingback 功能

前两天,朱峰老师在写博客的时候,引用了我的文章,发现我的博客并没有开通 Pingback。提醒我开通以后,发现依然没有效果。

于是进入了 Debug 模式。

Pingback 如何 Debug

PingBack 是基于 XML 构建的协议,因此,如果你需要调试的话,需要自己发送 XML 请求,以通知 WordPress 进行 Pingback 记录。

你需要构建一个 XML 文件,其中的内容如下

<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
 <param>
  <value>
   <!-- source,发起请求的文章,即要引用别人文章的文章 -->
   <string>https://blog.andie.im/blog-is-back/</string>
  </value>
 </param>
 <param>
  <value>
   <!-- target,被引用的文章,即他人的文章 -->
   <string>https://www.ixiqin.com/2021/10/more-and-more-good-a-lightweight-application-server/</string>
  </value>
 </param>
</params>
</methodCall>
Code language: HTML, XML (xml)

将上述的 URL 修改为你自己的以后,就可以在命令行中对 WordPress 发起请求,以实现 PingBack 功能。

curl -X POST -d @pingback.xml https://domain/xmlrpc.php #将 Domain 替换为你自己的博客地址
Code language: CSS (css)

发送成功后,你会看到这样的一个提示,就说明你的 Pingback 发起成功了,接下来要做的,就是在 WordPress 的评论页面去给 Pingback 进行放行了。

朱峰老师的文章

Reference

https://wordpress.org/support/topic/inbound-pingbacks-not-working/

green and white electric device

越来越好的轻量应用服务器

这几天规整我手头的 VPS、云主机,意外发现腾讯云推出了 LightHouse DB,激起了我的兴趣,刚好也对比一下其他几家的产品。

You don’t NEED scaling 中,我提到,对于绝大多数的企业来说,根本用不到云计算厂商提供的产品,他们需要的仅仅是一个简单的 VPS即可。

各家云厂商也意识到了这个问题,纷纷推出了低配版的云主机(VPS),亚马逊的叫 Lightsail,阿里云的叫轻量应用服务器,腾讯云的叫轻量应用服务器 LightHouse

名字接近,定价也相差无几,起步定价均在 24 元/月附近,直逼 Digitalocean 的 $5/月的定价,和 Vultr 的 $2.5/月的定价也没贵多少。可以看出,这类产品的对标,便是 Do、Vultr、Linode 之类的 VPS 厂商。

而过去,国内的轻量应用产品都是处在不能用的场景下,因为

  1. 没有独立的数据盘:这导致无法实现系统和数据的分离,在数据安全性方面,有所问题。
  2. 内网与其他云产品不互通:这导致无法使用云数据库类型的产品,数据安全方面得不到保障。

这两点让使用这类产品的时候,都会面临需要自己做更加细致的运维的工作。

不过,我现在发现,各家的产品都在变好了。如,阿里云针对数据盘问题,提供了独立的数据盘的能力(但之前购买的轻量云服务器无法添加数据盘)。

腾讯云则针对内网不互通的问题进行了优化,提供了内网互联和LightHouse DB 的能力,让用户可以自行配置所使用的云资源。

经过这么一优化,我觉得,这两者基本都达到了可用的层次。

阿里云用户可以通过数据盘来规避数据安全的问题,为数据提供更高的保护等级;腾讯云用户则可以通过内网互联,将用户上传的文件,托管到 COS 对象存储中;将用户数据放在 LightHouse DB 中;将缓存放在云 Redis 中。

相比之下,我更倾向于使用腾讯云的 LightHouse(希望能早日支持数据盘),要不是我的博客服务器续费了一年,我现在就打算切换到腾讯云了。

2022.03.11 更新

green and white electric device

You don't NEED scaling

云计算成为当下时代的主流,云计算的“弹性伸缩”,把创业者搞的五迷三道。似乎云计算成为了当下的唯一选择,没有使用云计算,你就是 Low B ,你的公司就会在出现问题以后,一夜崩塌。

但,事实真的是如此的么?

世界上做云最早的,是 AWS,亚马逊的 AWS 是云计算行业的先驱和老大哥。国内做云最早和最专业的事,是阿里云,阿里巴巴旗下的阿里云成为国内初创企业的云计算必选项。

但,你有没有想过为什么会是他们?

这是因为作为一个电商企业,云计算是他们所必须的。每逢黑色星期五/双十一/六一八,电商企业就需要采购大量的基础设施,以应对节日的流量洪峰。但除了电商企业以外,很少有企业需要面对那么极致的弹性伸缩。

对于电商企业来说,节日的流量可能是日常的 100 倍、1000 倍。而对于绝大多数的业务,即使出现了流量爆炸,往往也是在 10 倍、20倍的变化。正常情况下,流量的变化也是一个可以预期的事情。

对于这些没有那么强弹性诉求的企业来说,云计算提供的弹性伸缩能力很好,但确实没有什么应用场景。倒是让企业为此付出了不少的代价。

对于绝大多数的企业来说,他们需要的仅仅是一个 VPS,甚至,仅仅需要一个虚拟主机,但云计算的洗脑,让你感觉你”好像需要弹性伸缩能力“,让你感觉,你”好像拥有了和 AWS 同等级别的弹性伸缩能力“。

但是,别忘了,弹性伸缩不仅仅是云计算的事情,还需要你的业务架构能支持、你的运维人员能搞定,你的钱包能 Cover 住。

你真的需要云计算么?你真的需要弹性伸缩么?

red padlock on black computer keyboard

从 1Password 到 Bitwarden

近日,1Password 从原生开发变为了 Electron 开发,而我购买 1Password 家庭版也两年有余。虽然成本不高,但考虑到希望节省开支,便在考虑将一部分支出精简。可以自行托管的 Bitwarden 就成为了 1Password 的替代品。

借着国庆假期,将密码管理软件从 1Password 转换到了自建的 Bitwarden 上。

备份 1Password 的数据

既然要迁移,自然要先备份现有的数据,比如 1Password 中的数据。

在迁移方面,Bitwarden 官方提供了教程,你可以直接参考。

Import Data from 1Password | Bitwarden Help & Support

部署 Bitwarden

Bitwarden 官方的开源版本使用的是 C# 编写的,对于资源的消耗较大。而我是希望在 NAS 中运行,因此,就选择了一个对于资源消耗更少的版本 —— VaultWarden(之前的 bitwarden_rs 项目),一个基于 Rust 编写的 Bitwarden 服务端。

部署的过程也不复杂,使用 Docker 将镜像拉到本地,并复制官方的执行命令,稍做修改即可部署。

# <meta charset="utf-8">/vw-data/ 修改为你自己服务器上的数据存储位置。
docker run -d --name vaultwarden -v /vw-data/:/data/ -p 80:80 vaultwarden/server:latest
Code language: HTML, XML (xml)

不过,我并没有使用 Docker 部署,而是使用 Docker 的替代品 Podman 进行部署(主要是想试试新技术)。

整个的使用过程也很简单

# 拉取镜像
podman pull docker.io/vaultwarden/server
# 启动容器
podman run -d --name vaultwarden -v /vw-data/:/data/:Z -e ROCKET_PORT=8080 -p 8080:8080 vaultwarden/server:latest
# 进入 systemd 目录
cd /etc/systemd/system/
# 生成 service 文件
podman generate systemd --name vaultwarden --files
# 设置自启动,并启动服务
systemctl enable /etc/systemd/system/container-vaultwarden.service
systemctl start container-vaultwarden.service
Code language: PHP (php)

通过几行代码,就完成了 Bitwarden 的部署。

使用 Nginx 对Vaultwarden 进行反向代理(非必需)

默认情况下,你配置的 Bitwarden 服务器会运行在 8080 端口下,如果你希望将其使用 Https 保护起来,或使用HTTP的 80/443 端口,一个比较简单易行的方式就是使用 Nginx 来进行反向代理。

fmphu

Vaultwarden 官方提供了 Nginx 的配置文件可供参考,其他的代理服务器也可以找到类似的说明,具体的配置你可以自行访问前面的连接进行查看。

注册账号,并导入数据

配置完成后,访问你的Vaultwarden 地址,并注册一个新的账号,就可以在 Bitwarden Web 端的“工具”页面,进行数据导入了。

vc40l
导入界面

需要注意的是,如果你选择的是文件上传导入,则会使用 WebSocket 进行导入。这里如果你没有配置 WebSocket ,就无法通过文件进行导入,需要使用文本编辑器打开备份文件,复制到下方的输入框中进行恢复。

安装各个平台客户端

在完成了各项配置后,最后就是安装各平台的客户端,并配置服务器、账号密码等,登陆客户端,并同步账号密码了。

s4u5v
配置说明

总结

其实 Bitwarden 的部署不算复杂,不过,Bitwarden 的使用体验目前还是不够好的,在一些网页上,1Password 可以完成自动填充,但 Bitwarden 就需要自行复制粘贴,在用户体验方面还有待提升。

black laptop computer keyboard in closeup photo

使用 Space Sniffer 分析 Windows磁盘占用

3ewz5
cleanMyMac 提供的空间透镜功能

在 macOS 中,我可以使用 cleanMyMac 中提供的“空间透镜“功能, 对我的电脑中的磁盘进行分析。如果你使用的是 Windows ,希望实现类似的效果,则可以考虑使用 Space Sniffer 进行分析

ldcp8
Space Sniffer 分析界面

和 cleanMyMac 的空间透镜一样, Space Sniffer 功能也是对磁盘中文件进行分析,因此,只需要下载软件并启动软件,选择需要分析的磁盘,就会自动生成如上图一般的占比图。

接下来要做的,就是根据占比,对大文件进行清理啦。

主页:http://www.uderzo.it/main_products/space_sniffer/index.html

下载地址:https://www.fosshub.com/SpaceSniffer.html

black laptop computer keyboard in closeup photo

升级到 Windows 11

我一直都有一台 NUC10i7FNH,刚好最近发布了 Windows 11。

对于我来说,似乎发生了变化,但似乎确实也没发生啥变化。除了开始菜单变到了中间,其他并没有差异。

但我并不使用开始菜单启动应用,而是更加习惯于使用 PowerToys 提供的 Power Toys Run 来启动应用,因此比较无感。

如今的我,对于 iOS 的更新会追最新,但已经很少再去关注具体的细节了。顶多体验一下最新的一些特性,然后就不再关注了。

类似的,如今的 Windows 11 ,对于我来说,也变得普通了。

大概是因为我已经老了,不再去关注那些最新奇的东西了,反而是更加关注新奇的东西所带来的价值。

summary

2021 年 9 月月度总结

TLDR

9月最大的事情就是 9 月 1 日晚上的意外。一场意外,让我一朝回到解放前,花掉了积蓄,不仅如此,还浪费了不少的时间来养伤。

定性分析

学习成长

本月养伤的阶段,没有怎么看书。

恋爱家庭

没有太大的变化。

职业发展

没有太大的变化。

理财投资

因为意外事故,不得已,动用了投资资金。说明我的储备金准备的还是不够。

休闲放松

上海

社交人际

华为 · CodeConf 2021

在出院后的周末,我去了趟上海,做了一次线下分享,在那里认识了好玩的周迪之老师;还和 Phodal 进行了面基(果然活动都是大型面基现场)。

自我实现

定量分析

本月内容输出总结

本月博客共撰写 12 篇;

本月尾部,突然想明白了,继续更新公众号,争取今年一直更新到年底。

本月收支总结

本月因为手术的原因,有大笔支出,还动用了投资的资金,一朝回到解放前,惨。

本月收入 58460 元

本月支出 74969 月

本月读书总结

本月没有读书

本月学习总结

本月没有学习

本月娱乐总结

本月娱乐无

年度回顾

2021年新年规划:https://www.ixiqin.com/2020/12/in-2021-new-year-plan/

  • Linux 中国的改造计划:0/2
  • 海外收入计划进度:0/$1000
  • 减肥计划:210/170
  • 优质文章产出:2/50
  • 1W stars 项目:1500/10000
  • 年入 5000 的项目:0/5000
  • 收入结余:25K
black and white penguin toy

给知名项目提 Typo 修复有什么问题?

昨天在 V2ex 看到一个帖子,吐槽掘金上有人教别的程序员去给知名的开源项目提交 Typo Pull Request。

掘金上居然有文章教人怎么给开源软件提 typo issue

刚好,我也之前写过类似的文章,一篇《如何成为Golang贡献者》,另一篇《如何为任何开源项目做贡献?》,其实内容相差无几。就也来以“当事人”的身份聊聊这个问题。

Typo 有意义么?

答案是肯定的,任何对于开源项目有帮助的 Pull Request ,都是有意义的。因为他帮助开源项目变得更好,哪怕这个更好只是一个字、一句话的更好。

从项目的层面来看,项目是鼓励每个人去做贡献的。

而从项目开发者的角度来看,每一个 Pull Request 背后都是一个希望加入社区的开发者,如果开发者可以做好贡献者培养,对于项目的持续运行是有很大帮助的。所以我们可以看到,每年都有项目参加 Google 的 GSOC,都有项目参加 Digital Ocean 的 Hacktoberfest。

唯一可能出现的问题是:大量的 Typo Pull Request 会侵占维护者的心力,使得维护者无暇处理更加重要的事情

当然,这样的问题是可能存在的。但换句话说,这也是一个开源项目维护者群体壮大的好机会。如果不堪其扰,有很多种方式来处理:

  1. 提拔已有的 Commiter 为 Contributor,由某个 Contributor 来处理 Typo 类型的 Pull Request。
  2. 慢慢合并 Typo Pull Request,开源项目的 Pull Request 的合并并不一定是很快的,事实上绝大多数项目的合并都不会很快,特别是一些大型项目。在这种情况下,你大可以慢慢处理。

所以,Typo 的 Pull Request 所产生的坏处大概率是可以通过一些方式规避掉,而让项目可以进一步的发展。

对于贡献者来说,Typo 有意义么?

对于新手来说, Typo 类型的 Pull Request 是有意义的。

正式的开源项目往往会有很多规范和流程上的东西,这些东西是需要开发者通过参与开发才能慢慢熟知的,比如 pull request 的格式、信任的建立。从这个角度来看, Typo 类 Pull Request 可以帮助开发者快速熟悉一个开源项目的规范、约定俗成的习惯。

对于老手来说,Typo 类型的 Pull Request 没有意义。

除非你的企业需要按照 Pull Request 数量来帮你计算 KPI,不然提 Typo 类型的贡献对于你来说,百害而无一利。

我们现在在简历上会看你的 Github,因为 Github 能够证明你的实力。但你是否想过,如果你是面试官,你会看好一个给某个项目只提 Typo,而不做任何 Bugfix、Feature 更新的开发者? 我想大多数人都是 No。既然如此,你为什么会觉得提交 Typo 类型的 Pull Request 能够帮助到你自己呢?

总结

固然,提交 Typo 类型的 Pull Request 会占据开发者的心力,但通过简单处理就可以绕过的情况下,我还是鼓励开发者去提交贡献的。

idea 2654148 640

你愿意帮助 Paul Graham 做本地化么?

发现了一个空白,如果有人做的话,大概率会被不少国内的大佬看到。对于求职应该有帮助。

Paul Graham 的博客是欢迎翻译的,作为一个初入行的同学,你大可以翻译帮助 Paul Graham 翻译他的文章, 并提供链接给他,这样你自己的网站的链接也会得到关注度。

Paul Graham 是《黑客与画家》的作者。

只差一个有心人。

crwv3
text

选择不仅仅是选择 | 为什么我推荐朋友去外包岗位

速读:

每一个选择背后都是权衡。作为需要答案的人,你不能只要答案,那样过于取巧且对于自己的选择太不当回事。如果你向别人发出了问题,一定记得问背后选择的原因,知道别人是如何看待问题的,才能根据自己的情况,补全背后的权衡选项,做出适合自己的选择。

之前,我曾说过,我在提问题的时候,比较喜欢问原因,因为知道原因,才能帮助我做出选择。别人给出的选择,不过是基于他的视角所得出来的结论,如果只知道结论,是没有意义的,因为你不知道他做出选择的背景是什么,他的那些假设可能是不适合你的。

最近,刚好有个朋友来问我这个问题,我将思考的过程与他分享,也与你分享。

这个朋友是我之前在腾讯工作时认识的,他出身小程序,之前也并不是从事互联网相关行业的。虽然已经年近三十,但借着小程序的浪潮,通过自己的勤学苦练,成为了一个小程序的开发者,并取得了优异的成绩,成为了小程序领域的小咖;也基于小程序,在当地做过一些技术创业,不过后来发现,虽然能够在小程序领域做的不错,但对于整体的大的技术框架还是不甚了解。在后续的工作中,吃了一些苦头,产品的迭代速度、软件的质量,都成为了问题。

为了解决这个问题,他现在开始寻求一些新的工作岗位,以求能学习到一些更加工程化和体系化的研发知识,来提升自己的业务的代码质量,优化产品迭代。为此,他找我来给一些建议。

我给到的建议是:“首先寻求大公司的外包岗位,再看一些相对流程更加完善的独角兽/技术实践型公司,没必要看初创公司的岗位”

我做出这个选择的原因如下:

  1. 年龄大,大公司正职几乎没希望:对于中国的环境而言,任何一个人的最优解一定是大公司的正职岗位。钱多、体系规范。但我这个朋友的问题在于并非科班出身,技术方面的积累也仅仅是相当于 3 年左右的研发。但自己的年龄已经远超常规三年的研发同学。这会使得他在面试的时候没有优势。
  2. 学历差,大公司简历筛查过不去:对于国内的大型互联网公司来说,除了早期的员工,正职基本上有一个底线,就是只招全日制本科以上的工程师。而我这个朋友的学历是一个非常普通的学历,这会成为他在过 HR 简历筛时的一个重要指标,甚至有可能过不去筛查。
  3. 目的明确,想要的东西只有业务发展的好的公司才有:对于他来说,长期还是要做自己的项目的,他找一个工作更多是为了自己的事情积蓄能量,而不是打算和一个企业长久的共同发展下去。在这种情况下,他必须去到一些有明确流程的企业才有价值。如果去到一个制度、流程都不甚明确的企业,对于他来说,是没有意义和不划算的事情。

在这种情况下,对于他来说,最合适的就是大厂的外包,外包相比于正职,他入选的可能性更大;而外包也会接触到大厂的代码,从这种情况下,他想要学习的工程化、流程化就可以通过自己的学习和努力掌握到;其次是业务发展的比较好的普通公司,只有业务发展好的公司,才有可能去关注工程效率、工程化,初创企业还在生死线上挣扎,搞定业务才是最核心的,至于工程化,根本不在 KPI 之中,进入这样的企业,对于他来说,就是一个无效的选择,费时费力也得不到想要的东西。

我将选择的原因和答案告知给他,具体的选择,自然是由他自己做。不过,我给的选择,可以补充我对问题的看法,相比于直接给一个“你选择大厂的外包”的答案,好太多了,他可以基于自身的条件,再结合我看待问题的角度,判断哪些对于自己是成立的,哪些对于自己的是不成立的,最终得出自己的选择。

最后做个小调查,你在提问的时候,会问决策的过程么?为什么?