作者归档:白宦成

关于白宦成

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

2022 年 1 月月度总结

2022 年 1 月月度总结

TL;DR

2022 年的第一个月过去了,也是我正式采用 OKR 来记录自己的第一个月,整个一月,各项事情没有变得更好,但也没有变得更差。

开始有一些新的变化(比如投资、比如视频观看),但也有一些没变的(比如预算的执行)

持续获取现金流,并构建未来收益的现金牛

收支

本月收入稳定,没有什么大的变化,但确实发现了自己在开支上有很大的改进空间。日均开销达到了 1000 ,理论上是可以优化的。还是需要尽可能的优化自己的开支。

投资

本月开始了更加多样化的投资之旅:

  1. 开启了美股投资之旅,正式用上了我自己很早就注册的富途牛牛。
  2. 开启了一级市场的股权投资,在一级市场进行了定向的股权投资。虽然不多,但也是人生第一次,希望能有个好的结果。
  3. BTC/ETH 暴跌带来的投资机会,进行了一些买入,不过量不是很大,主要的原因是一级市场股权投资消耗了我的本金。
  4. 货币基金投资

可以看到,目前其实进行了比较多样化的资产配置(但其实还不够多样化,比如没有房产、没有实体的企业)。而且,我发现似乎我目前做的投资整体是高风险的(一级市场高风险、BTC/ETH高风险、美股高风险),而低风险资产相对较少(只有货币基金)。

在新的下个月的投资过程中,需要调整自己的资金投入,往更加平衡的方向调整。

当前累计净收益:-7082.66 元(主要波动在 BTC/ETH 上,预期内)

预算控制

2022 年预算执行情况如下,可以看到,本月在交通、教育、电子设备和旅行预算的执行上整体符合预期,而宠物预算、云服务预算、略微超出预期,后续微调即可。

租房预算因为是按季进行房租交费,所以会有超出的情况,但符合预期,无需调整和优化;人情预算因为今年去了女朋友家,帮女朋友家更换了一系列设备之类的,执行的较多,但符合预期,无需 Review。

需要重点关注和 Review 的是软件预算、餐饮预算,这两项不太符合预期。

新增长

在新增长方面,2022 年将会构建一个 SaaS 产品,目前已经确定具体的执行方向 & 在和一些投资人朋友确认市场是否有价值。

提升生活基础设施,构建未来生活好基础

旅行

本月原本准备回家过年,奈何疫情,放弃了回家过年,也放弃了因此而可能产生的一系列途中旅行。

2022 年规划目的地:

  • 澳门
  • 济南
  • 丽江
  • 西安
  • 济南
  • 大同

文娱

视频观看

本月看了不少的电影/纪录片,还是有一些收获的,比如 Vox 推出的两款解码的纪录片,以及我在抖音上看到的飞出个未来的大电影,都在传统的视频平台上完整的看了一遍,挺好。

  • 《Sex, Explained》:性解码,Netflix
  • 《Money, Explained》:金钱解码,Netflix
  • 《飞出个未来大电影1:班德大行动》
  • 《飞出个未来大电影4:绿色狂想》
  • 《阴阳镇怪谈》

智能化

本月重新启用了之前买的 Homepod Mini,并配上新买的香炉,焚香看书,非常不错。

此外,本月还启用了之前买的小米香氛机,书房和卧室都常有香味,让人生活更加舒服。

开拓视野,打造多元行业人才

阅读

本月阅读不多,主要是读了适兕老师的《开源之谜》,还认真的写了书评。

写作

本月几个预定的主题还没写完,不过整个一月没少写,写了 22 篇文章, 连续更新了 16 天。

点击链接看我的一月文章

全年OKR

云计算的增长在 SaaS

云计算的增长在 SaaS

我一直以来,都很喜欢诸如 LeanCloud、Firebase、云开发这样的产品,这背后的逻辑是「随着云计算的成本不断下降后,下一步发展起来的是各样的 SaaS 产品」。

这些 SaaS 产品的建设,和过去相比,基础设施的发展使得开发一个 SaaS产品变得比以前简单太多了。

如果你需要服务器,无论是阿里云,还是腾讯云,甚至是面向全球的 AWS、Azure,都是你只需要花钱就可以买到的。

如果你需要邮件系统,SES、Mailgun、Postmark,各种不同的产品,让你的开发变得无比的简单。

