Atom

思考、故事和创意

博客

博客评论

Ghost 这个博客系统默认不支持评论、留言功能,只能借助第三方评论系统,我在用过 Disqus, 多说和畅言之后,决定干脆还是不要评论功能了。

最首要的原因是我根本不需要关心评论和留言,因为几乎没有人来这里发表评论和留言。有些流量比较大的博客也关闭了评论功能,在知乎上“博客是否应该有评论?”这个问题里看到一个比较有价值的说法。

首先,博客始祖 http://Blogger.com 最初是没有评论的。所以不存在“博客有评论是天经地义的”这么一说。

不开评论的好处:
一、不会被读者的偏好牵着走。
二、你可以完全控制你博客上的一切(假设你的博客是自架的)。
三、发评论的智性成本太低,必然导致评论水准普遍不高。
四、关闭评论不等于关闭耳朵。想讨论的人可以另行发文讨论(反向链接机制可以确保原文作者能看到)。

作者:不鳥萬如一
链接:博客是否应该有评论?
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

有评论功能并不能带来良好的讨论氛围,也不能让自己发布更好的博客文章,关闭了评论也有其他渠道进行沟通。

还有些客观原因,让你即便想开启评论留言功能,也没有很好的办法;即便能够开启,也达不到理想的展示效果。

Disqus 界面和用户群相对来说是最好的,但是处于被墙状态。有人开发了代理,折腾一番可以使用,但是用户如果不想匿名留言,要登录 Disqus 的话,并不方便,它不像国内的第三方罢论系统可以用 QQ,微信,微博这些帐号登录,可选的有 Google, Facebook, Twitter 和 Disqus 本身的帐号体系。

国内的多说、网易云跟帖停止服务了,我选择畅言试了下。

对畅言评论框的可配置项太少了,也没有自定义 CSS 功能,我在网络上搜索能查到相关的文章,这里面甚至有畅言的官方文档。但是现在产品和文档已经有部分对不上了,似乎畅言把评论框的界面大改,把一些功能删掉了。结果就是我只能在评论框深色、浅色主题中做出选择,不是很满意。再加上前面说的主观因素,我对评论的需求很微弱,于是,畅言的评论框在这里展示了不到一天后,我就把它撤下了。

有需要交流的,可以在联系页面找我。

又用回了 Ghost

用 Hugo 作为博客工具已经有挺长一段时间了,当时是从 Ghost 转向了 Hugo,在前段时间,我终于又转回了 Ghost。

主要原因是 Ghost 出了 1.0 版,并且一同发布了一个用于安装、更新 Ghost 的命令行工具,非常方便好用。以往更新 Ghost 程序的麻烦事,现在基本上遇不到了。安装就是 ghost install, 更新就是 ghost update,安装时连 nginx 配置,SSL 证书等都给弄好了,在某些时候会要求 sudo,比如添加 nginx 配置,比如添加系统的启动项,让 Ghost 开机启动。整个过程比以往安装 Ghost 简单不少。以往更新 Ghost 时需要手工或者脚本跑若干条命令,现在只需要 ghost update 就可以了。

另外一个回归 Ghost 的原因是,Ghost 作为一个博客系统,可谓是“恰到好处”。不像 Wordpress 那样功能繁多到臃肿,也不像一票静态博客生成工具那样总让我感觉缺点什么,比如方便的标签功能,对多个作者的支持,统一的后台管理……静态博客生成工具有它的好处,但是上面提得这些功能,绝不是它的优势。有个后台可以浏览管理文章、标签,修改主题,个人资料,这种体验比静态博客生成工具那种所谓 GEEK 的体验好多了。可能是因为我年纪大了吧。

Ghost 后台的编辑器非常好用。用静态博客生成工具,你可以选择任何你喜欢的 Markdown 编辑器,这是个经常听说的噱头,实际上,在写博客时,我需要有一个可以跟其他编辑任务区分开来的编辑器,让我在写博客时,有区别于其他任务的感受。所以,在打开某个我惯用的 Markdown 编辑器时,很可能我的意识并没有在认真写博客。而 Ghost 后台的编辑器给了我最好的写博客的体验。

总之,我是懒得折腾了,也不在乎静态页面的“极端性能”了,更多是在乎自己的使用体验。

Tiny Tiny RSS

Google Reader 死后的一段时间,我试用了好几个 RSS 阅读器,期望能够代替它,最终是 Inoreader 胜出。一直到上周,我把 Inoreader 换成了自建的 Tiny Tiny RSS:一是因为 Inoreader 的速度不太理想,二是 Inoreader 免费版的各种限制和广告。

Tiny Tiny RSS

Tiny Tiny RSS 的安装没有什么坑,主要参考了这几篇文章

  1. 官方的安装文档
  2. DigitalOcean 社区的教程 How To Install Tiny Tiny RSS with Nginx for Debian 7 on a VPS

官方安装文档较为简略。DigitalOcean 社区的那篇教程很详细,仅这一篇足矣。

另外一件必须要做的事情是定期更新订阅源,照着官方文档做即可,推荐的做法是第一种,”Update daemon”,以后台服务的形式更新。第二种做法是利用 crontab,第三种方法用于单用户模式,在 Web 后台手动更新,不推荐这么做。

nginx 配置

这里可能会有个坑,按照上述 DigitalOcean 社区教程配置完 nginx 后,打开页面总是状态 200 的空白内容,之后在 stackoverflow 上找到了答案,把

include /etc/nginx/fastcgi_params;

替换为

include /etc/nginx/fastcgi.conf;

两个文件的区别就是后者多了这一行

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

完整的相关配置如下

location / {
	index           index.php;
}

