博客维护
未读使用 Travis CI 自动部署 Hexo 博客,同时上传至又拍云。
前几天使用 Travis CI 自动构建 Hexo 博客并且上传至 Github 和 Coding,就在想能不能同时上传至 又拍云。
今天晚上使用 ftp 上传至又拍云,网站实现全站 CDN 加速。
前面发现是有工具可以直接上传至又拍云:
hexo-deployer-upyun
但是这个工具在 Windows 系统下使用有问题,并且我已经使用 Travis CI 自动部署了,继续使用这个工具有令牌暴露的风险。
所以就想使用 ftp 上传至又拍云,然后就发现了这个工具:
Git-ftp – uploads to FTP servers the Git way
在 linux 下的安装方法:
git clone https://github.com/git-ftp/git-ftp.gitcd git-ftp# choose the newest releasetag="$(git tag | grep '^[0-9]*\.[0-9]*\.[0-9]*$' | tail -1)&quo ...
发现马上就要入前端的大坑了。ES6入门内容很多还没看完,现在先学习 React 吧。
之间就简单地使用 React 搭建过一次 Demo ,借这次机会把 React 给搞定了,至少能写个简单的界面。
看着这 React技术栈 ,还是压力山大啊。
这次选了两本书 《深入浅出React和Redux》 和 《React全栈》。书都很新也很薄,这次先看一本入门。
第1章 React 新的前端思维方式首先使用 creat-react-app 创建一个 React 应用。
在确认 Node.js 和 npm 安装好之后,在命令行执行以下命令安装 creat-react-app 工具。
npm install -g create-react-appcreate-react-app first-react-appnpm start
浏览器会自动打开 http://localhost:3000/ 显示如下界面:
我们来看一下 first-react-app 的目录结构:
在开发过程中,我们主要关注 src 目录的内容。
其中 src/index.js 文件是应用的入口文件:
import R ...
随着 Hexo 文章的增多,加上压缩文件的时间,部署时间越来越长。
我一般都是将博客的源文件保存到私有仓库中,虽然几个简单地命令就能部署,但是过程还是很繁琐。最近申请了 Github Student Developer Pack ,就想利用软件开发中的持续集成工具 Travis CI 来帮助完成 Hexo 博客的部署过程。这样就只需要把源代码 push 到仓库就能自动部署好了。
CI 是 Continuous Integration 的缩写,持续集成之意。持续集成是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
Hexo 搭建关于 Hexo 博客的搭建请参考文章:https://www.wshunli.com/posts/9642fffa.html
Travis CI 配置1.使用 GitHub 账户登录 Travis CI 官网,然后用 Github 账号登陆,就可以看到可以持续集成的仓库。
还有个地址 https://travis-ci.com 可以部署 Github 私有仓库。
选择要启用的项目,打开
然后选择一些通 ...
《ECMAScript6入门》读书笔记
这部分学习 ES6 中新增的数据类型。
第10章 SymbolES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。
let s = Symbol();typeof s // "symbol"// 字符串参数let s1 = Symbol('foo');s1.toString() // "Symbol(foo)"// 对象参数-调用 toString 方法const obj = { toString() { return 'abc'; }};const sym = Symbol(obj);sym // Symbol(abc)
Symbol 值不能与其他类型的值进行运算;可显式转为字符串或布尔值,但不能转为数值。
let sym = Symbol('My symbol');"your symbol is " + sym // TypeError: can' ...
《JavaScript高级程序设计》读书笔记
(六) 学习JavaScript的一些高级技巧及实践方案。(22-25章)
第二十二章 高级技巧这部分后面再看吧,现在那么水,估计还用不到。
《JavaScript高级程序设计》读书笔记
(五) 学习 JavaScript 对各数据载体的操作方法(如JSON、XML),学会 Ajax 的使用方法。(18-21章)
第十八章 JavaScript 与 XML浏览器对 XML DOM 的支持如何检测浏览器是否支持DOM2级XML:
var hasXmlDom = document.implementation.hasFeature("XML","2.0");
在支持DOM2级的浏览器中创建一个空白XML:
var xmldom = document.implemention.createDocument(namespaceUri,root,docype);
通过 JavaScript 处理XML时,通常只使用参数root,这个参数指定的是XML DOM文档元素的标签名。
var xmldom = document.implementation.createDocument("","root",null);console.log(xmldom. ...
《JavaScript高级程序设计》读书笔记
(四) 学习在浏览器中进行实际开发时的错误调试技巧。(17章)
第十七章 错误处理与调试错误处理try-catch 语句:
try-catch 语句 和 Java 很类似。
function testFinally(){ try { return 2; } catch (error){ return 1; } finally { return 0; }}function testWithoutFinally(){ try { return 2; } catch (error){ return 1; }}alert(testFinally());alert(testWithoutFinally());
我们把可能会抛出错误的语句放到 try 语句中,处理错误的代码放到 catch 块中,f ...
《JavaScript高级程序设计》读书笔记
学习HTML新增的一些对象提供的API,包括canvas ,媒体事件等。(15-16章)
第十五章 使用 Canvas 绘图基本用法使用 <canves> 元素;指定 width 和 height 属性。
<canvas id="drawing" width="200" height="100">Your browser doesn't support canvas</canvas>
要在画布上绘制,还需取得绘图上下文。
var drawing = document.getElementById("drawing"),//make sure <canvas> is completely supportedif (drawing.getContext){ var context = drawing.getContext("2d");}
2D 上下文填充 ...
博客维护
未读Hexo 文章链接问题
今天 搜索 一下网站,发现有个很大的问题。
有很多链接 404,比如这个链接:
http://www.wshunli.com/2017/10/29/《JavaScript高级程序设计》读书笔记(一)/
搜索引擎跳转之后是:
http://www.wshunli.com/2017/10/29/《javascript高级程序设计》读书笔记(一)/
单单因为 JavaScript 大小写的问题,就找不到页面。
所以在 Hexo 官网找了一下固定链接的插件。
最终选择是: hexo-abbrlink ; Github :https://github.com/rozbo/hexo-abbrlink
安装插件:
npm install hexo-abbrlink --save
在站点配置文件中修改 permalink :
permalink: posts/:abbrlink.html
站点配置文件中配置插件:
# abbrlink configabbrlink: alg: crc32 #support crc16(default) and crc32 rep: ...
《ECMAScript6入门》读书笔记
ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。
字符、数值、正则的扩展第4章 字符串的扩展:http://es6.ruanyifeng.com/#docs/string第5章 数值的扩展:http://es6.ruanyifeng.com/#docs/array第6章 正则的扩展:http://es6.ruanyifeng.com/#docs/regex
第7章 数组的扩展扩展运算符扩展运算符是三个点(...),将一个数组转为用逗号分隔的参数序列。
console.log(1, ...[2, 3, 4], 5); // 1 2 3 4 5function push(array, ...items) { array.push(...items);}function add(x, y) { return x + ...