你需要做的,只是找到你自己的 niche,然后针对这个 niche ,开发一款产品,并将你的产品推出,并发布上市,将你的产品售卖给你的客户。

很多时候,我们在看云计算的市场的时候,如果我们关注的是 IaaS,基础设施,我们就会发现,我们面对的往往是那些旧有的,已经存在的市场,他们会使用我们的产品,来替代曾经的产品。但同样的,我们的产品也会被成本更低的 IaaS 产品所替代。

我们要的是旧有的产业,还是那些新的产业?面向一个已经存在的百亿市场,还是一个未来会爆发的千亿市场?

为什么你应该自建图床?

为什么你应该自建图床?

我最近对博客做了个整体架构优化(或者其实说是重建了一次),在重建完成后,为了确保我的重建是成功的,我安装了 Broken Link Checker 来进行网站链接检查。经过插件的检查后,发现了不少我在迁移的时候出现问题的点。不过,在这个过程中,也注意到了我过去自己的问题。

首当其冲的是我在早期大量的应用了来自微博的图床,但随着后续微博图床的失效,我无法再使用这些图片,在读者访问的时候,就会相应的出现错误。我不得不针对这些图片一个个手动处理。

好在是后来 iPic 的出现,我得以从新浪图床迁移到如今自建的又拍云图床中。

而随着 WordPress 插件生态的丰富,如今我在 WordPress 上写作插图更加的方便。

自建图床和自建博客、自建网站等等的原因几乎是一样的 —— 只有你自己维护的,才是真正属于你的,别人维护的,都有可能在某个时刻不让你使用。那个时候,你的成本会骤增。比如现在的我,就在苦逼的一个个的修改图片的地址。

一个切实可行的复杂系统势必是从一个切实可行的简单系统发展而来的。一个一开始就设计复杂系统永远无法运行,也无法通过修补使其工作。你必须从一个简单的系统开始。

为什么大咖愿意将机会共享给你?

为什么大咖愿意将机会共享给你?

我在「生财有术」的星球呆了差不多三年了,在里面看到了不少有意思的赚钱的方法和机会。不过,过去的很多时间里,我其实都无法理解,为什么大家愿意把自己赚钱的方法介绍出来。

前些日子和芦笋的创始人晓力在线下聊天的时候,我才真正意识到「为什么大咖愿意将机会共享给你」

我们两个人在聊天时,提到了我之前做的一件事,当时是我发现了格雷厄姆的博客可以被翻译,我就发了一个朋友圈说,大家可以自己注册一个格雷厄姆的域名,并对格雷厄姆的文章进行翻译,将自己的链接发送给格雷厄姆,请他帮忙加上对应的链接。

我们在讨论的过程中,我们有共同的意识,可以看到这件事背后的价值,比如:

  1. 你和格雷厄姆有了沟通,甚至是有了合作,本身是比较难得的。
  2. 你通过这个翻译和建站的过程,证明了你自己的能力,完全可以联系出版社,去进行更加正规的出版工作。
  3. 你可以在后续的求职过程中,将这个网站作为一个个人项目进行展示。
  4. 你可以阅读格雷厄姆的内容,并写出你自己的内容。

我们可以看到,我们都能看到这些优势和这个事情所带来的收益,但对于年轻人来说,这个可能就是他们看不到的机会和方式。

而这个事情放在我和晓力身上,就是不会去做的事情,因为这个事情虽然我们看起来值得做,收益也还不错,但问题在于这个收益对于现在的我们来说,是没有价值的,我们需要用我们的时间做更多更有价值的事情。

而从这个逻辑去推断,我们当然可以认为是「没有人会分享自己的赚钱的机会」,但换个角度来看,这也可能是你和他们的差异实在太大,你无法理解他们对于你所看重的东西其实根本不在意。

视野不同,使我们患得患失。我们看重的,可能是那些前辈所无视的。

WordPress 的静态化缓存和动态化缓存应该如何选择?

WordPress 的静态化缓存和动态化缓存应该如何选择?

在我发出了 为 WordPress 加入 Redis 缓存提升访问性能 的文章后,有不少朋友给了建议,主要有以下几个:

  1. 可以在前面套一层 CDN ,使用 CDN 来完成缓存。
  2. 可以配置 Nginx 缓存。
  3. 可以给文章生成静态的。

在我看来,这些都是很好的建议,对于很多新人的博客主而言,都是不错的选择。不过就我自己的需求而言,这个并不是好的选择。

