Posthaven to Hugo

前不久博客刚刚从wordpress迁移到Posthaven,在使用了两个月之后,还是从Posthaven流失了。

Posthaven的问题

起初没太注意文章的url,有一次写完发布之后,发现url居然是文章标题的拼音。对于英文内容来说,这样的url没问题,但是对中文来说,这样一大串不知所云的url,简直是个灾难。有个办法可以解决,就是发布的时候把期望的url作为文章标题,等发布之后再来把标题更新成中文。

Posthaven的页面引入了twitter和facebook的js,由于一些众所周知的原因,会导致博客无法顺利的打开。如果要去掉的话,需要修改主题。但是Posthaven的主题是用的liquid模版。修改的话有一定的门槛,至少要学会liquid。

类似的还有不少小问题,这些问题都有一些奇技淫巧可以解决。但是作为用户有没有必要这样折腾呢?如果还是要自己操心,那为什么不选择wordpress这些?

另外,Posthaven所标榜的“Last forever”或许只是个不切实际的幻想。一方面公司并不能保证永久运行下去。另一方面,万一哪天posthaven被屏蔽了,也就完蛋了。

需求很简单

我只需要一个minimal viable product:

  • 能够支持markdown,如果能原生支持org-mode最好了。如果不行的话,支持html也凑合,emacs可以很方便的把org-mode转成html。
  • 能够支持代码高亮,码农必备。
  • 不让用户操心,不需要做太多的定制,拿来就可以开始写。如果需要少量的折腾,那我至少希望这个折腾是值得的,经验是有其他的用武之地的。
  • 提供稳定的服务,页面打开速度有保证。

一直有个想法,既然这些都不能很好的满足需求,那为何不自己造个轮子?现在web framework都已经非常成熟了,实现起来应该也不会太难。org-mode的问题可以用scala写个parser解决。但是,自己造轮子要占用大量的时间。现阶段的时间这么紧张,把宝贵的时间花在这上面是不是值得?

那除了wordpress,还有什么选择?Jekyll, Hexo, Hugo。Jekyll的编译速度太慢,Hexo是nodejs的框架,学习成本略高,而且hexo的主题洋溢着一种qq空间的感觉。那就只有Hugo了。

Hugo也不完美

Hugo, Jekyll和Hexo这类博客最大的优点在于生成的是静态页面,如果博客部署的机器跪了,重新换台机器部署一下就行了,迁移起来非常方便。Hugo可以在本地渲染,而且支持live reload,写完保存文件在浏览器里就可以看到了。这一点是之前从未有过的体验。

虽然基本体验OK,但是Hugo也存在不少问题。

如果某篇文章太长,不希望在首页全部展示的时候,WordPress和Posthaven都支持插入Read More标签,这样在首页就可以只展示标签之前的部分。Hugo对于这个功能的支持,在markdown格式里面是完美的,如果用org-mode或者html,就比较令人蛋疼了。对于org-mode,文档里面写的是要用 #more ,但实际上还是要用markdown的方法。对于html,我是压根儿就没找到支持的方法。

Hugo的文档比较奇怪,给人的感觉是放着一些通俗易懂的说法不用,而是故意用了一些看起来更高深的词汇,但是对用户来说不够友好。比如taxomony,slug这些概念。

虽然Hugo支持org-mode,但是支持的并不够完善。很多标准的org-mode写法,都不能用。比如需要直接输出html,却不能用org-mode的 #+BEGIN_HTML#+END_HTML 。代码高亮需要使用hugo的short code,在org-mode里面一个简单的 #+BEGIN_SRC 不就可以搞定了么。

目前来看,hugo已经是能用的唯一方案了。就这样吧,后面如果实在忍不了的话,还是得自己造轮子。

业余摄影师的Olympus M.Zuiko 7-14mm F2.8 Pro使用体验

PB045277

本文是一篇迟到了大概3年的评测。刚入手7-14的时候,其实很想写一篇评测,但是总觉得自己都没怎么用过,也没拍出什么拿得出手的照片,没有资格来评论。现在3年过去了,我已经花了足够的时间去使用这枚镜头,可以称得上是重度用户了吧,那么今天就来谈一谈。

