作者归档:白宦成

关于白宦成

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

[探店]上海浦东机场 S2国内卫星厅 190 贵宾室

[探店]上海浦东机场 S2国内卫星厅 190 贵宾室

点评

这个休息室位于浦东机场的 S2 国内卫星厅的 190 登机口附近,如果你乘坐的飞机需要到 S2 国内卫星厅,可以前往这个贵宾室。

不过,这个贵宾室的体验其实很一般,原因是空间一般,不算很大,同时也没有提供单独的网络和特别特别好的餐饮。因此,如果你去休息室的成本比较高,可以考虑不去。

网络

无,需要使用机场的 Wi-Fi

餐饮

提供了面条(每天有三种不同的浇头)

提供了一些简单的小吃和牛奶、啤酒等常规饮料

照片

即刻印象

即刻印象

因为录播客的原因,来了一趟上海,顺便来了即刻,拜访了即刻的产品负责人 kyth 和产品运营芒芒。

即刻的大堂很黄,不愧是我「黄即」。由于是新年,所以圣诞的装饰还没有来得及去掉,依然挂在这里,不过看起来还是很不错的~

来即刻,怎能不去拜见9号工友,果果!不过我来的似乎不太是时候,果总正在睡觉,所以很慵懒的给我了一个眼神,犀利!

果总玉照

拜见完果总, 就是和 kyth 以及芒芒聊小宇宙了。总的来说,小宇宙其实是有自己做产品的态度,不过,受限于产品团队人数的限制,想做的很多,但能做出来的,或者说有时间做出来的没有那么多而已。

和 kyth、芒芒的沟通过程中,我是很喜欢这家公司的,他们有空间给到工程师去做一些 side project ,让大家去做一些创意性质的项目,比如 Wolley.iohedwig.pub 就是他们公司工程师的 Side Project ,前者我视为国内版的 Hacknews ,不过目前来看用的人不多;后者则是一个 maillist 工具( 名字有点难记)。

大家聊了很多小宇宙、产品、研发、独立开发的事情,非常的愉快,而未来,相信也会有更多的机会,可以让大家一起聊一聊。

顾问公司和外包公司的区别

顾问公司和外包公司的区别

此内容原发于我的 Twitter, 但我觉得值得放在博客上激励自己。

顾问公司:面临一个模糊的问题或概念,帮助客户梳理、整理概念,并提供解决方案。这个解决方案可能是使用已有工具,也可能是研发新的工具。

外包公司:面临一个明确的问题,需要投入人力和物力去解决问题。

二者在工作周期上也不同,顾问公司往往是短线作战,会在一周到数个月内搞定工作。而外包公司往往是长期签约,辅助完成工作。此外,顾问公司的研发新的工具的部分,和外包公司很像。

如果你想要或已经成为 Digital Nomad,则尽可能的让自己成为顾问型而非外包型,原因是外包型的工作是可以预期工作量的,你只能以工作时间等来进行报价。但顾问型不同,只有研发新工具的部分是可以预估工作量的,而前面的沟通、信息的整理和问题的拆解,是无法被直接按照时间评估工作量的。

如果真的要对思考的过程按时间报价,那一定是一个天价,经验和知识的价格很贵。也正因为顾问型公司有这样的无法被直接估价的工作,也可以因此获得更高的项目溢价,跳出穷忙的陷阱。


新补充的

如果你接受上面这个设定,那么你就要意识到,顾问公司之所以溢价高,很大一部分来自于其非代码的部分。如果你可以提升你自己的非代码部分,就可以获得相应的溢价。

换句话说,我们看到很多的程序员出来以后只能做外包,因为他们

1. 不知道有顾问公司的存在。

2. 不具备做顾问型公司的能力。

影评:心灵奇旅 Soul

影评:心灵奇旅 Soul

评分

9.8 分

电影的人物形象、立意、情节设计,都很不错,一些小的逻辑谬误,所以扣掉 0.2 分。

影评

以下内容中有剧透, 请谨慎观看。

迪士尼的电影如果不是系列的,往往会给人一个深意。比如当年的 Coco(《寻梦环游记》),也如现在的 Soul。