从网站性能的提升而言,他们所提供的建议确实是不错的,通过对网站进行静态化处理,从而实现访问的提速,用户直接访问静态的缓存是不错的选择。

不过,对于我来说,倒也不仅仅是给读者一个更加舒服的阅读体验,对于我自己而言,更加舒适的写作体验也是极为重要的。

引入了 Redis 作为缓存后,所有的 MySQL 查询会进行一定的缓存,从而让网站的整体使用体验变得更好,对于我来说,是一个更好的选择。

为 WordPress 加入 Redis 缓存优化访问性能

为 WordPress 加入 Redis 缓存优化访问性能

在之前的文章我是如何优化博客的本站在用的一些WordPress插件中我提到,我是使用了 WP-Optimize这个插件来进行博客优化的。

WP Optimize

WP-Optimize 为用户提供了开箱即用的缓存方式,可以将你的 WordPress 文章加入文件缓存,从而减少在 MySQL 中查询的次数。

不过,文件缓存的问题是性能受限于你所使用的磁盘,而我使用的是阿里云的标准云磁盘,性能一般,所以访问速度并不能算快。

过去在我还愿意折腾 WordPress 的时候,我是会在 WordPress 上加入一些别的缓存的,比如 Redis、Memcached。不过,随着时间的流逝,我折腾的意愿变得越来越弱,就远离了这些。

直到最近刚好有空,于是开始研究起了 Redis 缓存。

其实在古早时代(比如我刚开始折腾个人博客的时候,2012年),WordPress 的 Redis 功能并不是特别好用,需要自己手动下载 object-cache.php 放在对应目录中,然后修改配置文件手动来开启,甚至还需要替换掉 index.php 文件来让请求通过缓存进行。

这次的折腾,让我感受到,时代在进步,配置缓存也变得简单了许多。

Requirements

在这篇博客中我并不打算介绍 Redis Server 的安装和调试过程,你可以在搜索引擎中找到各种各样的教程引导你如何完成安装的过程,因此,请自行完成 Redis Server 的安装,后续的各项操作会默认你已经完成了 Redis Server 的安装调试。

需要注意的是,如果你不打算修改配置文件,则需要在安装 Redis 之后,设置为空密码。而空密码是不安全的,建议你通过 iptables、安全组策略等方式,屏蔽掉 6379 端口的外部请求,只允许本地请求。

安装 Redis 缓存

我这次安装 Redis 缓存选择了 Redis Object Cache 这个插件。

Redis Object Cache

和你在别的网站上看到的教程相比,这个插件提供了一个可视化的查看和管理的方式,对于懒得手动操作和编辑代码的人来说,更加友好。

安装插件后,启用插件,你可以在设置中的「Redis」设置页面找到如下的界面:

设置页面

点击 Enable Object Cache,就会开启 Redis 的 Object Cache 。

如果你已经在之前配置好了 Redis Server,则会直接看到如下左图的界面。但如果你的 Redis Server 还没有配置或配置了密码,就会显示如下右图的界面,就需要你检查你的 Redis Server 是否配置成功。

配置成功的情况
配置失败的情况

当你看到如上左图的界面后,就说明你已经开启了 Redis 的 Object Cache 了,后续涉及到文章内容、菜单等各项基本配置的查询时,会优先使用 Redis 的缓存,而不是查询 MySQL,从而降低了 MySQL 的查询压力,提升了查询的诉求。

至此,你的 Redis 就配置好了,可以打开你的网站首页,享受飞一样的速度。

开启前的 TTFB 为 2.29 秒
开启后的 TTFB 为 673.49 毫秒

FAQ

1. 如何使用非本地 Redis Server 或如何使用带密码鉴权的 Redis Server?

如果你需要使用非本地的 Redis Server(比如云 Redis),那么你需要在你的 wp-config.php 中加入如下代码来进行配置。

define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
// define( 'WP_REDIS_PASSWORD', 'secret' );
define( 'WP_REDIS_TIMEOUT', 1 );

2. 如果我一个服务器上有多个 Redis ,如何配置使数据不会混淆呢?

有两种方式,

第一种方式是可以给你的不同站点配置不同的 Redis DB,只需要在你的 wp-config.php 文件中加入如下的配置,即可实现不同的站点使用不同的 Redis 数据库,你可以从 0 开始,向上递增设定不同的 Redis 数据库。

