If you are interested in software product operations, Dev*Ops or site reliability engineering (SRE), please don’t hesitate to apply it here, or directly contact with me
why not wechat
为什么我不喜欢微信
微信,也叫WeChat,本应正如其名所指,就是个即时通信的chatting工具。然后,我认为就应该到此为止了。按照这个定义,现在微信中除了聊天和群聊以外的其它功能在我看来都是多余的。但显然腾讯不这么认为,它的目标是把微信变成平台,甚至变成操作系统。按照现在微信的功能设计,以后出现一种里边只有微信的专门设备也一点不奇怪。但我并不喜欢这个产品,就像我不喜欢一切笨重、臃肿、封闭、不可定制的软件产品一样,因为这对我来说就等于复杂,等于丑陋(“小程序”,这真不知道是谁起的名字,丑到爆炸。按照这个起名字的水平,以后出个专门只运行微信的手机,是不是就叫“微机”?然后在发布会上举着走出来说:“我们重新定义了‘微机’…”)。
现在,微信作为一个名词,前面的动词通常是“刷”。微信重度用户通常都会使用“刷微信”这个组合。微信的几个杀手级特性很精准的抓住了很多用户的日常习惯,所以能够让一个普通聊天工具成为几乎大家没事就可以打开刷一刷,而且一刷就可以是几个小时的高黏性应用。这几个特性在我看来是:订阅号,群聊,朋友圈,还有支付。
我个人仍然倾向于将微信作为即时通信工具,所以只有在有消息提醒的时候才会打开看,处理之后立即退出。然而,订阅号的出现让我不得不有的时候要在微信里面多呆一会。不得不承认,的确有一些能够提供优质内容的订阅号存在,它们的文章值得一看,大约就类似传统的报刊杂志吧。但订阅号的问题有三个:一是它们目前绝大多数都是自媒体,内容质量极其没有保障,对于读者的鉴别力要求是很高的(难道腾讯是在用这种方式强行提高很多人孱弱不堪的独立思考能力?如果真是这样,那这盘棋下的很大);二是系统封闭,成为开放的互联网世界中一块可以随时与世隔绝的独立王国;三是与其它聊天会话并列一起。最后一点是让我最无法忍受的。阅读本应是安静的,纯净的,不受打扰的,所以才会有图书馆,阅览室,书吧。如果要聊天可以去茶馆酒吧咖啡厅。然而在微信里看订阅号,就是有一种在嘈杂的茶馆里阅读的感觉,体验非常不好。互联网上优质内容的聚合阅读本来不应该是这个样子的,只是因为Google放弃了Reader,铸成大错,这个就不提了。当然好在还有Reeder这类产品。我其实希望微信能把订阅号独立出来成为一个专门的应用,聘请一些专业的编辑或AI对内容筛选一下再推送,类似Pocket的推荐文章功能。但腾讯显然不会这么干,因为它希望微信是唯一的入口。
另一个让人厌烦不已的特性就是那个该死的群聊。粗略统计了一下,我的微信里现在有24个群,肯定算少的。当情愿或者不情愿的被卷入各种“群”,情愿或者不情愿的收到各种消息的时候,心情是复杂的:看还是不看,回还是不回,退还是不退群?看,打碎时间;回,耽误时间;不看,红点时刻提醒你有未读消息;不回,被认为高冷,不接地气,不食人间烟火。现在又有了个更坏的:群红包。面对红包,你点不点?我基本不点,一是因为大部分红包都错过了,二是绝不会为了那仨瓜俩枣而暴露自己在看群消息的状态。说实话,有的群(比如500人的小区业主群)真的是充满了噪声,但如果主动退群又似乎是在宣示着什么,而且可能会错过一些重要的消息,尽管这种消息非常非常的少。更重要的是,那些群里的人知道你能看到这些消息,所以有的时候你就不能继续假装自己没看到,尽管有时其实真的不想去看那些消息,或者就真的是没看到。群聊功能很好的满足了很多人喜欢三五成群,聚在一起瞎聊胡侃、传小道消息的爱好,而且把”聚“这个动作以一种成本极低的方式从线下拉到线上,从而诞生出了无数个大大小小,名分各异,或分离或包含或相交的群。
此起彼伏的群聊,
突如其来的红包,
之后是一长串”跪谢老板“的表情包。
热闹,喧嚣,但是我觉得好吵。
你们,
怎么都这么能聊?
以前湖南交通893汽车音乐电台里有句公益广告词是”别被朋友圈圈住了生活“。那时候我就能感觉到其实很多人是被朋友圈绑架的。一边羡慕朋友圈里其他人的生活,一边还要晒自己的生活。生活是为了给别人看的么?生活难道不是首先是为了自己和家庭么?所以我基本不看更不发朋友圈,因为不喜欢把自己晒在那让人品头论足。
对我来说,微信是一个过度复杂的应用,一个很容易将时间碎片化的应用,一个信噪比特别低的应用,一个强行将线下社交拉到线上并用群和圈把用户绑架到”圆环套圆环世界“的应用。
Postgresql service can not be stopped on OSX
As I experieced many times before, migrating/upgrating a database always hurts. That’s the reason I won’t upgrade my Postgresql to the latest version until I have to. And the day finally comes.
I have to upgrade my Postgresql server from 9.4.9
to 9.6.1
with pg_upgrade
. Otherwise, I can not properly install postgis
, which is another long story. I am surely not the first one who is doing this upgrading. Olivier Lacan has a great post about Postgresql database migrating. But the thing is, I still can not run the pg_upgrade
command properly after unloading the homebrew.mxcl.postgresql.plist
. And the most weird thing is I can not even kill the postgres process even with kill -9
. After each time I enter the kill command, the postgres services appear again with a new PID just like a ghost virus program. And the pg_ctl stop
command, of course, doesn’t work with whatever mode
option. Finally, I figure out that there is another pList
- homebrew.mxcl.postgresql.plist.bak
still active in the ~/Library/LaunchAgents/
directory. And it IS the control script that starting the current Postgresql service. So I immediatly launchctl unload
it, then all the postgres services are gone.
All done? Don’t be naive. After running the command
1 | pg_upgrade -b /usr/local/Cellar/postgresql94/9.4.9_1/bin -B /usr/local/Cellar/postgresql/9.6.1/bin -d /usr/local/var/postgres.9.4.9.bak -D /usr/local/var/postgres |
I got the error (from pg_dump_log):
1 | command: "/usr/local/Cellar/postgresql/9.6.1/bin/pg_dump" --host '/usr/local/var/log' --port 50432 --username 'user' --schema-only --quote-all-identifiers --binary-upgrade --format=custom --file="pg_upgrade_dump_16417.custom" 'dbname=mmrp_munich' >> "pg_upgrade_dump_16417.log" 2>&1 |
So it’s postgis’s show time. could not access file "$libdir/postgis-2.1": No such file or directory
. Of course you could not access the file because it has already upgraded to 2.3
. I tried relaunching the old 9.4.9
server, but failed because all the client toolset are already 9.6.1
which reported incompatibility FATAL error. I feel so helpless. And I think a better workflow should be:
- Upgrade the postgis extention of your spatial database instances
- Stop old postgresql service
- Move old postgresql’s data cluster directory to a backup location
- Install new postgresql server
- Init new postgresql data cluster (with
initdb
) - Stop new postgresql service
- Upgrade postgresql server (with
pg_upgrade
)
I don’t think there are many choices for me. So I decide using Postgres.app instead, and just give up all the postgresql stuff from Homebrew. I hope that will bring less pain in the future. How about the data? Don’t worry, I still have a running database on AWS.
未命名
Kindergartens in Heidelberg
死神也要完结了
《死神(Bleach)》也要完结了,下下周的686话将是最终话。我本来以为怎么也能凑个700再完结的,但看来98并没有填坑的计划,这也正常,毕竟坑太多了,灵王、星十字、蓝染、零番队、虚圈、破面、假面、完现术等等主线,以及银和乱菊、8600和剑八、现世那边的龙贵等人、一心和龙弦等等花边。
比起火影,我感觉死神的完结更加戛然而止。虽然我觉得说是烂尾,对这二者都多少有些不公,但说这哥儿俩虎头蛇尾还是不委屈他们的。其实这种热血漫画,如果没有在一开始有个比较完整的构思,然后逐步展开,前面挖坑后面填,主线支线配合,正叙与插叙交织,完全可以让读者面对眼前徐徐展开的恢宏画卷而高潮迭起。对没错,我说的就是《海贼王》。比起WT,98和AB还是属于那种想到哪画到哪的类型,当然,他们已经做得不错了。
火影完结的时候,我并没有写点什么,但死神完结我会写,因为其中有我和老婆的美好回忆。想到死神,我就会想起北院那个家属楼。虽然那里简陋的连独立厨卫都没有,虽然它早在几年前就被推掉了,但还是留下了我们很多美好回忆,包括一起看《死神》的日子。
模型:EW版W重装高达
时隔将近20年了,终于又重新做了一次模型。而且这次是EW版的重装高达!与初中那会比起来,总算是做了一回日本原产的正版模型,而且也用了更加专业的工具。前后耗时6小时左右,虽然只是拼接,没有上任何涂装,对切口的处理也比较粗躁,但还是十分令人满意的。对了,目前暂时还没有贴贴纸。
刚刚开始:
完成胸部和头部(到最后安装背包的时候才发现在组装胸部的第二步少装了一个零件,只能拆开补。。)
完成上半身:
完成主体:
手持武器、背包和弹仓安装完成:
来个活力全开的:
转个身:
组装模型是对耐心、细心的锻炼,是有效治愈手残症的良方。虽然正版模型有点小贵,但做工真的是超赞。做完赶紧留影纪念,因为不知道它在大魔王的手里能存活多久…T_T
关于博客语言的约定
我觉得今后呢,如果是写技术方面的东西,那么就默认使用英文,而如果是生活吐槽扯淡方面的就用中文,这样是比较合理的。
Let me make a convention about the blog writing language. From now on, the posts will be in English if they are categorized in “Programming”, or in Chinese if they are in “Life”.
pyenv suddenly doesn't work after a brew cleanup
I have just run a brew cleanup
command to release some of my hard drive space. But after that, I suddenly found my python doesn’t work:
1 | pyenv /usr/local/var/pyenv/shims/python: line 21: /usr/local/Cellar/pyenv/20160310/libexec/pyenv: No such file or directory |
As it says, the directory of /usr/local/Cellar/pyenv/20160310/
really does not exist. And the solution can be found from brew info pyenv
:
1 | To use Homebrew's directories rather than ~/.pyenv add to your profile: |
They are obviously already in my .bash_profile
file. The only necessary action is to do source ~/.bash_profile
.
Problem solved.
迁移至neovim,重启代码工作
在经历过几个月的动荡之后,开发工作必须要重新启动了,而且是要保持较高的强度。
首先做的是从vim迁移至neovim,把插件管理器从Vundle改成了vim-plug,并借此机会把所有的插件又重新梳理了一遍,保留了这些:
- vim-colors-solarized
- gruvbox
- nerdtree
- nerdcommenter
- deoplete.nvim
- syntastic
- vim-flake8
- vim-easy-align
- vim-clang-format
- vim-airline
- fzf
- fzf.vim
- vim-surround
- vim-fugitive
- vim-multiple-cursors
- vim-racket
其实还是有点多,而且有些用的很不熟练,但本着先利其器的原则还是把它们装上了。这也是在强迫自己保持对新工具的折腾精神。
多年以来的经验告诉我,以具体的项目驱动仍然是我学习新知识新技能的最高效选择,看书补理论是绝对必要的但一定要放在一段工程实践的后面,而且不能看太久,一定要在适当的时候重新开始一段新的实践。
消息终于来了
这个难熬的四月,到上周五晚上11点,终于结束了。命令在当晚7点多到了学校,而且没有再节外生枝。在这件事情上,我不再想看到任何支线情节。
这本来应该是20多天,不,应该是两年多以来睡得最踏实的一晚,但我那天几乎彻夜未眠。
新的旅程终于可以开始了。