Bitcron折腾小记(上)

Bitcron,及其前身Farbox,提供了一种写博客的方式。当前,在网络上,有多种不同的写博客的方式,可谓是绚丽多彩,Bitcron便是其中之一。我被一位博主邀请加入,经过一定的使用后,将使用感受写成了一篇文章,名为《简谈Bitcron与博客》,发布于2018年9月8日。

后来,我进行了进一步的折腾。在此,我记录一下折腾Bitcron的过程和感受。

写在前面

Bitcron,和它的前身Farbox,程序本身是不开放的。而且,它不是提供程序(无论是源代码还是二进制程序,哪怕付费授权)供用户安装使用,而是提供“博客托管服务”,英文称之为Blog Service Provider,简称BSP(这个词语,我想应该有不少人都知道)。

因此,他人即便购买了服务器,也无法建立基于Bitcron或Farbox的博客,这两个平台无法被复制。

这是Bitcron与独立博客完全不同的一点。

独立博客,是由用户使用独立博客程序,自行搭建,或由主机商、开发者平台协助搭建,数据掌握在用户自己手中。独立博客的特点是:(1)在更换主机商、开发者平台时,可自由的将数据进行迁移。(2)主流的独立博客程序,因具有开放的特性,因此开发者可根据需要,开发出多种多样的插件,实现各种功能,满足用户的各种特殊需要,例如博文中的超级链接在新窗口中打开,等等。(3)各主流的独立博客程序之间,均可通过官方或非官方提供的具体方法进行数据转换,自由更换所使用的独立博客程序。

wordpress官方有个博客托管平台wordpress.com,尽管不需要用户自行搭建,但托管在这上面的博客可以将数据无缝转移到使用wordpress搭建的独立博客站点上面,这种数据转移并不是跨平台的。

然而,Bitcron平台无法被复制,一旦用户因各方面的原因而自行离开,或官方不再提供服务,用户只能切换到其他平台,为此不得不考虑兼容性这个重大的问题。

Bitcron,是一个动态框架,并不是很多人认为的静态博客。

静态博客,例如hexo、jekyll等,是将markdown文档渲染为html提供访问的。即便gitlab等平台可在线编译,用户仅需要在浏览器上传markdown文档,gitlab等平台也是将文档在线编译为html,以网站的形式供用户访问。

然而,Bitcron,和它的前身Farbox一样,都是动态框架。开发者曾说:“虽说不需要用户部署数据库,但却可以像数据库查询一样,获取指定的数据;这是静态站点无法做到的。”

Bitcron的口号是:“人类创造内容,我们负责渲染”。它渲染的是什么?是markdown文档。

既然Bitcron与静态博客渲染的都是markdown文档,那它们使用的markdown文档是完全兼容的吗?答案是否定的。它们并不完全兼容。这是需要特别注意的问题,这可能影响到博客迁移问题,导致迁移后部分数据丢失、数据紊乱等。我有8年独立博客使用经验,说出这些话并不是吓唬你。

由于我折腾的时间有限,仅针对我自己在短时间内遇到的问题进行叙述,如您遇到我没有提及到的问题,欢迎与我交流。

首先,我们来看博文分类

在静态博客中,博文的分类在markdown文档的文件头中进行标记。格式如下:

categories: 

  • 随笔

如需将博文设置为多个分类,可按这个格式写入多个分类。

但是,Bitcron的分类,并不是这样设置的,且如果这样设置,是不能被识别的。在Bitcron中,按文件夹进行分类。在文件管理器中,在根目录建立不同的文件夹。Bitcron便以文件夹名字作为分类名称,以文件夹的英文名或中文拼音作为文档固定链接。假设,文件管理器中,新建名为“随笔”的文件夹,将文件名为100.md的文件拖入进去。那么,这篇文章的固定链接是:/posts/sui-bi/100

如果要保证博文随时可以迁移,则务必在markdown文档的文件头,依照静态博客通用的格式,对分类参数进行设置。否则,一旦想迁移,逐个修改文件头将是一个大工程。

第二,我们来看文章固定链接

上面提到,文章固定链接的格式是系统默认的,我们能否修改呢?

