├── .gitignore ├── 404.html ├── LICENSE ├── README.md ├── _config.yml ├── _includes ├── analytics.html ├── arrow_top.html ├── author-box.html ├── back-disqus.html ├── disqus.html ├── footer.html ├── head.html ├── header.html ├── javascripts.html ├── new-old.html ├── newsletter.html ├── pagination.html ├── recent-post.html ├── search.html └── social_footer.html ├── _layouts ├── default.html ├── home-page.html └── post.html ├── _pages ├── aa.html ├── about.html └── tags.html ├── _posts ├── Jekyll-jekyll │ └── 2018-02-10-jekyll-github-blog.markdown └── 随笔-essays │ └── 2018-02-07-hello-world.markdown ├── assets ├── css │ ├── main.css │ └── sass │ │ ├── _media.scss │ │ ├── _syntax.scss │ │ ├── _variables.scss │ │ ├── main.scss │ │ ├── parts │ │ ├── _about.scss │ │ ├── _animate.scss │ │ ├── _author-box.scss │ │ ├── _footer.scss │ │ ├── _header.scss │ │ ├── _pagination.scss │ │ ├── _post-card.scss │ │ ├── _search.scss │ │ ├── _tags.scss │ │ └── post-page.scss │ │ └── tools │ │ └── _normalize.scss ├── fonts │ └── font-awesome │ │ ├── css │ │ └── font-awesome.min.css │ │ └── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 ├── img │ ├── adam-blog-imac.jpg │ ├── adam-home-page.jpg │ ├── adam-post-example.jpg │ ├── alipay.jpg │ ├── alipayimg.jpg │ ├── bg_about.jpg │ ├── blog │ │ ├── abouttest │ │ │ └── jmeter2 │ │ │ │ ├── add_http_request.jpg │ │ │ │ ├── add_http_request_detail.jpg │ │ │ │ ├── add_thread.jpg │ │ │ │ ├── assert_create.jpg │ │ │ │ ├── assert_create_detail.jpg │ │ │ │ ├── assert_result.jpg │ │ │ │ ├── json_create.jpg │ │ │ │ ├── json_create_detail.jpg │ │ │ │ ├── result_tree.jpg │ │ │ │ ├── result_tree_detail.jpg │ │ │ │ ├── yali_test.jpg │ │ │ │ ├── 信息头管理器.jpg │ │ │ │ ├── 信息头管理器详情.jpg │ │ │ │ ├── 默认HTTP请求.jpg │ │ │ │ └── 默认HTTP请求添加.jpg │ │ ├── androidoriginal │ │ │ ├── androidstudio │ │ │ │ └── sdkupdate.jpg │ │ │ ├── arrowtextview │ │ │ │ └── preview.jpg │ │ │ ├── compile │ │ │ │ ├── 1.jpg │ │ │ │ └── 2.jpg │ │ │ ├── gps │ │ │ │ └── gpsparase.gif │ │ │ ├── jni │ │ │ │ └── jniconfig │ │ │ │ │ ├── 2018-03-07-android-jni-mk.markdown │ │ │ │ │ ├── build_config.jpg │ │ │ │ │ ├── c_part.jpg │ │ │ │ │ ├── c_part1.jpg │ │ │ │ │ ├── log_config.jpg │ │ │ │ │ └── method_create.jpg │ │ │ └── view │ │ │ │ └── eventpass │ │ │ │ ├── first.jpg │ │ │ │ ├── four.jpg │ │ │ │ ├── second.jpg │ │ │ │ └── third.jpg │ │ ├── flutter │ │ │ ├── firstapplication │ │ │ │ ├── 0.gif │ │ │ │ ├── 1.png │ │ │ │ ├── 2.png │ │ │ │ ├── 3.png │ │ │ │ ├── 4.png │ │ │ │ ├── 5.png │ │ │ │ ├── 6.png │ │ │ │ ├── 7.png │ │ │ │ └── 8.png │ │ │ └── third │ │ │ │ ├── 1.png │ │ │ │ ├── 10.jpg │ │ │ │ ├── 2.jpg │ │ │ │ ├── 3.jpg │ │ │ │ ├── 4.jpg │ │ │ │ ├── 5.jpg │ │ │ │ ├── 6.jpg │ │ │ │ ├── 7.png │ │ │ │ ├── 8.jpg │ │ │ │ └── 9.jpg │ │ ├── hacker │ │ │ ├── actualoperation1 │ │ │ │ ├── 1.jpg │ │ │ │ ├── 2.jpg │ │ │ │ ├── 3.jpg │ │ │ │ ├── 4.jpg │ │ │ │ ├── 5.jpg │ │ │ │ └── 6.jpg │ │ │ └── smaliandroidstudio │ │ │ │ ├── 1.jpg │ │ │ │ ├── 2.jpg │ │ │ │ ├── 3.jpg │ │ │ │ ├── 4.jpg │ │ │ │ └── 5.jpg │ │ ├── jekyll │ │ │ └── jekyll_github │ │ │ │ ├── 1.png │ │ │ │ ├── 2.png │ │ │ │ ├── blog_demo.png │ │ │ │ ├── class_part.png │ │ │ │ ├── class_part1.png │ │ │ │ ├── class_part2.png │ │ │ │ ├── class_part3.png │ │ │ │ ├── class_part4.png │ │ │ │ ├── demo_start.png │ │ │ │ ├── struct_default.png │ │ │ │ └── struct_home.png │ │ └── other │ │ │ ├── jiaolian │ │ │ └── 1.jpg │ │ │ └── taobao │ │ │ ├── 1524550629.jpg │ │ │ ├── 154329381736210208.jpg │ │ │ ├── 312872996231805525.jpg │ │ │ ├── 560839039004362065.jpg │ │ │ └── cd7a213f2d1bcd0fd06a74527eff148.jpg │ ├── close.jpg │ ├── leach-face.jpg │ ├── post-1.jpg │ ├── post-10.jpg │ ├── post-11.jpg │ ├── post-12.jpg │ ├── post-2.jpg │ ├── post-3.jpg │ ├── post-4.jpg │ ├── post-5.jpg │ ├── post-6.jpg │ ├── post-7.jpg │ ├── post-8.jpg │ ├── post-9.jpg │ ├── wechat.jpg │ ├── wechatimg.jpg │ └── yosh-ginsu.jpg ├── js │ ├── jekyll-search.js │ ├── jquery-3.2.1.min.js │ └── main.js └── minima-social-icons.svg ├── google18fa4f0e323b9549.html ├── gulpfile.js ├── index.html ├── myblog ├── essays │ └── index.html └── jekyll │ └── index.html ├── other ├── api │ └── AdSense.html └── img │ ├── articlepage.png │ └── mainpage.png ├── package.json └── search.json /.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | .sass-cache 3 | .jekyll-metadata 4 | node_modules/ 5 | yarn.lock 6 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /404.html 3 | layout: home-page 4 | title: 404 5 | description: "404" 6 | --- 7 |
8 |

404

9 | 10 |

Page not found :(

11 |

The requested page could not be found.

12 |
13 | 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Leach Chen Blog is a minimal clear theme for Jekyll 3 | ![Leach Chen Blog - Imac](https://leach-chen.github.io/blogdemo/assets/img/adam-blog-imac.jpg) 4 | 5 | ## Demo 6 | [网站出处](https://github.com/leach-chen/blogdemo) 7 | 8 | [网站参考来源](https://github.com/artemsheludko/adam-blog) 9 | 10 | [网站搭建教程](https://www.jianshu.com/p/9f71e260925d) 11 | 12 | [网站效果预览(点击预览)](https://leach-chen.github.io/blogdemo/) 13 | 14 | The main page would look like this: 15 | 16 | ![Main page preview](https://leach-chen.github.io/blogdemo/other/img/mainpage.png) 17 | 18 | The post page would look like this: 19 | 20 | ![Post page preview](https://leach-chen.github.io/blogdemo/other/img/articlepage.png) 21 | 22 | ## Features 23 | 24 | - [Google Fonts](https://fonts.google.com/) 25 | - [Font Awesome](http://fontawesome.io/) 26 | - [Disqus](https://disqus.com/) 27 | - [MailChimp](https://mailchimp.com/) 28 | - [Analytics](https://analytics.google.com/analytics/web/) 29 | - [Search](https://github.com/christian-fei/Simple-Jekyll-Search) 30 | 31 | ## Installation: 32 | 33 | Fork the ``master`` branch and delete ``gh-pages`` branch in it. This is important because ``gh-pages`` branch is used here only to host the blog. You should be using the master branch as the source and create a fresh ``gh-pages`` branch. 34 | 35 | ### License 36 | 37 | GNU General Public License v3.0 38 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | title: Blog - Leach Chen 2 | description: > # this means to ignore newlines until "baseurl:" 3 | Write an awesome description for your new site here. You can edit this 4 | line in _config.yml. It will appear in your document head meta (for 5 | Google search results) and in your feed.xml site description. 6 | permalink: ':title/' 7 | #baseurl: "/adam-blog" # the subpath of your site, e.g. /blog 8 | url: "" # the base hostname & protocol for your site, e.g. http://example.com 9 | 10 | # Author settings add your name 11 | author: Leach Chen 12 | 13 | author-pic: leach-face.jpg 14 | about-author: I am an Android developer.I will add description latter. 15 | 16 | #修改成你自己的 17 | # Contact links 18 | website: # Add your website, do not add http:// 19 | linkedin: # Add your Linkedin handle 20 | twitter: # Add your Twitter handle 21 | facebook: # Add your Facebook handle 22 | instagram: # Add your Instagram handle 23 | pinterest: # Add your Pinterest handle 24 | 25 | #修改成你自己的 26 | email: 27 | phone: 28 | github: 29 | jianshu: 30 | juejin: 31 | csdn: 32 | 33 | # Newsletter 34 | mailchimp: # Add your MailChimp form identifier. 35 | 36 | # Disqus修改成你自己的 37 | discus_identifier: leach-chen 38 | # Add your discus identifier 39 | 40 | #intensedebate修改成你自己的 41 | intensedebate_identifier: 42 | 43 | # Tracker Google Analytics修改成你自己的 44 | google-analysis: 45 | baidu-analysis: 46 | 47 | #youyan 48 | youyan-id: 2157296 49 | 50 | # Paginate 51 | paginate: 18 52 | paginate_path: /page:num/ 53 | 54 | # Build settings 55 | markdown: kramdown 56 | plugins: 57 | - jekyll-paginate 58 | - jekyll-feed 59 | - jekyll-sitemap 60 | 61 | include: [_pages] 62 | exclude: ["node_modules", "gulpfile.js", "package.json", "yarn.lock"] 63 | 64 | imagepath: /blogdemo 65 | 66 | links: 67 | - name: Home 68 | url: https://www.leachchen.com 69 | external: false 70 | - name: About 71 | url: /blogdemo/about 72 | external: false 73 | 74 | #添加分类步骤: 75 | #1:在_config.yml links1及blog_中添加对应内容 76 | #2:在_includes里面headr.html中添加对应内容 77 | #3:在根目录blog文件中创建对应内容 78 | 79 | label1: Publish by 80 | label2: 81 | 82 | 83 | links1: 84 | - name: 所有 85 | url: /blog 86 | type: recent 87 | external: false 88 | - name: 随笔 89 | url: /blogdemo/myblog/essays 90 | type: essays 91 | external: false 92 | - name: Jekyll 93 | url: /blogdemo/myblog/jekyll 94 | type: jekyll 95 | external: false 96 | 97 | blog_1: recent 98 | blog_2: essays 99 | blog_3: jekyll 100 | 101 | 102 | 103 | #permalink: /:year/:month/:day/:title.html 104 | -------------------------------------------------------------------------------- /_includes/analytics.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /_includes/arrow_top.html: -------------------------------------------------------------------------------- 1 | 2 |
-------------------------------------------------------------------------------- /_includes/author-box.html: -------------------------------------------------------------------------------- 1 |
2 | {{site.author}} 3 |
4 |

{{site.author}}

5 |

{{site.about-author}}

6 | 28 |
29 |
30 | -------------------------------------------------------------------------------- /_includes/back-disqus.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% if site.discus_identifier %} 4 |
5 | 13 | 14 | {% endif %} 15 |
16 |
17 | -------------------------------------------------------------------------------- /_includes/disqus.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% if site.intensedebate_identifier %} 4 |
5 | 10 | 11 | 12 | {% endif %} 13 |
14 |
-------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 | 28 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% if page.title %}{{page.title}} - {{site.title}}{% else %}{{site.title}}{% endif %} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 49 | 50 | 51 | 52 | 53 | 59 | 60 | 61 | 62 | 63 | 64 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 7 | 112 | 113 | 114 | 115 | 140 | 141 | 146 | 147 | 148 |
149 |
150 |
151 | -------------------------------------------------------------------------------- /_includes/javascripts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 16 | -------------------------------------------------------------------------------- /_includes/new-old.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 |

打赏一下呗

6 |
7 |
8 | {{site.imagepath}}""取消 9 |
10 |

对你有帮助,那就打赏一下吧

11 |
12 | 13 |
14 | {{site.imagepath}}""扫码支持 15 |
16 | 17 |
18 | 19 |
20 | 21 |
22 | {{site.imagepath}}""扫码支持 23 |
24 | 25 |
26 | 27 |
28 | 29 |
扫码打赏,金额随意
30 | 31 |
32 |
33 | 39 | 40 |
41 | 42 | 63 | 64 | 81 |
82 | -------------------------------------------------------------------------------- /_includes/newsletter.html: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /_includes/pagination.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /_includes/recent-post.html: -------------------------------------------------------------------------------- 1 |
2 |

Recent post

3 |
4 | {% for post in site.posts offset:0 limit:4 %} 5 | {% if post.title %} 6 | {{ post.title }} 7 | {% endif %} 8 | {% endfor %} 9 |
10 |
11 | -------------------------------------------------------------------------------- /_includes/search.html: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /_includes/social_footer.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% include head.html %} 4 | 5 | {{ content }} 6 | 7 | {% include arrow_top.html %} 8 | {% include javascripts.html %} 9 | {% include analytics.html %} 10 | 11 | 12 | -------------------------------------------------------------------------------- /_layouts/home-page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
5 | {% include header.html %} 6 |
7 | {{ content }} 8 | {% include search.html %} 9 | {% include pagination.html %} 10 |
11 | {% include footer.html %} 12 |
13 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
5 | {% include header.html %} 6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |

{{page.title}}

14 |
15 | | 访问量: 16 |
17 |
18 | {{page.content | markdownify}} 19 | 51 | 52 | 53 | {% include author-box.html %} 54 | {% include recent-post.html %} 55 | {% include newsletter.html %} 56 | {% include disqus.html %} 57 |
58 |
59 |
60 | {% include search.html %} 61 | {% include footer.html %} 62 |
63 | -------------------------------------------------------------------------------- /_pages/aa.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: home-page 3 | title: About 4 | permalink: /about/ 5 | --- 6 |
7 |
8 |
9 |
10 | {{site.author}} 11 |
12 |

{{site.about-author}}

13 |
14 |
15 |
    16 | {% if site.email %} 17 | 18 | {% else %} 19 | 20 | {% endif %} 21 | 22 | {% if site.phone %} 23 |
  • 24 | {% else %} 25 | 26 | {% endif %} 27 | 71 |
72 |
73 |
74 |
75 | -------------------------------------------------------------------------------- /_pages/about.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: About 4 | permalink: /about/ 5 | --- 6 |
7 | Back 8 |
9 |
10 |
11 | Author image 12 |
13 |
14 |

{% if site.author-name %}{{site.author-name}}{% else %}Leach chen{% endif %}

15 |