看镜头评测的读者最关心的是什么?从我的角度而言,应该是“如果我买了这枚镜头,能拍出什么样的照片?”。但是大多数都没有讲到这个读者真正想看的地方,仅仅是简单地阐述镜头的各项性能指标。要么就是各个光圈拍一张照片再放大看细节,为了寻找镜头的sweet spot。同时样片拍得也非常烂,让人怀疑这帮做评测的人到底会不会拍照。

Talk is cheap, show me the photo! 所以在这里,我尽量少说废话,多贴照片。

为什么选择7-14

刚开始接触摄影的时候,用的是RX100这款相机。一直沉迷于500px上的风光建筑类照片,但是RX100镜头广角端的等效焦距只有28mm,对风光题材实在无能为力,因此觉得必须入一个超广角了。

当时对各个厂家的系统都不太熟悉,只认得价格。我记得当时A7应该是刚发布没多久,机身的价格就已经非常感人,而且好像也没有什么牛逼的超广角。对比一圈下来,发现m43系统的价格非常适合我这种穷光蛋。刚好赶上了奥林巴斯7-14mm超广角镜头发布,看了很多的新闻和评测,都对这颗镜头赞赏有加。所以就和E-M5 Mark II一起入手了。

现在来看m43算是一个非常非常小众的选择了。再加上松下和徕卡适马成立了L卡口联盟,看起来好像松下老大哥要离M43远去了,只剩奥巴在坚守,m43要灭亡的声音也越来越响。但是,同时也有很多专业摄影师从full frame转到了M43阵营。

画质

作为业余摄影师,照片只是发发Flickr和instagram,对画质的要求不是非常严格。但是最基本的追求还是有的。从照片来看,7-14已经远远超出我的预期,让我拍到了很多非常满意的作品。

P5033274-2

↑ 深圳湾大桥的暮光。f/8.0的光圈,星芒很好看。

PB035212

↑ 建筑内景。

P9150989

↑ 夜景长曝光。

20180526-P5262907

↑ 深圳湾超级总部基地。

万里长征的第一步

之前的博客是自己搭建wordpress,大概维护了有六七年的时间,不过从14年开始基本不怎么写博客了。前段时间上去看,忽然发现被挂马了,点击链接有一定几率会跳转到一些垃圾网站。也尝试过去解决问题,但是主机都已经沦陷了,再怎么清理可能还是会有后门,因此干脆点把主机删掉了。

博客还是要继续。那就再搭一个wordpress吧,反正也轻车熟路了。买个阿里云的主机,再走个备案流程,这样国内也可以顺畅的访问了,看起来是个不错的方案。于是一边备案,一边搞wordpress。找主题,修改css,装乱七八糟的插件。备案的流程也有点麻烦。在这个过程中,兴趣被一点一点的被磨掉了。就是不想写东西。

博客,最重要的是内容,应该先考虑写什么怎么写的问题。wordpress让我分心的东西太多,精力无法集中在写博客这件事上。所以,即便有那么多的插件那么多的主题,也不想选择wordpress了。一个偶然的机会,看到了Sam Altman的博客,是托管在posthaven这个平台的。详细了解了一下发现正是我想要的,5$一个月,永久保存博客,承诺公司不会被出售。就这个了!只需要考虑一件事,那就是写,世界清净了很多。

为什么不选择公众号?在公众号上写东西,有两个非常强烈的感受。一是写出来的东西都不属于我,二是公众号只是微信体系内的一个应用,写出来的东西只是给微信用户看的。我想要的是一个独立的博客。还有另外一个原因,公众号文章里的图片,被压缩之后的质量实在太低了。而且不管作者上传的图片有多小,都再来压缩一次。如果说为了节省带宽考虑,我可以理解。但是为什么不把缩小图片的权利交给作者呢?尽管微信的压缩算法很牛逼,但这种不考虑作者感受的做法还是让人难以接受,尤其是对于喜欢摄影的我来说。