在静态博客中,提供了多个参数用来自定义固定链接,也可以将参数与其他字符混合(详见后文的例子),用户可按需要进行修改。编译后,会在指定的目录生成对应的文件夹,内有各文章和页面的html文件。如需单独设定某篇文章的链接,可在对应的markdown文档的文件头内,使用permalink参数指定其链接。

在Bitcron中,修改固定链接只有一个选项,在后台控制面板的“常规”选项卡中,将“隐藏日志前缀URL”为“是”。我们来看上文中的假设,文章链接经过这样的设置后,就会变为/sui-bi/100

那可否将文章的链接设置为其他的形式呢?在Bitcron官方文档中,提到了url参数。据文档表述,这个参数与静态博客通用的permalink参数具有相同的功能。

假设:(1)从typecho或wordpress等博客系统迁移到Bitcron,提前将所有文章转换成了markdown文档(例如使用hexo插件转换),不希望改变文章的固定链接,以匹配被导入到disqus的thread(链接到对应的评论);(2)从静态博客迁移到Bitcron,且原来的固定链接设置与Bitcron默认的不同,不希望改变文章的固定链接,以防无法连接对应的评论。

以我的博客为例。在折腾的过程中,我把当前博客上的100余篇文章转换成了markdown文档,仅用了3秒,如果不考虑评论,当即可以转入静态博客,只需要打开静态博客的总配置文件,将固定链接格式设置为/archives/:title.html

如果迁移到Bitcron,首先,需要将这100余篇文章的markdown文档,手动、逐个修改文件头,以下面的格式逐个指定每篇文章的链接:

url: /archives/.html

(注:为文章对应的{slug})

才能保证与原来的相同。然后,再按不同分类放入不同的文件夹。这是一个大工程,恐怕3个小时都弄不完。

有人或许会说,Bitcron官方说可以将xml文件转入,但经过我多次测试,官方网站上面提供的方法均无效。

假设从Bitcron迁移到静态博客,这里则不需要修改,因为静态博客不识别url参数,而是通用的permalink参数。如果仅仅是为了保证链接不变,迁移到静态博客时,修改总配置文件中的固定链接格式即可统一全站的链接格式,包括按分类设置的格式,根据自己的需求设置即可。

第三,我们来看文档与页面

静态博客中,将文档与页面的markdown文档放在不同的位置即可实现区分。

在Bitcron中,需要在文件头中对页面进行指定。在Bitcron的另一处官方文档中,对页面格式进行了说明:如果某篇文档需要被设置为页面,而不是博文,则需要在文件头中,指定status: page才可以。同时,可能还需要依照上文所述来手动指定页面的固定链接。

经过这样的设置后,导航栏上面的页面会按设置显示出来,页面的链接后面会出现一串特殊字符:?type=page。且在文章页面的导航栏,会出现其他页面看不到的菜单:“分类”。点击“分类”,提示404(页面没找到)。

如果要解决这两个问题,需要在Bitcron后台控制面板的“导航”选项卡中,自定义页面链接。此处务必注意:设置的自定义链接,需要与页面的markdown文档中url参数指定的链接相同;而且,可能需要指定一个“首页”链接,链接地址直接写/,否则,在部分主题模板中,无法通过页面导航链接返回首页。自定义链接的位置,可以在选项卡中拖动调节。如果没有一定的经验,是看不出这里可以拖动调节的。

第四,评论系统的开启和禁用

Bitcron自带一个评论系统,这个评论系统的代码是不在主题模板中的,而是在主题模板中通过一行代码与系统内的评论进行接通。

系统自带的评论系统,可将访客的留言写入csv文件,存储在后台。这个csv文件,无法迁移到其他任何平台,也不能导入mysql等数据库,它和mysql等数据库识别的csv不是同一种类型。因此,为了便于迁移,使用第三方评论系统是有必要的。在后台控制面板,可以加入第三方评论代码。

在后台控制面板中,可以开启或禁用全站的评论。

那如果想禁用单篇文章或单个页面的评论呢?

静态博客采用的方法是:在markdown文档的文件头,使用如下参数:

comments: false

但Bitcron中,这个参数无效。官方文档对此没有任何提及,咨询了别人以后,得到的结果是,在文件头使用

comment: no