location ~ \.php$ {
	try_files $uri = 404;
	fastcgi_pass unix:/run/php/php7.0-fpm.sock;
	fastcgi_index index.php;
	#include /etc/nginx/fastcgi_params;   # with next line
	#fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
	# or
	include /etc/nginx/fastcgi.conf;
}
location /cache {
	deny all;
}

location = /config.php {
	deny all;
}

至于为什么有 fastcgi_paramsfastcgi.conf 两个文件,可以到这里查看下它们之间有怎样的历史纠葛。

科学上网

我把 Tiny Tiny RSS 放在了腾讯云国内云主机上,把以前订阅的源搬过来之后,发现了一个尴尬的问题:有些被“认证”的订阅源,在国内是无法访问到的,需要科学上网。好在 Tiny Tiny RSS 留了一条路。给主目录下 config.php 文件加上如下一行:

`define('_CURL_HTTP_PROXY', '127.0.0.1:8080');

后面的 127.0.0.1:8080 是我在云主机上用 ss + polipo (socks5 转 http) 搭的代理。这样 Tiny Tiny RSS 就可以拉取、更新被“认证”的源了。

主题

给 Tiny Tiny RSS 找了一个看得过去的主题,在后台配置管理处却没有它的踪影。后来在另外一个主题的 FAQ 中发现了缘由。

因为主题版本号和 Tiny Tiny RSS 版本号对不上,有两种办法可以看到版本号

  1. Tiny Tiny RSS 目录里 include/version.php 中写着 define('VERSION_STATIC', '17.4');
  2. 在 Tiny Tiny RSS 的 Web 后台最底部可以看到版本号

主题的 css 文件里写着 /* supports-version:17.1 */,一目了然,非常 dirty 得手动把 17.1 改成 17.4 了(当前该主题在 github 上已更新支持 17.4),问题被粗暴解决,倒没发现什么毛病。

延迟加载 Disqus

按照 Disqus 的文档把提供的代码添加到 ghost 的主题文件,然后进行一些修改,让 Disqus 能够延迟加载,以前是用的点击按钮加载 Disqus 的方式,现在改成了在滚动到某个位置时加载 Disqus。

把原有 Disqus 相关的代码改成这样,定义函数而不执行它。

<script type="text/javascript">
    var disqus = {
        load : function disqus() {
            /* * * CONFIGURATION VARIABLES * * */
            var disqus_shortname = 'xxxxxxxxxx';
            if (typeof DISQUS !== 'object') {
                /* * * DON'T EDIT BELOW THIS LINE * * */
                (function() {
                    var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
                    dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
                    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
                })();
            }
        }
    }
</script>

在这段代码之后找个合适的位置添加下面的关键代码

<script type="text/javascript">
    (function (){
        var content = document.querySelector('.post-content');
        var extra_height = (content.getBoundingClientRect().top + window.scrollY + content.clientHeight) / 4;
        var footer_top = document.querySelector('.post-footer').getBoundingClientRect().top + window.scrollY;
        var load_pos = footer_top - extra_height;
        document.addEventListener('scroll', function _func() {
            if (load_pos - window.scrollY <= window.screen.availHeight) {
                disqus.load();
                document.removeEventListener('scroll', _func);
            }
        });
    })();
</script>

定义了一个匿名函数,立即执行它。前面几行代码计算了一个比较合适的位置,然后给这个匿名函数内,给滚动事件绑定了一个 _func 函数,在这个 _func 函数内,当滚动到计算的位置时,调用 Disqus 的加载函数,随后在函数内就解绑,即把函数名 _func 作为 removeEventListener 的第二个函数。

一些跟网站相关的好东西

记录、以及推荐一下最近折腾博客用到的一些网站/工具。

高质量图片

博客首页,和文章配图,对网站整体的风格影响很大。

  • [Walllhaven](http://alpha.wallhaven.cc/) 这是个壁纸站,质量非常高。(另外有 NSFW 内容)。[Wallbase.cc](http://wallbase.cc) 的继承者

    查看网页在不同设备上的显示效果

    稍微有点追求就得做移动端的适配吧。这两个网站的工具很有用,不用买 iPhone 6S 就能知道我的页面在 iPhone 6S 上是什么样子了。

    网站速度检测

    打开一个页面经过 DNS 解析、建立 TCP 连接、数据传输、页面加载等过程,这些工具可以检测网站哪里是瓶颈,哪里可以进行优化,比如服务器响应时间、gzip 压缩开启、合并多个 css 或者 js 文件、页面各种元素的加载顺序对速度的影响,等等。

    • PageSpeed Insights Google 出品,除了速度检测,还能检查移动端的适配做得怎么样,属于评分中的“用户体验”这一项。比如它会建议网页上两个按钮的距离不要太小,容易按错。不过也不要太当回事,有些网站“用户体验”能得 100 分,但是丑得不像话(http://sunzhongwei.com),估计是照本宣科的结果。
    • Website speed test Pingdom 的工具
    • WebPagetest 很老的网站性能测试工具

    SSL

    • SSL Server Test 检查 HTTPS 的部署情况,争取拿到 A+。
    • StartSSL 可以免费申请 SSL 证书的地方
    • Let’s Encrypt 很多大厂在背后的一个项目,目标把 HTTPS 的部署变得简单,免费,推动 HTTPS 的普及,2015 年 11 月全面开放。

    其他

    • IcoMoon App 制作自己的 Icon Font。这个博客文章下方的分享到微博、QQ 的图标是从 Font Awesome 找出来的,通过 IcoMoon App 把这两个图标和原本 casper 主题自带的图标字体文件进行了合并。