Soul 的故事很简单,乐痴不愿死去,误入新生儿的培训学院,和一个新生儿二十二共同前往地球,探寻生的希望,找到活下去的可能。在其间,他们体会到了生的价值,也产生了冲突。冲突使得 Joe 最终自私心作祟,成为夺取了二十二前往地球的可能。

但当 Joe 真正追寻到音乐的价值的时候,发现不过如此,他才意识到,自己对于目标的追求,根本是错误的。人生应当追求的是体会每一分钟的生活。

如果用一句话来描述,就是乐痴和叛逆小孩如何找到生的价值。

这部分电影中,我能够给高分,我觉得他塑造了几个形象:

  1. 害怕自己生而没有价值的二十二:他在心灵学院呆了几千年,但始终没有找到生活的价值。但和 Joe 的地球之旅,让他发现了生活中的美好,开始向往生活。
  2. 一心只为音乐但有点可悲的 Joe:Joe 一心向往音乐,但在这个过程中,他丢失了很多东西,和理发师的交流、和食物的交流、和母亲的交流。
  3. 无所不能但有有点俏皮的 Jerry:Jerry 的形象是神奇的,独特的,但最后结局的俏皮,让我忍俊不禁。
  4. 爱着儿子的母亲:母亲不愿意让儿子去做音乐,是希望他能有一个求生技能,不至于饿死。但当儿子说出,「如果我今天死去,我是否会遗憾」,她也释然,并支持儿子去演奏。

除此之外,从立意层面

我们的生活被工作、事务所充满,我们终日忙碌,但不知道自己所去何处。我们在乎的到底是什么?我们追求的到底是什么?我觉得这部电影给了那些被工作锁住、被梦想锁住的人们,一个重新思考的契机:What are you want?

找到你生活的热爱,去体验,品味生活,才能不虚此行。

[探店]河源 – SoWhat 收获咖啡

[探店]河源 – SoWhat 收获咖啡

来参加朋友婚礼,因为下午没有事情,就找了咖啡厅干活,顺便写个咖啡厅探店。

位置

河源市大同路东金碧花园A13号

需要注意,这个咖啡厅是在小区里的别墅,所以可能需要进小区,然后右转。

网速

So What 的网速也不错,很快了

环境

因为咖啡馆在小区里,所以环境是比较安静的。不过店里放的音乐可能比较大声,会稍微有点吵,但还好。

此外,因为空间比较大,所以环境是比较舒适的。

卫生间

卫生间在店里的中央,你可以很方便的找到卫生间,同时,也不需要担心去趟洗手间东西会丢。锁屏就好了。

消费

消费水平应该属于比较常规的,冰美式 18 ,卡布奇诺 22 。在这里呆着应该不会太贵。

插座

这家店的插座时比较多的,插起来也比较畅快,不会容易掉。不过,需要注意的是。他家因为是把别墅改成了咖啡馆,桌子又是白字中央的,可能你会需要一个比较长的线。或者可以考虑自己带一个排插,方便你插插座。

照片

对 Discuz 进行手动搬迁

对 Discuz 进行手动搬迁

由于服务器托管方的维护,需要对托管在机房的 Linux.cn 服务器进行搬迁,因此,多年不碰 Discuz 的我又要进行一次搬迁。

刚好,记录下来,方便后续查用。

流程图

下方流程图中,绿色为原服务器操作,黄色为新的备份服务器操作

具体流程介绍

1. 导出数据库

想要搬迁,首先要处理的是数据库的导出,你可以选择你的站点流量最小的时候,使用 MySQL dump 命令来完成 SQL 文件的导出,导出的命令也非常简单。

mysqldump -uroot -p database >/tmp/db.sql

你可以将上方的 root 调整为合适的用户名;将 database 调整为合适的数据库名,以及将 /tmp/db/sql 调整为合适的文件名

执行命令后,会要求你输入 MySQL 对应用户的密码,输入密码, 稍等片刻,数据库就完成导出,你就可以在 /tmp/db.sql 找到数据库文件。

2. 压缩数据库文件

在进行数据库文件后续的传输时,如果文件太大,可能会导致传输速度较慢,这个时候你可以选择使用 gzip、zip、7zip 之类的进行传递。

我一般习惯用 gzip 进行压缩,并使用 tar 进行打包。

