主题没有,内容瞎写

芳草伴青山, 雲影入湖心, 松梢鶴嘯長, 蘆屋酣夢沉。

0%

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

为什么我不喜欢微信

微信,也叫WeChat,本应正如其名所指,就是个即时通信的chatting工具。然后,我认为就应该到此为止了。按照这个定义,现在微信中除了聊天和群聊以外的其它功能在我看来都是多余的。但显然腾讯不这么认为,它的目标是把微信变成平台,甚至变成操作系统。按照现在微信的功能设计,以后出现一种里边只有微信的专门设备也一点不奇怪。但我并不喜欢这个产品,就像我不喜欢一切笨重、臃肿、封闭、不可定制的软件产品一样,因为这对我来说就等于复杂,等于丑陋(“小程序”,这真不知道是谁起的名字,丑到爆炸。按照这个起名字的水平,以后出个专门只运行微信的手机,是不是就叫“微机”?然后在发布会上举着走出来说:“我们重新定义了‘微机’…”)。

现在,微信作为一个名词,前面的动词通常是“刷”。微信重度用户通常都会使用“刷微信”这个组合。微信的几个杀手级特性很精准的抓住了很多用户的日常习惯,所以能够让一个普通聊天工具成为几乎大家没事就可以打开刷一刷,而且一刷就可以是几个小时的高黏性应用。这几个特性在我看来是:订阅号,群聊,朋友圈,还有支付。

我个人仍然倾向于将微信作为即时通信工具,所以只有在有消息提醒的时候才会打开看,处理之后立即退出。然而,订阅号的出现让我不得不有的时候要在微信里面多呆一会。不得不承认,的确有一些能够提供优质内容的订阅号存在,它们的文章值得一看,大约就类似传统的报刊杂志吧。但订阅号的问题有三个:一是它们目前绝大多数都是自媒体,内容质量极其没有保障,对于读者的鉴别力要求是很高的(难道腾讯是在用这种方式强行提高很多人孱弱不堪的独立思考能力?如果真是这样,那这盘棋下的很大);二是系统封闭,成为开放的互联网世界中一块可以随时与世隔绝的独立王国;三是与其它聊天会话并列一起。最后一点是让我最无法忍受的。阅读本应是安静的,纯净的,不受打扰的,所以才会有图书馆,阅览室,书吧。如果要聊天可以去茶馆酒吧咖啡厅。然而在微信里看订阅号,就是有一种在嘈杂的茶馆里阅读的感觉,体验非常不好。互联网上优质内容的聚合阅读本来不应该是这个样子的,只是因为Google放弃了Reader,铸成大错,这个就不提了。当然好在还有Reeder这类产品。我其实希望微信能把订阅号独立出来成为一个专门的应用,聘请一些专业的编辑或AI对内容筛选一下再推送,类似Pocket的推荐文章功能。但腾讯显然不会这么干,因为它希望微信是唯一的入口

另一个让人厌烦不已的特性就是那个该死的群聊。粗略统计了一下,我的微信里现在有24个群,肯定算少的。当情愿或者不情愿的被卷入各种“群”,情愿或者不情愿的收到各种消息的时候,心情是复杂的:看还是不看,回还是不回,退还是不退群?看,打碎时间;回,耽误时间;不看,红点时刻提醒你有未读消息;不回,被认为高冷,不接地气,不食人间烟火。现在又有了个更坏的:群红包。面对红包,你点不点?我基本不点,一是因为大部分红包都错过了,二是绝不会为了那仨瓜俩枣而暴露自己在看群消息的状态。说实话,有的群(比如500人的小区业主群)真的是充满了噪声,但如果主动退群又似乎是在宣示着什么,而且可能会错过一些重要的消息,尽管这种消息非常非常的少。更重要的是,那些群里的人知道你能看到这些消息,所以有的时候你就不能继续假装自己没看到,尽管有时其实真的不想去看那些消息,或者就真的是没看到。群聊功能很好的满足了很多人喜欢三五成,聚在一起瞎聊胡侃、传小道消息的爱好,而且把”聚“这个动作以一种成本极低的方式从线下拉到线上,从而诞生出了无数个大大小小,名分各异,或分离或包含或相交的群。