define( 'WP_REDIS_DATABASE', 0 );

第二种方式是你无法控制 Redis,必须使用同一个数据库,那么你可以通过给其添加不同的 salt 来实现即使使用同一个数据库,数据也不会产生混淆。

define('WP_CACHE_KEY_SALT', 'www_ixiqin_com_');

3. Metrics 怎么理解?

在 Redis 设置页面,你可以看到另外有一个 Metrics Tab,这个 Tab 你可以看到你的插件的工作情况,方便你随时进行查询 & Debug。

第一个 Time 是指 Redis Object Cache 和 Redis 沟通,获取数据所需的时间,可以看到,我这里的查询时间大概是在 12ms,耗时不多。需要注意,你第一次看可能会注意到,这里有一个 Object Cache Pro ,灰色的 Object Cache Pro 其实是官方在推广其自家的付费插件,付费插件 $99/月,可以提供更好的 Redis 查询性能。

第二个 Bytes 则是 Redis Object Cache 从 Redis 获取到数据的大小,当有人访问你的文章的时候,这个数据就会出现一个增长,访问结束后就会消失。

第三个 Ratio 则是缓存的命中率,基本上保持在 99% + ,说明缓存的命中率还不错。

最后一个 Calls 则是调用次数,免费版不会批量获取数据,因此,调用次数会很高,而在付费版,会一次性拿多个数据,从而获得更少的查询次数。不过我目前对于这个速度已经很满意了,就不再购买付费的版本了。

延展阅读

WordPress 5.9  + 2022 主题,如何修改主题代码?

WordPress 5.9 + 2022 主题,如何修改主题代码?

如果你使用了最新的 WordPress 5.9 以及其自带的 WordPress 2022 主题,你会发现有个问题:

修改主题代码去哪了?