tar -zcvf db.sql.tar.gz /tmp/db.sql

打包后,会获得一个 db.sql.tar.gz 文件,这个文件基于导出的 SQL 进行了一定的压缩,可以确保传输的时候,不需要传输那么大的文件。在实际测试时,可以将 1.1G 的数据库压缩到 188M,效果还是十分明显的。

3. 压缩网站文件

需要传递到新的服务器中的,除了 MySQL 数据库,还需要传递网站的代码文件到新的服务器中,因此,为了方便传输,同样需要进行压缩。

tar -zcvf website.tar.gz /data/website/website.com

命令执行完成后,你就会获得一个 website.tar.gz ,这个文件就可以在后续传递到你的新服务器中。

4. 配置新的网站运行环境

在你备份的同时,你可以在新的服务器上进行环境配置。

一般而言,在搬迁的同时,不会采用新的版本的软件,以避免出现问题。

你可以通过 php -vmysql --version 来查看 PHP 和 MySQL 的版本。

Nginx 的版本倒是不需要太过介怀,他只是一个反向代理,问题不大。

MySQL 的版本则在进行迁移的时候,不建议做版本升级,尽量保持同版本升级;如果跨版本,则需要考虑相应的回滚措施。

5. 进行文件传输

在新的服务器中配置旧服务器的公钥,从而可以直接通过 scp,在两个服务器之间传递文件,简单方便。

scp source root@host:/data/xxx 

执行上面的命令就可以直接在两个服务器之间传输文件,简单方便快捷。

6. 进行文件恢复

完成文件搬迁后,就可以在新的服务器上配置环境,这时可以根据你的配置,将文件迁移至对应的目录中。

涉及到压缩包,可以进行一下解压操作。

7. 配置应用服务器

在我们的系统运行时,会依赖很多应用服务器,比如数据库 MySQL 、反向代理 Nginx 等等。在迁移时,比较稳妥的方案是在当前版本的基础之上进行配置。

这时你需要在新的服务器上配置和旧服务器完全一致的运行环境,从而确保迁移后业务不会出问题。

8. 导入数据库和站点文件

在完成了数据文件的迁移和,就可以进行数据库的导入,并迁移网站文件。

你可以使用 mysql 命令行中的 source 命令,来加载 mysql 的dump 文件。

对于网站文件,只需要根据你的配置进行调整即可。

9. 修复权限

在文件进行迁移的时候,可能会由于迁移前后的用户等问题出现权限问题。因此,如果你发现出现了项目的权限有问题,则需要根据实际情况,调整项目的文件和目录的权限。

10. 修改配置

Discuz 的配置文件会在多个地方重复使用,因此,在实际的使用时,如果你调整了数据库信息,则需要修改以下几个文件中的配置项目。

  • config/config_global.php
  • config/config_ucenter.php
  • uc_server/data/config.inc.php

修改其中的数据库名,从而确保系统中的各模块都可以正常工作。

2021 年新年规划

2021 年新年规划

时光萦然,一年又从匆匆忙忙过去,年初的疫情,让每个人都度日如年。但时光总是在流逝,我们却又无能为力,能做的只不过是看着时间一点点走下去。

又到了一年一度立新的 Flag 的时候了。对比去年立的 Flag,有不少都没有完成。今年痛定思痛,要立一些可以看得到成效的 Flag

接下来是新的一年的规划,和 Flag

职业发展

新的一年里,继续延续 FreeLancer 的工作状态,但应该让自己的工作和生活更加稳定和持续,也需要开始接触一些海外的企业。地理套利,赚取海外的收益。

KeyResult:

2021 年,年度海外收入达到 $1000

此外,还要坚持当前在做的事情

Key Result:

2021 年,要把 Linux 中国的两个改造完成,释放生产力,优化流程。

休闲娱乐

2021 年,生活更加趋于稳定,同时,一些已经规划好的也已经在路上。对于明年的追求的话,应该比较简单。

2021 年,开始还房贷。

恋爱家庭

如果可以,我希望明年我的终身大事可以初步敲定

2021 年,订个婚吧(也可能结婚)!

个人健康

我需要认真减肥

2021 年,必须瘦到 170 斤

