使用 Nginx 反向代理 Google Fonts ,优化网站在国内的访问速度

Google Fonts 是于2010年上线的免费网页字体托管服务。Google Fonts 上面的字体全都是免费的,开发者可以使用 Google Fonts 来装饰个人、企业网站,以达到更好的显示效果。先看一下 Google Fonts 的官方介绍: About Google Fonts A web with web fonts is more beautiful, readable, accessible and open. Google Fonts makes it quick and easy for everyone to use web fonts, including professional designers and developers. We…

合理利用闲置的安卓设备

不得不承认,近几年,电子产品的迭代可真的是非常快。就拿手机来说,每隔半年就有一款新的旗舰机型。安卓手机(平板)的更新换代非常快,常常是今年买的最新旗舰手机(平板)过了一年之后就变成老爷机了。所以,可以预料到的是,每次手机的更新换代之后都会有大量的闲置手机出现。那么要怎么处置这些闲置的手机呢?丢了又舍不得,卖了又没人要。放着吃灰又觉得好浪费。 其实,对于闲置手机(平板)来说,还是有发挥余温的机会的。接下来我会讲讲自己折腾过的几种方案,就当作一个记录。 1. 翻墙 使用 fqrouter2 进行翻墙 fqrouter2 是一个可以实现将手机作为一个翻墙路由器供其他设备上网用的软件。 使用 fqrouter2 进行翻墙非常简单,只需要有一部已经 root 过的安卓设备。安装后运行则会自动启动翻墙。如下图所示: 点击 即刻开启更多功能 则进入管理界面。 该管理页面也可以在电脑上浏览。浏览地址是该设备的IP地址加上 2515 端口即可。 将安卓设备作为翻墙路由器 在管理页面中开启 Pick…

CSS Specificity 以及 CSS 规则优先级详解

也许你也有经历过这样的情况:明明自己已经为某个元素指定了一条 CSS 规则了,怎么在浏览器中显示出来的却跟期望的相差很多呢?你是否有仔细研究过这里面的问题?你是否有了解到 CSS 样式的优先级算法?如果没有,那么可以请接下来看看我对 CSS 优先级算法的一个讲解吧。 在开始之前: 我们先来了解一下 CSS 选择器都有哪些: 通配选择符: * { SRule } ,如: * { font-size: 14px; } 类型选择符: element { sRule } ,如: div { background: #000000; } 属性选择符: element[attr] { sRule } 、element[attr=value] { sRule }、element[attr~=value] { sRule }、element[attr|=value] { sRule },如: h1[title] { font-size: 20px;…

JavaScript Coding Style

其实在很久之前就一直想写这个 Coding style 了,只是一直懒得写出来。最近在公司和搭档一起写项目的时候才深刻的感受到,统一一下 Coding Style 是多么的重要。和她一起复习了一下一些常见的 Coding style ,过后我觉得还是非常有必要将这个写出来,作为自己的一个规范,以后就一直沿用这种规范好了。 声明:此规范仅仅是个人的使用习惯,不具有代表性。如果有更好的建议欢迎提出。 这篇文章写于2014年的8月份,截至现在(2016年8月)我自己的编程习惯已经有了很大的改变。因此文章的内容并不能反映我目前的编码偏好,各位看官当做参考即可。 目前而言我主要使用 Airbnb 的规范,并且配合 Eslint 来做代码风格和质量检查。 空格以及 Tab 永远使用软 Tab (Soft Tab) 作为缩进。 使用 4 个空格代替一个 Tab 。所以在代码里面的缩进应该是 4 个空格,而不应该有 2 个空格或者有 Tab…

JavaScript 中的 this 用法以及 call(apply) 的理解

想要深入了解 JavaScript 这门语言,一个必须掌握的知识点就是对 `this` 的理解。其中, `call` 和 `apply` 又与 `this` 有着密切的联系。趁现在有空,在网上看了一些教程之后,自己根据印象将其整理在这篇博文中。 this 是什么 this 是 JavaScript 中的一个关键字。它用在对象的方法中。 this 总是指向调用该方法的对象。举个最简单的例子: 当 this 在对象的方法中 var obj = { name : 'object', sayName : function () { alert(this.name); } }; obj.sayName(); // object 可以看出,当对象 obj 调用 sayName 这个方法时,this 指向的是 obj…