Skip to content

Commit de1c302

Browse files
BeiYuuBeiYuu
BeiYuu
authored and
BeiYuu
committedMay 22, 2016
the new layout
1 parent ea74eeb commit de1c302

35 files changed

+802
-1486
lines changed
 

‎.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
_site

‎404.html

+14-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
11
---
2-
layout: page
3-
title: 出错啦!
2+
layout: default
3+
title: 出错啦!
44
---
5-
<h1>出错啦。。。</h1>
65

7-
<p>看看别的吧先</p>
6+
<body>
7+
<div class="post-wrapper">
8+
<h1 class="post-title" style="margin-bottom: 50px;"><a href="{{ page.url }}" title="{{ page.title }}">{{ page.title }}</a></h1>
9+
<ul>
10+
{% for post in site.categories.blog %}
11+
<li>
12+
<a href="{{ post.url }}" class="title">{{ post.title }}</a>
13+
</li>
14+
{% endfor %}
15+
</ul>
16+
</div>
17+
</body>

‎_config.yml

-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
auto: true
2-
3-
markdown: rdiscount
4-
pygments: true
5-
paginate: 8
61
permalink: /:title
72

83
title: BeiYuu.com

‎_includes/about.html

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<div class="about-wrapper">
2+
<iframe width="100%" height="75" class="share_self" frameborder="0" scrolling="no" src="http://widget.weibo.com/weiboshow/index.php?language=&width=0&height=75&fansRow=2&ptype=1&speed=0&skin=5&isTitle=0&noborder=0&isWeibo=0&isFans=0&uid=1855270953&verifier=375b89d6&dpc=1" style="margin: 30px 0;"></iframe>
3+
4+
<div class="aboutme">
5+
<h2><a href="/">所有文章</a></h2>
6+
<ul>
7+
{% for post in site.categories.blog %}
8+
<li>
9+
<a href="{{ post.url }}" class="title">{{ post.title }}</a>
10+
</li>
11+
{% endfor %}
12+
</ul>
13+
</div>
14+
</div>

‎_includes/disqus.html

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<div id="disqus_container">
2+
<div class="share-con">
3+
<script type="text/javascript" charset="utf-8">
4+
(function(){
5+
var param = {
6+
url: 'http://beiyuu.com{{ page.url }}',
7+
type: '6',
8+
title: '《{{ page.title }}》' + '- {{ page.description }}',
9+
ralateUid: '1855270953',
10+
rnd:new Date().valueOf()
11+
}
12+
var temp = [];
13+
for( var p in param ){
14+
temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
15+
}
16+
document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="86" height="16"></iframe>')
17+
})()
18+
</script>
19+
</div>
20+
21+
<a href="#" class="comment" onclick="return false;">点击查看评论</a>
22+
<div id="disqus_thread"></div>
23+
</div>

‎_includes/style.css

+569
Large diffs are not rendered by default.

‎_layouts/default.html

+4-36
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,16 @@
11
<!DOCTYPE html>
22
<html>
3-
<head>
4-
<!--
5-
* Author: BeiYuu
6-
-->
3+
<head>
74
<meta charset="utf-8" />
85
<title>{% if page.title %}{{ page.title }} | {% endif %}{{ site.title }}</title>
96
<meta name="author" content="BieYuu" />
107
<meta name="renderer" content="webkit">
118
<meta name="description" content="BeiYuu's Blog" />
129
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
13-
<link rel="stylesheet" href="/css/default.css" type="text/css" />
1410
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
1511
<link rel="alternate" type="application/atom+xml" title="Recent Entries" href="{{ site.feed }}" />
16-
<script src="/js/jquery-1.7.1.min.js" type="text/javascript"></script>
17-
</head>
18-
<body>
12+
<style>{% include style.css %}</style>
13+
</head>
1914

20-
<div class="home-menu">
21-
<div class="home-icon-con">
22-
<a class="home-menu-icon" href="/">BeiYuu</a>
23-
<a class="home-follow" href="#" title="Contact Me">+</a>
24-
</div>
25-
<div class="home-contact">
26-
<a href="http://weibo.com/beiyuu/" target="_blank" style="margin-left:-5px;"><img src="http://www.weibo.com/favicon.ico" alt="" width="25"/></a>
27-
<a href="http://www.douban.com/people/beiyuu/" target="_blank" style="text-align:center;"><img src="http://www.douban.com/favicon.ico" alt="" width="22"/></a>
28-
<a href="http://instagram.com/beiyuu/" target="_blank" style="text-align:right"><img src="http://d36xtkk24g8jdx.cloudfront.net/bluebar/00c6602/images/ico/favicon.ico" alt="" width="22"/></a>
29-
</div>
30-
</div>
31-
32-
{{ content }}
33-
34-
<script type="text/javascript">
35-
$(function(){
36-
$('.home-follow').click(function(e){
37-
e.preventDefault();
38-
39-
if($('.home-contact').is(':visible')){
40-
$('.home-contact').slideUp(100);
41-
}else{
42-
$('.home-contact').slideDown(100);
43-
}
44-
});
45-
})
46-
</script>
47-
</body>
15+
{{ content }}
4816
</html>

