-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch.xml
59 lines (59 loc) · 39.9 KB
/
search.xml
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title><![CDATA[使用 hexo-theme-next 搭建博客(五)]]></title>
<url>%2F2018-01-14%2Fbuild-blog-five.html</url>
<content type="text"><![CDATA[本系列文章旨在教会你通过 next 主题搭建自己的 hexo 博客,跟着本系列完成后你的博客将会具备以下几个功能:- 强调精于心,简于形的 next 主题,也可以很方便的定制和扩展;- Hexo同时部署在 Coding 和 GitHub 上并使用 DNSPod 分流;- LeanCloud 为文章添加阅读量统计功能,并在首页可以显示,不蒜子实现站内 UV PV 等统计;- 百度统计;- 站内搜索功能;- RSS;- 代码高亮,社交链接,打赏,动画等功能;- 评论系统,可以匿名评论;- 备份博客在 Github 上;- 同步更新博客;- …… 上一篇文章我们主要介绍网站的搜索优化以及数据统计分析,本章节主要介绍将博客项目上传至 Github 备份、博客生成发表流程以及同步更新到新电脑。 Github 备份 Fork hexo-theme-next 项目到自己的仓库 将本地修改的主题文件夹 themes/next 备份到其它地方并删除 运行以下命令将 Fork 出来的仓库 pull 到本地子模块 12git submodule add https://github.com/YourName/hexo-theme-next.git themes/nextgit checkout master 运行该命令后会在项目根目录生成 .gitmodules 文件,文件内容如下: 123[submodule "themes/next"] path = themes/next url = https://github.com/songguoping/hexo-theme-next 将备份的主题内容覆盖到刚拉下来的主题中,我们先要 push 子模块,在 theme/next 目录下依次执行: 123git add .git commit -m "update config file"git push origin master //这是提交到fork后主题的仓库 在 Github 上新建一个仓库 blog 切换到项目根目录,在根目录下执行以下命令提交到 Github 上的 blog 仓库下:123git add .git commit -m "add submodule"git push origin master 博客生成发表流程如果改变了 themes/next 的内容则按以下流程: 先在本地的 themes/next 下 git commit 使用命令 git push origin master 提交到 Github(即 Fork 的那个仓库) 在本地 hexo 下 git commit 使用命令提交到 Github 以上成功后部署 blog 如果没有改变 themes/next 的内容则1,2步不用执行,原则就是在提交项目到远程仓库时先提交该项目的子模块到远程仓库。 同步更新到新电脑配置好 Node 、git 环境,安装 Hexo 后:123git clone --recursive git@github.com:songguoping/blog.gitgit submodule initgit submodule update 第一次初始化之后,子模块的 head 可能是游离的,如果直接提交了变更就会带来问题,记得先放到 master 上,运行:12cd themes/nextgit checkout master 代码配置完成之后,执行:1npm install 就可以完成 package.json 中所有依赖的安装了,执行命令 hexo -s 在本地运行查看效果。 总结本章节主要介绍将博客项目上传至 Github 备份、博客生成发表流程以及同步更新到新电脑。至此,本系列 使用 hexo-theme-next 搭建博客就全部更新完成了。该系列作为我开始写博客的练手之作,存在很多的不足,后期也会不定时的更新,希望读者多多批评指正!]]></content>
<tags>
<tag>Hexo</tag>
</tags>
</entry>
<entry>
<title><![CDATA[2017 年度总结和 2018 年计划]]></title>
<url>%2F2017-12-31%2F2017-summary.html</url>
<content type="text"><![CDATA[今天是 12 月 31 日,2017 年还差一个多小时就成为过去了,现在趴在昨天新买的书桌上对着电脑敲下这一年的总结博文,感概万分。这一年总结一句话就是幸福与遗憾同在,也不奢求什么大幸福,这一年没有大遗憾就好了。 工作2017 年度总结学的多,忘的多工作上同事都对我很照顾,我也很感恩他们,工作上的事也从来不干怠慢,尽量仔细少犯错误。工作之余自己也看视频学习了 python 语言,学习了 django tornado scrapy 等框架,不过比较遗憾的是学了没有用过过不了多久又忘了,确实比较可惜。在下半年这几个月,我也学习了 react-native ,试着自己做一个 app,开源在自己的 github 上,同时整理了一下自己的 github,并做了一个博客网站,记录自己所学的知识,希望这样能解决这个学了又忘的毛病吧。 2018 年计划巩固学到的知识,继续提升技术能力 - 首要的就是更加努力细心的完成公司的工作- 然后的工作就是维护好这个博客网站,争取每月都能出几篇高质量的博文,多多总结经验- 在微信上开一个公众号,多写写一些东西,技术与非技术的,总之要提高自己的文笔- 继续完善途悦这个 react-native 项目,并把服务器端与后台都做出来 生活2017 年度总结把好多人生大事都办了今年是我的本命年,都说本命年犯太岁,不要太折腾,但回首这一年,想想自己也是够折腾的了。这一年把领证、买房、迁户口这些人生大事差不多都办了。这么多大事,幸福与遗憾同在。幸福的是跟我女朋友(现在的媳妇),谈了这么久也终于修成正果了。遗憾的是冲动之下买房买在了惠州惠阳,没有买在深圳,也怪自己眼光太短浅。后面也只好安慰自己买了总比没买好,算是小遗憾吧,想想人生也没有十分如意的事情。 2018 年计划存钱还账,好好经营 - 买房欠了很多钱,把未来两年的购买力都透支完了,2018 年的主基调就是存钱,先把亲戚朋友的账还清- 多看些财经类的新闻和文章,学好理财- 注重户外运动,每个月去爬一次山 写在最后从来没有写过年度总结,也很少写文章或者看书了,这篇总结写的很笼统,但基本能表达我现在对这一年的经历和对未来一年的期望。目标不多,如果都能完成这些目标,那到 2018 年末的时候再看这篇总结的时候,我应该是欣慰的。突然想到一句话来警示自己,不要打烂手里的一副好牌,趁年轻,多奋斗!]]></content>
<tags>
<tag>生活</tag>
</tags>
</entry>
<entry>
<title><![CDATA[使用 hexo-theme-next 搭建博客(四)]]></title>
<url>%2F2017-12-16%2Fbuild-blog-four.html</url>
<content type="text"><![CDATA[本系列文章旨在教会你通过 next 主题搭建自己的 hexo 博客,跟着本系列完成后你的博客将会具备以下几个功能:- 强调精于心,简于形的 next 主题,也可以很方便的定制和扩展;- Hexo同时部署在 Coding 和 GitHub 上并使用 DNSPod 分流;- LeanCloud 为文章添加阅读量统计功能,并在首页可以显示,不蒜子实现站内 UV PV 等统计;- 百度统计;- 站内搜索功能;- RSS;- 代码高亮,社交链接,打赏,动画等功能;- 评论系统,可以匿名评论;- 备份博客在 Github 上;- 同步更新博客;- …… 上一篇文章我们主要介绍 NexT 的主题配置、第三方服务以及动画的实现,本章节主要介绍网站的搜索优化以及数据统计分析。 网站的搜索优化首页 title 的优化文件路径是 your-hexo-site\themes\next\layout 下的 index.swig 文件,将下面代码1{% block title %}{{ config.title }}{% if theme.index_with_subtitle and config.subtitle %} - {{config.subtitle }}{% endif %}{% endblock %} 改成1{% block title %} {{ config.title }} - {{ theme.description }} {% endblock %} 这时候你的首页标题会更符合网站名称 - 网站描述习惯,为了做 seo 优化,把关键词也显示在 title 里,并尽可能的放在最前面,如下:1{% block title %} {{ theme.keywords }} - {{ config.title }} - {{ theme.description } 注意:别堆砌关键字,整个标题一般不超过80个字符,可以通过 chinaz 站长工具的 seo 综合查询检查。 修改 permalinkhexo 默认的 permalink 配置是:1permalink: :year/:month/:day/:title/ 不过这样可能对于搜索引擎不是太友好,我们可以把 permalink 修改成 .html 结尾和相应减少层级:1permalink: :year-:month-:day/:title.html 还有一点需要注意的是,title 最好是英文的,这样 permalink 也是不带中文的,但是 markdown 文件中的 title 你还是可以按自己的文章标题写成中文的。 给非友情链接的出站链接添加 “nofollow” 标签经过 chinaz 站长工具友情链接检测,发现有不必要的 PR 值输出,对于非友情链接的 PR 值输出,我们可以加上 nofollow 便签避免不必要的 PR 输出。以 hexo 的 NexT 主题为例,需要修改两处文件路径在 your-hexo-site\themes\next\layout\_partials 下的 footer.swig,将下面代码123{{ __('footer.powered', '<a class="theme-link" href="http://hexo.io">Hexo</a>') }}<a class="theme-link" href="https://github.com/iissnan/hexo-theme-next"> 在a标签中添加 rel="external nofollow" 改成123{{ __('footer.powered', '<a class="theme-link" href="http://hexo.io" rel="external nofollow">Hexo</a>') }}<a class="theme-link" href="https://github.com/iissnan/hexo-theme-next" rel="external nofollow"> 文件路径在 your-hexo-site\themes\next\layout\_macro 的 sidebar.swig 文件,将下面代码123<a href="{{ link }}" target="_blank">{{ name }}</a><a href="http://creativecommons.org/licenses/{{ theme.creative_commons }}/4.0" class="cc-opacity" target="_blank"> 在a标签中添加 rel="external nofollow" 改成123<a href="{{ link }}" target="_blank" rel="external nofollow">{{ name }}</a><a href="http://creativecommons.org/licenses/{{ theme.creative_commons }}/4.0" class="cc-opacity" target="_blank" rel="external nofollow"> 添加蜘蛛协议 robots.txt在路径 your-hexo-site\source\ 下新建文件 robots.txt,内容可参考如下:12345678910111213141516# hexo robots.txtUser-agent: *Allow: /Allow: /archives/ Allow: /tags/ Allow: /categories/ Allow: /about/ Disallow: /js/Disallow: /css/Disallow: /fonts/Disallow: /vendors/Disallow: /fancybox/Sitemap: http://codersong.top/sitemap.xmlSitemap: http://codersong.top/baidusitemap.xml 注意,将 codersong.top 替换成你自己的域名,以上两个 sitemap 稍后会讲到 将博客添加 sitemap 站点地图安装 sitemap 站点地图自动生成插件1234# googlenpm install hexo-generator-sitemap --save# baidunpm install hexo-generator-baidu-sitemap --save 在主题配置文件中添加以下配置:1234sitemap: path: sitemap.xmlbaidusitemap: path: baidusitemap.xml 注意缩进,要不然生成的时候会报错然后在站点配置文件中修改 url 为你的域名,例如我的1url: http://codersong.top 以上配置好之后执行 hexo g 就能在 your-hexo-site\public 中生成 sitemap.xml 和 baidusitemap.xml 了。其中第一个是一会要提交给 google 的,后面那个看名字当然就是提交给 Baidu 的了。 在 Google Baidu 验证 Hexo 博客网站在提交 xml 文件前,Google Baidu 需要验证你提交的网站是不是你的,Google Baidu 上的验证方式差不多,此处只讲 Google 的验证方式。登录 Google Search Console,点击添加属性,然后输入 Hexo 博客的网址,添加网站,如下图所示:添加网站完成以后,需要验证网站。Google 提供了多种方案验证网站。这里使用 Google 推荐的一种 域名提供商方法,相对简单,如下图所示:选择其他后如下图所示:点击红框中的添加 CNAME 记录后如下图所示:复制红框中的内容,打开 DNSPod,添加如下记录并保存:回到刚才的页面点击验证,则验证通过。 提交站点地图到 Google验证完成后,就可以提交刚生成的 xml 站点地图了。注意,我们要先把博客部署到线上去,访问 https://www.codersong.top/sitemap.xml,如下图所示:可以访问到 sitemap.xml 文件就将该文件提交到 Google,如下图所示:按照以上步骤完成之后,自己的 Hexo 博客就提交到 Google 了,就可以通过 Google 搜索到你博客中相关的内容了。 提交站点地图到 Baidu登录百度站长平台,点击 站点管理 ---> 添加站点。流程走到验证网站的时候选择 CNAME 验证,方式同 Google 一样。百度站长平台提供链接提交通道,可以提交想被百度收录的链接,百度搜索引擎会按照标准处理,但不保证一定能够收录您提交的链接,如下 baidusitemap 的提交方式。还有我们可以再添加一种自动推送的方式,把如下的代码放入 your-hexo-site/blog/themes/next/layout/_layout.swig 的 标签的最后面即可: 1234567891011121314<script>(function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s);})();</script> 至此,理论上我们的博客就被 Google 和 Baidu 收录了,我们发现,现在在 Google 中搜索我们的网站可以搜索到,但是在 Baidu 中却搜索不到,这是因为 Baidu 现在还没收录我们的网站,可能要过一段时间。 博客数据统计分析此处使用 Google 分析,在填入媒体资源名称以及默认网址之后,在下图获取到跟踪 ID:之后在主题配置文件中,修改字段 google_analytics, 值设置成你的 Google 跟踪 ID。 总结本章节主要介绍网站的搜索优化以及数据统计分析,下一章节主要介绍博客项目上传至 Github 备份、博客生成发表流程以及同步更新到新电脑。]]></content>
<tags>
<tag>Hexo</tag>
</tags>
</entry>
<entry>
<title><![CDATA[使用 hexo-theme-next 搭建博客(三)]]></title>
<url>%2F2017-12-15%2Fbuild-blog-three.html</url>
<content type="text"><![CDATA[本系列文章旨在教会你通过 next 主题搭建自己的 hexo 博客,跟着本系列完成后你的博客将会具备以下几个功能:- 强调精于心,简于形的 next 主题,也可以很方便的定制和扩展;- Hexo同时部署在 Coding 和 GitHub 上并使用 DNSPod 分流;- LeanCloud 为文章添加阅读量统计功能,并在首页可以显示,不蒜子实现站内 UV PV 等统计;- 百度统计;- 站内搜索功能;- RSS;- 代码高亮,社交链接,打赏,动画等功能;- 评论系统,可以匿名评论;- 备份博客在 Github 上;- 同步更新博客;- …… 上一篇文章我们主要介绍了如何把博客部署在 GitHub page 和 Coding Page 上,注册了自己的域名,通过 DNSpod 配置 DNS 流量分发,本章节主要介绍 NexT 的主题配置、第三方服务以及动画的实现。 NexT 的主题配置具体的主题配置在 NexT 文档上有,我这里主要介绍没有讲到的地方以及一些坑。 代码高亮在主题配置文件中配置如下:1234# Code Highlight theme# Available value: normal | night | night eighties | night blue | night bright# https://github.com/chriskempson/tomorrow-themehighlight_theme: normal 可能会发现插入代码后代码不高亮,此刻检查你的多行或者一行代码的 markdown 格式是否正确。代码凌乱的话,建议使用空格代替 tab,例:12345public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!"); } } 修改文章内链接文本样式修改文件 themes\next\source\css\_common\components\post\post.styl ,在末尾添加如下 css 样式: 1234567891011// 文章内链接文本样式.post-body p a{ color: #0593d3; border-bottom: none; border-bottom: 1px solid #0593d3; &:hover { color: #fc6423; border-bottom: none; border-bottom: 1px solid #fc6423; }} 其中选择 .post-body 是为了不影响标题,选择 p 是为了不影响首页“阅读全文”的显示样式,颜色可以自己定义。 修改文章底部的那个带 # 号的标签修改模板 /themes/next/layout/_macro/post.swig,搜索 rel="tag">#,将 # 换成 <i class="fa fa-tag"></i>此处图标是 NexT 使用的是 Font Awesome 提供的图标, Font Awesome 提供了 600+ 的图标,可以满足绝大的多数的场景。 在每篇文章末尾统一添加“本文结束”标记在路径 \themes\next\layout\_macro 中新建 passage-end-tag.swig 文件,并添加以下内容:12345<div> {% if not is_index %} <div style="text-align:center;color: #ccc;font-size:14px;">-------------本文结束<i class="fa fa-hourglass-end"></i>感谢您的阅读-------------</div> {% endif %}</div> 接着打开 \themes\next\layout\_macro\post.swig文件,在 post-body 之后, post-footer 之前添加如下画红色部分代码:12345<div> {% if not is_index %} {% include 'passage-end-tag.swig' %} {% endif %}</div> 然后打开主题配置文件在末尾添加:123# 文章末尾添加“本文结束”标记passage_end_tag: enabled: true 实现文章字数统计功能在根目录下安装 hexo-wordcount,运行:1$ npm install hexo-wordcount --save 然后在主题配置文件中,配置如下:123456# Post wordcount display settings# Dependencies: https://github.com/willin/hexo-wordcountpost_wordcount: item_text: true wordcount: true min2read: true 在文章底部增加版权信息在主题配置文件中配置如下:12345# Declare license on postspost_copyright: enable: true license: CC BY-NC-SA 3.0 license_url: https://creativecommons.org/licenses/by-nc-sa/3.0/ 修改打赏字体不闪动修改文件 next/source/css/_common/components/post/post-reward.styl,然后注释其中的函数 wechat:hover 和 alipay:hover,如下:123456789101112/* 注释文字闪动函数 #wechat:hover p{ animation: roll 0.1s infinite linear; -webkit-animation: roll 0.1s infinite linear; -moz-animation: roll 0.1s infinite linear;} #alipay:hover p{ animation: roll 0.1s infinite linear; -webkit-animation: roll 0.1s infinite linear; -moz-animation: roll 0.1s infinite linear;}*/ 自定义页面比如想增加一个留言页面,则可以执行以下步骤: 执行 “hexo new page “guestbook” 找到主题配置文件下的 menu,把 guestbook 加进去: 1234567891011menu: home: / categories: /categories about: /about archives: /archives tags: /tags guestbook: /guestbook menu_icons: enable: true guestbook: book # 使用 fontawesome 在 /themes/next/languages/zh-Hans.yml的目录下(这里默认你使用的是简体中文,若是其他语言更改相应的 yml 就行),在 memu 下加一句即可: 1guestbook: 留言 第三方服务HyperComments 评论系统使用自己的 google 账号登录 HyperComments,添加 blog 的 url,例:xxx.github.io,在 setting -> Widget -> General 中可以看到 ID,如下图所示: 不蒜子统计编辑主题配置文件中的 busuanzi_count 的配置项。当 enable: true 时,代表开启全局开关。若 site_uv、site_pv、page_pv 的值均为 false 时,不蒜子仅作记录而不会在页面上显示。 站点 UV 配置当 site_uv: true 时,代表在页面底部显示站点的 UV 值。site_uv_header 和 site_uv_footer 为自定义样式配置,相关的值留空时将不显示,可以使用(带特效的)font-awesome。显示效果为 [site_uv_header] UV 值 [site_uv_footer]。123site_uv: truesite_uv_header: 本站访客数site_uv_footer: 人次 站点 PV 配置当site_pv: true 时,代表在页面底部显示站点的 PV 值。site_pv_header 和 site_pv_footer 为自定义样式配置,相关的值留空时将不显示,可以使用(带特效的)font-awesome。显示效果为 [site_pv_header] PV 值 [site_pv_footer]。123site_pv: truesite_pv_header: 本站总访问量site_pv_footer: 次 文章的阅读次数统计AddThis 内容分享在网站 AddThis 上注册账号。 可以使用 Google/Facebook/Twitter 账号进行第三方登陆选择分享模块的显示方式是 Inline,调整分享模块的大小等参数从下面菜单获得 AddThis id:More.. --> General --> ID。如下所示:在 主题配置文件 中,把 #Share 下的 #add_this_id 取消注释, 改为 add_this_id: put_your_add_this_id_here在 /themes/next/layout/_macro/post.swig 里面的 标签的上方添加如下代码:1234< {##AddThis 分享,首页不显示##}{% if theme.add_this_id and not is_index%}{% include '../_partials/share/add-this.swig' %}{% endif %} 动画添加动态背景 将 particle.js 文件添加到 \themes\next\source\js\src 文件目录下。 找到 \themes\next\layout\_layout.swing 文件, 在文件的后面,标签之前 添加以下代码: 12<!-- 背景动画 --><script type="text/javascript" src="/js/src/particle.js"></script> 修改作者头像并旋转打开 \themes\next\source\css\ _common\components\sidebar\sidebar-author.styl,在里面添加如下代码:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960.site-author-image { display: block; margin: 0 auto; padding: $site-author-image-padding; max-width: $site-author-image-width; height: $site-author-image-height; border: $site-author-image-border-width solid $site-author-image-border-color; /* 头像圆形 */ border-radius: 80px; -webkit-border-radius: 80px; -moz-border-radius: 80px; box-shadow: inset 0 -1px 0 #333sf; /* 设置循环动画 [animation: (play)动画名称 (2s)动画播放时长单位秒或微秒 (ase-out)动画播放的速度曲线为以低速结束 (1s)等待1秒然后开始动画 (1)动画播放次数(infinite为循环播放) ]*/ /* 鼠标经过头像旋转360度 */ -webkit-transition: -webkit-transform 1.0s ease-out; -moz-transition: -moz-transform 1.0s ease-out; transition: transform 1.0s ease-out;}img:hover { /* 鼠标经过停止头像旋转 -webkit-animation-play-state:paused; animation-play-state:paused;*/ /* 鼠标经过头像旋转360度 */ -webkit-transform: rotateZ(360deg); -moz-transform: rotateZ(360deg); transform: rotateZ(360deg);}/* Z 轴旋转动画 */@-webkit-keyframes play { 0% { -webkit-transform: rotateZ(0deg); } 100% { -webkit-transform: rotateZ(-360deg); }}@-moz-keyframes play { 0% { -moz-transform: rotateZ(0deg); } 100% { -moz-transform: rotateZ(-360deg); }}@keyframes play { 0% { transform: rotateZ(0deg); } 100% { transform: rotateZ(-360deg); }} 实现点击出现桃心效果在网址输入如下1http://7u2ss1.com1.z0.glb.clouddn.com/love.js 然后将里面的代码 copy 一下,新建 love.js 文件并且将代码复制进去,然后保存。将 love.js 文件放到路径 /themes/next/source/js/src 里面,然后打开 \themes\next\layout\_layout.swig 文件,在末尾(在前面引用会出现找不到的 bug)添加以下代码: 12<!-- 页面点击小红心 --><script type="text/javascript" src="/js/src/love.js"></script> 总结本章节主要介绍了 NexT 的主题配置、第三方服务以及动画的实现,更多的个人定制可以参考下面的网址,本系列到这里相信你已经可以定制自己风格的博客网站了,恭喜你!但做出自己喜欢的博客网站还只是第一步,我们还要将幸苦做出的博客网站推销出去,让更多的人可以看到,可以搜索到,所以下一章节我们主要介绍网站的搜索优化以及数据统计分析。 参考 https://segmentfault.com/a/1190000009544924]]></content>
<tags>
<tag>Hexo</tag>
</tags>
</entry>
<entry>
<title><![CDATA[使用 hexo-theme-next 搭建博客(二)]]></title>
<url>%2F2017-12-14%2Fbuild-blog-two.html</url>
<content type="text"><![CDATA[本系列文章旨在教会你通过 next 主题搭建自己的 hexo 博客,跟着本系列完成后你的博客将会具备以下几个功能:- 强调精于心,简于形的 next 主题,也可以很方便的定制和扩展;- Hexo同时部署在 Coding 和 GitHub 上并使用 DNSPod 分流;- LeanCloud 为文章添加阅读量统计功能,并在首页可以显示,不蒜子实现站内 UV PV 等统计;- 百度统计;- 站内搜索功能;- RSS;- 代码高亮,社交链接,打赏,动画等功能;- 评论系统,可以匿名评论;- 备份博客在 Github 上;- 同步更新博客;- …… 上一篇文章我们主要介绍 Hexo 的本地站点的搭建以及使用 next 主题,本章节主要介绍把博客部署在 GitHub page 和 Coding Page 上,并配置自己的域名访问。 部署到 GitHub创建 Repository登录 GitHub 账号后,在首页右上角会有 New repository 按钮,点击后进入如下界面: - repository name 一定要填 Owner.github.io,例如:songguoping.github.io- 项目一定是 Public 安装 Git 部署器在终端执行以下命令;1$ npm install hexo-deployer-git –save 修改配置文件打开 站点配置文件,搜索 deploy,修改如下配置:12345deploy: type: git repo: github: https://github.com/songguoping/songguoping.github.io.git branch: master 部署在站点目录下执行以下命令,即可将博客部署到 GitHub 上:12$ hexo generate$ hexo deploy 部署成功以后,在浏览器中输入 http://Repository name,例如 http://songguoping.github.io 即可在线浏览自己的博客啦 部署到 Coding创建项目没有 Coding 账号的先注册账号,然后新建项目,具体如图: - 项目名称和个人名称必须一致- 项目必须是公开的 修改配置文件打开 站点配置文件,搜索 deploy,修改如下配置:123456deploy: type: git repo: github: https://github.com/songguoping/songguoping.github.io.git coding: https://git.coding.net/codersong/codersong.git branch: master 配置完成后,使用 hexo d -g 命令重新生成博客并部署到 GitHub 和 Coding 上去。 为博客绑定个人域名购买域名你需要在万网上购买一个域名,笔者购买的域名是:codersong.top 解析域名找一个域名解析的提供商,使用它的DNS解析服务,此处推荐 DNSPod在your-hexo-site/source/路径下创建一个名为 CNAME 的文件(没有扩展名),如下图所示:使用文本编辑器打开 CNAME 文件,在首行添加个人域名信息,如:codersong.top完成以上步骤后,重新执行命令 hexo d -g 部署。 通过 DNSPod 配置 DNS 流量分发注册账号登陆 DNSPod,在自己的域名下添加四条记录: 添加一个主机记录为 @,记录类型为 CNAME,线路类型为 国内,记录值为 xxx.coding.me(例如:songguoping.coding.me)的记录;添加一个主机记录为 www,记录类型为 CNAME,线路类型为 国内,记录值为 xxx.coding.me(例如:songguoping.coding.me)的记录;添加一个主机记录为 @,记录类型为 CNAME,线路类型为 默认,记录值为 xxx.github.io(例如:songguoping.github.io)的记录;添加一个主机记录为 @,记录类型为 CNAME,线路类型为 国内,记录值为 xxx.github.io(例如:songguoping.github.io)的记录;如下图所示:主机记录为 @ 允许用户以 codersong.top 访问你的博客;主机记录为 www 允许用户以 www.codersong.top 访问你的博客 配置 Coding Pages自定义域名如下图所示: 域名可以绑定最多5个,一定要选首选的域名,并且非首选域名要勾选跳转至首选域名不然有些第三方服务数据会统计不到一起 强制 https 访问 - 先要验证,验证完成后如图- 打开强制 https 访问的开关,这时访问你的博客都是 https 了 屏蔽掉 Coding 跳转页将博客部署 Coding 后,访问你的博客首先会跳到 Coding 的一个页面,这样不利于 seo 优化,我们要屏蔽掉这个跳转页,如下图所示:将文字版的代码放置到 themes/next/layout/_partials/footer.swig 中,可以替换掉 Hexo 的内容:123{% if theme.footer.powered %} <div class="powered-by">Hosted by <a rel="external nofollow" href="https://pages.coding.me" style="font-weight: bold">Coding Pages</a></div>{% endif %} 代码配置完成后,勾选上图的已放置 Hosted by Coding Pages,等待通过审核。 通过 DNSPod 完成流量分发后,然后 Github 和 Coding 上完成各自的配置就可以将自己的域名与 Github page 和 Coding page 绑定起来。 总结本章节我们主要介绍了如何把博客部署在 GitHub page 和 Coding Page 上,注册了自己的域名,通过 DNSpod 配置DNS流量分发,下一章节主要介绍 NexT 的主题配置、第三方服务以及动画的实现。 常见问题部署失败检查 SSH 公钥是否配置 参考 lijiankun24: http://lijiankun24.com/]]></content>
<tags>
<tag>Hexo</tag>
</tags>
</entry>
<entry>
<title><![CDATA[使用 hexo-theme-next 搭建博客(一)]]></title>
<url>%2F2017-12-13%2Fbuild-blog-one.html</url>
<content type="text"><![CDATA[本系列文章旨在教会你通过 next 主题搭建自己的 hexo 博客,跟着本系列完成后你的博客将会具备以下几个功能:- 强调精于心,简于形的 next 主题,也可以很方便的定制和扩展;- Hexo 同时部署在 Coding 和 GitHub 上并使用 DNSPod 分流;- LeanCloud 为文章添加阅读量统计功能,并在首页可以显示,不蒜子实现站内 UV PV 等统计;- 百度统计;- 站内搜索功能;- RSS;- 代码高亮,社交链接,打赏,动画等功能;- 评论系统,可以匿名评论;- 备份博客在 Github 上;- 同步更新博客;- …… 软件环境 Mac OS Git Node.js 本地站点搭建安装 Git Windows:下载安装 git 。 Download gitMac:使用 Homebrew,MacPorts 或下载 安装程序 安装 安装 Node.js下载安装 Node.js。 Download Node.js,点击安装各个系统的版本,无脑的下一步即可完成安装。node.js 安装完成后,npm 也被安装完成。检测是否安装成功可以在终端输入命令查看 node.js 和 npm 的版本号。如下图所示: 安装 Hexo所有必备的应用程序安装完成后,即可使用 npm 安装 Hexo。1$ npm install -g hexo-cli 输入以下命令查看 Hexo 的版本号:1$ hexo -v 如下图所示: 建站安装 Hexo 完成后,请执行下列命令,Hexo 将会在指定文件夹中新建所需要的文件并拉取所需要的依赖。123$ cd <folder>$ hexo init $ npm install 如下图所示:新建完成后,指定文件夹的目录如下:12345678.├── _config.yml # 网站的配置信息,在此称为站点配置文件,往后主题目录下也有相同命名的文件,称为主题配置文件├── package.json # 应用程序的信息├── scaffolds # 模版 文件夹。当您新建文章时,Hexo 会根据 scaffold 来建立文件。├── source # 资源文件夹是存放用户资源的地方。| ├── _drafts| └── _posts└── themes # 主题 文件夹。Hexo 会根据主题来生成静态页面。 执行以下命令,生成静态页面:1hexo generate 执行以下命令,启动服务:1hexo server 如下图所示:打开浏览器,输入 http://localhost:4000/,即可在本地查看基于 Hexo 的默认主题的原型: 安装 NexTHexo 安装主题的方式非常简单,只需要将主题文件拷贝至站点目录的 themes 目录下, 然后修改下配置文件即可。具体到 NexT 来说,安装步骤如下。在终端窗口下,定位到 Hexo 站点目录下。使用 git checkout 代码:12$ cd your-hexo-site$ git clone https://github.com/iissnan/hexo-theme-next themes/next 如下图所示:当 克隆/下载 完成后,打开 站点配置文件, 找到 theme 字段,并将其值更改为 next。1theme: next 启动 Hexo 本地站点,并开启调试模式(即加上 –debug),整个命令是 hexo s --debug,在启动之前,我们最好使用 hexo clean 来清除 Hexo 的缓存。当你看到站点的外观与下图所示类似时即说明你已成功安装 NexT 主题。这是 NexT 默认的 Scheme —— Muse 总结本章节主要介绍 Hexo 的本地站点的搭建以及使用 next 主题,下一章节主要介绍把博客部署在 Github page 和 Coding Page 上,并配置自己的域名访问。 Hexo 基本指令1234567$ hexo init # 新建一个网站$ hexo new [layout] <title> # 新建一篇文章$ hexo generate # 生成静态文件,部署时可以使用 hexo g -d$ hexo publish [layout] <filename> # 发表草稿$ hexo server # 启动服务器$ hexo deploy # 部署网站$ hexo clean # 清除缓存文件 (db.json) 和已生成的静态文件 (public) 简写命令1234$ hexo new == hexo n$ hexo generate == hexo g$ hexo server == hexo s$ hexo deploy == hexo d 常见问题 注意在配置文件中,冒号后面要留一个空格,要不然配置不生效 参考 hexo doc: https://hexo.io/zh-cn/docs/Never_yu’s Blog: https://neveryu.github.io/2016/09/03/hexo-next-one/]]></content>
<tags>
<tag>Hexo</tag>
</tags>
</entry>
<entry>
<title><![CDATA[Android Signature V2 下的多渠道打包]]></title>
<url>%2F2017-12-04%2FAndroid-Signature-V2.html</url>
<content type="text"><![CDATA[相关背景Android7.0 引入一项新的应用签名方案 APK Signnature Scheme v2(以下简称 v2 ),这种新机制使得 apk 的签名方式更加安全,默认情况下,Android Studio2.2 和 Gradle2.2 会使用 v2 签名方案来签名 apk。如果使用 v2 这套签名方案就使得之前用的美团点评多渠道打包方案没用了,当然,美团点评在此基础上推出了新的解决方案 Walle。 需求 客户端需要传一个 Channel 字段给服务器; 在发包时需要使用 360 加固或者其他的加固方式给 apk 加固; apk 命名需要自定义; 批量打包; 解决方案使用 v1 的签名方案禁用掉 v2,使用 v1。打开模块级 build.gradle 文件,配置如下:1234567891011android{ signingConfigs{ release{ storeFile file("releasekey.keystore") storePassword "password" keyAlias "ReleaseKey" keyPassword "password" v2SigningEnabled false } }} 使用 v2 的签名方案之前的美团点评的多渠道打包方案无效,我们使用新的解决方案 Walle。如果不使用加固方案的话,直接按照 Walle 的 readme 操作即可,但是使用加固方案后,只能先加固,后签名,在通过 Walle 对这个签名后的 apk 进行多渠道打包,具体操作如下: 先在项目中引用 Walle在位于项目的根目录 build.gradle 文件中添加 Walle Gradle 插件的依赖12345buildscript{ dependencies{ classpath 'com.meituan.android.walle:plugin:1.1.5' }} 并在模块级 build.gradle 文件中 apply 这个插件,并添加上用于读取渠道号的 AAR12345apply plugin: 'walle' dependencies { compile 'com.meituan.android.walle:library:1.1.5'} 通过以下方式获取渠道信息,并上传给服务器1234ChannelInfo channelInfo= WalleChannelReader.getChannelInfo(this.getApplicationContext());if (channelInfo != null) { String channel = channelInfo.getChannel();} 至此,在项目中的配置就算完成了,如果想插入一些额外的信息或者要对 Walle 进行更多的配置,请参考 Walle 的 readme。配置完成后,通过 assembleRelease 命令生成使用v2签名方式的 apk。 python 工具打自定义名称的渠道包拿这个 apk 去加固生成未签名的加固包。之后使用 python 工具去批量打自定义名称的渠道包。channel.txt:渠道信息config.py:配置签名信息以及 Android sdk 路径。 12345678#Windows 下路径分割线请注意使用\\转义keystorePath = ""keyAlias = ""keystorePassword = ""keyPassword = ""#Android SDK buidtools path , please use above 25.0+sdkBuildToolPath = "" MultiChannelBuildTool.py:基本思路就是遍历放置在同文件夹内的 apk 文件(将生成的未签名的加固包放置此处)。使用 v2 签名该 apk,然后将签名成功的 apk 通过 Walle 的命令行工具写入渠道等信息。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109#!/usr/bin/python # -*-coding:utf-8-*-import zipfileimport shutilimport osimport sysimport platformimport config# 获取脚本文件的当前路径def curFileDir(): # 获取脚本路径 path = sys.path[0] # 判断为脚本文件还是py2exe编译后的文件, # 如果是脚本文件,则返回的是脚本的目录, # 如果是编译后的文件,则返回的是编译后的文件路径 if os.path.isdir(path): return path elif os.path.isfile(path): return os.path.dirname(path)# 判断当前系统def isWindows(): sysstr = platform.system() if ("Windows" in sysstr): return 1 else: return 0# 兼容不同系统的路径分隔符def getBackslash(): if (isWindows() == 1): return "\\" else: return "/"# 获取当前目录中所有的apk源包src_apks = []# python3 : os.listdir()即可,这里使用兼容Python2的os.listdir('.')for file in os.listdir('.'): if os.path.isfile(file): if ".apk" in file: src_apks.append(file)# 获取渠道列表channel_file = 'channel.txt'f = open(channel_file)lines = f.readlines()f.close()# 当前脚本文件所在目录parentPath = curFileDir() + getBackslash()# configlibPath = parentPath + "lib" + getBackslash()buildToolsPath = config.sdkBuildToolPath + getBackslash()checkAndroidV2SignaturePath = libPath + "CheckAndroidV2Signature.jar"walleChannelWritterPath = libPath + "walle-cli-all.jar"keystorePath = config.keystorePathkeyAlias = config.keyAliaskeystorePassword = config.keystorePasswordkeyPassword = config.keyPasswordfor src_apk in src_apks: # 原包路径 protectedSourceApkPath = parentPath + src_apkzipalignedApkPath = protectedSourceApkPath[0: -4] + "_aligned.apk"signedApkPath = zipalignedApkPath[0: -4] + "_signed.apk"# 对齐zipalignShell = buildToolsPath + "zipalign -v 4 " + protectedSourceApkPath + " " + zipalignedApkPathos.system(zipalignShell)# 签名signShell = buildToolsPath + "apksigner sign --ks " + keystorePath + " --ks-key-alias " + keyAlias + " --ks-pass pass:" + keystorePassword + " --key-pass pass:" + keyPassword + " --out " + signedApkPath + " " + zipalignedApkPathos.system(signShell)# 检查V2签名是否正确checkV2Shell = "java -jar " + checkAndroidV2SignaturePath + " " + signedApkPathos.system(checkV2Shell)# file name (with extension)src_apk_file_name = os.path.basename(src_apk)# 分割文件名与后缀temp_list = os.path.splitext(src_apk_file_name)# name without extensionsrc_apk_name = temp_list[0]# 后缀名".apk "src_apk_extension = temp_list[1]# 创建生成目录,与文件名相关output_dir = src_apk_name + 'android_' + "1-{channels}".format(channels=len(lines)) + '/'# 目录不存在则创建if not os.path.exists(output_dir): os.mkdir(output_dir)# 遍历渠道号并创建对应渠道号的apk文件for line in lines: # 获取当前渠道号,因为从渠道文件中获得带有\n,所有strip一下 target_channel = line.strip() # 拼接对应渠道号的apk target_apk = output_dir + src_apk_name + src_apk_extension # 将签名后的apk拷贝建立新apk shutil.copy(signedApkPath, target_apk) writeChannelShell = "java -jar " + walleChannelWritterPath + " put -c " + target_channel + " " + target_apk os.system(writeChannelShell) 参考 Walle: https://github.com/Meituan-Dianping/walleJay-Goo: https://github.com/Jay-Goo/ProtectedApkResignerForWalle]]></content>
<tags>
<tag>Android</tag>
</tags>
</entry>
</search>