{% if site.about-author %}{{site.about-author}}{% else %}La croix godard blue bottle, vape iceland fingerstache cronut single-origin coffee lyft snackwave normcore small batch.{% endif %}

16 |

17 |
18 |
19 | 20 |
21 | {% include social_footer.html %} 22 |
23 |
24 |
25 | -------------------------------------------------------------------------------- /_pages/tags.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: home-page 3 | title: Tags 4 | permalink: /tags/ 5 | --- 6 | {% capture site_tags %}{% for tag in site.tags %}{{ tag | first }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %} 7 | {% assign tag_words = site_tags | split:',' | sort %} 8 | 9 |
10 |

Tags in Blog

11 | 18 | 19 | {% for item in (0..site.tags.size) %}{% unless forloop.last %} 20 | {% capture this_word %}{{ tag_words[item] | strip_newlines }}{% endcapture %} 21 |

{{ this_word }}

22 | 23 | {% for post in site.tags[this_word] %}{% if post.title != null %} 24 |
25 | {{ post.title }} 26 | | {{ post.date | date_to_string }} 27 |
28 | {% endif %}{% endfor %} 29 | {% endunless %}{% endfor %} 30 |
31 | -------------------------------------------------------------------------------- /_posts/Jekyll-jekyll/2018-02-10-jekyll-github-blog.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Github+Jekyll 搭建个人网站详细教程 4 | date: 2018-02-10 12:54:00 +0900 5 | description: Hello World! 6 | img: post-2.jpg # Add image post (optional) 7 | tags: [Jekyll,GitHub] 8 | author: # Add name author (optional) 9 | jekyll: true 10 | --- 11 | 12 | {{site.label1}} Leach Chen {{site.label2}} 13 | 14 | GitHub搭建个人网站,大家在网上一搜能搜到一大把的教程,但是大部分都讲的差不多,并不能满足自己想搭建的网站详细需求。我之前在搭建本站的时候也是查了较多资料,学习了下jekyll语法,参考了几个主题模板,才把符合我需求网站搭建出来。那么今天我将详细介绍下本站从**github代码托管,jekyll安装,jekyll主题选择,jekyll目录结构,jekyll基本语法,jekyll主题修改,网站留言,访问量统计等子功能整入**的详细过程。顺便当作自己记录下吧,防止以后忘记了。
也欢迎大家star本站源码改造成属于你自己喜欢的个人网站。 15 | 16 | 这里推荐下Git代码管理工具用Desktop,文档编辑工具用ATOM,atom它是Github的一款文件编辑器,可关联git仓库,可预览Markdown文件,可以导入文件夹结构,很好用,界面看着也舒服 17 | 18 | GitHub搭建个人网站可基于jekyll或者hexo或者其它的,我看官方提供的主题jekyll更多,样式也更好看,而且能直接链接到源码主页,所以我选择的基于jekyll搭建的,若不明白jekyll是什么东西,别急,后面会解释到,下面开始讲解本站的搭建过程。 19 | 20 | ## **第一步 网站托管**
## 21 | 我们知道,一个网站要能够在任何地方都能够被访问,那么需要部署到服务器上。其实github就提供了这样的功能,只要按照github格式要求,新建一个仓库,把你的网站代码上传到里面,那么就可以在任何时候任何地方都能够访问了,那么如何搭建这个代码托管仓库呢?
22 | 可参考官方链接,我这也把步骤写出来。

23 | **1.**首先你要到GitHub上注册一个账号,例如我注册的用户名为:leach-chen(用户名可以在设置里改)

24 | **2.**点击New repository-->输入仓库名称格式为:用户名.github.io(如:leach-chen.github.io)->点击Create repository
25 | " 26 | 27 | "
28 | **3.**浏览器里访问https://leach-chen.github.io/,可以发现这个url可以被访问了,你可以把改仓库拉取到本地,然后在里面新建一个index.html的文件,在里面输入任意内容,然后再把代码推送到git上,然后再访问改链接,可以发现index.html里面的内容被访问到了。

