black and silver laptop computer

macOS 重装记

我隔一段时间就会重装一次系统,原因是我的系统中的环境过多,会导致系统中的 PATH 紊乱。因此,当出现系统无法正常工作的时候,我就会考虑重装一次系统。

重装系统需要备份一些东西,做一些处理,写一篇博客记录一下,也方便我自己使用。

清理无用文件

1. 清理包管理器安装的依赖文件

我经常会使用 Python、Node.js 来写一些脚本,这些脚本会依赖 npm 生态下的 package。这些 package 可以基于 npm 下载又或者是类似 python ,提供了 requirements 文件的项目,可以使用命令快速恢复环境,因此,我会推荐将这些可以快速恢复的文件,直接清理掉,以加快安装的速度。

具体包括:

  • Node.js 的 Node Modules
  • Python 的 venv
  • PHP 的 vendor

这里我会使用这样的命令来进行删除

下面这段代码执行时不会确认,因此,如果修改,请再三确认再执行,避免酿成大错。

find . -name "node_modules" -exec rm -rf '{}' +
Code language: JavaScript (javascript)

具体可以参考

https://www.ixiqin.com/2019/05/tool-command-delete-the-current-directory-node_modules-command/

清理完成后,项目目录会从 21G 瘦身至 7.6 G。

备份重要文件

备份 SSH 信息

一个很重要的需要备份的文件,就是我的 SSH 密钥/公钥,我管理服务器都需要它。因此,需要对齐进行备份

cp -R ~/.ssh /Volumes/backup/ssh
Code language: JavaScript (javascript)

这里的 backup 是我的单独的磁盘,用来备份资料的。

备份项目资料

我会把所有涉及到开发的资料都放在一个文件夹里,因此,在处理备份的时候,我只需要把大的文件夹备份即可解决项目文件的存储问题。同时,因为不删除 .git 记录,还可以保留数据的编辑记录。

tar -zcvf /Volumes/backup/project.tar.gz ~/Developer

备份 MySQL 数据库

我使用 homebrew 安装了 MySQL ,因此,也需要把 MySQL 数据备份出来,以免后续搭建开发环境成本太高。执行命令,即可将所有数据库备份。

mysqldump -uroot -p --all-databases  --result-file=dump.sql

执行完命令,数据就会备份在当前目录下的 dump.sql 文件,接下来你只需要将其移动到你的备份文件中。

备份软件列表

备份软件列表,以方便后续可以方便的进行恢复,以免遗漏。当然,你也可以选择用到什么安装什么。但对于一些比较基础的、常用的,我还是比较喜欢重装完就安装,省的用到的时候现场装。

软件列表需要备份的有三处:

  • /Applications
  • brew list
  • brew cask list

需要做的就是将这些信息打印出来,并导出到 txt 文件,方便后续恢复。

ls /Applications > applications.txt
brew list > brew.txt
brew list --cask > brew-cask.txt
Code language: PHP (php)

备份 dotfiles

我们在 ~ 目录下放置了不少常用的 dotfile,也需要将其备份,以便后续使用,因此,你也可以将这部分文件备份到你自己的磁盘中。

一些值得备份的文件

  • .gitignore
  • .zshrc
  • .gitconfig

你可以通过执行如下命令,找到隐藏的 dotfiles

ls -a | grep "^\."
Code language: JavaScript (javascript)

当然,你也可以选择将其放置在 Github 上,开放自己的 dotfiles 也是一个非常常见的行为。

其他一些没有被 iCloud 备份的文件

我默认开通了 iCloud,因此 Documents 是不需要我进行维护的,不过,还有一些地方是 iCloud 无法覆盖的,因此,需要注意自行备份。他们包括

  • ~/Downloads:如果你和我一样,比较喜欢把 downlods 作为 workspace

还有哪些值得备份的?

  • 比如 Clash X,方便重装后快速联网
  • 比如 1Password 的密码备份文件,方便重装后快速恢复

重装系统

重启 macOS,并在重启后,按下 Command + R,来进入到维护模式,在维护模式中,你可以重装系统。

其他

如果你还有在备份的时候值得注意的,可以一并告诉我。

Reference

summary

2020 年 10 月月度总结

TL;DR

本月是完全自由职业的第二个月,和 9 月还有一些时间要在公司不同,这个月我完全是 Freelancer 的状态。