此外借助于健身环,希望可以实现每周一次运动吧

自我实现

2021 年,我有更多的时间来创作,做一些自己要做和想做的事情,那么就要有一些压力,引导自己的工作。

2021 年,应当有优质产出 50 篇文章。

此外,做为一个程序员,应当有一些技术上的追求,和去年一样,继续完成去年的目标

2021 年,孵化一个 1W stars 的项目

以及一个独立开发者的目标

2021 年,有一个年收入 5000 元的项目

理财投资

收入难免是一个要讨论的问题,也是一个最实际的问题。去年做了收入预算。但很不幸的是,我并没有达成我的目的,不过,我想了一下,单纯的收入其实并没有意义,应该追求的是收入和结余共同的增长。不然长期来看,还是很一般。

2021 年,收入继续延续去年的目标,目标为 31*1.2 = 37万

2021 年,结余达到 25 万元

为了达到结余目标,我给自己做了个简单的支出预算,希望明年可以好好坚持自己的预算

总结

经过去年的年计划,我发现订立太多的目标,会让我没有办法完成,既然如此,那就不妨精简目标,2021年,让自己的每一个目标都可以完成。

2020 年年终总结

2020 年年终总结

一年过去,是时候对自己做一个 Review ,来看看自己的过去这一年里,过的怎么样。

今年算是我写年度总结的第三年,前两年的年度总结可以参考下方的链接:

定性总结

学习成长

2020 年在学习一途上,毫无进展,原定的学习内容,几乎没有学习什么,唯一学习的一些,也是一些相对更加生活化的技能(比如上了做饭的大师课,学着做了几道菜)。

恋爱家庭

2020 年的感情之路平稳发展;家庭关系还算和睦,虽然和母亲偶尔有吵架,但总体还算平稳。

职业发展

从工作的角度来说,这一年可以说对于我来说是 Breaking Changes 了。我从腾讯离开,成为 Freelancer ,开始追求一种更加 WLB(work life balance) 的生活。

生活从过去的 995 变成了现在的9127,工作的事情越来越多,但说实话,更开心,因为有更多选择的空间,而不会因为自己拿了薪水,就一定要去做某些事情。

理财投资

2020 年的理财并没有做的太好,年收入和年支出同样很高,甚至超越了一些年轻的家庭。这是我在今年没有做好的。

不过,为了解决这个问题,我做了一组详细的预算,希望明年可以借助于预算,更好的控制自己的财务状态。

不过,有一点值得欣慰的是,今年我的总体收入/支出还是正向的,不至于负债。

休闲放松

2020 年的休闲和放松层面是有不错的突破的(毕竟今年有了随心飞,飞了很多地方)。

2021 年,我应该还会继续旅行,飞翔,走遍中国大地。我目前还想要去,但是没去的地方还有很多,至少目前省会打卡都没有打完,明年先把卡打完吧!

社交人际

今年有了新的朋友,也在新的朋友身上花费了不少的时间和精力,不过发现回顾过去,一些老的朋友交流也越来越少了。这些是我这一年里没有做好的。

自我实现

今年其实算是在自我实现这条路上有很大的突破。9月份的离职,便是勇敢的向自我实现这条路大跨了一步。

在腾讯云的一年里,我发现自己将大量的时间和精力放在工作中,以至于没有时间和精力去自我提升、自我实现,而我留下来,能获得的不过是一个所谓的平台,和工资罢了。但钱对于我来说不是最难获得的(感谢工程师这个身份,让我可以享受到了行业带来的溢价)。因此,我在今年的9 月选择了离开,成为一个 Freelancer,做自己想要做的事情,提升自己的存在价值。

定量总结

今年写了多少文章?

今年在博客上写了一共 157 篇(含本月发布的月度总结、年度总结、年度规划)。

此外,在公众号上还断断续续写了一些(不过好多都被我删除了)。

今年赚了多少钱?

今年,总收入 311K,没有达到去年的希望,所以这个希望延续到明年,希望明年可以实现增长;

今年收入不少,花销也不少,今年花了280K,最后还是只留了 30K,和去年相差无几。