平台有了,接下来就看自己了,但愿能维持一个比较高的产量。不然又要回来打自己的脸了。

谈程序员的学习(二)

今天的主题是“专注”。

张无忌掉下悬崖之后,山谷里只有一本九阳真经,所以他也没得选择,只能把精力放在这上面。但是我们所处的世界不同于那个山谷,充满了各种“诱惑”,这段时间我对“九阳神功”确实比较关注,但是过几天我又听别人说“降龙十八掌”也很厉害,想尝试下。怎么办?

我们一般都认为,像张无忌在山谷里那样集中精力只做一件事情,效果一定是最好的。在短时间内,确实需要保持专注。比如一小时,一天,一周。如果不能集中精力在一件事情上,就会导致大脑频繁地进行“上下文切换”。今天我想学学scala的fastparse,但是又想写写博客,另外还想再继续看sedgewick的算法。最终结果是哪一件都做不好。

但是在长的时间范围上,反而不能太专注。从我的个人经验来看,学习效率最高的时候,往往是最开始接触一项技术的时候。因为面对的是一个全新的领域,自己会在好奇心的驱使下去学习,而不是自己逼着自己前进。

刚接触Haskell的时候,很多functional programming的概念都是第一次听说,就像是打开了通往新世界的大门,学习的欲望是非常强烈的。但是后来持续了两个月之后,慢慢地放弃了。起初看Learn you a haskell for great good这本书的时候,基本的概念还比较容易理解,但是越往后难度越大,再往后基本看不懂了。过了两年之后,看到了陈天的一些文章,重新燃起了对Haskell的热情。再去看Learn you a haskell for great good,原来看不懂的地方居然全明白了,有种大彻大悟的感觉。

在其他的领域上,也有过几次非常类似的经历。仔细想想,真的是自己的智商不够用吗?不,本质的问题不是Haskell太难,而是在第一次学习Haskell的后期,已经失去了对Haskell的热情,只是逼着自己去看书而已。第二次之所以能“大彻大悟”,完全是自己的兴趣使然。

不妨思考一下,养猪场的种猪,为什么每天都能保持高昂的战斗力?因为每天来的母猪都不同。适当的新鲜感,才能让自己持续输出高额的伤害。

“专注”的前提是自己有比较强烈的兴趣。在张无忌所处的环境下,中了寒毒,不练九阳神功就要挂了,保持专注当然是好的。对于我们现代人来说,如果已经不是发自内心地想继续下去的话,要么激励自己,重新点燃兴趣。要么就尽快的pivot,把精力放在其他更感兴趣的事情上。

谈程序员的学习(一)

程序员的学习,总是会带着功利性。要考虑某项技术能否为自己带来实际的好处,比如对目前的工作是否有益,掌握新的技术是否利于自己的加薪升职,是不是符合现在的技术潮流。作为一个“理性人”来说,时间当然要花在刀刃上,有这样的想法没毛病。

大概7年前,看到有人这样说:“工作上可能根本不会写Haskell代码,但这不代表它没有价值。Haskell会为你打开一个全新的世界,颠覆你对编程的认知。学过Haskell可以让你对其他语言的使用也更加娴熟,写出完全不一样的程序。具体的好处呢,这个东西我没法跟你描述,就好像没法向色盲描述红色和绿色一样,只有你自己体验才知道”。这样的描述激发了我的好奇心,然后就入坑Haskell,但是到现在也没能掌握,没体验到上面说的这些好处。

Haskell的书籍不算多,入门的最好的一本是Learn You a Haskell For Great Good,讲实战的是Real World Haskell。这么多年了,我连这两本书都没能看完。思考了下,原因是这样的,对Haskell特别感兴趣的时候,书看的特别快。但是看不了多久,便开始思考“理性人”的问题了:这玩意儿学完究竟有啥用?只要一开始考虑这个问题,就离放弃不远了。所以花了7年的时间,我都入不了Haskell的门。

最近偶然看到倚天屠龙记里面的一段情节,对我有很大的启发。