29 | 到这里,一个免费且无限流量的github代码托管仓库就创建完成了。 30 | ## **第二步 Jekyll安装**
## 31 | 首先解释下什么是jekyll,jekyll相当于一个编译工具,安装好jekyll后,你可以通过jekyll创建一个网站模板,创建好之后,我们就可以通过http://127.0.0.1:4000/访问刚刚创建的网站了(具体jekyll用法后面再介绍),我们可以实时修改刚刚创建的模板里面的内容,并可以实时通过本地url预览改动后的效果。我们把这个博客推送到上一步创建的代码仓库里,再通过https://leach-chen.github.io/就可以访问到博客里面的内容了。有了Jekyll,我们不用每次改动一点点就把代码推送到仓库中进行预览,而是本地就可以预览。GitHub支持jekyll,hexo等语法解析。 32 | 33 | 那么如何安装jekyll呢?我这边暂只讲解windows下的安装步骤。 34 | 35 | 1. 首先点击下载安装Ruby installer; 36 | 2. 点击下载RubyGems,下载完成后解压至你想放的位置,例如我放到E:\Software\Install\StudySoftware\rubygems-2.7.4。 37 | 打开命令行执行:
38 | >cd E:\Software\Install\StudySoftware\rubygems-2.7.4 //进入到解压包的位置
39 | >E:
40 | >ruby setup.rb 41 | 3. 在命令行执行gem install jekyll; 42 | 4. 安装完成,我们可以用jekyll命令创建一个博客模板,打开命令行执行:
43 | >cd d:
44 | >d:
45 | >jekyll new testblog
46 | >cd testblog
47 | >jekyll server
48 | 在浏览器输入http://127.0.0.1:4000/即可浏览刚刚创建的blog 49 | 50 | 到此jekyll 就安装完成了。 51 | 52 | ## **第三步 Jekyll 主题选择**
## 53 | 1. 上一步我们完成了jekyll的安装,默认创建的博客模板一般比较简单,jekyll官网提供了大量博客模板,我们可以去挑选一个自己喜欢的博客模板,然后在这个博客基础上修改到满足自己需求的博客 54 | 2. 点击前往jekyll 主题官网 55 | 3. 我选择的adam-blog这篇主题
56 | 点击Homepage可以链接到该blog Github页面,点击download可以下载该博客源码,点击demo可以预览该博客效果 57 | "
58 | 4. 我们点击download,将该源码下载下来,命令行进入该目录执行jekyll server,执行成功可以在控制台看到运行路径: 59 | " 60 | 若下载的主题jekyll server执行失败,则用步骤二中创建的testblog目录下的Gemfile,Gemfile.lock文件替换下载的主题里面的该文件,若还不成功,则根据控制台提示的错误,可以百度到解决方案。 61 | 到此,我们已经选定了一个博客主题模板,接下来我们讲解下jekyll主题的目录结构 62 | 63 | ## **第四步 Jekyll 目录结构**
## 64 | 65 | jekyll目录结构主要包含如下目录:
66 | >_posts 博客内容
67 | >_pages 其他需要生成的网页,如About页
68 | >_layouts 网页排版模板
69 | >_includes 被模板包含的HTML片段,可在_config.yml中修改位置
70 | >assets 辅助资源 css布局 js脚本 图片等
71 | >_data 动态数据
72 | >_sites 最终生成的静态网页
73 | >_config.yml 网站的一些配置信息
74 | >index.html 网站的入口 75 | 76 | 那么这些目录是如何运作的呢? 77 | 1. 我们打开根目录下的index.html可以看到: 78 | >---
79 | >layout: home-page
80 | >---
81 | >**html代码段** 82 | 2. 上面的home-page我们到_layouts目录下可以找到: 83 | "
84 | 实际上根目录下index.html运行后是home-page里面的代码内容,1中**html代码段**会填充的上图中的**content**位置 85 | 3. 上图的default布局也可以再_layouts目录下找到: 86 | "
87 | 实际上根目录下index.html运行后,home-page.html里面的代码内容会填充到上图中的**content**位置
88 | jekyll是将分散在各个目录下的html文件拼接起来运行。
89 | 4. **文章链接这里有篇讲的比较好的,跟着该文章里的操作,能让你更熟悉**
90 | 91 | ## **第五步 Jekyll 语法**
## 92 | 93 | 上一步大概讲解了下Jekyll的目录结构,现在我们讲解下部分jekyll的语法,也可去官方网站学习更详细**官方链接** 94 | 95 | 1. **{**% for post in paginator.posts %**} {**% endfor %**}**表示一个for循环,百分号之间的语句为要执行的语句,该段代码表示分页输出文章,分页数量在_config.yml中配置,**注意:分页只在根目录下的index.html中有效** 96 | 97 | 98 | 1. **{** site.自定义字段名称 **}** 表示获取_config.yml里面的自定义字段名称的值 99 | 100 | 101 | 1. **{**% for post in site.posts limit:2 %**} {**% endfor %**}**循环输出 2 篇文章 102 | 103 | 1. **{**% for post in site.posts offset:0 limit:2 %**}**循环输出最新2篇文章 104 | 105 | 106 | 1. **{**% for tag in post.tags %**} {**% endfor %**}**输出该篇文章里的tag 107 | 108 | 109 | 1. **{**% if link.type == site.blog_1 %**} {**% endfor %**}**字符串比较 110 | 111 | 112 | 1. **{**% assign count = 0 %**}****{**% assign count = count | plus: 1 %**}**定义assign变量加1 113 | 114 | 115 | 1. **\{\{**post.content \| strip_html \| strip_newlines \| truncate: 100 **\}\}**获取文章摘要,取前100个字符 116 | 117 | 118 | 1. 2018-02-10-你要添加的描述.markdown,文章命名格式,否则识别不了 119 | 120 | 121 | 1. **\{\{** page.date \| date: '%Y, %b %d' **\}\}**输出文章日期 122 | 123 | 124 | 1. **\{\{**page.title**\}\}**输出文章标题 125 | 126 | 127 | 1. **{**% if post.jekyll %**}** 判断文章里的jekyll字段是否为true 128 | 129 | 130 | 1. **{**% if paginator.previous_page %**}**是否有上一页 131 | 132 | 133 | 1. **{**% if paginator.next_page %**}**是否有下一页 134 | 135 | 136 | 1. **\{\{** paginator.previous_page_path **\}\}**上一页url 137 | 138 | 139 | 1. **\{\{** paginator.next_page_path **\}\}**下一页url 140 | 141 | 142 | 1. **\{\{** post.url | prepend: site.baseurl **\}\}**要访问的文章的url 143 | 144 | 145 | ## **第六步 修改博客模板**
## 146 | 147 | 第四步中下载的博客模板发现并不完全符合自己的需求,于是做了如下修改 148 | 149 | **1. 添加文章分类功能:**
150 | **a.** 在_config.yml中添加如下分类 151 | "
152 | **b.** 在_includes目录下的header.html里面添加如下代码,该代码是循环输出分类及该分类下的文章数量 153 | "
154 | **c.**在根目录下创建博客文件夹,在里面创建对应目录,目录名称和a步骤中的url路径对应 155 | "
156 | **d.**在每个目录下创建index.html,并按如下图方式添加代码,这样就可以按分类输出文章 157 | "
158 | **2. 添加文章评论功能:**
159 | 模板本身有评论功能,但是用的是国外的Disqus,Disqus在国内被屏蔽的。 160 | 主流的评论系统有Disqus, Facebook comment, IntenseDebate, Livefyre等。我这里选择的是IntenseDebate,其它的访问速度貌似较慢。
161 | 去IntenseDebate注册账号,并获取到key,并定义在_config.yml中,如:
162 | intensedebate_identifier: 1ce8d80a5f6d373a46f4ceaf3dff8859,intensedebate_identifier取你自己想定义的名称,值为你注册后获取到的key 163 | 在_includes目录下创建disqus.html,并添加如下代码,这样文章就有了评论功能。 164 | "
165 | **3. 添加文章统计功能:**
166 | 我这里添加百度统计,添加谷歌统计因为被墙了,会影响文章的访问速度,添加也需要先去百度统计网站注册账户,申请key,申请到key后类似上一步定义在_config.yml中,同时会得到一段代码,把它添加到_includes目录下的head.html中,这样统计功能就添加完成 167 | 168 | 169 | 178 | 179 | **4. 添加文章访问量功能:**
180 | 在_includes目录下的head.html中添加 181 | 182 | 183 | 184 | 在_includes目录下的footer.html中添加如下代码,这样文章底部有了统计访问量功能 185 | 186 | 本站总访问量: 187 | 188 | 在_layouts目录下的post.html中添加如下代码,这样每篇文章有了统计访问量功能 189 | 190 | | 访问量: 191 | 192 | **5. 博客其它样式修改:**
193 | 博客其它样式修改主要参考以下几篇博客:
194 | 博客模板1
195 | 博客模板2
196 | 博客模板3
197 | 198 | 到此,一个满足自己需求的个人博客网站就搭建完成。 199 | -------------------------------------------------------------------------------- /_posts/随笔-essays/2018-02-07-hello-world.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Hello World!我的个人网站 4 | date: 2018-02-07 21:16:00 +0900 5 | description: Hello World! 6 | img: post-1.jpg # Add image post (optional) 7 | tags: [随笔] 8 | author: # Add name author (optional) 9 | essays: true 10 | --- 11 | 12 | {{site.label1}} Leach Chen {{site.label2}} 13 | 14 | Hello World! 15 | 16 | 经过一段业余时间的修整,由我亲手修改打造的个人网站终于问世啦!特发表一篇文章记录下🙂 17 | 18 | **本网站有如下特点:** 19 | 1. 网站托管于github,免费且无限流量,可指向自己的域名; 20 | 2. 里面所有文章,资源,源码均放在自己电脑上,发布上传到github即可; 21 | 3. 样式、排版、功能完全都可以按照自己需求去改动,具极大的灵活性,懂web的小伙伴能打造出更酷炫属于自己的网站哦; 22 | 4. 网站为轻量级个人网站,无需个人的服务器及数据库 23 | 5. 网站支持百度统计、谷歌统计; 24 | 6. 网站兼容移动端浏览; 25 | 7. 网站支持页面回到顶部功能; 26 | 8. 网站支持分类文章数量统计 27 | 9. 网站首页文章支持分页查看 28 | 10. 文章支持分类存放; 29 | 11. 文章支持搜索功能; 30 | 12. 文章支持留言功能; 31 | 13. 文章支持打赏功能; 32 | 14. 文章支持分享; 33 | 15. 文章支持浏览数量统计; 34 | 16. 文章支持上一篇,下一篇查看; 35 | 17. 文章支持tag标签标记; 36 | 18. 文章支持底部最近文章查看; 37 | 19. 文章编写均支持markdown,基于jekyll编译可实时预览文章; 38 | 20. 在jekyll或者hexo官网有许多个人网站模板,可找到自己喜欢的进行修改 39 | 40 | 41 | 本网站简约舒适,后续出將推出本站详细搭站过程及收纳优质技术类博客及自己原创博客。
有兴趣的小伙伴欢迎点击star本站源码 42 | -------------------------------------------------------------------------------- /assets/css/sass/_media.scss: -------------------------------------------------------------------------------- 1 | /* Small Devices, Tablets */ 2 | @media only screen and (max-width: 768px) { 3 | .main-header { 4 | .logo { 5 | a { 6 | font-size: 24px; 7 | } 8 | } 9 | } 10 | 11 | .post-card-box { 12 | li { 13 | width: 100%; 14 | margin-bottom: 20px; 15 | &:last-child { 16 | margin-bottom: 0; 17 | } 18 | } 19 | } 20 | 21 | .recent-box { 22 | .recent-list { 23 | .recent-item { 24 | position: relative; 25 | display: inline-block; 26 | width: 49%; 27 | height: 150px; 28 | margin-left: 0.5%; 29 | margin-bottom: 0.5%; 30 | span { 31 | position: absolute; 32 | font-size: 12px; 33 | left: 2.5%; 34 | bottom: 10%; 35 | color: $white; 36 | } 37 | } 38 | } 39 | } 40 | 41 | } 42 | 43 | @media only screen and (max-width: 480px) { 44 | .wrapper { 45 | max-width: 95%; 46 | } 47 | 48 | .page-content { 49 | margin-top: -50px; 50 | padding: 15px; 51 | } 52 | 53 | .header-page { 54 | margin-bottom: 20px; 55 | h1 { 56 | font-size: 27px; 57 | margin: 0 0 10px; 58 | } 59 | .page-date { 60 | font-size: 14px; 61 | } 62 | } 63 | 64 | .main-header { 65 | .logo { 66 | a { 67 | font-size: 21px; 68 | } 69 | } 70 | } 71 | .menu-icon, 72 | .menu-icon-close, 73 | .search-icon, 74 | .search-icon-close { 75 | font-size: 16px; 76 | } 77 | 78 | .page-image { 79 | height: 380px; 80 | } 81 | 82 | .recent-box { 83 | .recent-list { 84 | .recent-item { 85 | position: relative; 86 | display: inline-block; 87 | width: 99%; 88 | height: 150px; 89 | margin-left: 0.5%; 90 | margin-bottom: 0.5%; 91 | span { 92 | position: absolute; 93 | font-size: 12px; 94 | left: 2.5%; 95 | bottom: 10%; 96 | color: $white; 97 | } 98 | } 99 | } 100 | } 101 | 102 | .newsletter { 103 | .newsletter-box { 104 | .subscribe-btn { 105 | width: 80px; 106 | height: 40px; 107 | font-size: 12px; 108 | } 109 | } 110 | } 111 | 112 | .about-body { 113 | .contact-list { 114 | li { 115 | display: inline-block; 116 | margin-left: 5px; 117 | &:first-child { 118 | margin-left: 0; 119 | } 120 | a { 121 | display: block; 122 | color: $light-gray; 123 | font-size: 16px; 124 | text-decoration: none; 125 | padding: 5px; 126 | transition: all 350ms cubic-bezier(0.13, 0.43, 0.54, 1.82); 127 | &:hover { 128 | color: $dark-pink; 129 | transform: scale(1.3); 130 | } 131 | } 132 | } 133 | } 134 | } 135 | 136 | .author-box { 137 | display: flex; 138 | flex-direction: column; 139 | align-items: center; 140 | text-align: center; 141 | .author-img { 142 | height: 100px; 143 | width: 100px; 144 | margin: 0 0 10px; 145 | } 146 | .author-desc { 147 | h2 { 148 | margin: 0 0 10px; 149 | } 150 | p { 151 | margin: 0 0 15px; 152 | } 153 | } 154 | } 155 | 156 | } 157 | -------------------------------------------------------------------------------- /assets/css/sass/_syntax.scss: -------------------------------------------------------------------------------- 1 | .highlight {background-color: #faf9f9; border-radius: 3px; margin: 0;} 2 | .highlighter-rouge {color: $dark-pink; font-weight: 400; border: 1px solid #607D8B; border-radius: 3px; padding: 0.1rem 0.5rem;} 3 | .highlight .hll { background-color: #ffc; } 4 | .highlight .c { color: #999; } /* Comment */ 5 | .highlight .err { color: #a00; background-color: #faa; } /* Error */ 6 | .highlight .k { color: #069; } /* Keyword */ 7 | .highlight .o { color: #555; } /* Operator */ 8 | .highlight .cm { color: #09f; font-style: italic; } /* Comment.Multiline */ 9 | .highlight .cp { color: #099; } /* Comment.Preproc */ 10 | .highlight .c1 { color: #999; } /* Comment.Single */ 11 | .highlight .cs { color: #999; } /* Comment.Special */ 12 | .highlight .gd { background-color: #fcc; border: 1px solid #c00; } /* Generic.Deleted */ 13 | .highlight .ge { font-style: italic; } /* Generic.Emph */ 14 | .highlight .gr { color: #f00; } /* Generic.Error */ 15 | .highlight .gh { color: #030; } /* Generic.Heading */ 16 | .highlight .gi { background-color: #cfc; border: 1px solid #0c0; } /* Generic.Inserted */ 17 | .highlight .go { color: #aaa; } /* Generic.Output */ 18 | .highlight .gp { color: #009; } /* Generic.Prompt */ 19 | .highlight .gs { } /* Generic.Strong */ 20 | .highlight .gu { color: #030; } /* Generic.Subheading */ 21 | .highlight .gt { color: #9c6; } /* Generic.Traceback */ 22 | .highlight .kc { color: #069; } /* Keyword.Constant */ 23 | .highlight .kd { color: #069; } /* Keyword.Declaration */ 24 | .highlight .kn { color: #069; } /* Keyword.Namespace */ 25 | .highlight .kp { color: #069; } /* Keyword.Pseudo */ 26 | .highlight .kr { color: #069; } /* Keyword.Reserved */ 27 | .highlight .kt { color: #078; } /* Keyword.Type */ 28 | .highlight .m { color: #f60; } /* Literal.Number */ 29 | .highlight .s { color: #d44950; } /* Literal.String */ 30 | .highlight .na { color: #4f9fcf; } /* Name.Attribute */ 31 | .highlight .nb { color: #366; } /* Name.Builtin */ 32 | .highlight .nc { color: #0a8; } /* Name.Class */ 33 | .highlight .no { color: #360; } /* Name.Constant */ 34 | .highlight .nd { color: #99f; } /* Name.Decorator */ 35 | .highlight .ni { color: #999; } /* Name.Entity */ 36 | .highlight .ne { color: #c00; } /* Name.Exception */ 37 | .highlight .nf { color: #c0f; } /* Name.Function */ 38 | .highlight .nl { color: #99f; } /* Name.Label */ 39 | .highlight .nn { color: #0cf; } /* Name.Namespace */ 40 | .highlight .nt { color: #2f6f9f; } /* Name.Tag */ 41 | .highlight .nv { color: #033; } /* Name.Variable */ 42 | .highlight .ow { color: #000; } /* Operator.Word */ 43 | .highlight .w { color: #bbb; } /* Text.Whitespace */ 44 | .highlight .mf { color: #f60; } /* Literal.Number.Float */ 45 | .highlight .mh { color: #f60; } /* Literal.Number.Hex */ 46 | .highlight .mi { color: #f60; } /* Literal.Number.Integer */ 47 | .highlight .mo { color: #f60; } /* Literal.Number.Oct */ 48 | .highlight .sb { color: #c30; } /* Literal.String.Backtick */ 49 | .highlight .sc { color: #c30; } /* Literal.String.Char */ 50 | .highlight .sd { color: #c30; font-style: italic; } /* Literal.String.Doc */ 51 | .highlight .s2 { color: #c30; } /* Literal.String.Double */ 52 | .highlight .se { color: #c30; } /* Literal.String.Escape */ 53 | .highlight .sh { color: #c30; } /* Literal.String.Heredoc */ 54 | .highlight .si { color: #a00; } /* Literal.String.Interpol */ 55 | .highlight .sx { color: #c30; } /* Literal.String.Other */ 56 | .highlight .sr { color: #3aa; } /* Literal.String.Regex */ 57 | .highlight .s1 { color: #c30; } /* Literal.String.Single */ 58 | .highlight .ss { color: #fc3; } /* Literal.String.Symbol */ 59 | .highlight .bp { color: #366; } /* Name.Builtin.Pseudo */ 60 | .highlight .vc { color: #033; } /* Name.Variable.Class */ 61 | .highlight .vg { color: #033; } /* Name.Variable.Global */ 62 | .highlight .vi { color: #033; } /* Name.Variable.Instance */ 63 | .highlight .il { color: #f60; } /* Literal.Number.Integer.Long */ 64 | 65 | .css .o, 66 | .css .o + .nt, 67 | .css .nt + .nt { color: #999; } 68 | -------------------------------------------------------------------------------- /assets/css/sass/_variables.scss: -------------------------------------------------------------------------------- 1 | $black: #000; 2 | $white: #fff; 3 | $blue: #2d89ec; 4 | $dark-purple: #311e3e; 5 | $dark-pink: #87314e; 6 | $gray: #efefef; 7 | $light-gray: #999999; 8 | $lighten-gray: #d9d9d9; 9 | $dark-gray: #3e3e40; 10 | -------------------------------------------------------------------------------- /assets/css/sass/main.scss: -------------------------------------------------------------------------------- 1 | @import "variables"; 2 | @import "syntax"; 3 | @import "tools/normalize"; 4 | 5 | 6 | /* = = = = = = = = = = Main Styles = = = = = = = = = = */ 7 | 8 | *, *::after, *::before { 9 | box-sizing: border-box; 10 | } 11 | 12 | html, body { 13 | height: 100%; 14 | overflow-x: hidden; 15 | } 16 | 17 | html { 18 | line-height: 1.5; 19 | } 20 | 21 | body { 22 | font-family: 'Montserrat', sans-serif; 23 | color: $dark-gray; 24 | margin: 0; 25 | background-color: $white; 26 | -webkit-font-smoothing: antialiased; 27 | -moz-osx-font-smoothing: grayscale; 28 | } 29 | 30 | h1, h2, h3, h4, h5, h6 { 31 | font-family: 'Lato', sans-serif; 32 | color: $dark-purple; 33 | font-weight: 400; 34 | } 35 | 36 | img { 37 | height: auto; 38 | max-width: 100%; 39 | } 40 | 41 | a { 42 | color: $dark-pink; 43 | } 44 | 45 | blockquote { 46 | border-left: 3px solid $dark-purple; 47 | padding-left: 18px; 48 | margin-left: 21px; 49 | font-style: italic; 50 | color: $dark-purple; 51 | } 52 | 53 | pre { 54 | padding: 16px 32px; 55 | overflow-x: auto; 56 | 57 | code { 58 | border: 0; 59 | padding-right: 0; 60 | padding-left: 0; 61 | } 62 | } 63 | 64 | .flex-container { 65 | display: flex; 66 | flex-direction: column; 67 | min-height: 100vh; 68 | transition: transform .4s cubic-bezier(0.16, 0.68, 0.43, 0.99); 69 | } 70 | 71 | .flex-container.active { 72 | transform: translate3d(300px, 0, 0); 73 | &::after { 74 | content: ""; 75 | position: fixed; 76 | top: 0; 77 | right: 0; 78 | bottom: 0; 79 | left: 0; 80 | z-index: 2; 81 | background-color: rgba(0,0,0,0.5); 82 | } 83 | } 84 | 85 | .content { 86 | flex-grow: 1; 87 | } 88 | 89 | .wrapper { 90 | width: 960px; 91 | max-width: 90%; 92 | margin: 0 auto; 93 | position: relative; 94 | } 95 | 96 | ::-moz-selection { 97 | background: rgba(49, 30, 62, 0.7); 98 | color: #ffffff; 99 | } 100 | 101 | ::selection { 102 | background: rgba(49, 30, 62, 0.7); 103 | color: #ffffff; 104 | } 105 | 106 | .clearfix::before, .clearfix::after { 107 | content: ""; 108 | display: table; 109 | clear: both; 110 | } 111 | 112 | .clearfix::before { 113 | clear: both; 114 | } 115 | 116 | /* = = = = = = = = = = Header Styles = = = = = = = = = = */ 117 | @import "parts/header"; 118 | 119 | /* = = = = = = = = = = Search Styles = = = = = = = = = = */ 120 | @import "parts/search"; 121 | 122 | /* = = = = = = = = = = Post-Card Styles = = = = = = = = = = */ 123 | @import "parts/post-card"; 124 | 125 | /* = = = = = = = = = = Pagination Styles = = = = = = = = = = */ 126 | @import "parts/pagination"; 127 | 128 | 129 | /* = = = = = = = = = = Footer Styles = = = = = = = = = = */ 130 | @import "parts/footer"; 131 | 132 | /* = = = = = = = = = = Post-Page Styles = = = = = = = = = = */ 133 | @import "parts/post-page"; 134 | 135 | /* = = = = = = = = = = Author Box Styles = = = = = = = = = = */ 136 | @import "parts/author-box"; 137 | 138 | /* = = = = = = = = = = About Page Styles = = = = = = = = = = */ 139 | @import "parts/about"; 140 | 141 | /* = = = = = = = = = = Tags Styles = = = = = = = = = = */ 142 | @import "parts/tags"; 143 | 144 | /* = = = = = = = = = = Animate Styles = = = = = = = = = = */ 145 | @import "parts/animate"; 146 | 147 | /* = = = = = = = = = = Media = = = = = = = = = = */ 148 | @import "media" 149 | -------------------------------------------------------------------------------- /assets/css/sass/parts/_about.scss: -------------------------------------------------------------------------------- 1 | .small-wrapper { 2 | width: 700px; 3 | max-width: 90%; 4 | margin: 0 auto; 5 | } 6 | 7 | .about-container { 8 | margin: 100px 0 100px; 9 | } 10 | 11 | .about-header { 12 | position: relative; 13 | text-align: center; 14 | padding-bottom: 30px; 15 | margin-bottom: 30px; 16 | &:after { 17 | content: ""; 18 | position: absolute; 19 | bottom: 0; 20 | left: 50%; 21 | transform: translateX(-50%); 22 | display: block; 23 | height: 1px; 24 | width: 80px; 25 | background-color: $dark-purple; 26 | } 27 | .author-image-container { 28 | width: 100px; 29 | height: 100px; 30 | border-radius: 100%; 31 | overflow: hidden; 32 | margin: 0 auto 30px; 33 | } 34 | .subtitle { 35 | color: $dark-purple; 36 | font-weight: 300; 37 | margin: 0; 38 | } 39 | } 40 | 41 | .about-body { 42 | .contact-list { 43 | margin: 0; 44 | padding: 0; 45 | list-style: none; 46 | text-align: center; 47 | li { 48 | display: inline-block; 49 | margin-left: 10px; 50 | &:first-child { 51 | margin-left: 0; 52 | } 53 | a { 54 | display: block; 55 | color: $light-gray; 56 | font-size: 21px; 57 | text-decoration: none; 58 | padding: 5px; 59 | transition: all 350ms cubic-bezier(0.13, 0.43, 0.54, 1.82); 60 | &:hover { 61 | color: $dark-pink; 62 | transform: scale(1.3); 63 | } 64 | } 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /assets/css/sass/parts/_animate.scss: -------------------------------------------------------------------------------- 1 | .main-header, 2 | .page-image, 3 | .page-content, 4 | .about-container, 5 | .post-card-box { 6 | animation-duration: 0.7s; 7 | animation-fill-mode: both; 8 | animation-name: fadeInDown; 9 | } 10 | 11 | .main-header, 12 | .page-image { 13 | animation-delay: 0.5s; 14 | } 15 | 16 | .page-content, 17 | .about-container, 18 | .post-card-box { 19 | animation-delay: 0.75s; 20 | } 21 | 22 | @-webkit-keyframes fadeInDown { 23 | from { 24 | opacity: 0; 25 | transform: translateY(-20px); 26 | } 27 | to { 28 | opacity: 1; 29 | transform: translateY(0); 30 | } 31 | } 32 | 33 | @keyframes fadeInDown { 34 | from { 35 | opacity: 0; 36 | transform: translateY(-20px); 37 | } 38 | to { 39 | opacity: 1; 40 | transform: translateY(0); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /assets/css/sass/parts/_author-box.scss: -------------------------------------------------------------------------------- 1 | .author-box { 2 | display: flex; 3 | justify-content: center; 4 | align-items: center; 5 | margin-top: 30px; 6 | padding-bottom: 30px; 7 | border-bottom: 1px solid $lighten-gray; 8 | .author-img { 9 | width: 120px; 10 | height: 120px; 11 | margin-right: 30px; 12 | border-radius: 100%; 13 | } 14 | .author-desc { 15 | h2 { 16 | margin: 0 0 10px; 17 | } 18 | p { 19 | margin: 0 0 10px; 20 | } 21 | ul { 22 | list-style: none; 23 | margin: 0; 24 | padding: 0; 25 | } 26 | li { 27 | display: inline-block; 28 | margin-left: 10px; 29 | &:first-child { 30 | margin-left: 0; 31 | } 32 | a { 33 | font-size: 18px; 34 | color: $dark-gray; 35 | &:hover { 36 | opacity: .8; 37 | } 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /assets/css/sass/parts/_footer.scss: -------------------------------------------------------------------------------- 1 | .main-footer { 2 | padding: 15px 0; 3 | background-color: #efefef; 4 | 5 | .copyright { 6 | text-align: center; 7 | color: $dark-purple; 8 | font-size: 16px; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /assets/css/sass/parts/_header.scss: -------------------------------------------------------------------------------- 1 | .main-header { 2 | font-family: 'Lato', sans-serif; 3 | padding: 15px 0; 4 | background-color: $white; 5 | box-shadow: 0px -5px 15px rgba(0,0,0,.3); 6 | 7 | .header-flex { 8 | display: flex; 9 | justify-content: space-between; 10 | align-items: center; 11 | } 12 | .logo { 13 | width: 50%; 14 | text-align: center; 15 | a { 16 | text-decoration: none; 17 | text-transform: uppercase; 18 | font-size: 27px; 19 | font-weight: 300; 20 | color: $dark-purple; 21 | } 22 | } 23 | } 24 | 25 | .main-nav { 26 | position: fixed; 27 | top: 0; 28 | left: 0; 29 | z-index: 10; 30 | width: 300px; 31 | height: 100%; 32 | background-color: $white; 33 | padding: 25px 30px; 34 | transform: translate3d(-300px, 0, 0); 35 | ul { 36 | padding: 15px 0 0; 37 | margin: 0; 38 | list-style: none; 39 | 40 | li { 41 | border-bottom: 1px solid $lighten-gray; 42 | a { 43 | display: block; 44 | padding: 15px 0; 45 | text-decoration: none; 46 | text-transform: uppercase; 47 | font-weight: 400; 48 | font-size: 16px; 49 | color: $dark-purple; 50 | &:hover { 51 | opacity: .8; 52 | color: $dark-pink; 53 | } 54 | } 55 | } 56 | } 57 | } 58 | 59 | .menu-icon-container { 60 | width: 25%; 61 | text-align: left; 62 | } 63 | 64 | .search-icon-container { 65 | width: 25%; 66 | text-align: right; 67 | } 68 | 69 | .menu-icon, 70 | .menu-icon-close, 71 | .search-icon a, 72 | .search-icon-close { 73 | cursor: pointer; 74 | font-size: 18px; 75 | color: $dark-purple; 76 | transition: all .4s; 77 | &:hover { 78 | opacity: .8; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /assets/css/sass/parts/_pagination.scss: -------------------------------------------------------------------------------- 1 | .pagination { 2 | margin-bottom: 30px; 3 | .previous { 4 | float: left; 5 | } 6 | .next { 7 | float: right; 8 | } 9 | .previous, .next { 10 | text-decoration: none; 11 | text-transform: uppercase; 12 | font-size: 14px; 13 | color: $dark-gray; 14 | &:hover { 15 | opacity: .8; 16 | color: $dark-pink; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /assets/css/sass/parts/_post-card.scss: -------------------------------------------------------------------------------- 1 | .post-card-box { 2 | margin: 100px 0 100px; 3 | padding: 0; 4 | 5 | li { 6 | position: relative; 7 | list-style: none; 8 | float: left; 9 | width: 50%; 10 | transition: all .3s; 11 | &:hover { 12 | opacity: 0.9; 13 | } 14 | } 15 | } 16 | 17 | .post-card { 18 | position: relative; 19 | 20 | .post-card-image { 21 | display: block; 22 | width: 100%; 23 | min-height: 150px; 24 | background-size: cover; 25 | background-position: center; 26 | background-repeat: no-repeat; 27 | &::after { 28 | content: ""; 29 | display: block; 30 | position: absolute; 31 | top: 0; 32 | left: 0; 33 | right: 0; 34 | bottom: 0; 35 | background: rgba(0,0,0,.3); 36 | } 37 | } 38 | 39 | .post-card-body { 40 | position: absolute; 41 | left: 5%; 42 | bottom: 5%; 43 | 44 | .post-card-link { 45 | text-decoration: none; 46 | display: block; 47 | } 48 | 49 | .post-card-title { 50 | font-family: 'Lato', sans-serif; 51 | font-weight: 700; 52 | text-transform: uppercase; 53 | font-size: 18px; 54 | color: $white; 55 | margin: 0 0 10px; 56 | &:hover { 57 | opacity: .8; 58 | } 59 | } 60 | 61 | .tag { 62 | text-decoration: none; 63 | font-size: 10px; 64 | text-transform: uppercase; 65 | color: $white; 66 | &:hover { 67 | text-decoration: underline; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /assets/css/sass/parts/_search.scss: -------------------------------------------------------------------------------- 1 | .search-box { 2 | padding-top: 40px; 3 | position: fixed; 4 | top: 0; 5 | right: 0; 6 | bottom: 0; 7 | left: 0; 8 | z-index: 100; 9 | background: #fff; 10 | transition: all .4s ease-in-out; 11 | transform: translate(0, -100%) scale(0, 0); 12 | } 13 | 14 | .search-grid { 15 | width: 60%; 16 | margin: 0 auto; 17 | } 18 | 19 | .search-form { 20 | margin-bottom: 15px; 21 | .search { 22 | width: 100%; 23 | padding: 15px; 24 | border: none; 25 | border-bottom: 1px solid $lighten-gray; 26 | outline: none; 27 | font-size: 21px; 28 | color: $dark-gray; 29 | } 30 | } 31 | 32 | .results-search { 33 | list-style: none; 34 | overflow: auto; 35 | height: 90vh; 36 | margin: 0; 37 | padding: 0; 38 | li { 39 | padding-bottom: 15px; 40 | margin-bottom: 15px; 41 | border-bottom: 1px solid $lighten-gray; 42 | 43 | a { 44 | text-decoration: none; 45 | color: $dark-gray; 46 | &:hover { 47 | color: $dark-pink; 48 | opacity: .8; 49 | } 50 | } 51 | } 52 | } 53 | 54 | .search-box.search-active { 55 | transform: translate(0, 0) scale(1, 1); 56 | } 57 | 58 | .icon-close-container { 59 | position: absolute; 60 | top: 0; 61 | right: 0; 62 | } 63 | -------------------------------------------------------------------------------- /assets/css/sass/parts/_tags.scss: -------------------------------------------------------------------------------- 1 | .blog-tags { 2 | margin: 100px 0 100px; 3 | h1 { 4 | text-align: center; 5 | font-family: 'Lato', sans-serif; 6 | font-weight: 400; 7 | font-size: 36px; 8 | text-align: center; 9 | margin: 0 0 30px; 10 | color: $dark-purple; 11 | } 12 | .tags { 13 | margin: 0; 14 | padding: 0; 15 | list-style: none; 16 | li { 17 | a { 18 | display: inline-block; 19 | color: $dark-purple; 20 | &:hover { 21 | opacity: .8; 22 | } 23 | } 24 | } 25 | } 26 | .tag-list { 27 | span { 28 | a { 29 | display: inline-block; 30 | color: $dark-pink; 31 | text-decoration: none; 32 | text-transform: uppercase; 33 | font-size: 12px; 34 | margin-bottom: 10px; 35 | &:hover { 36 | text-decoration: underline; 37 | opacity: .8; 38 | } 39 | } 40 | } 41 | small { 42 | color: $dark-purple; 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /assets/css/sass/parts/post-page.scss: -------------------------------------------------------------------------------- 1 | .page-image { 2 | position: relative; 3 | padding: 0; 4 | margin: 0; 5 | height: 500px; 6 | background-color: $white; 7 | overflow: hidden; 8 | 9 | .cover-image { 10 | height: 100%; 11 | width: 100%; 12 | } 13 | } 14 | 15 | .page-content { 16 | margin-top: -80px; 17 | margin-bottom: 100px; 18 | background-color: $white; 19 | padding: 20px; 20 | border-top-left-radius: 20px; 21 | border-top-right-radius: 20px; 22 | box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.3); 23 | } 24 | 25 | .header-page { 26 | position: relative; 27 | margin-bottom: 30px; 28 | h1 { 29 | font-family: 'Lato', sans-serif; 30 | font-weight: 400; 31 | font-size: 36px; 32 | text-align: center; 33 | margin: 0 0 20px; 34 | color: $dark-purple; 35 | } 36 | .page-date { 37 | text-align: center; 38 | font-size: 14px; 39 | text-transform: uppercase; 40 | font-weight: 300; 41 | } 42 | } 43 | 44 | .page-footer { 45 | margin-top: 30px; 46 | padding-bottom: 30px; 47 | padding-bottom: 30px; 48 | border-bottom: 1px solid $lighten-gray; 49 | .page-tag, 50 | .page-share { 51 | text-transform: uppercase; 52 | font-size: 12px; 53 | color: $dark-purple; 54 | } 55 | .page-tag { 56 | margin-bottom: 10px; 57 | a { 58 | text-decoration: none; 59 | color: $dark-pink; 60 | &:hover { 61 | opacity: .8; 62 | } 63 | } 64 | } 65 | .page-share { 66 | a { 67 | text-decoration: none; 68 | color: $light-gray; 69 | margin-left: 10px; 70 | font-size: 18px; 71 | &:hover { 72 | opacity: .8; 73 | } 74 | } 75 | } 76 | } 77 | 78 | .recent-box { 79 | margin-top: 30px; 80 | padding-bottom: 30px; 81 | border-bottom: 1px solid $lighten-gray; 82 | .recent-title { 83 | font-family: 'Lato', sans-serif; 84 | font-weight: 400; 85 | color: $dark-purple; 86 | text-align: center; 87 | margin: 0 0 30px; 88 | } 89 | .recent-list { 90 | .recent-item { 91 | position: relative; 92 | display: inline-block; 93 | width: 24%; 94 | height: 150px; 95 | margin-left: 0.5%; 96 | margin-bottom: 0.5%; 97 | transition: all .3s; 98 | span { 99 | position: absolute; 100 | font-size: 12px; 101 | left: 2.5%; 102 | bottom: 10%; 103 | color: $white; 104 | } 105 | &:hover { 106 | opacity: 0.8; 107 | } 108 | } 109 | } 110 | } 111 | 112 | .newsletter { 113 | text-align: center; 114 | margin-top: 30px; 115 | padding-bottom: 60px; 116 | margin-bottom: 30px; 117 | border-bottom: 1px solid $gray; 118 | .newsletter-title { 119 | font-weight: 400; 120 | } 121 | .form-container { 122 | padding: 30px; 123 | background-color: $gray; 124 | width: 720px; 125 | max-width: 100%; 126 | margin: 0 auto; 127 | p { 128 | margin: 0; 129 | } 130 | } 131 | .screen-reader-text { 132 | clip: rect(1px, 1px, 1px, 1px); 133 | height: 1px; 134 | overflow: hidden; 135 | position: absolute !important; 136 | width: 1px; 137 | word-wrap: normal !important; 138 | } 139 | .newsletter-box { 140 | position: relative; 141 | max-width: 100%; 142 | margin: 25px 0; 143 | display: flex; 144 | align-items: stretch; 145 | .email-input { 146 | flex-grow: 1; 147 | height: 40px; 148 | padding: 8px 10px; 149 | width: 100%; 150 | max-width: 100%; 151 | color: $dark-gray; 152 | border: none; 153 | border-radius: 2px; 154 | font-size: 14px; 155 | outline: none; 156 | } 157 | .subscribe-btn { 158 | flex-shrink: 0; 159 | width: 100px; 160 | height: 40px; 161 | font-size: 14px; 162 | text-align: center; 163 | color: $white; 164 | background-color: $dark-purple; 165 | vertical-align: baseline; 166 | cursor: pointer; 167 | border: none; 168 | border-radius: 2px; 169 | outline: none; 170 | transition: all .3s; 171 | &:hover { 172 | background-color: $dark-pink; 173 | } 174 | } 175 | } 176 | } 177 | -------------------------------------------------------------------------------- /assets/css/sass/tools/_normalize.scss: -------------------------------------------------------------------------------- 1 | /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ 2 | 3 | /* Document 4 | ========================================================================== */ 5 | 6 | /** 7 | * 1. Correct the line height in all browsers. 8 | * 2. Prevent adjustments of font size after orientation changes in 9 | * IE on Windows Phone and in iOS. 10 | */ 11 | 12 | html { 13 | line-height: 1.15; /* 1 */ 14 | -ms-text-size-adjust: 100%; /* 2 */ 15 | -webkit-text-size-adjust: 100%; /* 2 */ 16 | } 17 | 18 | /* Sections 19 | ========================================================================== */ 20 | 21 | /** 22 | * Remove the margin in all browsers (opinionated). 23 | */ 24 | 25 | body { 26 | margin: 0; 27 | } 28 | 29 | /** 30 | * Add the correct display in IE 9-. 31 | */ 32 | 33 | article, 34 | aside, 35 | footer, 36 | header, 37 | nav, 38 | section { 39 | display: block; 40 | } 41 | 42 | /** 43 | * Correct the font size and margin on `h1` elements within `section` and 44 | * `article` contexts in Chrome, Firefox, and Safari. 45 | */ 46 | 47 | h1 { 48 | font-size: 2em; 49 | margin: 0.67em 0; 50 | } 51 | 52 | /* Grouping content 53 | ========================================================================== */ 54 | 55 | /** 56 | * Add the correct display in IE 9-. 57 | * 1. Add the correct display in IE. 58 | */ 59 | 60 | figcaption, 61 | figure, 62 | main { /* 1 */ 63 | display: block; 64 | } 65 | 66 | /** 67 | * Add the correct margin in IE 8. 68 | */ 69 | 70 | figure { 71 | margin: 1em 40px; 72 | } 73 | 74 | /** 75 | * 1. Add the correct box sizing in Firefox. 76 | * 2. Show the overflow in Edge and IE. 77 | */ 78 | 79 | hr { 80 | box-sizing: content-box; /* 1 */ 81 | height: 0; /* 1 */ 82 | overflow: visible; /* 2 */ 83 | } 84 | 85 | /** 86 | * 1. Correct the inheritance and scaling of font size in all browsers. 87 | * 2. Correct the odd `em` font sizing in all browsers. 88 | */ 89 | 90 | pre { 91 | font-family: monospace, monospace; /* 1 */ 92 | font-size: 1em; /* 2 */ 93 | } 94 | 95 | /* Text-level semantics 96 | ========================================================================== */ 97 | 98 | /** 99 | * 1. Remove the gray background on active links in IE 10. 100 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. 101 | */ 102 | 103 | a { 104 | background-color: transparent; /* 1 */ 105 | -webkit-text-decoration-skip: objects; /* 2 */ 106 | } 107 | 108 | /** 109 | * 1. Remove the bottom border in Chrome 57- and Firefox 39-. 110 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 111 | */ 112 | 113 | abbr[title] { 114 | border-bottom: none; /* 1 */ 115 | text-decoration: underline; /* 2 */ 116 | text-decoration: underline dotted; /* 2 */ 117 | } 118 | 119 | /** 120 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6. 121 | */ 122 | 123 | b, 124 | strong { 125 | font-weight: inherit; 126 | } 127 | 128 | /** 129 | * Add the correct font weight in Chrome, Edge, and Safari. 130 | */ 131 | 132 | b, 133 | strong { 134 | font-weight: bolder; 135 | } 136 | 137 | /** 138 | * 1. Correct the inheritance and scaling of font size in all browsers. 139 | * 2. Correct the odd `em` font sizing in all browsers. 140 | */ 141 | 142 | code, 143 | kbd, 144 | samp { 145 | font-family: monospace, monospace; /* 1 */ 146 | font-size: 1em; /* 2 */ 147 | } 148 | 149 | /** 150 | * Add the correct font style in Android 4.3-. 151 | */ 152 | 153 | dfn { 154 | font-style: italic; 155 | } 156 | 157 | /** 158 | * Add the correct background and color in IE 9-. 159 | */ 160 | 161 | mark { 162 | background-color: #ff0; 163 | color: #000; 164 | } 165 | 166 | /** 167 | * Add the correct font size in all browsers. 168 | */ 169 | 170 | small { 171 | font-size: 80%; 172 | } 173 | 174 | /** 175 | * Prevent `sub` and `sup` elements from affecting the line height in 176 | * all browsers. 177 | */ 178 | 179 | sub, 180 | sup { 181 | font-size: 75%; 182 | line-height: 0; 183 | position: relative; 184 | vertical-align: baseline; 185 | } 186 | 187 | sub { 188 | bottom: -0.25em; 189 | } 190 | 191 | sup { 192 | top: -0.5em; 193 | } 194 | 195 | /* Embedded content 196 | ========================================================================== */ 197 | 198 | /** 199 | * Add the correct display in IE 9-. 200 | */ 201 | 202 | audio, 203 | video { 204 | display: inline-block; 205 | } 206 | 207 | /** 208 | * Add the correct display in iOS 4-7. 209 | */ 210 | 211 | audio:not([controls]) { 212 | display: none; 213 | height: 0; 214 | } 215 | 216 | /** 217 | * Remove the border on images inside links in IE 10-. 218 | */ 219 | 220 | img { 221 | border-style: none; 222 | } 223 | 224 | /** 225 | * Hide the overflow in IE. 226 | */ 227 | 228 | svg:not(:root) { 229 | overflow: hidden; 230 | } 231 | 232 | /* Forms 233 | ========================================================================== */ 234 | 235 | /** 236 | * 1. Change the font styles in all browsers (opinionated). 237 | * 2. Remove the margin in Firefox and Safari. 238 | */ 239 | 240 | button, 241 | input, 242 | optgroup, 243 | select, 244 | textarea { 245 | font-family: sans-serif; /* 1 */ 246 | font-size: 100%; /* 1 */ 247 | line-height: 1.15; /* 1 */ 248 | margin: 0; /* 2 */ 249 | } 250 | 251 | /** 252 | * Show the overflow in IE. 253 | * 1. Show the overflow in Edge. 254 | */ 255 | 256 | button, 257 | input { /* 1 */ 258 | overflow: visible; 259 | } 260 | 261 | /** 262 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 263 | * 1. Remove the inheritance of text transform in Firefox. 264 | */ 265 | 266 | button, 267 | select { /* 1 */ 268 | text-transform: none; 269 | } 270 | 271 | /** 272 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` 273 | * controls in Android 4. 274 | * 2. Correct the inability to style clickable types in iOS and Safari. 275 | */ 276 | 277 | button, 278 | html [type="button"], /* 1 */ 279 | [type="reset"], 280 | [type="submit"] { 281 | -webkit-appearance: button; /* 2 */ 282 | } 283 | 284 | /** 285 | * Remove the inner border and padding in Firefox. 286 | */ 287 | 288 | button::-moz-focus-inner, 289 | [type="button"]::-moz-focus-inner, 290 | [type="reset"]::-moz-focus-inner, 291 | [type="submit"]::-moz-focus-inner { 292 | border-style: none; 293 | padding: 0; 294 | } 295 | 296 | /** 297 | * Restore the focus styles unset by the previous rule. 298 | */ 299 | 300 | button:-moz-focusring, 301 | [type="button"]:-moz-focusring, 302 | [type="reset"]:-moz-focusring, 303 | [type="submit"]:-moz-focusring { 304 | outline: 1px dotted ButtonText; 305 | } 306 | 307 | /** 308 | * Correct the padding in Firefox. 309 | */ 310 | 311 | fieldset { 312 | padding: 0.35em 0.75em 0.625em; 313 | } 314 | 315 | /** 316 | * 1. Correct the text wrapping in Edge and IE. 317 | * 2. Correct the color inheritance from `fieldset` elements in IE. 318 | * 3. Remove the padding so developers are not caught out when they zero out 319 | * `fieldset` elements in all browsers. 320 | */ 321 | 322 | legend { 323 | box-sizing: border-box; /* 1 */ 324 | color: inherit; /* 2 */ 325 | display: table; /* 1 */ 326 | max-width: 100%; /* 1 */ 327 | padding: 0; /* 3 */ 328 | white-space: normal; /* 1 */ 329 | } 330 | 331 | /** 332 | * 1. Add the correct display in IE 9-. 333 | * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. 334 | */ 335 | 336 | progress { 337 | display: inline-block; /* 1 */ 338 | vertical-align: baseline; /* 2 */ 339 | } 340 | 341 | /** 342 | * Remove the default vertical scrollbar in IE. 343 | */ 344 | 345 | textarea { 346 | overflow: auto; 347 | } 348 | 349 | /** 350 | * 1. Add the correct box sizing in IE 10-. 351 | * 2. Remove the padding in IE 10-. 352 | */ 353 | 354 | [type="checkbox"], 355 | [type="radio"] { 356 | box-sizing: border-box; /* 1 */ 357 | padding: 0; /* 2 */ 358 | } 359 | 360 | /** 361 | * Correct the cursor style of increment and decrement buttons in Chrome. 362 | */ 363 | 364 | [type="number"]::-webkit-inner-spin-button, 365 | [type="number"]::-webkit-outer-spin-button { 366 | height: auto; 367 | } 368 | 369 | /** 370 | * 1. Correct the odd appearance in Chrome and Safari. 371 | * 2. Correct the outline style in Safari. 372 | */ 373 | 374 | [type="search"] { 375 | -webkit-appearance: textfield; /* 1 */ 376 | outline-offset: -2px; /* 2 */ 377 | } 378 | 379 | /** 380 | * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. 381 | */ 382 | 383 | [type="search"]::-webkit-search-cancel-button, 384 | [type="search"]::-webkit-search-decoration { 385 | -webkit-appearance: none; 386 | } 387 | 388 | /** 389 | * 1. Correct the inability to style clickable types in iOS and Safari. 390 | * 2. Change font properties to `inherit` in Safari. 391 | */ 392 | 393 | ::-webkit-file-upload-button { 394 | -webkit-appearance: button; /* 1 */ 395 | font: inherit; /* 2 */ 396 | } 397 | 398 | /* Interactive 399 | ========================================================================== */ 400 | 401 | /* 402 | * Add the correct display in IE 9-. 403 | * 1. Add the correct display in Edge, IE, and Firefox. 404 | */ 405 | 406 | details, /* 1 */ 407 | menu { 408 | display: block; 409 | } 410 | 411 | /* 412 | * Add the correct display in all browsers. 413 | */ 414 | 415 | summary { 416 | display: list-item; 417 | } 418 | 419 | /* Scripting 420 | ========================================================================== */ 421 | 422 | /** 423 | * Add the correct display in IE 9-. 424 | */ 425 | 426 | canvas { 427 | display: inline-block; 428 | } 429 | 430 | /** 431 | * Add the correct display in IE. 432 | */ 433 | 434 | template { 435 | display: none; 436 | } 437 | 438 | /* Hidden 439 | ========================================================================== */ 440 | 441 | /** 442 | * Add the correct display in IE 10-. 443 | */ 444 | 445 | [hidden] { 446 | display: none; 447 | } 448 | -------------------------------------------------------------------------------- /assets/fonts/font-awesome/css/font-awesome.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} 5 | -------------------------------------------------------------------------------- /assets/fonts/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/fonts/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /assets/fonts/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/fonts/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /assets/fonts/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/fonts/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /assets/fonts/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /assets/fonts/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /assets/img/adam-blog-imac.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/adam-blog-imac.jpg -------------------------------------------------------------------------------- /assets/img/adam-home-page.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/adam-home-page.jpg -------------------------------------------------------------------------------- /assets/img/adam-post-example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/adam-post-example.jpg -------------------------------------------------------------------------------- /assets/img/alipay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/alipay.jpg -------------------------------------------------------------------------------- /assets/img/alipayimg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/alipayimg.jpg -------------------------------------------------------------------------------- /assets/img/bg_about.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/bg_about.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/add_http_request.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/add_http_request.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/add_http_request_detail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/add_http_request_detail.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/add_thread.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/add_thread.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/assert_create.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/assert_create.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/assert_create_detail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/assert_create_detail.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/assert_result.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/assert_result.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/json_create.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/json_create.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/json_create_detail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/json_create_detail.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/result_tree.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/result_tree.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/result_tree_detail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/result_tree_detail.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/yali_test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/yali_test.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/信息头管理器.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/信息头管理器.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/信息头管理器详情.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/信息头管理器详情.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/默认HTTP请求.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/默认HTTP请求.jpg -------------------------------------------------------------------------------- /assets/img/blog/abouttest/jmeter2/默认HTTP请求添加.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/abouttest/jmeter2/默认HTTP请求添加.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/androidstudio/sdkupdate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/androidstudio/sdkupdate.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/arrowtextview/preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/arrowtextview/preview.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/compile/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/compile/1.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/compile/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/compile/2.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/gps/gpsparase.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/gps/gpsparase.gif -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/jni/jniconfig/2018-03-07-android-jni-mk.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Android JNI——Android.mk 4 | date: 2018-03-07 18:20:00 +0900 5 | description: Android JNI——Android.mk 6 | img: post-8.jpg # Add image post (optional) 7 | tags: [Android,JNI] 8 | author: # Add name author (optional) 9 | androidoriginal: true 10 | --- 11 | 敬请期待................. 12 | -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/jni/jniconfig/build_config.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/jni/jniconfig/build_config.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/jni/jniconfig/c_part.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/jni/jniconfig/c_part.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/jni/jniconfig/c_part1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/jni/jniconfig/c_part1.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/jni/jniconfig/log_config.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/jni/jniconfig/log_config.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/jni/jniconfig/method_create.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/jni/jniconfig/method_create.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/view/eventpass/first.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/view/eventpass/first.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/view/eventpass/four.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/view/eventpass/four.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/view/eventpass/second.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/view/eventpass/second.jpg -------------------------------------------------------------------------------- /assets/img/blog/androidoriginal/view/eventpass/third.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/androidoriginal/view/eventpass/third.jpg -------------------------------------------------------------------------------- /assets/img/blog/flutter/firstapplication/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/firstapplication/0.gif -------------------------------------------------------------------------------- /assets/img/blog/flutter/firstapplication/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/firstapplication/1.png -------------------------------------------------------------------------------- /assets/img/blog/flutter/firstapplication/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/firstapplication/2.png -------------------------------------------------------------------------------- /assets/img/blog/flutter/firstapplication/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/firstapplication/3.png -------------------------------------------------------------------------------- /assets/img/blog/flutter/firstapplication/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/firstapplication/4.png -------------------------------------------------------------------------------- /assets/img/blog/flutter/firstapplication/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/firstapplication/5.png -------------------------------------------------------------------------------- /assets/img/blog/flutter/firstapplication/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/firstapplication/6.png -------------------------------------------------------------------------------- /assets/img/blog/flutter/firstapplication/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/firstapplication/7.png -------------------------------------------------------------------------------- /assets/img/blog/flutter/firstapplication/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/firstapplication/8.png -------------------------------------------------------------------------------- /assets/img/blog/flutter/third/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/third/1.png -------------------------------------------------------------------------------- /assets/img/blog/flutter/third/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/third/10.jpg -------------------------------------------------------------------------------- /assets/img/blog/flutter/third/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/third/2.jpg -------------------------------------------------------------------------------- /assets/img/blog/flutter/third/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/third/3.jpg -------------------------------------------------------------------------------- /assets/img/blog/flutter/third/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/third/4.jpg -------------------------------------------------------------------------------- /assets/img/blog/flutter/third/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/third/5.jpg -------------------------------------------------------------------------------- /assets/img/blog/flutter/third/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/third/6.jpg -------------------------------------------------------------------------------- /assets/img/blog/flutter/third/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/third/7.png -------------------------------------------------------------------------------- /assets/img/blog/flutter/third/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/third/8.jpg -------------------------------------------------------------------------------- /assets/img/blog/flutter/third/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/flutter/third/9.jpg -------------------------------------------------------------------------------- /assets/img/blog/hacker/actualoperation1/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/hacker/actualoperation1/1.jpg -------------------------------------------------------------------------------- /assets/img/blog/hacker/actualoperation1/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/hacker/actualoperation1/2.jpg -------------------------------------------------------------------------------- /assets/img/blog/hacker/actualoperation1/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/hacker/actualoperation1/3.jpg -------------------------------------------------------------------------------- /assets/img/blog/hacker/actualoperation1/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/hacker/actualoperation1/4.jpg -------------------------------------------------------------------------------- /assets/img/blog/hacker/actualoperation1/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/hacker/actualoperation1/5.jpg -------------------------------------------------------------------------------- /assets/img/blog/hacker/actualoperation1/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/hacker/actualoperation1/6.jpg -------------------------------------------------------------------------------- /assets/img/blog/hacker/smaliandroidstudio/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/hacker/smaliandroidstudio/1.jpg -------------------------------------------------------------------------------- /assets/img/blog/hacker/smaliandroidstudio/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/hacker/smaliandroidstudio/2.jpg -------------------------------------------------------------------------------- /assets/img/blog/hacker/smaliandroidstudio/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/hacker/smaliandroidstudio/3.jpg -------------------------------------------------------------------------------- /assets/img/blog/hacker/smaliandroidstudio/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/hacker/smaliandroidstudio/4.jpg -------------------------------------------------------------------------------- /assets/img/blog/hacker/smaliandroidstudio/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/hacker/smaliandroidstudio/5.jpg -------------------------------------------------------------------------------- /assets/img/blog/jekyll/jekyll_github/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/jekyll/jekyll_github/1.png -------------------------------------------------------------------------------- /assets/img/blog/jekyll/jekyll_github/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/jekyll/jekyll_github/2.png -------------------------------------------------------------------------------- /assets/img/blog/jekyll/jekyll_github/blog_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/jekyll/jekyll_github/blog_demo.png -------------------------------------------------------------------------------- /assets/img/blog/jekyll/jekyll_github/class_part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/jekyll/jekyll_github/class_part.png -------------------------------------------------------------------------------- /assets/img/blog/jekyll/jekyll_github/class_part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/jekyll/jekyll_github/class_part1.png -------------------------------------------------------------------------------- /assets/img/blog/jekyll/jekyll_github/class_part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/jekyll/jekyll_github/class_part2.png -------------------------------------------------------------------------------- /assets/img/blog/jekyll/jekyll_github/class_part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/jekyll/jekyll_github/class_part3.png -------------------------------------------------------------------------------- /assets/img/blog/jekyll/jekyll_github/class_part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/jekyll/jekyll_github/class_part4.png -------------------------------------------------------------------------------- /assets/img/blog/jekyll/jekyll_github/demo_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/jekyll/jekyll_github/demo_start.png -------------------------------------------------------------------------------- /assets/img/blog/jekyll/jekyll_github/struct_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/jekyll/jekyll_github/struct_default.png -------------------------------------------------------------------------------- /assets/img/blog/jekyll/jekyll_github/struct_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/jekyll/jekyll_github/struct_home.png -------------------------------------------------------------------------------- /assets/img/blog/other/jiaolian/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/other/jiaolian/1.jpg -------------------------------------------------------------------------------- /assets/img/blog/other/taobao/1524550629.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/other/taobao/1524550629.jpg -------------------------------------------------------------------------------- /assets/img/blog/other/taobao/154329381736210208.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/other/taobao/154329381736210208.jpg -------------------------------------------------------------------------------- /assets/img/blog/other/taobao/312872996231805525.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/other/taobao/312872996231805525.jpg -------------------------------------------------------------------------------- /assets/img/blog/other/taobao/560839039004362065.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/other/taobao/560839039004362065.jpg -------------------------------------------------------------------------------- /assets/img/blog/other/taobao/cd7a213f2d1bcd0fd06a74527eff148.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/blog/other/taobao/cd7a213f2d1bcd0fd06a74527eff148.jpg -------------------------------------------------------------------------------- /assets/img/close.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/close.jpg -------------------------------------------------------------------------------- /assets/img/leach-face.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/leach-face.jpg -------------------------------------------------------------------------------- /assets/img/post-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/post-1.jpg -------------------------------------------------------------------------------- /assets/img/post-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/post-10.jpg -------------------------------------------------------------------------------- /assets/img/post-11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/post-11.jpg -------------------------------------------------------------------------------- /assets/img/post-12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/post-12.jpg -------------------------------------------------------------------------------- /assets/img/post-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/post-2.jpg -------------------------------------------------------------------------------- /assets/img/post-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/post-3.jpg -------------------------------------------------------------------------------- /assets/img/post-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/post-4.jpg -------------------------------------------------------------------------------- /assets/img/post-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/post-5.jpg -------------------------------------------------------------------------------- /assets/img/post-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/post-6.jpg -------------------------------------------------------------------------------- /assets/img/post-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/post-7.jpg -------------------------------------------------------------------------------- /assets/img/post-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/post-8.jpg -------------------------------------------------------------------------------- /assets/img/post-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/post-9.jpg -------------------------------------------------------------------------------- /assets/img/wechat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/wechat.jpg -------------------------------------------------------------------------------- /assets/img/wechatimg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/wechatimg.jpg -------------------------------------------------------------------------------- /assets/img/yosh-ginsu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/assets/img/yosh-ginsu.jpg -------------------------------------------------------------------------------- /assets/js/jekyll-search.js: -------------------------------------------------------------------------------- 1 | (function e (t, n, r) { function s (o, u) { if (!n[o]) { if (!t[o]) { var a = typeof require === 'function' && require; if (!u && a) return a(o, !0); if (i) return i(o, !0); throw new Error("Cannot find module '" + o + "'") } var f = n[o] = {exports: {}}; t[o][0].call(f.exports, function (e) { var n = t[o][1][e]; return s(n || e) }, f, f.exports, e, t, n, r) } return n[o].exports } var i = typeof require === 'function' && require; for (var o = 0; o < r.length; o++)s(r[o]); return s })({1: [function (require, module, exports) { 2 | 'use strict' 3 | module.exports = { 4 | load: load 5 | } 6 | 7 | function load (location, callback) { 8 | var xhr = getXHR() 9 | xhr.open('GET', location, true) 10 | xhr.onreadystatechange = createStateChangeListener(xhr, callback) 11 | xhr.send() 12 | } 13 | 14 | function createStateChangeListener (xhr, callback) { 15 | return function () { 16 | if (xhr.readyState === 4 && xhr.status === 200) { 17 | try { 18 | callback(null, JSON.parse(xhr.responseText)) 19 | } catch (err) { 20 | callback(err, null) 21 | } 22 | } 23 | } 24 | } 25 | 26 | function getXHR () { 27 | return (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP') 28 | } 29 | }, {}], 30 | 2: [function (require, module, exports) { 31 | 'use strict' 32 | module.exports = function OptionsValidator (params) { 33 | if (!validateParams(params)) { 34 | throw new Error('-- OptionsValidator: required options missing') 35 | } 36 | if (!(this instanceof OptionsValidator)) { 37 | return new OptionsValidator(params) 38 | } 39 | 40 | var requiredOptions = params.required 41 | 42 | this.getRequiredOptions = function () { 43 | return requiredOptions 44 | } 45 | 46 | this.validate = function (parameters) { 47 | var errors = [] 48 | requiredOptions.forEach(function (requiredOptionName) { 49 | if (parameters[requiredOptionName] === undefined) { 50 | errors.push(requiredOptionName) 51 | } 52 | }) 53 | return errors 54 | } 55 | 56 | function validateParams (params) { 57 | if (!params) { 58 | return false 59 | } 60 | return params.required !== undefined && params.required instanceof Array 61 | } 62 | } 63 | }, {}], 64 | 3: [function (require, module, exports) { 65 | 'use strict' 66 | module.exports = { 67 | put: put, 68 | clear: clear, 69 | get: get, 70 | search: search, 71 | setOptions: setOptions 72 | } 73 | 74 | var FuzzySearchStrategy = require('./SearchStrategies/FuzzySearchStrategy') 75 | var LiteralSearchStrategy = require('./SearchStrategies/LiteralSearchStrategy') 76 | 77 | var data = [] 78 | var opt = {} 79 | opt.fuzzy = false 80 | opt.limit = 10 81 | opt.searchStrategy = opt.fuzzy ? FuzzySearchStrategy : LiteralSearchStrategy 82 | 83 | function put (data) { 84 | if (isObject(data)) { 85 | return addObject(data) 86 | } 87 | if (isArray(data)) { 88 | return addArray(data) 89 | } 90 | return undefined 91 | } 92 | function clear () { 93 | data.length = 0 94 | return data 95 | } 96 | 97 | function get () { 98 | return data 99 | } 100 | 101 | function isObject (obj) { return !!obj && Object.prototype.toString.call(obj) === '[object Object]' } 102 | function isArray (obj) { return !!obj && Object.prototype.toString.call(obj) === '[object Array]' } 103 | 104 | function addObject (_data) { 105 | data.push(_data) 106 | return data 107 | } 108 | 109 | function addArray (_data) { 110 | var added = [] 111 | for (var i = 0; i < _data.length; i++) { 112 | if (isObject(_data[i])) { 113 | added.push(addObject(_data[i])) 114 | } 115 | } 116 | return added 117 | } 118 | 119 | function search (crit) { 120 | if (!crit) { 121 | return [] 122 | } 123 | return findMatches(data, crit, opt.searchStrategy, opt) 124 | } 125 | 126 | function setOptions (_opt) { 127 | opt = _opt || {} 128 | 129 | opt.fuzzy = _opt.fuzzy || false 130 | opt.limit = _opt.limit || 10 131 | opt.searchStrategy = _opt.fuzzy ? FuzzySearchStrategy : LiteralSearchStrategy 132 | } 133 | 134 | function findMatches (data, crit, strategy, opt) { 135 | var matches = [] 136 | for (var i = 0; i < data.length && matches.length < opt.limit; i++) { 137 | var match = findMatchesInObject(data[i], crit, strategy, opt) 138 | if (match) { 139 | matches.push(match) 140 | } 141 | } 142 | return matches 143 | } 144 | 145 | function findMatchesInObject (obj, crit, strategy, opt) { 146 | for (var key in obj) { 147 | if (!isExcluded(obj[key], opt.exclude) && strategy.matches(obj[key], crit)) { 148 | return obj 149 | } 150 | } 151 | } 152 | 153 | function isExcluded (term, excludedTerms) { 154 | var excluded = false 155 | excludedTerms = excludedTerms || [] 156 | for (var i = 0; i < excludedTerms.length; i++) { 157 | var excludedTerm = excludedTerms[i] 158 | if (!excluded && new RegExp(term).test(excludedTerm)) { 159 | excluded = true 160 | } 161 | } 162 | return excluded 163 | } 164 | }, {'./SearchStrategies/FuzzySearchStrategy': 4, './SearchStrategies/LiteralSearchStrategy': 5}], 165 | 4: [function (require, module, exports) { 166 | 'use strict' 167 | module.exports = new FuzzySearchStrategy() 168 | 169 | function FuzzySearchStrategy () { 170 | this.matches = function (string, crit) { 171 | if (typeof string !== 'string' || typeof crit !== 'string') { 172 | return false 173 | } 174 | var fuzzy = fuzzyFrom(crit) 175 | return !!fuzzy.test(string) 176 | } 177 | 178 | function fuzzyFrom (string) { 179 | var fuzzy = string 180 | .trim() 181 | .split('') 182 | .join('.*?') 183 | .replace('??', '?') 184 | return new RegExp(fuzzy, 'gi') 185 | } 186 | } 187 | }, {}], 188 | 5: [function (require, module, exports) { 189 | 'use strict' 190 | module.exports = new LiteralSearchStrategy() 191 | 192 | function LiteralSearchStrategy () { 193 | this.matches = function (string, crit) { 194 | if (typeof string !== 'string') { 195 | return false 196 | } 197 | string = string.trim() 198 | return string.toLowerCase().indexOf(crit.toLowerCase()) >= 0 199 | } 200 | } 201 | }, {}], 202 | 6: [function (require, module, exports) { 203 | 'use strict' 204 | module.exports = { 205 | compile: compile, 206 | setOptions: setOptions 207 | } 208 | 209 | var options = {} 210 | options.pattern = /\{(.*?)\}/g 211 | options.template = '' 212 | options.middleware = function () {} 213 | 214 | function setOptions (_options) { 215 | options.pattern = _options.pattern || options.pattern 216 | options.template = _options.template || options.template 217 | if (typeof _options.middleware === 'function') { 218 | options.middleware = _options.middleware 219 | } 220 | } 221 | 222 | function compile (data) { 223 | return options.template.replace(options.pattern, function (match, prop) { 224 | var value = options.middleware(prop, data[prop], options.template) 225 | if (value !== undefined) { 226 | return value 227 | } 228 | return data[prop] || match 229 | }) 230 | } 231 | }, {}], 232 | 7: [function (require, module, exports) { 233 | ;(function (window, document, undefined) { 234 | 'use strict' 235 | 236 | var options = { 237 | searchInput: null, 238 | resultsContainer: null, 239 | json: [], 240 | searchResultTemplate: '
  • {title}
  • ', 241 | templateMiddleware: function () {}, 242 | noResultsText: 'No results found', 243 | limit: 10, 244 | fuzzy: false, 245 | exclude: [] 246 | } 247 | 248 | var requiredOptions = ['searchInput', 'resultsContainer', 'json'] 249 | 250 | var templater = require('./Templater') 251 | var repository = require('./Repository') 252 | var jsonLoader = require('./JSONLoader') 253 | var optionsValidator = require('./OptionsValidator')({ 254 | required: requiredOptions 255 | }) 256 | var utils = require('./utils') 257 | 258 | /* 259 | Public API 260 | */ 261 | window.SimpleJekyllSearch = function SimpleJekyllSearch (_options) { 262 | var errors = optionsValidator.validate(_options) 263 | if (errors.length > 0) { 264 | throwError('You must specify the following required options: ' + requiredOptions) 265 | } 266 | 267 | options = utils.merge(options, _options) 268 | 269 | templater.setOptions({ 270 | template: options.searchResultTemplate, 271 | middleware: options.templateMiddleware 272 | }) 273 | 274 | repository.setOptions({ 275 | fuzzy: options.fuzzy, 276 | limit: options.limit 277 | }) 278 | 279 | if (utils.isJSON(options.json)) { 280 | initWithJSON(options.json) 281 | } else { 282 | initWithURL(options.json) 283 | } 284 | } 285 | 286 | // for backwards compatibility 287 | window.SimpleJekyllSearch.init = window.SimpleJekyllSearch 288 | 289 | function initWithJSON (json) { 290 | repository.put(json) 291 | registerInput() 292 | } 293 | 294 | function initWithURL (url) { 295 | jsonLoader.load(url, function (err, json) { 296 | if (err) { 297 | throwError('failed to get JSON (' + url + ')') 298 | } 299 | initWithJSON(json) 300 | }) 301 | } 302 | 303 | function emptyResultsContainer () { 304 | options.resultsContainer.innerHTML = '' 305 | } 306 | 307 | function appendToResultsContainer (text) { 308 | options.resultsContainer.innerHTML += text 309 | } 310 | 311 | function registerInput () { 312 | options.searchInput.addEventListener('keyup', function (e) { 313 | emptyResultsContainer() 314 | var key = e.which 315 | var query = e.target.value 316 | if (isWhitelistedKey(key) && isValidQuery(query)) { 317 | render(repository.search(query)) 318 | } 319 | }) 320 | } 321 | 322 | function render (results) { 323 | if (results.length === 0) { 324 | return appendToResultsContainer(options.noResultsText) 325 | } 326 | for (var i = 0; i < results.length; i++) { 327 | appendToResultsContainer(templater.compile(results[i])) 328 | } 329 | } 330 | 331 | function isValidQuery (query) { 332 | return query && query.length > 0 333 | } 334 | 335 | function isWhitelistedKey (key) { 336 | return [13, 16, 20, 37, 38, 39, 40, 91].indexOf(key) === -1 337 | } 338 | 339 | function throwError (message) { throw new Error('SimpleJekyllSearch --- ' + message) } 340 | })(window, document) 341 | }, {'./JSONLoader': 1, './OptionsValidator': 2, './Repository': 3, './Templater': 6, './utils': 8}], 342 | 8: [function (require, module, exports) { 343 | 'use strict' 344 | module.exports = { 345 | merge: merge, 346 | isJSON: isJSON 347 | } 348 | 349 | function merge (defaultParams, mergeParams) { 350 | var mergedOptions = {} 351 | for (var option in defaultParams) { 352 | mergedOptions[option] = defaultParams[option] 353 | if (mergeParams[option] !== undefined) { 354 | mergedOptions[option] = mergeParams[option] 355 | } 356 | } 357 | return mergedOptions 358 | } 359 | 360 | function isJSON (json) { 361 | try { 362 | if (json instanceof Object && JSON.parse(JSON.stringify(json))) { 363 | return true 364 | } 365 | return false 366 | } catch (e) { 367 | return false 368 | } 369 | } 370 | }, {}]}, {}, [7]) 371 | // # sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9zYWlwaC9Eb2N1bWVudHMvcGxheWdyb3VuZC9TaW1wbGUtSmVreWxsLVNlYXJjaC9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwiL1VzZXJzL3NhaXBoL0RvY3VtZW50cy9wbGF5Z3JvdW5kL1NpbXBsZS1KZWt5bGwtU2VhcmNoL3NyYy9KU09OTG9hZGVyLmpzIiwiL1VzZXJzL3NhaXBoL0RvY3VtZW50cy9wbGF5Z3JvdW5kL1NpbXBsZS1KZWt5bGwtU2VhcmNoL3NyYy9PcHRpb25zVmFsaWRhdG9yLmpzIiwiL1VzZXJzL3NhaXBoL0RvY3VtZW50cy9wbGF5Z3JvdW5kL1NpbXBsZS1KZWt5bGwtU2VhcmNoL3NyYy9SZXBvc2l0b3J5LmpzIiwiL1VzZXJzL3NhaXBoL0RvY3VtZW50cy9wbGF5Z3JvdW5kL1NpbXBsZS1KZWt5bGwtU2VhcmNoL3NyYy9TZWFyY2hTdHJhdGVnaWVzL0Z1enp5U2VhcmNoU3RyYXRlZ3kuanMiLCIvVXNlcnMvc2FpcGgvRG9jdW1lbnRzL3BsYXlncm91bmQvU2ltcGxlLUpla3lsbC1TZWFyY2gvc3JjL1NlYXJjaFN0cmF0ZWdpZXMvTGl0ZXJhbFNlYXJjaFN0cmF0ZWd5LmpzIiwiL1VzZXJzL3NhaXBoL0RvY3VtZW50cy9wbGF5Z3JvdW5kL1NpbXBsZS1KZWt5bGwtU2VhcmNoL3NyYy9UZW1wbGF0ZXIuanMiLCIvVXNlcnMvc2FpcGgvRG9jdW1lbnRzL3BsYXlncm91bmQvU2ltcGxlLUpla3lsbC1TZWFyY2gvc3JjL2Zha2VfODNiZWU0MjguanMiLCIvVXNlcnMvc2FpcGgvRG9jdW1lbnRzL3BsYXlncm91bmQvU2ltcGxlLUpla3lsbC1TZWFyY2gvc3JjL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpfXZhciBmPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChmLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGYsZi5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIndXNlIHN0cmljdCdcbm1vZHVsZS5leHBvcnRzID0ge1xuICBsb2FkOiBsb2FkXG59XG5cbmZ1bmN0aW9uIGxvYWQobG9jYXRpb24sY2FsbGJhY2spe1xuICB2YXIgeGhyID0gZ2V0WEhSKClcbiAgeGhyLm9wZW4oJ0dFVCcsIGxvY2F0aW9uLCB0cnVlKVxuICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gY3JlYXRlU3RhdGVDaGFuZ2VMaXN0ZW5lcih4aHIsIGNhbGxiYWNrKVxuICB4aHIuc2VuZCgpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0YXRlQ2hhbmdlTGlzdGVuZXIoeGhyLCBjYWxsYmFjayl7XG4gIHJldHVybiBmdW5jdGlvbigpe1xuICAgIGlmICggeGhyLnJlYWR5U3RhdGU9PT00ICYmIHhoci5zdGF0dXM9PT0yMDAgKXtcbiAgICAgIHRyeXtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KSApXG4gICAgICB9Y2F0Y2goZXJyKXtcbiAgICAgICAgY2FsbGJhY2soZXJyLCBudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRYSFIoKXtcbiAgcmV0dXJuICh3aW5kb3cuWE1MSHR0cFJlcXVlc3QpID8gbmV3IFhNTEh0dHBSZXF1ZXN0KCkgOiBuZXcgQWN0aXZlWE9iamVjdCgnTWljcm9zb2Z0LlhNTEhUVFAnKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIE9wdGlvbnNWYWxpZGF0b3IocGFyYW1zKXtcbiAgaWYoICF2YWxpZGF0ZVBhcmFtcyhwYXJhbXMpICl7XG4gICAgdGhyb3cgbmV3IEVycm9yKCctLSBPcHRpb25zVmFsaWRhdG9yOiByZXF1aXJlZCBvcHRpb25zIG1pc3NpbmcnKVxuICB9XG4gIGlmKCAhKHRoaXMgaW5zdGFuY2VvZiBPcHRpb25zVmFsaWRhdG9yKSApe1xuICAgIHJldHVybiBuZXcgT3B0aW9uc1ZhbGlkYXRvcihwYXJhbXMpXG4gIH1cblxuICB2YXIgcmVxdWlyZWRPcHRpb25zID0gcGFyYW1zLnJlcXVpcmVkXG5cbiAgdGhpcy5nZXRSZXF1aXJlZE9wdGlvbnMgPSBmdW5jdGlvbigpe1xuICAgIHJldHVybiByZXF1aXJlZE9wdGlvbnNcbiAgfVxuXG4gIHRoaXMudmFsaWRhdGUgPSBmdW5jdGlvbihwYXJhbWV0ZXJzKXtcbiAgICB2YXIgZXJyb3JzID0gW11cbiAgICByZXF1aXJlZE9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihyZXF1aXJlZE9wdGlvbk5hbWUpe1xuICAgICAgaWYoIHBhcmFtZXRlcnNbcmVxdWlyZWRPcHRpb25OYW1lXSA9PT0gdW5kZWZpbmVkICl7XG4gICAgICAgIGVycm9ycy5wdXNoKHJlcXVpcmVkT3B0aW9uTmFtZSlcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBlcnJvcnNcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlUGFyYW1zKHBhcmFtcyl7XG4gICAgaWYoICFwYXJhbXMgKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtcy5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkICYmIHBhcmFtcy5yZXF1aXJlZCBpbnN0YW5jZW9mIEFycmF5XG4gIH1cbn0iLCIndXNlIHN0cmljdCdcbm1vZHVsZS5leHBvcnRzID0ge1xuICBwdXQ6cHV0LFxuICBjbGVhcjogY2xlYXIsXG4gIGdldDogZ2V0LFxuICBzZWFyY2g6IHNlYXJjaCxcbiAgc2V0T3B0aW9uczogc2V0T3B0aW9uc1xufVxuXG52YXIgRnV6enlTZWFyY2hTdHJhdGVneSA9IHJlcXVpcmUoJy4vU2VhcmNoU3RyYXRlZ2llcy9GdXp6eVNlYXJjaFN0cmF0ZWd5JylcbnZhciBMaXRlcmFsU2VhcmNoU3RyYXRlZ3kgPSByZXF1aXJlKCcuL1NlYXJjaFN0cmF0ZWdpZXMvTGl0ZXJhbFNlYXJjaFN0cmF0ZWd5JylcblxudmFyIGRhdGEgPSBbXVxudmFyIG9wdCA9IHt9XG5vcHQuZnV6enkgPSBmYWxzZVxub3B0LmxpbWl0ID0gMTBcbm9wdC5zZWFyY2hTdHJhdGVneSA9IG9wdC5mdXp6eSA/IEZ1enp5U2VhcmNoU3RyYXRlZ3kgOiBMaXRlcmFsU2VhcmNoU3RyYXRlZ3lcblxuXG5mdW5jdGlvbiBwdXQoZGF0YSl7XG4gIGlmKCBpc09iamVjdChkYXRhKSApe1xuICAgIHJldHVybiBhZGRPYmplY3QoZGF0YSlcbiAgfVxuICBpZiggaXNBcnJheShkYXRhKSApe1xuICAgIHJldHVybiBhZGRBcnJheShkYXRhKVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cbmZ1bmN0aW9uIGNsZWFyKCl7XG4gIGRhdGEubGVuZ3RoID0gMFxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiBnZXQoKXtcbiAgcmV0dXJuIGRhdGFcbn1cblxuXG5mdW5jdGlvbiBpc09iamVjdChvYmopeyByZXR1cm4gISFvYmogJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nIH1cbmZ1bmN0aW9uIGlzQXJyYXkob2JqKXsgcmV0dXJuICEhb2JqICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBBcnJheV0nIH1cblxuZnVuY3Rpb24gYWRkT2JqZWN0KF9kYXRhKXtcbiAgZGF0YS5wdXNoKF9kYXRhKVxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiBhZGRBcnJheShfZGF0YSl7XG4gIHZhciBhZGRlZCA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgX2RhdGEubGVuZ3RoOyBpKyspe1xuICAgIGlmKCBpc09iamVjdChfZGF0YVtpXSkgKXtcbiAgICAgIGFkZGVkLnB1c2goYWRkT2JqZWN0KF9kYXRhW2ldKSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFkZGVkXG59XG5cblxuXG5mdW5jdGlvbiBzZWFyY2goY3JpdCl7XG4gIGlmKCAhY3JpdCApe1xuICAgIHJldHVybiBbXVxuICB9XG4gIHJldHVybiBmaW5kTWF0Y2hlcyhkYXRhLGNyaXQsb3B0LnNlYXJjaFN0cmF0ZWd5LG9wdClcbn1cblxuZnVuY3Rpb24gc2V0T3B0aW9ucyhfb3B0KXtcbiAgb3B0ID0gX29wdCB8fCB7fVxuXG4gIG9wdC5mdXp6eSA9IF9vcHQuZnV6enkgfHwgZmFsc2VcbiAgb3B0LmxpbWl0ID0gX29wdC5saW1pdCB8fCAxMFxuICBvcHQuc2VhcmNoU3RyYXRlZ3kgPSBfb3B0LmZ1enp5ID8gRnV6enlTZWFyY2hTdHJhdGVneSA6IExpdGVyYWxTZWFyY2hTdHJhdGVneVxufVxuXG5mdW5jdGlvbiBmaW5kTWF0Y2hlcyhkYXRhLGNyaXQsc3RyYXRlZ3ksb3B0KXtcbiAgdmFyIG1hdGNoZXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGggJiYgbWF0Y2hlcy5sZW5ndGggPCBvcHQubGltaXQ7IGkrKykge1xuICAgIHZhciBtYXRjaCA9IGZpbmRNYXRjaGVzSW5PYmplY3QoZGF0YVtpXSxjcml0LHN0cmF0ZWd5LG9wdClcbiAgICBpZiggbWF0Y2ggKXtcbiAgICAgIG1hdGNoZXMucHVzaChtYXRjaClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXNcbn1cblxuZnVuY3Rpb24gZmluZE1hdGNoZXNJbk9iamVjdChvYmosY3JpdCxzdHJhdGVneSxvcHQpe1xuICBmb3IodmFyIGtleSBpbiBvYmopIHtcbiAgICBpZiggIWlzRXhjbHVkZWQob2JqW2tleV0sIG9wdC5leGNsdWRlKSAmJiBzdHJhdGVneS5tYXRjaGVzKG9ialtrZXldLCBjcml0KSApe1xuICAgICAgcmV0dXJuIG9ialxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc0V4Y2x1ZGVkKHRlcm0sIGV4Y2x1ZGVkVGVybXMpe1xuICB2YXIgZXhjbHVkZWQgPSBmYWxzZVxuICBleGNsdWRlZFRlcm1zID0gZXhjbHVkZWRUZXJtcyB8fCBbXVxuICBmb3IgKHZhciBpID0gMDsgaTxleGNsdWRlZFRlcm1zLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGV4Y2x1ZGVkVGVybSA9IGV4Y2x1ZGVkVGVybXNbaV1cbiAgICBpZiggIWV4Y2x1ZGVkICYmIG5ldyBSZWdFeHAodGVybSkudGVzdChleGNsdWRlZFRlcm0pICl7XG4gICAgICBleGNsdWRlZCA9IHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGV4Y2x1ZGVkXG59XG4iLCIndXNlIHN0cmljdCdcbm1vZHVsZS5leHBvcnRzID0gbmV3IEZ1enp5U2VhcmNoU3RyYXRlZ3koKVxuXG5mdW5jdGlvbiBGdXp6eVNlYXJjaFN0cmF0ZWd5KCl7XG4gIHRoaXMubWF0Y2hlcyA9IGZ1bmN0aW9uKHN0cmluZywgY3JpdCl7XG4gICAgaWYoIHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnIHx8IHR5cGVvZiBjcml0ICE9PSAnc3RyaW5nJyApe1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHZhciBmdXp6eSA9IGZ1enp5RnJvbShjcml0KVxuICAgIHJldHVybiAhIWZ1enp5LnRlc3Qoc3RyaW5nKVxuICB9XG5cbiAgZnVuY3Rpb24gZnV6enlGcm9tKHN0cmluZyl7XG4gICAgdmFyIGZ1enp5ID0gc3RyaW5nXG4gICAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgICAgLnNwbGl0KCcnKVxuICAgICAgICAgICAgICAuam9pbignLio/JylcbiAgICAgICAgICAgICAgLnJlcGxhY2UoJz8/JywnPycpXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoIGZ1enp5LCAnZ2knKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcbm1vZHVsZS5leHBvcnRzID0gbmV3IExpdGVyYWxTZWFyY2hTdHJhdGVneSgpXG5cbmZ1bmN0aW9uIExpdGVyYWxTZWFyY2hTdHJhdGVneSgpe1xuICB0aGlzLm1hdGNoZXMgPSBmdW5jdGlvbihzdHJpbmcsY3JpdCl7XG4gICAgaWYoIHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnICl7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgc3RyaW5nID0gc3RyaW5nLnRyaW0oKVxuICAgIHJldHVybiBzdHJpbmcudG9Mb3dlckNhc2UoKS5pbmRleE9mKGNyaXQudG9Mb3dlckNhc2UoKSkgPj0gMFxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcbm1vZHVsZS5leHBvcnRzID0ge1xuICBjb21waWxlOiBjb21waWxlLFxuICBzZXRPcHRpb25zOiBzZXRPcHRpb25zXG59XG5cbnZhciBvcHRpb25zID0ge31cbm9wdGlvbnMucGF0dGVybiA9IC9cXHsoLio/KVxcfS9nXG5vcHRpb25zLnRlbXBsYXRlID0gJydcbm9wdGlvbnMubWlkZGxld2FyZSA9IGZ1bmN0aW9uKCl7fVxuXG5mdW5jdGlvbiBzZXRPcHRpb25zKF9vcHRpb25zKXtcbiAgb3B0aW9ucy5wYXR0ZXJuID0gX29wdGlvbnMucGF0dGVybiB8fCBvcHRpb25zLnBhdHRlcm5cbiAgb3B0aW9ucy50ZW1wbGF0ZSA9IF9vcHRpb25zLnRlbXBsYXRlIHx8IG9wdGlvbnMudGVtcGxhdGVcbiAgaWYoIHR5cGVvZiBfb3B0aW9ucy5taWRkbGV3YXJlID09PSAnZnVuY3Rpb24nICl7XG4gICAgb3B0aW9ucy5taWRkbGV3YXJlID0gX29wdGlvbnMubWlkZGxld2FyZVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGUoZGF0YSl7XG4gIHJldHVybiBvcHRpb25zLnRlbXBsYXRlLnJlcGxhY2Uob3B0aW9ucy5wYXR0ZXJuLCBmdW5jdGlvbihtYXRjaCwgcHJvcCkge1xuICAgIHZhciB2YWx1ZSA9IG9wdGlvbnMubWlkZGxld2FyZShwcm9wLCBkYXRhW3Byb3BdLCBvcHRpb25zLnRlbXBsYXRlKVxuICAgIGlmKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICl7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFbcHJvcF0gfHwgbWF0Y2hcbiAgfSlcbn1cbiIsIjsoZnVuY3Rpb24od2luZG93LCBkb2N1bWVudCwgdW5kZWZpbmVkKXtcbiAgJ3VzZSBzdHJpY3QnXG5cbiAgdmFyIG9wdGlvbnMgPSB7XG4gICAgc2VhcmNoSW5wdXQ6IG51bGwsXG4gICAgcmVzdWx0c0NvbnRhaW5lcjogbnVsbCxcbiAgICBqc29uOiBbXSxcbiAgICBzZWFyY2hSZXN1bHRUZW1wbGF0ZTogJzxsaT48YSBocmVmPVwie3VybH1cIiB0aXRsZT1cIntkZXNjfVwiPnt0aXRsZX08L2E+PC9saT4nLFxuICAgIHRlbXBsYXRlTWlkZGxld2FyZTogZnVuY3Rpb24oKXt9LFxuICAgIG5vUmVzdWx0c1RleHQ6ICdObyByZXN1bHRzIGZvdW5kJyxcbiAgICBsaW1pdDogMTAsXG4gICAgZnV6enk6IGZhbHNlLFxuICAgIGV4Y2x1ZGU6IFtdXG4gIH1cblxuICB2YXIgcmVxdWlyZWRPcHRpb25zID0gWydzZWFyY2hJbnB1dCcsJ3Jlc3VsdHNDb250YWluZXInLCdqc29uJ11cblxuICB2YXIgdGVtcGxhdGVyID0gcmVxdWlyZSgnLi9UZW1wbGF0ZXInKVxuICB2YXIgcmVwb3NpdG9yeSA9IHJlcXVpcmUoJy4vUmVwb3NpdG9yeScpXG4gIHZhciBqc29uTG9hZGVyID0gcmVxdWlyZSgnLi9KU09OTG9hZGVyJylcbiAgdmFyIG9wdGlvbnNWYWxpZGF0b3IgPSByZXF1aXJlKCcuL09wdGlvbnNWYWxpZGF0b3InKSh7XG4gICAgcmVxdWlyZWQ6IHJlcXVpcmVkT3B0aW9uc1xuICB9KVxuICB2YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJylcblxuICAvKlxuICAgIFB1YmxpYyBBUElcbiAgKi9cbiAgd2luZG93LlNpbXBsZUpla3lsbFNlYXJjaCA9IGZ1bmN0aW9uIFNpbXBsZUpla3lsbFNlYXJjaChfb3B0aW9ucyl7XG4gICAgdmFyIGVycm9ycyA9IG9wdGlvbnNWYWxpZGF0b3IudmFsaWRhdGUoX29wdGlvbnMpXG4gICAgaWYoIGVycm9ycy5sZW5ndGggPiAwICl7XG4gICAgICB0aHJvd0Vycm9yKCdZb3UgbXVzdCBzcGVjaWZ5IHRoZSBmb2xsb3dpbmcgcmVxdWlyZWQgb3B0aW9uczogJyArIHJlcXVpcmVkT3B0aW9ucylcbiAgICB9XG5cbiAgICBvcHRpb25zID0gdXRpbHMubWVyZ2Uob3B0aW9ucywgX29wdGlvbnMpXG5cbiAgICB0ZW1wbGF0ZXIuc2V0T3B0aW9ucyh7XG4gICAgICB0ZW1wbGF0ZTogb3B0aW9ucy5zZWFyY2hSZXN1bHRUZW1wbGF0ZSxcbiAgICAgIG1pZGRsZXdhcmU6IG9wdGlvbnMudGVtcGxhdGVNaWRkbGV3YXJlLFxuICAgIH0pXG5cbiAgICByZXBvc2l0b3J5LnNldE9wdGlvbnMoe1xuICAgICAgZnV6enk6IG9wdGlvbnMuZnV6enksXG4gICAgICBsaW1pdDogb3B0aW9ucy5saW1pdCxcbiAgICB9KVxuXG4gICAgaWYoIHV0aWxzLmlzSlNPTihvcHRpb25zLmpzb24pICl7XG4gICAgICBpbml0V2l0aEpTT04ob3B0aW9ucy5qc29uKVxuICAgIH1lbHNle1xuICAgICAgaW5pdFdpdGhVUkwob3B0aW9ucy5qc29uKVxuICAgIH1cbiAgfVxuXG4gIC8vIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICB3aW5kb3cuU2ltcGxlSmVreWxsU2VhcmNoLmluaXQgPSB3aW5kb3cuU2ltcGxlSmVreWxsU2VhcmNoXG5cblxuICBmdW5jdGlvbiBpbml0V2l0aEpTT04oanNvbil7XG4gICAgcmVwb3NpdG9yeS5wdXQoanNvbilcbiAgICByZWdpc3RlcklucHV0KClcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRXaXRoVVJMKHVybCl7XG4gICAganNvbkxvYWRlci5sb2FkKHVybCwgZnVuY3Rpb24oZXJyLGpzb24pe1xuICAgICAgaWYoIGVyciApe1xuICAgICAgICB0aHJvd0Vycm9yKCdmYWlsZWQgdG8gZ2V0IEpTT04gKCcgKyB1cmwgKyAnKScpXG4gICAgICB9XG4gICAgICBpbml0V2l0aEpTT04oanNvbilcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gZW1wdHlSZXN1bHRzQ29udGFpbmVyKCl7XG4gICAgb3B0aW9ucy5yZXN1bHRzQ29udGFpbmVyLmlubmVySFRNTCA9ICcnXG4gIH1cblxuICBmdW5jdGlvbiBhcHBlbmRUb1Jlc3VsdHNDb250YWluZXIodGV4dCl7XG4gICAgb3B0aW9ucy5yZXN1bHRzQ29udGFpbmVyLmlubmVySFRNTCArPSB0ZXh0XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3RlcklucHV0KCl7XG4gICAgb3B0aW9ucy5zZWFyY2hJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGZ1bmN0aW9uKGUpe1xuICAgICAgdmFyIGtleSA9IGUud2hpY2hcbiAgICAgIHZhciBxdWVyeSA9IGUudGFyZ2V0LnZhbHVlXG4gICAgICBpZiggaXNXaGl0ZWxpc3RlZEtleShrZXkpICYmIGlzVmFsaWRRdWVyeShxdWVyeSkgKSB7XG4gICAgICAgIGVtcHR5UmVzdWx0c0NvbnRhaW5lcigpO1xuICAgICAgICByZW5kZXIoIHJlcG9zaXRvcnkuc2VhcmNoKHF1ZXJ5KSApO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiByZW5kZXIocmVzdWx0cykge1xuICAgIGlmKCByZXN1bHRzLmxlbmd0aCA9PT0gMCApe1xuICAgICAgcmV0dXJuIGFwcGVuZFRvUmVzdWx0c0NvbnRhaW5lcihvcHRpb25zLm5vUmVzdWx0c1RleHQpXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgYXBwZW5kVG9SZXN1bHRzQ29udGFpbmVyKCB0ZW1wbGF0ZXIuY29tcGlsZShyZXN1bHRzW2ldKSApXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaXNWYWxpZFF1ZXJ5KHF1ZXJ5KSB7XG4gICAgcmV0dXJuIHF1ZXJ5ICYmIHF1ZXJ5Lmxlbmd0aCA+IDBcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzV2hpdGVsaXN0ZWRLZXkoa2V5KSB7XG4gICAgcmV0dXJuIFsxMywxNiwyMCwzNywzOCwzOSw0MCw5MV0uaW5kZXhPZihrZXkpID09PSAtMVxuICB9XG5cbiAgZnVuY3Rpb24gdGhyb3dFcnJvcihtZXNzYWdlKXsgdGhyb3cgbmV3IEVycm9yKCdTaW1wbGVKZWt5bGxTZWFyY2ggLS0tICcrIG1lc3NhZ2UpIH1cbn0pKHdpbmRvdywgZG9jdW1lbnQpO1xuIiwiJ3VzZSBzdHJpY3QnXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWVyZ2U6IG1lcmdlLFxuICBpc0pTT046IGlzSlNPTixcbn1cblxuZnVuY3Rpb24gbWVyZ2UoZGVmYXVsdFBhcmFtcywgbWVyZ2VQYXJhbXMpe1xuICB2YXIgbWVyZ2VkT3B0aW9ucyA9IHt9XG4gIGZvcih2YXIgb3B0aW9uIGluIGRlZmF1bHRQYXJhbXMpe1xuICAgIG1lcmdlZE9wdGlvbnNbb3B0aW9uXSA9IGRlZmF1bHRQYXJhbXNbb3B0aW9uXVxuICAgIGlmKCBtZXJnZVBhcmFtc1tvcHRpb25dICE9PSB1bmRlZmluZWQgKXtcbiAgICAgIG1lcmdlZE9wdGlvbnNbb3B0aW9uXSA9IG1lcmdlUGFyYW1zW29wdGlvbl1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1lcmdlZE9wdGlvbnNcbn1cblxuZnVuY3Rpb24gaXNKU09OKGpzb24pe1xuICB0cnl7XG4gICAgaWYoIGpzb24gaW5zdGFuY2VvZiBPYmplY3QgJiYgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShqc29uKSkgKXtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9Y2F0Y2goZSl7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cbiJdfQ== 372 | -------------------------------------------------------------------------------- /assets/js/main.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | 3 | // Menu Settings 4 | $('.menu-icon, .menu-icon-close').click(function(e) { 5 | e.preventDefault(); 6 | $('.flex-container').toggleClass('active'); 7 | }); 8 | 9 | // Search Settings 10 | $('.search-icon').on('click', function(e){ 11 | e.preventDefault(); 12 | $('.search-box').toggleClass('search-active'); 13 | 14 | if ($('.search-box').hasClass('search-active')) { 15 | $('.search-icon-close').on('click', function(e){ 16 | e.preventDefault(); 17 | $('.search-box').removeClass('search-active'); 18 | }); 19 | } 20 | }); 21 | 22 | }); 23 | 24 | 25 | $('.top').click(function() { 26 | $('html, body').stop().animate({scrollTop: 0}, 'slow', 'swing'); 27 | }); 28 | $(window).scroll(function() { 29 | if ($(this).scrollTop() > $(window).height()) { 30 | $('.top').addClass("up"); 31 | } else { 32 | $('.top').removeClass("up"); 33 | } 34 | }); -------------------------------------------------------------------------------- /assets/minima-social-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /google18fa4f0e323b9549.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google18fa4f0e323b9549.html -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var sass = require('gulp-sass'); 3 | var prefix = require('gulp-autoprefixer'); 4 | var imagemin = require('gulp-imagemin'); 5 | var pngquant = require('imagemin-pngquant'); 6 | var cache = require('gulp-cache'); 7 | var cp = require('child_process'); 8 | var browserSync = require('browser-sync'); 9 | 10 | var jekyll = process.platform === 'win32' ? 'jekyll.bat' : 'jekyll'; 11 | 12 | // Build the Jekyll Site 13 | gulp.task('jekyll-build', function (done) { 14 | return cp.spawn( jekyll , ['build'], {stdio: 'inherit'}) 15 | .on('close', done); 16 | }); 17 | 18 | // Rebuild Jekyll and page reload 19 | gulp.task('jekyll-rebuild', ['jekyll-build'], function () { 20 | browserSync.reload(); 21 | }); 22 | 23 | // Wait for jekyll-build, then launch the Server 24 | gulp.task('browser-sync', ['sass', 'img', 'jekyll-build'], function() { 25 | browserSync({ 26 | server: { 27 | baseDir: '_site' 28 | }, 29 | notify: false 30 | }); 31 | }); 32 | 33 | // Compile files 34 | gulp.task('sass', function () { 35 | return gulp.src('assets/css/sass/main.scss') 36 | .pipe(sass({ 37 | outputStyle: 'expanded', 38 | onError: browserSync.notify 39 | })) 40 | .pipe(prefix(['last 15 versions', '> 1%', 'ie 8', 'ie 7'], { cascade: true })) 41 | .pipe(gulp.dest('_site/assets/css')) 42 | .pipe(browserSync.reload({stream:true})) 43 | .pipe(gulp.dest('assets/css')); 44 | }); 45 | 46 | // Compression images 47 | gulp.task('img', function() { 48 | return gulp.src('assets/img/**/*') 49 | .pipe(cache(imagemin({ 50 | interlaced: true, 51 | progressive: true, 52 | svgoPlugins: [{removeViewBox: false}], 53 | use: [pngquant()] 54 | }))) 55 | .pipe(gulp.dest('_site/assets/img')) 56 | .pipe(browserSync.reload({stream:true})); 57 | }); 58 | 59 | // Watch scss, html, img files 60 | gulp.task('watch', function () { 61 | gulp.watch('assets/css/sass/**/*.scss', ['sass']); 62 | gulp.watch('assets/js/**/*.js', ['jekyll-rebuild']); 63 | gulp.watch('assets/img/**/*', ['img']); 64 | gulp.watch(['*.html', '_layouts/*.html', '_includes/*.html', '_pages/*.html', '_posts/*'], ['jekyll-rebuild']); 65 | }); 66 | 67 | // Default task 68 | gulp.task('default', ['browser-sync', 'watch']); 69 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: home-page 3 | --- 4 | 5 | 12 | {% assign count = 0 %} 13 |
      14 | {% for post in paginator.posts %} 15 | 16 | 22 | 23 |
    1. 24 |
      25 | 26 | 27 | 28 | 29 |
      30 |
      31 | {{ post.content | strip_html | strip_newlines | truncate: 100 }} 32 |
      33 | {% for tag in post.tags %} 34 | 35 | {{ tag }} 36 | {% endfor %} 37 | 38 |

      {{post.title}}

      39 |
      40 | 41 |
      42 |
    2. 43 | {% endfor %} 44 |
    45 | -------------------------------------------------------------------------------- /myblog/essays/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: home-page 3 | --- 4 | {% assign count = 0 %} 5 |
      6 | {% for post in site.posts %} 7 | {% if post.essays%} 8 |
    1. 9 |
      10 | 11 | 12 | 13 | 14 |
      15 |
      16 | {{ post.content | strip_html | strip_newlines | truncate: 100 }} 17 |
      18 | {% for tag in post.tags %} 19 | 20 | {{ tag }} 21 | {% endfor %} 22 | 23 |

      {{post.title}}

      24 |
      25 | 26 |
      27 |
    2. 28 | {% endif %} 29 | {% endfor %} 30 |
    31 | -------------------------------------------------------------------------------- /myblog/jekyll/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: home-page 3 | --- 4 | {% assign count = 0 %} 5 |
      6 | {% for post in site.posts %} 7 | {% if post.jekyll%} 8 |
    1. 9 |
      10 | 11 | 12 | 13 | 14 |
      15 |
      16 | {{ post.content | strip_html | strip_newlines | truncate: 100 }} 17 |
      18 | {% for tag in post.tags %} 19 | 20 | {{ tag }} 21 | {% endfor %} 22 | 23 |

      {{post.title}}

      24 |
      25 | 26 |
      27 |
    2. 28 | {% endif %} 29 | {% endfor %} 30 |
    31 | -------------------------------------------------------------------------------- /other/api/AdSense.html: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /other/img/articlepage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/other/img/articlepage.png -------------------------------------------------------------------------------- /other/img/mainpage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leach-chen/blogdemo/abc2959bb3758206a5ee6c8db778d556411c76cb/other/img/mainpage.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Jekyll-Gulp-Sass-Autoprefixer-Imagemin-BrowserSync", 3 | "version": "1.0.0", 4 | "description": "A starter project for Jekyll", 5 | "main": "index.js", 6 | "repository": "https://github.com/artemsheludko/Jekyll-Gulp-Sass-Autoprefixer-Imagemin-BrowserSync", 7 | "author": "Artem Sheludko", 8 | "license": "MIT", 9 | "dependencies": { 10 | "browser-sync": "^2.18.8", 11 | "child_process": "^1.0.2", 12 | "gulp": "^3.9.1", 13 | "gulp-autoprefixer": "^3.1.1", 14 | "gulp-cache": "^0.4.6", 15 | "gulp-imagemin": "^3.2.0", 16 | "gulp-sass": "^3.1.0", 17 | "imagemin-pngquant": "^5.0.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /search.json: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | [ 5 | {% for post in site.posts %} 6 | { 7 | "title" : "{{ post.title | escape }}", 8 | "category" : "{{ post.category }}", 9 | "tags" : "{{ post.tags | join: ', ' }}", 10 | "url" : "{{ site.baseurl }}{{ post.url }}", 11 | "date" : "{{ post.date }}" 12 | } {% unless forloop.last %},{% endunless %} 13 | {% endfor %} 14 | ] 15 | --------------------------------------------------------------------------------