这一个月是忙碌的一个月,也是丰富生活的一个月。

月度总结

工作

目前的工作状态并不是很好。虽然自由职业,但依然要做到很晚。不过也正常。自由职业并不意味着你不用工作,仅仅是你的工作时间更加自由,比如,我可以选择在晚上我更有灵感的时候工作。我可以选择没有人的时候出去旅行,而不是赶在节假日和大家一起。

生活

这个月重新开始减肥,也开始做一些健身环大冒险的运动。总的来说,健身环大冒险很值得购买,可以让你以一个更加无痛的方式开始运动。

本月因为工作的原因, 又出行了两次,分别是

  • 上海
  • 海口

在海口的时候,还顺便逛了一下免税店,帮朋友带了东西;因为有三件 8.5 折的优惠,我自己买东西的时候也可以有一定的优惠。挺好。

Side Project

  • 本月启动了 RelationWiz 项目

写作

  • 本月把 webook 的第一个版本放出去了。

财务状况

本月收入近 30K,可惜还有一些账款没有收回,导致收入不达预期。

本月支出 26000 多,结余3000 余元

本月主要开销在数字资产上,换句话说,买了太多的电子设备、云计算资源。

再想一想,下个月双十一,我还准备买很多旅行的酒店。emmm

感觉财务又要吃紧了。

娱乐

阅读

  • 人生护城河 —— 张辉
  • 信 —— 东野圭吾
  • 在你身边,为你设计
  • 在你身边,为你设计(二)

课程学习

  • MasterClass – 家庭料理大师课

年度计划对标

课程学习

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

图书阅读

一年读书 54 本,本月进度 4 本;全年进度15 /54

电影观看

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

yellow and black building under white clouds during daytime

宜家在线商城代下单体验

因为种种因素,我如今搬到了深圳的宝安,并换了一个更大的房间(从 17平米到 53 平米),获得了一个次卧,用于专门办公。因此,也需要新增一些趁手的家具,来配合房间和生活。

心水宜家了很久,刚好深圳也有宜家,所以就选择了宜家。但由于我并不会开车,所以选择了线上购买,直接配送到家,自行组装。

宜家现在对国内的很多城市都提供了网上购买配送的服务,你如果也对宜家感兴趣,这个服务也不错。具体信息可以查看这个链接。

选货的过程很简单, 登陆 ikea.cn ,找到自己要购买的商品,添加到自己的购物袋中,选好以后,就可以下单购买了。

但,在下单的过程中,可能是因为宜家的内部系统问题,导致我无法正常的下单,只好联系客服帮我查询问题。

客服没有查询我无法下单的原因,不过,客服给我了一个解决方案:代下单。

我告知了我想要的商品、具体的个数,以及我的邮箱、收货信息。

很快,客服就帮我下好单了。

确认价格后,就可以让客服发订单给你了,你会在提供的邮箱中查看到订单,点击进去就可以支付了。

接下来要做的就是等待邮件发送,并确认里面的商品是否是你想要的。

如果没有问题,就可以登陆支付,然后耐心等待商品的发货了。

我的商品预计在 10 月 16 日发货,到时候再更新新的文章。

买了啥?

这一次,我买了一些比较使用的基本家具,包括

  • 拉克边桌:放在客厅
  • 台灯:放在书桌
  • 留言板:方便做一个实体的 KANBAN
  • 勒伯格 隔板架:用来放我的各种电子产品
  • 拉斯克 手推车:放杂物
  • 莱瓦 书架: 放我买的书

总结

如果你在宜家的在线官网下单遇到问题后,也可以试试和我一样,通过客服代下单的方式来完成。但需要注意的是,运送存在基础运费,所以如果你买的太少的话,可能也比较不划算。

Append

  • 在客服下单的时候,记得告诉客服你的宜家会员卡号,这样才能给你的会员卡进行积分。后续是无法补加的,因此,只能取消订单重新下单,才可以获取积分。

person using laptop computer

个人品牌的两条路

在找到了自己的个人定位以后,下一步就是要想办法让别人对你产生认知:”你就是某个领域的 No.1″,而想要让别人产生类似的认知。一般来说,你有两条路可走:

  1. 成为法:让自己看起来像是 No.1
  2. 成长法:让自己成为 No.1