这个事情让我思考,我是存不下来钱,还是不想存钱?回顾这一年,我花了不少钱,有很多是不需要花的。看起来,我更多是自己在主动花钱。这就需要我重新回顾过去这一年,哪些钱是该花的,哪些钱是不该花的。厘清自己的开支,才能在新的一年里,获得更好的财务数据 。

总结

2020 无论喜,无论哀,都依然过去,距离 2021 年,也只有不过 1 个半小时了。年终,也到此了。明年,我们再见。

2020 年 12 月月度总结

2020 年 12 月月度总结

2020 年的 12 月,我把过去这一年里没有体会到的,都补上了

TL;DR

12月对我来说,是一个不一样的日子。要做各种总结,要结束一个财年,准备进行下一个财年的规划和计算。要对过去的一年进行 Review,看一看自己哪些没做好,哪些做好了。而且,这个 12 月,我体会到了不一样的 12 月。

月度总结

工作

本月的工作没有什么别的变化。毕竟是工作嘛,难免回归平淡。不过自己还是有点拖延症过头了。还是要想办法与拖延症作斗争。

我拖延症的原因主要是:

  1. 不知道这个事情要花多久,就干脆拖着不去做,但真的去做,可能也还好。

生活

2020 年的 12 月,我的办公室整理好了。不过,在整理办公室的过程中,我也不行的中招了。

搬桌子的时候,把脚砸了一下,一开始以为没啥事,就没去医院,后来,脚上发出臭味,才意识到问题,赶忙前往医院,原来是砸这一下,把脚趾甲内部砸出了伤口,又由于一直拖着没处理,加上脚本身就是真菌、细菌的聚集地,伤口化脓了。只好做了拔甲处理。好在是现在还年轻,身体的恢复速度还不错,拔甲一周后,医生就告知我不再需要前往医院换药了。目前的状态只需要自己在家涂一下碘伏就好。

过去这一两年,因为我的身体不错,所以一直都没有什么感觉,结果来这一下,就让我难受了好几天, 还是应当保留对于健康的敏感度。不应当忽视!

不过,办公室还是很不错呀!

我的办公室

一个办公室该有的都有了,双显示器、屏幕挂灯、摄像头、打印机~

此外,12 月我还体验了一下核酸检测,主要是因为 12 月份因为 openEuler Summit 的原因,去了趟北京,恰逢这几天北京的疫情开始零星爆发,我作为北京返深人员,也被要求去做核酸检测。这一年没做过核酸检测,在最后几天做了个核酸检测,也算是我的 2020 指的纪念的事情了。

Side Project

这个月的 Side Project 有一个,不过和代码无关,是一个内容层面的:

  • 播客入门:应该是中文社区第一套完整的博客制作视频教程。

我用 WordPress 简单的建了一个站点,后续还有一些需要做的视频课程,继续加油做内容吧!

写作

  • 本月的公众号写作还是没开始,主要可能还是 1. 没构建好选题库 2. 没有固定好写作的周期。这些都准备好了就可以开始更新了,不过我想逼自己一下,从明天开始就要好好更新!今天加油囤稿。
  • 本月的博客写作还不错:博客因为没有什么太多的目的,所以可以写的很随性,很开心。

财务状况

财务状况本来这个月是正向流水,奈何南航随心飞 2.0 出来了,本月再次超支。。再加上临近春节,要购买春节机票啥的,就还是花了不少。

娱乐

本月的娱乐没啥,就 12 月初的时候,去了趟北京,帮粒粒过了个生日,感受了一下“海底捞式”生日。其他时候的出行都是工作出行,就不在这里说明了。

其中我最大的感受是,海底捞的服务,很适合目前的大城市这种单身社会,你可以在海底捞感受到朋友般的对待,甚至可能比朋友还要好。

阅读

本月月初的时候,对余罪上了瘾,一口气把余罪给读完了(也造成了一部分工作的拖延),要控制一下自己的上瘾问题。

  • 《杏仁》
  • 《Nutanix 超融合基础架构权威指南》
  • 《无人生还》
  • 《余罪》
  • 《余罪2》
  • 《余罪3》
  • 《余罪4》
  • 《余罪5》
  • 《余罪6》
  • 《余罪7》
  • 《余罪8》
  • 《余罪9》
  • 《余罪10》
  • 《余罪11》
  • 《永不放弃》
  • 《高级零工》:推荐独立开发者、自由职业的人看
  • 《知识付费》
  • 《这才是我要的工作》
  • 《掌控:开启不疲惫、不焦虑的人生》

