谢乾坤 | Kingname

给时光以生命。

Coney是一个非常优秀的Hexo主题,作者的网站http://gengbiao.me/然而在使用的过程中,我发现作者有一些地方没有说清。因此在这里写一些我使用中发现的问题和解决方法。

标签

作者并未说明多个标签之间应该以何种方式分隔,我尝试使用逗号,空格以及方括号均不能正确分隔标签。后来尝试使用一种笨的方法:

1
2
3
tags: 标签一
tags: 标签二
tags:标签三

还有一种聪明的办法,就是:

1
tags: [标签一,标签二,标签三]

标题

如图,标题显示异常


出现这种问题,是由于title中加了双引号,去掉双引号以后正常。但是不知道这个双引号是怎么加上去的。

页面

模板只有两个页面,如果想添加更多页面,就像这个博客上面一样,可以
在博客根目录下面使用git bash输入:

1
hexo n page About

这条命令新建了一个“关于”页面,在source下会生成一个About文件夹,文件夹里面有一个index.md 通过编辑index.md就可以编写“关于”页面。如图:

接下来要如何将这个页面添加到博客上面呢?

可以修改themes/coney/_config.yml

1
2
3
4
5
6
7
   ##### Menu
menu:
首页: /
归档: /archives
分类: /categories
标签: /tags
关于: /About

如图是我修改以后的效果:

最后实际显示效果如下:

空格

也许是Hexo优化方面的问题,空格在文件修改的过程中非常重要。还是以上面的添加页面为例:

1
2
3
4
5
6
7
   ##### Menu
menu:
首页: /
归档: /archives
分类: /categories
标签: /tags
关于:/About #这里少了一个空格

如果写成这样,在使用

1
hexo g

生成静态文件的过程中,就会出错,如下图:

因此,在修改文件的过程中,一定不能漏掉空格。

评论

Coney使用多说的评论系统。主题作者对多说系统提供的官方代码做了一些修改,从而导致了一个隐藏的bug。

在themes\coney\layout_partial下的after_footer.ejs文件的112行代码:

1
var duoshuoQuery = {short_name:"<%= theme.duoshuo.short_name %>"};

主题作者的本意是通过theme.duoshuo.short_name 调用 _config.yml中的short_name。作者的名字是英文,因此不会出问题,但是当short_name的值为中文时,会导致整个评论框消失。

然而,coney作者告诉我,short_name仅仅是一个标记,在评论中并不会显示出来,因此只要随便写个英文上去就好了。

在使用Python做爬虫的过程中,经常遇到字符编码出问题的情况。

1
UnicodeEncodeError: 'ascii' codec can't encode character u'\u6211' in position 0: ordinal not in range(128)

针对这种情况,网上已经有很多原理性的分析了,我在此就不一一列举。然而,我相信很多人,即便看完原理以后也不知道怎么解决。

我自己琢磨出一种快速解决的方法:

1
2
3
4
5
6
def get_page_sourse(url):
req = urllib2.Request(url)
for key in headers:
req.add_header(key,headers[key])
content = urllib2.urlopen(req).read()
return content

这个函数使用urllib2扒取了一个网页的源代码。并返回了这个源代码。当我们使用文件操作准备把content的内容写到一个txt文件中时,就会出现编码错误。

在这种情况下,如何快速的排除问题?

只需要将最后一行改成下面这样就可以了。

1
return content.decode('A','ingore').encode('B','ignore')

这里,A和B分别可以使gbk, gb2312,utf-8,它们排列组合一下,一共只有6种组合方式

例如:

1
2
3
return content.decode('gbk','ingore').encode('utf-8','ignore')
return content.decode('utf-8','ingore').encode('gb2312','ignore')
...

我使用这种方式,解决了所有的我遇到的Python的编码错误。虽然是一个一个的试,但是也用不了2分钟就能搞定。

至于背后原理什么的,程序跑通了以后再慢慢研究吧。

0%