前者意味着你需要伪装自己,让自己看起来像是 No.1,比如总是发表一些”符合预期人设”的内容,表达一些”符合人设”的观点。

而后者,则意味着承认自己的不足,并让自己逐渐的成为 No.1 ,在这个过程中,你可能发布了一些”并不是那么符合你的预期人设”的内容,但整体来说,你所发布的内容逐渐向着你的预期人设去逼近。

前者意味着你希望自己从一开始就是符合自己的预期人设的,基于你的预期人设发表看法。而后者则是认识自己的不足,承认自己的不足,让你的目标客户群体关注你的成长,并认可你的成长。

相比于前者, 我更喜欢后者

前者的好处在于人设从一而终,始终是稳定的,可预估的,从一开始就表现出了完美的状态;但相应的,完美是有代价的,你需要使用谎言来隐藏你自己的真实情况,以让你的读者可以认为你是符合人设的。

后者则更加真实,因为认可自己的缺陷, 因此,读者也不会抱有太高的期待,可以伴随你一点点成长。但问题是成长型个人品牌的成长周期是根据个人来定的,可能快可能慢。如果你急着去做变现,那么这一条路大概率不适合你。

总结

个人品牌有两条路,一条是小路,速度快,但可能会非常的累,因为你需要伪装别人;另一条是大路,但会非常的慢,但你会获得一批很好的拥趸。你选择哪条路?

woman holding white mug while standing

秀出你自己

前天谈到了个人品牌的两条路,而我更倾向于走更慢的一条路。主要原因倒也简单一是我虽然在乎个人品牌,但当下的我来说,并没有要求自己一定要有一个个人品牌来做些什么,因此,这个事情可以长期去做,不要求一定要现在马上就得到。另外就是我还是担心我很难去”表演”一个人设,那样太累,既然如此,就做自己好了。

如果你选择了第二条路,那么你需要学会”秀出你自己”。大部分人都不喜欢秀出自己,无论这个点是大是小,总会觉得秀出来的自己,不值得被关注。但这里存在一个误区就是,如果你不练习秀出你自己,那么机会来临时,你又如何判断自己是否能够秀出自己?

为什么要秀出你自己?

秀出你自己一方面是一种训练,让你能够更好的表现出你自己的优势,让你可以在需要表现优势的时候,恰到好处的展现你的魅力。另一方面,秀出你自己,也是在不断的向外界传达信息,让外界知道你是谁,你在做什么? 通过不断的展示你自己,可以让你自己更容易被人找到,从而在别人真正需要你的时候,你可以出现在他们的搜索结果之中。

我的东西值得秀出去么?

我很喜欢出去分享,也从来不畏惧分享。原因很简单,因为我知道,我所掌握的东西,一定是有别人不知道的。那么当我传达了这些别人所不知道的东西以后,我就带给了别人价值。对于在做个人品牌的你也一样,你所掌握的东西可能在你所在的行业是非常简单且普遍的。但 360 行,你掌握了 1 行,还有剩下 359 行是你所不知道的。对应的,他们同样也不知道你所在行业的内容。

当你试图分享自己行业的信息给别人,打破信息的不对称,你就已经开始打造自己的影响力,创建自己的个人品牌了。

black fitness tracker band

为小米手环 5 安装自定义表盘

为什么要使用自定义表盘

小米手环五是我的 Watch 坏掉后的一个不错的选择,我目前在使用它也非常方便。但是,在使用过程中,一个不太好的点是小米手环 5 的官方表盘很少,而且大多是一些动画周边表盘,无用的信息过多,并不能很好的符合我的诉求,因此,我开始寻求安装自定义表盘。

如何安装自定义表盘?

安装自定义表盘,需要依赖一个 App —— Amaztools。这个 App 已经在 iOS App Store 中上架,你可以直接去 iOS App Store 上下载。

在下载完成后, 打开 App ,会让你链接设备,选择你的小米手环 5 ,就会自动识别出手环。并且, 在 App 中看到各种基本信息。

点击下方 Tab 中的 Browse ,可以看到支持当前手环的各种表盘

选择一个你喜欢的表盘,点击进入详情页,选择「Download」来下载表盘,并在下载完成后,点击 Install 来安装表盘。

在安装界面点击确认,表盘就会开始同步到小米手环当中。