虽然提供的编辑器可以满足绝大多数需求,但对于一些特定场景下的开发需求(比如在 functions.php 中加入特定的逻辑,依然是需要修改代码的。

在当前的 5.9 版本中,主题的代码编辑器和插件的代码编辑器入口被移动到了「工具」当中,你需要到「工具」当中寻找对应的功能。

对 WordPress 2012 主题的一些改动

对 WordPress 2012 主题的一些改动

在上一篇文章当中,我介绍了我为什么要迁移到 2012 这个主题,在这篇文章中,我将会向你介绍一下我对其做的一些修改。

加入广告信息

之前我接受了来自芦笋的广告赞助,作为权益,我答应为芦笋提供相应的广告展出,因此,我需要通过一些代码的修改,来实现对这部分内容的修改。

具体的修改方式是修改了 WordPress 2012 主题中的 content.php 这个文件,在合适的位置加入如下的代码

<!-- ads code start -->
<?php if(is_single()){ ?>
<a target="_blank" href="https://lusun.com/invite/20143" style="padding-bottom:10px"><img src="http://ixiqin.test/wp-content/uploads/2022/01/800498db4ecc3ecade82c7dfb0aaded5.png" class="wp-block-image" alt="白宦成邀请你注册芦笋,并赠送你 30 天高级版特权" style="max-width:100%"></img></a>
<?php }?>
<!-- ads code end -->

文章页面的广告便是如此加上去的。

而侧边栏中的广告代码,则是通过 WordPress 自带的「小工具」功能来实现的,插入图片,并加入对应的链接即可。

首页显示摘要,而非全文

从阅读体验上来讲,在列表页面能看完所有内容自然是不错的,不过因为我的文章比较喜欢插入代码和图片,如果直接在文章页面展示所有内容,会导致页面看起来非常的混乱,所以我修改了对应的代码,将其调整为在首页展示摘要,而在内容详情页展示全文。

这里 2012 主题并未加入相对应的功能的开关,因此需要自行代码实现相应的功能。

原代码如下:

<?php if ( is_search() ) : // Only display excerpts for search. ?>
<div class="entry-summary">
	<?php the_excerpt(); ?>
</div><!-- .entry-summary -->
<?php else : ?>
<div class="entry-content">
	<?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?>
	<?php
	wp_link_pages(
		array(
			'before' => '<div class="page-links">' . __( 'Pages:', 'twentytwelve' ),
			'after'  => '</div>',
		)
	);
	?>
</div><!-- .entry-content -->
<?php endif; ?>

新的代码如下:

<?php if (is_search()): // Only display excerpts for search.
?>
        <div class="entry-summary">
            <?php the_excerpt(); ?>
        </div><!-- .entry-summary -->
        <?php
else: ?>
        <?php if (is_single()): ?>
    <div class="entry-content">
            <?php the_content(__('Continue reading <span class="meta-nav">&rarr;</span>', 'twentytwelve')); ?>
            <?php
        wp_link_pages(array('before' => '<div class="page-links">' . __('Pages:', 'twentytwelve'), 'after' => '</div>',));
?>
        </div><!-- .entry-content -->
<?php
    else: ?>
<div class="entry-summary">
            <?php the_excerpt(); ?>
        </div><!-- .entry-summary -->
<?php
    endif; // is_single()
?>
        <?php
endif; ?>

通过上述的代码实现,来控制了在首页 & 列表页面只显示摘要,而在具体的内容页面,展示全部内容。

摘要显示超过默认长度的数量

WordPress 默认的摘要长度是 55 ,而我写的内容如果只是默认的 55 ,可能看起来会比较奇怪,所以我会通过代码,将其调整为 100

function custom_excerpt_length( $length ) {
    return 100;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

加入面包屑展示

加入面包屑展示,有助于读者更好的在站内进行不同的导航,因此,借助于 All in One SEO 插件自带的面包屑功能,加入了面包屑。

<div id="aioseo_breadcrumbs" style="padding: 10px 0px;">
<?php if( function_exists( 'aioseo_breadcrumbs' ) ) aioseo_breadcrumbs(); ?>
</div>
为什么放弃 WordPress 的 2022 主题

为什么放弃 WordPress 的 2022 主题

近几年,我基本上是保持着跟随官方的步伐,使用当年的默认主题,比如 2021 出了,我就用 2021 主题,当 2022 出了,我就用了 2022 主题。

前几天我也还在使用 WordPress 2022 主题,今天恰逢得空,我就还是把主题切换回了更加古老的 2012 主题。

聊聊为什么吧。

为什么要放弃 WordPress 2022 主题?

实际上,从 2020 开始,你就会发现,WordPress 的主题设计就会逐渐的倾向于「个人主义」的主题,增加了大量的展示自己的主题,包括我自己,也在过去的一年里,大量的使用了 2021 这个主题。

2021 年我的博客的样子

但是,当我在 Beta 版试用 WordPress 的 2022 主题时,我发现这样的情况愈发的明显,甚至对于我来说,超出了我的能力范围。

2022 主题相比于 2021 主题,提供了更多的编辑的能力,用户可以用一个可视化的编辑界面,去修改你的网站的任何一个位置。从一个普通的用户者的角度来看,它赋予了用户更多的能力,可以去实现任何一个想要的效果。但从一个专业的开发者的角度来看,他从某种程度上束缚住了我的手脚,我再也不能对 WordPress 主题做任何修改(你只会获得一个「编辑器」)。此外,对于一个「不那么有审美」的人(比如我),可拖拽意味着你会拖拽出一个完全不合理的界面。

So,我放弃了2022 主题

为什么是 2012 ?

2012 是我最近在看 HappyXiao 的博客 注意到的,我发现 2012 这个 10年前的主题在处理不同设备之间的响应式、清爽感等方面做的非常好,作为一个阅读者,我的体验极佳。

而我同样希望给我的读者提供更多更加友好的阅读体验,于是,我就选择了 2012 来作为当下我的主题。

当然,这个主题并不一定完全符合我的要求,因此,我也做了一些基本的改进,这些改进,后续我会单独写一篇文章来说明。

好风凭借力,送我上青云

好风凭借力,送我上青云

对于如今的开发者们来说,已经处在一个很好的时代了,他们拥有着丰富的基础设施,这些基础设施,让我们可以以更加低成本的方式,来构建我们自己想要的产品和工具。

我们站在巨人的肩膀之上,构建属于我们自己的产品。

为什么我们一定要完全自己去构建一个产品呢?从国家的角度来说,这样情有可原,而从个人的角度来说,借助这些基础设施来构建一款产品,才是最为实际的。

我们需要自己从 0 开始建设一个云服务么?当然没必要,我们可以使用阿里云、腾讯云、AWS、Azure,你可以使用任何一个云服务厂商为你提供的基础设施,构建自己的产品,直到他们无法满足你的那一刻。