课程学习

  • 知乎《男性健康必修课:解决你的「男」言之瘾》:倒不是有病,纯粹是觉得自己可以了解一下。看了以后,一部分章节还是很有价值的。
  • 知乎《女性健康私享课:给身体的关爱情话》:理由同上
  • 知乎《只有男科医生知道:解决关于男「性」的全部问题》:理由同上
  • MasterClass《Wolfgang Puck Teaches Cooking》:又一个教做饭的课程

年度计划对标

课程学习

一年学习 54 门课程,本月进度 4 门;全年进度 7/54;

图书阅读

一年读书 54 本,本月进度 19 本;全年进度 43/54

电影观看

一年观看 54 部电影,本月进度0 部;全年进度 9/54

如何隐藏 oh-my-zsh 的 Last Login?

如何隐藏 oh-my-zsh 的 Last Login?

oh-my-zsh 是我目前配置新的 Mac 必然会装的。不过,oh-my-zsh 一直有一个我不喜欢的就是它会自动一个 Last Login 的 Hello Message。

这个 Hello Message 倒是不占位置,但是我觉得它让我的命令行不那么极简

因此,我希望将这个提醒删除掉。

删除的方法不复杂,只需要在用户的根目录创建一个空白的~/.hushlogin 文件即可

touch ~/.hushlogin
无压写作的艺术

无压写作的艺术

博客写多了,难免会有一些时候遇到一些选题写了一半,临时有事,放下选题,先去干活。但久而久之,就累计了不少选题,一直放在草稿箱中。

长期以来,我的草稿箱中都有不少的文章,今天发现,我的草稿箱中有15篇文章,而其中最为古老的一篇,可以追溯到三年前,2017年。

毫无疑问,三年后,我的心境已与当时大相径庭。当年的心绪波动,如今已毫无感受。这些文章也很难再继续写下去。

既然如此,倒不妨放弃掉这些草稿,放这些草稿一条生路,也放自己一条生路,草稿箱中只留那些我短时间可以写完的文章(我觉得一个月的时间是一个不错的时间限制,毕竟一个月,已经是30天,720 小时,43200分钟)。如果我无法在这个时间段内写完这篇文章,想来当时的 Context 已然消失不见,那就直接删除草稿,把时间留给下一篇文章吧!

几个可以简化 rails 开发命令的函数

几个可以简化 rails 开发命令的函数

在 rails 的 bin 目录下,有一些可执行文件,你在开发过程中使用这些可执行文件来操作,从而使用项目自带的可执行文件

但是默认的 rails 命令使用的是全局的 rails ,如果我希望使用项目中的可执行文件,就需要执行 bin/rails, 略微繁琐,所以有没有一种可以更加简单的方式呢?答案是肯定的。你可以通过在你的命令行中添加一个新的命令来实现这个效果。

具体代码如下:

funciton rx(){
	if test -f "bin/rails"
	then
	  bin/rails $*
	  exit
	else
	  rails $*
	fi
}
funciton yx(){
	if test -f "bin/yarn"
	then
	  bin/yarn $*
	  exit
	else
	  yarn  $*
	fi
}
function bx(){
if test -f "bin/bundle"
	then
	  bin/bundle $*
	  exit
	else
	  bundle  $*
	fi
}

你可以将这段代码粘贴在你的 .bashrc.zshrc  文件中,从而使其在命令行启动时可用。

这段代码很简单, 定义了三个新的函数,后续我们在命令行输入 rxyxbx 的时候,会自动调用当前目录或全局的 railsyarnbundle 目录。这样你可以在任何一个目录下使用 rx 命令来操作。

三个函数的结构都是一样的,首先检测当前目录下的子目录是否存在 rails 可执行文件,如果存在,就调用本地的函数,并将参数传递。如果不存在,就调用全局的函数,将参数传递。

总结

我们可以通过定义简单的一些命令,简化项目的开发。而这样的思路,你可以应用在任何一个项目中,而不仅仅是 rails 项目中。