在安装过程中需要注意,不要关闭 App 或将手环离手机太远,以免安装失败导致字库损坏等问题。稍等片刻,表盘就同步好了。你就可以用上自己的表盘啦!

推油 rikumichan 补充:

有一个表盘明显更多的 App,我翻了一天翻不到底,叫 AmazFaces,可以试试

reference

silver iMac with keyboard and trackpad inside room

何为定位?

个人品牌纪实是我在建设个人品牌途中的一些记录,这些记录大多源自咨询、读书等多方面的经验所得。

什么是定位?

谈及个人品牌,那么一定会谈到一个词 —— “定位”,那么你在做自己的个人品牌前,是否想过你的品牌定位到底是什么?

定位个词很模糊,比如”独立开发者”是不是一种定位?、”自由职业者”是不是一种定位?这是每一个刚刚开始做个人品牌的人一定会遇到的问题 —— “定位模糊不清”

可以选择一个更加简单易懂的描述,来解读”定位”这个词 —— 你在整个生态链条中的位置

图源:腾讯新闻 https://new.qq.com/omn/20191220/20191220A04O1H00.html
图源:腾讯新闻 https://new.qq.com/omn/20191220/20191220A04O1H00.html

定位是你在整个生态中的价值点,你能够为整个生态贡献什么样的价值,你就是一个什么样的定位。

在这里,一个核心的点在于”贡献价值”,当你的客户被你的个人品牌所影响,想要找到你提供服务的时候,你必须能够提供相应的价值。

从这个角度来看,前面我们所提到的”独立开发者”就不是一个很好的定位,原因是独立开发者对于客户而言,并不能提供太多的价值,客户找到你以后也无法找到一个好的合作点。这个定位,是失败的。

定位应该如何找?

在找定位时,应当找你希望成为的或者是你擅长成为的。完全基于定位来打造个人品牌,积累经验并非不可,但所需要耗费的时间和精力是巨大的,与其找到一个不熟悉的领域研究,不如在当前已经熟悉的领域中去深挖,在你所熟悉的领域中打造个人品牌。

在进行定位的时候需要注意的是,不同的定位可能对于你的长期目标有所影响,你的短期定位,应当是长期定位下的一个子元素。举个例子,假设你的长期定位是”专业的软件开发工程师”,那么”专业的 Python 后端工程师” 或者 “专业的前端工程师”都是你的长期定位下的一个子元素,在这种情况下,你可以基于这个子元素进行定位,并在后续,不断的将自己的定位进行泛化,泛化至”专业的软件开发工程师”。你可以对其泛化,但很显然,你不太可能通过泛化,从一个软件工程师,突然泛化到一个医生,定位的跨度太大,会导致你的定位模糊。

总结

今天是我开始写”个人品牌纪实”相关内容的第一天,谈及品牌,自然少不了定位,既然如此,就从定位谈起,再一步步探究个人品牌的魅力。

person holding sticky note

Python 生成公众号头图 1.0

我的公众号头图属于特别简洁的,原因是我在乎的是文章中的内容,而不是头图。虽然我知道一个好的头图会提升点击率,但其背后耗费的时间是我目前不愿去做的。因此,我目前的头图都是 PS 打开一张图,然后直接放上一行文字来生成的。

历史头图
历史头图

但是,打开 PS 还是太花费精力了,因此,我希望可以用更少的时间来生成简单明了的头图。因此,我决定优化我的头图制作方案,使用代码来完成公众号头图的生成。

环境依赖

这一次的代码使用 Python 来完成,并基于 Python 的 Pillow 库完成图片的生成,因此,你在运行我的代码时,需要先安装 Pillow

pip install pillow

实现思路

在使用 Pillow 绘图的时候,和我们在前端使用 Canvas 绘图的思路基本一致,我们要做的是

  1. 准备特定背景的画布
  2. 加载字体
  3. 绘制文字
  4. 导出图片

生成的难度并不高,也只需要花费一些时间来编写代码。具体的代码我贴在下方了,供你参考。

代码实现

具体的代码如下