此起彼伏的群聊,
突如其来的红包,
之后是一长串”跪谢老板“的表情包。
热闹,喧嚣,但是我觉得好吵。
你们,
怎么都这么能聊?

以前湖南交通893汽车音乐电台里有句公益广告词是”别被朋友圈圈住了生活“。那时候我就能感觉到其实很多人是被朋友圈绑架的。一边羡慕朋友圈里其他人的生活,一边还要晒自己的生活。生活是为了给别人看的么?生活难道不是首先是为了自己和家庭么?所以我基本不看更不发朋友圈,因为不喜欢把自己晒在那让人品头论足。

对我来说,微信是一个过度复杂的应用,一个很容易将时间碎片化的应用,一个信噪比特别低的应用,一个强行将线下社交拉到线上并用把用户绑架到”圆环套圆环世界“的应用。

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
2
3
4
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
pg_dump: [archiver (db)] query failed: ERROR: could not access file "$libdir/postgis-2.1": No such file or directory
pg_dump: [archiver (db)] query was: SELECT a.attnum, a.attname, a.atttypmod, a.attstattarget, a.attstorage, t.typstorage, a.attnotnull, a.atthasdef, a.attisdropped, a.attlen, a.attalign, a.attislocal, pg_catalog.format_type(t.oid,a.atttypmod) AS atttypname, array_to_string(a.attoptions, ', ') AS attoptions, CASE WHEN a.attcollation <> t.typcollation THEN a.attcollation ELSE 0 END AS attcollation, pg_catalog.array_to_string(ARRAY(SELECT pg_catalog.quote_ident(option_name) || ' ' || pg_catalog.quote_literal(option_value) FROM pg_catalog.pg_options_to_table(attfdwoptions) ORDER BY option_name), E',
') AS attfdwoptions FROM pg_catalog.pg_attribute a LEFT JOIN pg_catalog.pg_type t ON a.atttypid = t.oid WHERE a.attrelid = '28564'::pg_catalog.oid AND a.attnum > 0::pg_catalog.int2 ORDER BY a.attrelid, a.attnum

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:

  1. Upgrade the postgis extention of your spatial database instances
  2. Stop old postgresql service
  3. Move old postgresql’s data cluster directory to a backup location
  4. Install new postgresql server
  5. Init new postgresql data cluster (with initdb)
  6. Stop new postgresql service
  7. 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还是属于那种想到哪画到哪的类型,当然,他们已经做得不错了。

火影完结的时候,我并没有写点什么,但死神完结我会写,因为其中有我和老婆的美好回忆。想到死神,我就会想起北院那个家属楼。虽然那里简陋的连独立厨卫都没有,虽然它早在几年前就被推掉了,但还是留下了我们很多美好回忆,包括一起看《死神》的日子。

时隔将近20年了,终于又重新做了一次模型。而且这次是EW版的重装高达!与初中那会比起来,总算是做了一回日本原产的正版模型,而且也用了更加专业的工具。前后耗时6小时左右,虽然只是拼接,没有上任何涂装,对切口的处理也比较粗躁,但还是十分令人满意的。对了,目前暂时还没有贴贴纸。

刚刚开始:

preparing

完成胸部和头部(到最后安装背包的时候才发现在组装胸部的第二步少装了一个零件,只能拆开补。。)

head and chest

完成上半身:

with arms

完成主体:

whole body

手持武器、背包和弹仓安装完成:

finished

来个活力全开的:

in battle

转个身:

back

组装模型是对耐心、细心的锻炼,是有效治愈手残症的良方。虽然正版模型有点小贵,但做工真的是超赞。做完赶紧留影纪念,因为不知道它在大魔王的手里能存活多久…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”.

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
2
3
4
5
To use Homebrew's directories rather than ~/.pyenv add to your profile:
export PYENV_ROOT=/usr/local/var/pyenv

To enable shims and autocompletion add to your profile:
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

They are obviously already in my .bash_profile file. The only necessary action is to do source ~/.bash_profile.

Problem solved.

在经历过几个月的动荡之后,开发工作必须要重新启动了,而且是要保持较高的强度。

首先做的是从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多天,不,应该是两年多以来睡得最踏实的一晚,但我那天几乎彻夜未眠。

新的旅程终于可以开始了。