来禁用Bitcron内单篇文章或单个页面的评论。

经测试,这个方法对在后台控制面板中设置的第三方评论无效

为何这个参数只能禁用系统自带的评论?除了询问开发者之外,我无从得知。

第五,图床问题

图片消耗的流量较大,且Bitcron对流量的限制较大,因此选择合适的图床很重要,尽量不要把图片放在Bitcron。我见到有博主上传32张图之后,一夜之间他的Bitcron账户被扣费73元

针对图床,有很多话可以说。我的建议是,如果在Bitcron写博客,要选择合适的、稳定的图床,且外链不要轻易更换。为何呢?

如果使用数据库(如mysql、mariadb等)存储数据,更换图床后,当图片名字及文件夹结构不变,只主链接变化时,可以在数据库管理器(如phpmyadmin)中执行一条命令(网上有教程),一键更换所有图片链接,因此更换图床毫不费力。我已经按此方法对图片链接进行了多次更换。

但如果是一堆markdown文档,则需要逐个打开进行更换,工作量很大。我见过一位入驻在Bitcron的博主曾试图更换800多篇文章内的图片链接

第六,定时文章问题

定时文章,指的是提前将文章提交到博客,将文章的发布日期设置为未来的某个时间。当这个时间到达时,文章便可自动发布出来。

WordPress、typecho等,均支持定时文章。静态博客,也支持定时文章。未到达指定的时间时,文章不会被显示。如果强制访问文章的固定链接,会提示“404”(页面没找到)。

但是,Bitcron不支持定时文章。即使将文章的发布日期设置为未来的时间,也会被立刻显示出来,访客可以浏览,可以评论,页面显示的文章发布时间是博主设定的时间。

在《Bitcron折腾小记(下)》中,我还要再提及几个重要的问题。

相关文章:《简谈Bitcron与博客》

8 条回复

Unee Wang 2018年12月5日 回复

以前用justwriting自建独立博客,使用多说评论,多说死了后心也冷了,就用bitcron了,实在不想折腾评论,丢就丢呗,心也死了。
独立博客的定义,我觉得应该是独立的域名+自由的写作,bitcron应该算独立博客。
图床真是个大问题,我之前也吃过亏,现在用droplr作为图床,迁移的时候文档直接复制走就好,不用担心链接失效,反而七牛不知怎的,把我的图片都删了,还好都有备份,换图床是个麻烦。
我基本上不会考虑静态博客,每个用来写作的设备都要安装一个编译环境,还要时时保持源md文件同步,还要有可靠的上传途径,在btsync能用的时候还好,现在因为btsync的死亡,心又死一次。

林海草原 2018年12月6日 回复

你认为的独立博客的概念,实际上网易的lofter也做过,只不过后来因监管政策的影响,取消了独立域名的绑定而已。但是它是独立的博客吗?这个平台同样封闭,只是除了评论以外,其他数据比较方便迁移而已。
使用第三方图床总会受到各种各样的影响,比如强或者境内网络监管的政策,或者他们的服务调整。我的图在github上面,这个当然并不会很轻易的调整政策。如果需要更换的话,我只需要在数据库中执行一条命令,或者把数据库下载下来,在里面ctrl+h。

林海草原 2018年12月6日 回复

另外静态博客并不需要在每一个设备上都保持一个编译环境。你可能没有仔细看我的文章,我在前面提到了一个在线编译平台gitlab,从官方文档可以看出,它是支持在线编译的,你只需要在网页端上传一个markdown文档。

行吟游子 2018年12月7日 回复

看得我早点想出坑了,以后东西越来越多,想出坑更难。

林海草原 2018年12月8日 回复

保护好数据。

fffou 2018年12月7日 回复

很久之前邀请别人用farbox和bircron,可惜他们都没坚持下来,貌似这个平台坚持最久的其中一个叫水八口什么的

林海草原 2018年12月8日 回复

外面的想进去,里面的人想出来。水八口是高度狂热的用户,而且是一位高手,写出了大概10个针对bitcron平台的主题模板。

Unee Wang 2018年12月9日 回复

我坚持的很久啦,最早从国外的用起,跟现在的bitcron一脉相承,所以直接迁移,从13年开始吧,farbox都是刚出

发表回复