from PIL import Image, ImageDraw, ImageFont
# 常用变量
img_size = (900, 383)
bg_color= "#fca652"
big_text_size = (900,383)
text = "代码生成图片"
text_color = "#eeeeee"
filename = "export.jpg"
font_size = 80
# 生成画布
export_image = Image.new("RGB", img_size, bg_color)
# 加载字体
font = ImageFont.truetype("NotoSansSC-Medium.otf", font_size)
# 计算字体宽度
text_width = font.getsize(text)
text_coordinate = int((big_text_size[0]-text_width[0])/2), int((big_text_size[1]-text_width[1])/2-20)
# 生成绘图 ctx
img_draw = ImageDraw.Draw(export_image)
# 绘制文字
img_draw.text(text_coordinate, text, font=font, fill=text_color)
export_image.save(filename, quality=95)

总结

使用 Python 来绘制头图的难度并不大,比如今天的头图,就是通过代码来绘制的,你可以看看效果。

不过,上面的代码还是很简陋,你觉得这段代码有没有什么值得优化的点呢?

summary

2020 年 9 月月度总结

TL;DR

9月于我是一个非常特殊的一个月。一方面, 从腾讯离职,开始了 Freelancer 之旅。另一方面,得益于南航随心飞,我在离职后的两周,密集的飞了四个地方,一周去了西安北京,另一周去了苏州上海。

离职 & 随心飞是 9 月的主题,十月会开始慢慢回归正常。

月度总结

工作

  • 本月离职,没有太多的工作。

生活

  • 本月主要花时间在旅行上,从 9.10 日离职,月底,中间两周时间,飞了两周。
    • 得益于随心飞,我见到了不少过去可能不会去看的人,比如大学的室友、小学的发小。
    • 旅行目的地:西安、北京、上海、苏州

Side Project

  • 在做一个个人用的通讯录管理工具

写作

  • 这个月开始继续日更。已经坚持了好几天,今天的这篇也是日更。

财务状况

本月总收入… 25773,支出… 47203.25….

其中,因为换房子,支出了一万多;又因为买了后面的海航随心飞,又进去了 5000块;买了索尼的 A6400 ,又进去 7000块;

emmmm,感觉要把自己玩坏了….

哦,对了,今年年初的预期收入是 250K,不过目前进度条已经到了 98%。所以今年的预期收入目标一定是可以达到了。剩下几个月赚到的钱,都是超出预期的啦!

明年加油。

娱乐

这个月就看了一部电影

  • 《黑暗迷宫》

阅读

年度计划对标

课程学习

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

图书阅读

一年读书 54 本,本月进度 4 本;全年进度 11/54

电影观看

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

键盘设置如何优化小程序使用体验?

在小程序开发过程中,用户输入是必不可少的,我们经常会需要用户输入一些内容,来完成产品收集用户信息的需求。

在这种情况下,我们可以考虑借助小程序提供的一些和键盘相关的 API 来优化小程序的使用体验。

Input 组件的 type 属性

Input 组件的 type 属性
Input 组件的 type 属性

从小程序的 1.0 版本开始,就支持为 input 组件设置 type,不同的 type 会显示不同的手机键盘。默认情况下,显示的是 text 文本输入键盘,这个键盘的特点是显示所有的内容,可以适用于所有的场景。

但,适用于所有场景也就意味着不适用于所有场景,总会在每一个场景中有着种种不便,因此,在实际的开发中,为了获得更佳的体验,你可以通过设置不同的 Type 来控制实际的键盘显示情况。

text 类型 input 适用建议
text 类型 input 适用建议

除了默认的 text 类以外,你还可以使用 number(数字输入键盘)、idcard 身份证输入键盘和 digit带小数点的数字键盘。

idcard 类型 input 适用建议
idcard 类型 input 适用建议

你可以根据自己的实际使用场景来设置不同的类型,比如说

  • 如果你的小程序的验证码都是数字的,那么你给出一个 text 类型的键盘,显然不如给一个 number 类型的键盘更合适。
  • 如果你的小程序中涉及到了手机号的输入,那么这种情况下你就可以选择使用 number 类型的键盘,来优化用户输入时的体验。
number 类型 input 适用建议
number 类型 input 适用建议

这里的思路是类似的,当你预期用户输入的内容只有数字,就可以考虑 number、digit、idcard等类型,来优化你的小程序的实际使用体验。

digit 类型 input 适用建议
digit 类型 input 适用建议

总结

input 组件默认提供的 四种 type ,可以通过选择不同的类型,从而获得不同的体验效果,从而对于你的小程序体验进行优化和推进。