‎_layouts/home.html

-48
This file was deleted.

‎_layouts/post.html

+11-45
Original file line numberDiff line numberDiff line change
@@ -2,50 +2,16 @@
22
layout: default
33
---
44

5-
<link rel="stylesheet" href="/js/prettify/prettify.css" />
6-
<style type="text/css">
7-
body { background:#e8e8e8; }
8-
@media screen and (max-width: 750px){
9-
body { background:#fff; }
10-
}
11-
@media screen and (max-width: 1020px){
12-
body { background:#fff; }
13-
}
14-
</style>
5+
<body class="body-post">
6+
<div class="post-wrapper">
7+
<h1 class="post-title"><a href="{{ page.url }}" title="{{ page.title }}">{{ page.title }}</a></h1>
8+
<p class="post-date">{{ page.date|date:"%Y-%m-%d" }}</p>
9+
{{ content }}
10+
{% include disqus.html %}
11+
</div>
1512

16-
<div id="content">
17-
<div class="entry">
18-
<h1 class="entry-title"><a href="{{ page.url }}" title="{{ page.title }}">{{ page.title }}</a></h1>
19-
<p class="entry-date">{{ page.date|date:"%Y-%m-%d" }}</p>
20-
{{ content }}
21-
</div>
13+
{% include about.html %}
2214

23-
<div class="sidenav">
24-
<iframe width="100%" height="75" class="share_self" frameborder="0" scrolling="no" src="http://widget.weibo.com/weiboshow/index.php?language=&width=0&height=75&fansRow=2&ptype=1&speed=0&skin=5&isTitle=0&noborder=0&isWeibo=0&isFans=0&uid=1855270953&verifier=375b89d6&dpc=1"></iframe>
25-
</div>
26-
27-
<div class="sidenav">
28-
<h2>Blog</h2>
29-
<ul class="artical-list">
30-
{% for post in site.categories.blog%}
31-
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
32-
{% endfor %}
33-
</ul>
34-
35-
<h2>Opinion</h2>
36-
<ul class="artical-list">
37-
{% for post in site.categories.opinion%}
38-
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
39-
{% endfor %}
40-
</ul>
41-
42-
<h2>Project</h2>
43-
<ul class="artical-list">
44-
{% for post in site.categories.project%}
45-
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
46-
{% endfor %}
47-
</ul>
48-
</div>
49-
</div>
50-
51-
<script src="/js/post.js" type="text/javascript"></script>
15+
<script src="/js/jquery-1.7.1.min.js" type="text/javascript"></script>
16+
<script src="/js/post.js" type="text/javascript"></script>
17+
</body>

‎_posts/blog/2011-12-18-why-blog.md ‎_posts/2011-12-18-why-blog.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,11 @@ Godaddy一切都很完美,直到遇到了GFW,原因你肯定懂。前段时
7272
GitHub是一个伟大的产品,[GitHub Pages][]是他伟大的一部分,GitHub Pages基于[Jekyll][]博客引擎,当我深入的研究了他之后,我深深的想给Jekyll的作者一个拥抱,列举一下Jekyll的优点:
7373

7474
- 可以单独放在自己的服务器上,他也是GitHub Pages的基础,质量可靠
75-
- 将博客最重要的功能抽取出来,去除了[WordPress][]的复杂、烦躁的东西,一切都是清晰可控的
76-
- 可以方便的使用[Markdown][8]等其他标记语言
75+
- 将博客最重要的功能抽取出来,去除了[WordPress][]的复杂、烦躁的东西,一切都是清晰可控的
76+
- 可以方便的使用[Markdown][8]等其他标记语言
7777
<li>清晰、简洁的文件组织,完美的永久链接方案,既漂亮、又可定制</li>
7878
<li>博客静态化,速度快</li>
79-
- [Jekyll][]是完美的
79+
- [Jekyll][]是完美的
8080

8181
### Disqus
8282

‎_posts/blog/2012-02-22-github-pages.md ‎_posts/2012-02-22-github-pages.md

+31-29
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,14 @@ Git是版本管理的未来,他的优点我不再赘述,相关资料很多
5353
在Windows下,打开Git Bash,其他系统下面则打开终端(Terminal):
5454
![Git Bash](/images/githubpages/bootcamp_1_win_gitbash.jpg)
5555

56-
###1、检查SSH keys的设置
56+
### 1、检查SSH keys的设置
5757
首先我们需要检查你电脑上现有的ssh key:
5858

5959
$ cd ~/.ssh
6060

6161
如果显示“No such file or directory”,跳到第三步,否则继续。
6262

63-
###2、备份和移除原来的ssh key设置:
63+
### 2、备份和移除原来的ssh key设置:
6464
因为已经存在key文件,所以需要备份旧的数据并删除:
6565

6666
$ ls
@@ -69,7 +69,7 @@ Git是版本管理的未来,他的优点我不再赘述,相关资料很多
6969
$ cp id_rsa* key_backup
7070
$ rm id_rsa*
7171

72-
###3、生成新的SSH Key:
72+
### 3、生成新的SSH Key:
7373
输入下面的代码,就可以生成新的key文件,我们只需要默认设置就好,所以当需要输入文件名的时候,回车就好。
7474

7575
$ ssh-keygen -t rsa -C "邮件地址@youremail.com"
@@ -84,7 +84,7 @@ Git是版本管理的未来,他的优点我不再赘述,相关资料很多
8484
最后看到这样的界面,就成功设置ssh key了:
8585
![ssh key success](/images/githubpages/ssh-key-set.png)
8686

87-
###4、添加SSH Key到GitHub:
87+
### 4、添加SSH Key到GitHub:
8888
在本机设置SSH Key之后,需要添加到GitHub上,以完成SSH链接的设置。
8989

9090
用文本编辑工具打开id_rsa.pub文件,如果看不到这个文件,你需要设置显示隐藏文件。准确的复制这个文件的内容,才能保证设置的成功。
@@ -97,7 +97,7 @@ Git是版本管理的未来,他的优点我不再赘述,相关资料很多
9797

9898
PS:如果需要配置多个GitHub账号,可以参看这个[多个github帐号的SSH key切换](http://omiga.org/blog/archives/2269),不过需要提醒一下的是,如果你只是通过这篇文章中所述配置了Host,那么你多个账号下面的提交用户会是一个人,所以需要通过命令`git config --global --unset user.email`删除用户账户设置,在每一个repo下面使用`git config --local user.email '你的github邮箱@mail.com'` 命令单独设置用户账户信息
9999

100-
###5、测试一下
100+
### 5、测试一下
101101
可以输入下面的命令,看看设置是否成功,`git@github.com`的部分不要修改:
102102

103103
$ ssh -T git@github.com
@@ -114,15 +114,15 @@ PS:如果需要配置多个GitHub账号,可以参看这个[多个github帐
114114

115115
Hi <em>username</em>! You've successfully authenticated, but GitHub does not provide shell access.
116116

117-
###6、设置你的账号信息
117+
### 6、设置你的账号信息
118118
现在你已经可以通过SSH链接到GitHub了,还有一些个人信息需要完善的。
119119

120120
Git会根据用户的名字和邮箱来记录提交。GitHub也是用这些信息来做权限的处理,输入下面的代码进行个人信息的设置,把名称和邮箱替换成你自己的,名字必须是你的真名,而不是GitHub的昵称。
121121

122122
$ git config --global user.name "你的名字"
123123
$ git config --global user.email "your_email@youremail.com"
124124

125-
####设置GitHub的token
125+
#### 设置GitHub的token
126126

127127
2012-4-28补充:新版的接口已经不需要配置token了,所以下面这段可以跳过了
128128

@@ -138,25 +138,25 @@ Git会根据用户的名字和邮箱来记录提交。GitHub也是用这些信
138138

139139
如果你改了GitHub的密码,需要重新设置token。
140140

141-
###成功了
141+
### 成功了
142142
好了,你已经可以成功连接GitHub了。
143143

144144
## 使用GitHub Pages建立博客
145145
与GitHub建立好链接之后,就可以方便的使用它提供的Pages服务,GitHub Pages分两种,一种是你的GitHub用户名建立的`username.github.io`这样的用户&组织页(站),另一种是依附项目的pages。
146146

147-
###User & Organization Pages
147+
### User & Organization Pages
148148
想建立个人博客是用的第一种,形如`beiyuu.github.io`这样的可访问的站,每个用户名下面只能建立一个,创建之后点击`Admin`进入项目管理,可以看到是这样的:
149149
![user pages](/images/githubpages/user-pages.png)
150150
而普通的项目是这样的,即使你也是用的`othername.github.io`
151151
![other pages](/images/githubpages/other-pages.png)
152152

153153
创建好`username.github.io`项目之后,提交一个`index.html`文件,然后`push`到GitHub的`master`分支(也就是普通意义上的主干)。第一次页面生效需要一些时间,大概10分钟左右。
154154

155-
生效之后,访问`username.github.io`就可以看到你上传的页面了,[beiyuu.github.com][7]就是一个例子。
155+
生效之后,访问`username.github.io`就可以看到你上传的页面了,[beiyuu.github.io][7]就是一个例子。
156156

157157
关于第二种项目`pages`,简单提一下,他和用户pages使用的后台程序是同一套,只不过它的目的是项目的帮助文档等跟项目绑定的内容,所以需要在项目的`gh-pages`分支上去提交相应的文件,GitHub会自动帮你生成项目pages。具体的使用帮助可以参考[Github Pages][]的官方文档:
158158

159-
###绑定域名
159+
### 绑定域名
160160
我们在第一部分就提到了在DNS部分的设置,再来看在GitHub的配置,要想让`username.github.io`能通过你自己的域名来访问,需要在项目的根目录下新建一个名为`CNAME`的文件,文件内容形如:
161161

162162
beiyuu.com
@@ -169,12 +169,12 @@ Git会根据用户的名字和邮箱来记录提交。GitHub也是用这些信
169169

170170
设置成功后,根据DNS的情况,最长可能需要一天才能生效,耐心等待吧。
171171

172-
##Jekyll模板系统
172+
## Jekyll模板系统
173173
GitHub Pages为了提供对HTML内容的支持,选择了[Jekyll][]作为模板系统,Jekyll是一个强大的静态模板系统,作为个人博客使用,基本上可以满足要求,也能保持管理的方便,你可以查看[Jekyll官方文档][8]
174174

175175
你可以直接fork[我的项目][11],然后改名,就有了你自己的满足Jekyll要求的文档了,当然你也可以按照下面的介绍自己创建。
176176

177-
###Jekyll基本结构
177+
### Jekyll基本结构
178178
Jekyll的核心其实就是一个文本的转换引擎,用你最喜欢的标记语言写文档,可以是Markdown、Textile或者HTML等等,再通过`layout`将文档拼装起来,根据你设置的URL规则来展现,这些都是通过严格的配置文件来定义,最终的产出就是web页面。
179179

180180
基本的Jekyll结构如下:
@@ -192,25 +192,27 @@ Jekyll的核心其实就是一个文本的转换引擎,用你最喜欢的标
192192

193193

194194
简单介绍一下他们的作用:
195-
####_config.yml
195+
196+
#### _config.yml
197+
196198
配置文件,用来定义你想要的效果,设置之后就不用关心了。
197199

198-
####_includes
200+
#### _includes
199201
可以用来存放一些小的可复用的模块,方便通过`{ % include file.ext %}`(去掉前两个{中或者{与%中的空格,下同)灵活的调用。这条命令会调用_includes/file.ext文件。
200202

201-
####_layouts
203+
#### _layouts
202204
这是模板文件存放的位置。模板需要通过[YAML front matter][9]来定义,后面会讲到,`{ { content }}`标记用来将数据插入到这些模板中来。
203205

204-
####_posts
206+
#### _posts
205207
你的动态内容,一般来说就是你的博客正文存放的文件夹。他的命名有严格的规定,必须是`2012-02-22-artical-title.MARKUP`这样的形式,MARKUP是你所使用标记语言的文件后缀名,根据_config.yml中设定的链接规则,可以根据你的文件名灵活调整,文章的日期和标记语言后缀与文章的标题的独立的。
206208

207-
####_site
209+
#### _site
208210
这个是Jekyll生成的最终的文档,不用去关心。最好把他放在你的`.gitignore`文件中忽略它。
209211

210-
####其他文件夹
212+
#### 其他文件夹
211213
你可以创建任何的文件夹,在根目录下面也可以创建任何文件,假设你创建了`project`文件夹,下面有一个`github-pages.md`的文件,那么你就可以通过`yoursite.com/project/github-pages`访问的到,如果你是使用一级域名的话。文件后缀可以是`.html`或者`markdown`或者`textile`。这里还有很多的例子:[https://github.com/mojombo/jekyll/wiki/Sites](https://github.com/mojombo/jekyll/wiki/Sites)
212214

213-
###Jekyll的配置
215+
### Jekyll的配置
214216
Jekyll的配置写在_config.yml文件中,可配置项有很多,我们不去一一追究了,很多配置虽有用但是一般不需要去关心,[官方配置文档][10]有很详细的说明,确实需要了可以去这里查,我们主要说两个比较重要的东西,一个是`Permalink`,还有就是自定义项。
215217

216218
`Permalink`项用来定义你最终的文章链接是什么形式,他有下面几个变量:
@@ -235,7 +237,7 @@ Jekyll的配置写在_config.yml文件中,可配置项有很多,我们不去
235237

236238
自定义项的内容,例如我们定义了`title:BeiYuu的博客`这样一项,那么你就可以在文章中使用`{ { site.title }}`来引用这个变量了,非常方便定义些全局变量。
237239

238-
###YAML Front Matter和模板变量
240+
### YAML Front Matter和模板变量
239241
对于使用YAML定义格式的文章,Jekyll会特别对待,他的格式要求比较严格,必须是这样的形式:
240242

241243
---
@@ -290,18 +292,18 @@ Jekyll的配置写在_config.yml文件中,可配置项有很多,我们不去
290292

291293
如果你不喜欢Disqus的样式,你也可以根据他生成的HTML结构,自己改写样式覆盖它的,Disqus现在也提供每个页面的评论数接口,[帮助文档][12]在这里可以看到。
292294

293-
##代码高亮插件
295+
## 代码高亮插件
294296
如果写技术博客,代码高亮少不了,有两个可选插件[DlHightLight代码高亮组件][13][Google Code Prettify][14]。DLHightLight支持的语言相对较少一些,有js、css、xml和html,Google的高亮插件基本上任何语言都支持,也可以自定义语言,也支持自动识别,也有行号的特别支持。
295297

296298
Google的高亮插件使用也比较方便,只需要在`<pre>`的标签上加入`prettyprint`即可。所以我选择了Google Code Prettify。
297299

298-
##搭建本地jekyll环境
300+
## 搭建本地jekyll环境
299301
这里主要介绍一下在Mac OS X下面的安装过程,其他操作系统可以参考官方的[jekyll安装][15]
300302

301303
作为生活在水深火热的墙内人民,有必要进行下面一步修改gem的源,方便我们更快的下载所需组建:
302304

303-
sudo gem sources --remove http://rubygems.org/
304-
sudo gem sources -a http://ruby.taobao.org/
305+
sudo gem sources --remove http://rubygems.org/
306+
sudo gem sources -a http://ruby.taobao.org/
305307

306308
然后用Gem安装jekyll
307309

@@ -321,15 +323,15 @@ Google的高亮插件使用也比较方便,只需要在`<pre>`的标签上加
321323

322324
好了,如果一切顺利的话,本地环境就基本搭建完成了,进入之前我们建立的博客目录,运行下面的命令:
323325

324-
$ jekyll --server
326+
$ jekyll serve --watch
325327

326328
这个时候,你就可以通过`localhost:4000`来访问了。还有关于[jekyll bootstrap][17]的资料,需要自己修改调试的,可以研究一下。
327329

328330
我在这个过程中还遇到两个诡异的没有解决的问题,一个是我放在根目录下面的blog.md等文件,在GitHub的pages服务上一切正常,可以通过`beiyuu.com/blog`访问的到,但是在本地环境下,总是`not found`,很是让人郁闷,看生成的`_site`目录下面的文件,也是正常的`blog.html`,但就是找不到,只有当我把URL改为`localhost:4000/blog.html`的时候,才能访问的到,环境不同真糟糕。
329331

330332
还有一个是关于`category`的问题,根据`YAML`的语法,我们在文章头部可以定义文章所属的类别,也可以定义为`category:[blog,rss]`这样子的多类别,我在本地试一切正常,但是push到GitHub之后,就无法读取了,真让人着急,没有办法,只能采用别的办法满足我的需求了。这里还有一篇[Jekyll 本地调试之若干问题][18],安装中如果有其他问题,也可以对照参考一下。
331333

332-
##结语
334+
## 结语
333335
如果你跟着这篇不那么详尽的教程,成功搭建了自己的博客,恭喜你!剩下的就是保持热情的去写自己的文章吧。
334336

335337

@@ -349,11 +351,11 @@ Google的高亮插件使用也比较方便,只需要在`<pre>`的标签上加
349351
[4]: http://progit.org/book/zh/ "Pro Git中文版"
350352
[5]: http://help.github.com/mac-set-up-git/ "Mac下Git安装"
351353
[6]: http://help.github.com/ssh-key-passphrases/
352-
[7]: http://beiyuu.github.com
354+
[7]: http://beiyuu.github.io
353355
[8]: https://github.com/mojombo/jekyll/blob/master/README.textile
354356
[9]: https://github.com/mojombo/jekyll/wiki/YAML-Front-Matter
355357
[10]: https://github.com/mojombo/jekyll/wiki/configuration
356-
[11]: https://github.com/beiyuu/beiyuu.github.com
358+
[11]: https://github.com/beiyuu/Github-Pages-Example
357359
[12]: http://docs.disqus.com/developers/universal/
358360
[13]: http://mihai.bazon.net/projects/javascript-syntax-highlighting-engine
359361
[14]: http://code.google.com/p/google-code-prettify/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
---
2+
layout: post
3+
title: 回车、换行、和文件末尾空行
4+
description: 回车和换行在不同系统下面定义不同,时不时会有一些小问题出来,git 经常出现的 No new line at the end of file 也让很多人费解,需要梳理一下
5+
category: blog
6+
---
7+
8+
## 回车和换行
9+
10+
回车 (Carriage Return) 和换行 (Line Feed) 的区别,[这里](http://stackoverflow.com/questions/1761051/difference-between-n-and-r)有一个历史原因可参考:
11+
12+
> 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
13+
14+
> 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做"回车",告诉打字机把打印头定位在左边界;另一个叫做"换行",告诉打字机把纸向下移一行。
15+
16+
发明计算机时,这个概念被沿用下来,但因为条件的限制和设计者的喜好,有了一些分歧:
17+
18+
- Unix 系统里,每行结尾只有"<换行>",即"\n"
19+
- Windows 系统里面,每行结尾是"<回车><换行>",即"\r\n"
20+
- 在老的 Mac 系统里,每行结尾是"<回车>",即"\r"
21+
22+
我们来验证一下,我在 Windows 下用记事本新建一个文本文件,它的二进制编码如下:
23+
24+
//源文件内容
25+
hello
26+
hello2
27+
28+
//二进制内容
29+
0000000: 6865 6c6c 6f0d 0a68 656c 6c6f 32 hello..hello2
30+
31+
同样在 Mac 下用 Vim 新建一个:
32+
33+
//源文件内容
34+
hello
35+
hello2
36+
37+
//二进制内容
38+
0000000: 6865 6c6c 6f0a 6865 6c6c 6f32 0a hello.hello2.
39+
40+
`0a`是 LF 的 ASCII 编码, `0d`是 CR 的 ASCII 编码。区别很明显了
41+
42+
- Mac 下的文本文件在 Windows 下打开会成为一行,因为 Windows 只认识`\r\n`,也就是`0d0a`
43+
- Windows 下的文本文件在 Mac 下打开,Vim 中会在每行末尾显示一个 `^M`,(不是两个字符组成的)
44+
45+
## 文件末尾空行
46+
47+
[POSIX](https://zh.wikipedia.org/zh-sg/POSIX)对行的[定义](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206)如下:
48+
49+
> 3.206 Line
50+
51+
> A sequence of zero or more non- <newline\> characters plus a terminating <newline\> character.
52+
53+
> 行是由0个或者多个非 "换行" 符的字符组成,并且以 "换行" 符结尾。
54+
55+
这样做有什么好处呢,举个例子:
56+
57+
//hello.c
58+
#include head.h
59+
print('hello')
60+
61+
//world.c
62+
#include tail.h
63+
print('hello')
64+
65+
如果这两个文件都按 POSIX 规范来写, 在`cat *.c`之后,是没有问题的:
66+
67+
//cat.c
68+
69+
#include head.h
70+
print('hello')
71+
#include tail.h
72+
print('hello')
73+
74+
如果缺少最后一行的换行符(如 Windows 文件那样的定义),`cat`之后,就有问题了:
75+
76+
//error.c
77+
78+
#include head.h
79+
print('hello')#include tail.h
80+
print('hello')
81+
82+
所以,从这点去理解 POSIX 对行的定义,非常合理,对于任意文件的拼接,也各自保持了文件的完整性。
83+
84+
不遵守标准带来的则是:在一些编辑器下面,比如 Sublime,他把`\n`的当做了行之间的分隔符,于是文件最后一行的`\n`就看上去成了一个新的空行,这就是错误解读标准造成的,拼接文件时也会产生不必要的麻烦,比如上例。
85+
86+
## \ No new line at end of file
87+
88+
基于上面的原因,再去看 git diff 的`\ No new line at end of file`信息,就很好解释了。
89+
90+
各编辑器对于换行符的理解偏差,导致的文件确实发生了变化,多了或少了最后的`0a`,那么对于 diff 程序来说,这当然是不可忽略的,但因为`0a`是不可见字符,并且是长久以来的历史原因,所以 diff 程序有个专门的标记来说明这个变化,就是:
91+
92+
`\ No new line at end of file`
93+
94+
各编辑器也有相应的办法去解决这个问题,比如 Sublime,在`Default/Preferences.sublime-settings`中设置:
95+
96+
// Set to true to ensure the last line of the file ends in a newline
97+
// character when saving
98+
"ensure_newline_at_eof_on_save": true,
99+
100+
所以,请遵守规范。
101+
102+
[BeiYuu]: http://beiyuu.com "BeiYuu"

‎_posts/blog/template.md

-12
This file was deleted.

‎_posts/opinion/2013-01-08-about-simplify.md

-59
This file was deleted.

‎_posts/opinion/template.md

-8
This file was deleted.

‎_posts/project/2012-04-18-raining-in-chrome.md

-38
This file was deleted.

‎_posts/project/2012-09-22-overapi-cheatsheet.md

-43
This file was deleted.

‎_posts/project/2012-10-17-notty-notes.md

-36
This file was deleted.

‎_posts/project/2013-04-12-tabby.md

-39
This file was deleted.

‎_posts/project/template.md

-12
This file was deleted.

‎css/css3-ani.css

-605
This file was deleted.

‎css/default.css

-185
This file was deleted.

‎images/backbonechrome/notes-draft.jpg

-32.2 KB
Binary file not shown.

‎images/backbonechrome/notes-logo.jpg

-20.9 KB
Binary file not shown.
-20.8 KB
Binary file not shown.

‎images/overapi/icon-small.png

-14.6 KB
Binary file not shown.

‎images/overapi/overapi.jpg

-63.1 KB
Binary file not shown.
-5.56 MB
Binary file not shown.

‎images/rainingchrome/RainingChrome.pem

-16
This file was deleted.

‎images/rainingchrome/rain.jpg

-36 KB
Binary file not shown.

‎images/rainingchrome/update.xml

-6
This file was deleted.

‎index.md

+21-19
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
11
---
2-
layout: home
2+
layout: default
33
---
44

5-
<div class="index-content blog">
6-
<div class="section">
7-
<ul class="artical-cate">
8-
<li class="on"><a href="/"><span>Blog</span></a></li>
9-
<li style="text-align:center"><a href="/opinion"><span>Opinion</span></a></li>
10-
<li style="text-align:right"><a href="/project"><span>Project</span></a></li>
11-
</ul>
12-
13-
<div class="cate-bar"><span id="cateBar"></span></div>
5+
<body>
6+
<div class="index-wrapper">
7+
<div class="aside">
8+
<div class="info-card">
9+
<h1>BeiYuu</h1>
10+
<a href="http://weibo.com/beiyuu/" target="_blank"><img src="http://www.weibo.com/favicon.ico" alt="" width="25"/></a>
11+
<a href="http://www.douban.com/people/beiyuu/" target="_blank"><img src="http://www.douban.com/favicon.ico" alt="" width="22"/></a>
12+
<a href="http://instagram.com/beiyuu/" target="_blank"><img src="http://d36xtkk24g8jdx.cloudfront.net/bluebar/00c6602/images/ico/favicon.ico" alt="" width="22"/></a>
13+
</div>
14+
<div id="particles-js"></div>
15+
</div>
1416

15-
<ul class="artical-list">
17+
<div class="index-content">
18+
<ul class="artical-list">
1619
{% for post in site.categories.blog %}
17-
<li>
18-
<h2><a href="{{ post.url }}">{{ post.title }}</a></h2>
19-
<div class="title-desc">{{ post.description }}</div>
20-
</li>
20+
<li>
21+
<a href="{{ post.url }}" class="title">{{ post.title }}</a>
22+
<div class="title-desc">{{ post.description }}</div>
23+
</li>
2124
{% endfor %}
22-
</ul>
23-
</div>
24-
<div class="aside">
25+
</ul>
2526
</div>
26-
</div>
27+
</div>
28+
</body>

‎js/post.js

+9-182
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,13 @@
1-
$(document).ready(function(){
2-
3-
var isMobile = {
4-
Android: function() {
5-
return navigator.userAgent.match(/Android/i);
6-
}
7-
,BlackBerry: function() {
8-
return navigator.userAgent.match(/BlackBerry/i);
9-
}
10-
,iOS: function() {
11-
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
12-
}
13-
,Opera: function() {
14-
return navigator.userAgent.match(/Opera Mini/i);
15-
}
16-
,Windows: function() {
17-
return navigator.userAgent.match(/IEMobile/i);
18-
}
19-
,any: function() {
20-
return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
21-
}
22-
};
23-
1+
$(function() {
242
$('pre').addClass('prettyprint linenums'); //添加Google code Hight需要的class
253

4+
window.disqus_shortname = 'beiyuu'; // required: replace example with your forum shortname
5+
$('#disqus_container .comment').on('click',function(){
6+
$(this).html('加载中...');
7+
var that = this;
8+
$.getScript('http://' + disqus_shortname + '.disqus.com/embed.js',function(){$(that).remove()});
9+
});
10+
2611
$('.entry a').each(function(index,element){
2712
var href = $(this).attr('href');
2813
if(href){
@@ -36,169 +21,11 @@ $(document).ready(function(){
3621
}
3722
});
3823

39-
(function(){
40-
var ie6 = ($.browser.msie && $.browser.version=="6.0") ? true : false;
41-
42-
function initHeading(){
43-
var h2 = [];
44-
var h3 = [];
45-
var h2index = 0;
46-
47-
$.each($('.entry h2, .entry h3'),function(index,item){
48-
if(item.tagName.toLowerCase() == 'h2'){
49-
var h2item = {};
50-
h2item.name = $(item).text();
51-
h2item.id = 'menuIndex'+index;
52-
h2.push(h2item);
53-
h2index++;
54-
}else{
55-
var h3item = {};
56-
h3item.name = $(item).text();
57-
h3item.id = 'menuIndex'+index;
58-
if(!h3[h2index-1]){
59-
h3[h2index-1] = [];
60-
}
61-
h3[h2index-1].push(h3item);
62-
}
63-
item.id = 'menuIndex' + index;
64-
});
65-
66-
return {h2:h2,h3:h3}
67-
}
68-
69-
function genTmpl(){
70-
var h1txt = $('h1').text();
71-
var tmpl = '<ul><li class="h1"><a href="#">' + h1txt + '</a></li>';
72-
73-
var heading = initHeading();
74-
var h2 = heading.h2;
75-
var h3 = heading.h3;
76-
77-
for(var i=0;i<h2.length;i++){
78-
tmpl += '<li><a href="#" data-id="'+h2[i].id+'">'+h2[i].name+'</a></li>';
79-
80-
if(h3[i]){
81-
for(var j=0;j<h3[i].length;j++){
82-
tmpl += '<li class="h3"><a href="#" data-id="'+h3[i][j].id+'">'+h3[i][j].name+'</a></li>';
83-
}
84-
}
85-
}
86-
tmpl += '</ul>';
87-
88-
return tmpl;
89-
}
90-
91-
function genIndex(){
92-
var tmpl = genTmpl();
93-
var indexCon = '<div id="menuIndex" class="sidenav"></div>';
94-
95-
$('#content').append(indexCon);
96-
97-
$('#menuIndex')
98-
.append($(tmpl))
99-
.delegate('a','click',function(e){
100-
e.preventDefault();
101-
102-
var selector = $(this).attr('data-id') ? '#'+$(this).attr('data-id') : 'h1'
103-
var scrollNum = $(selector).offset().top;
104-
105-
$('body, html').animate({ scrollTop: scrollNum-30 }, 400, 'swing');
106-
});
107-
}
108-
109-
var waitForFinalEvent = (function () {
110-
var timers = {};
111-
return function (callback, ms, uniqueId) {
112-
if (!uniqueId) {
113-
uniqueId = "Don't call this twice without a uniqueId";
114-
}
115-
if (timers[uniqueId]) {
116-
clearTimeout (timers[uniqueId]);
117-
}
118-
timers[uniqueId] = setTimeout(callback, ms);
119-
};
120-
})();
121-
122-
if($('.entry h2').length > 2 && !isMobile.any() && !ie6){
123-
124-
genIndex();
125-
126-
$(window).load(function(){
127-
var scrollTop = [];
128-
$.each($('#menuIndex li a'),function(index,item){
129-
var selector = $(item).attr('data-id') ? '#'+$(item).attr('data-id') : 'h1'
130-
var top = $(selector).offset().top;
131-
scrollTop.push(top);
132-
});
133-
134-
var menuIndexTop = $('#menuIndex').offset().top;
135-
var menuIndexLeft = $('#menuIndex').offset().left;
136-
137-
$(window).scroll(function(){
138-
waitForFinalEvent(function(){
139-
var nowTop = $(window).scrollTop();
140-
var length = scrollTop.length;
141-
var index;
142-
143-
if(nowTop+20 > menuIndexTop){
144-
$('#menuIndex').css({
145-
position:'fixed'
146-
,top:'20px'
147-
,left:menuIndexLeft
148-
});
149-
}else{
150-
$('#menuIndex').css({
151-
position:'static'
152-
,top:0
153-
,left:0
154-
});
155-
}
156-
157-
if(nowTop+60 > scrollTop[length-1]){
158-
index = length;
159-
}else{
160-
for(var i=0;i<length;i++){
161-
if(nowTop+60 <= scrollTop[i]){
162-
index = i;
163-
break;
164-
}
165-
}
166-
}
167-
$('#menuIndex li').removeClass('on');
168-
$('#menuIndex li').eq(index-1).addClass('on');
169-
});
170-
});
171-
172-
$(window).resize(function(){
173-
$('#menuIndex').css({
174-
position:'static'
175-
,top:0
176-
,left:0
177-
});
178-
179-
menuIndexTop = $('#menuIndex').offset().top;
180-
menuIndexLeft = $('#menuIndex').offset().left;
181-
182-
$(window).trigger('scroll')
183-
$('#menuIndex').css('max-height',$(window).height()-80);
184-
});
185-
})
186-
187-
//用js计算屏幕的高度
188-
$('#menuIndex').css('max-height',$(window).height()-80);
189-
}
190-
})();
191-
19224
$.getScript('/js/prettify/prettify.js',function(){
19325
prettyPrint();
19426
});
19527

19628
if(/\#comment/.test(location.hash)){
19729
$('#disqus_container .comment').trigger('click');
19830
}
199-
200-
if(/css3-animation/.test(location.href)){
201-
$("head").append("<link rel='stylesheet' type='text/css' href='/css/css3-ani.css'/>");
202-
$.getScript('/js/css3-ani.js',function(){});
203-
}
204-
});
31+
})

‎opinion/index.md

-28
This file was deleted.

‎project/index.md

-28
This file was deleted.

0 commit comments

Comments
 (0)
Please sign in to comment.