使用Yarn来替代npm 来作为包管理器, 使用webpack来取代grunt, gulp, bower

历史: http://www.infoq.com/cn/news/2016/10/yarn
官网: https://yarnpkg.com

Webpack来打包.
运行webpack-dev-server 作为开发环境(dev)下的的web服务器,可以实现热替换.

Webpack + Angular的组件化实践„是2015年的文章了. 目前也可做参考

参考:

  1. Gulp到Webpack迁移的研究
  2. 前端团队 Gulp & Webpack 工作流 迁移记

iOS10 开始忽略user-scalable=no 的声明, 给使用css position: fixed 带来新问题

同事测试新版本的时候发现,他的mobile safari可以缩放我们的自适应网站. 我记得我们的自适应页面已经禁止了用户缩放.查了一下, 原来从ios10开始,它就忽略meta的禁止缩放的申明了. 这样一个改变造成了页面上,使用position:fxied 的地方的发生定位错误.

我查了一下,原来16年这个ios出来后, 开发者就开始骂了. 不过这个人写的博客文章比较客观,让我们重新审视一下,responsive 设计原则中的禁止缩放真的对用户负责的吗?

历史上,从iOS5开始,就对postion:fixed支持有问题. 这个用户列举了ios5下的position:fixed 的种种问题.
https://remysharp.com/2012/05/24/issues-with-position-fixed-scrolling-on-ios

说回来,我们还是要解决用户在ios safari里,使用手指缩放( pinch to zoom )后,造成 position fixed 错误的问题.

把dh生产环境5.5升级到5.6

大概过程如下

lsb_release -a

#https://www.digitalocean.com/community/questions/how-to-upgrade-from-php-v-5-5-9-to-v-5-6
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6 php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml
sudo a2dismod php5
sudo a2enmod php5.6
sudo service apache2 restart

一下是需要的模块
sudo apt-get install php5.6-curl

sudo apt install php5.6-bcmath
sudo apt install php5.6-gd
sudo apt install php5.6-zip

vagrant 的provision 功能配合 ansible 实现安装自动化

vagrant box安装完以后,通常还要安装一堆工作需要的程序.这个过程可以通过ansilbe来实现自动化.

类似在vagarnt 的配置文件内,加上类似这样的配置,当vagrant up boxname的时候,就会自动安装

  backend.vm.provision "ansible_local" do |ansible|
ansible.playbook = "backend.yml"
ansible.install = true
ansible.install_mode = :pip
ansible.version = "2.2.0"
end

其中backend.yml是ansible的配置文件.具体使用参看 ansible 手册

curl中无法获取本地根证书导致无法连接SSL服务器

最近把服务器都升到了SSL,出现了一个问题. curl不认识本地的根证书,导致无法验证签名,连接SSL就出错了. 出错信息如下

cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

查了一下,主要解决办法就是下载一个根证书,然后修改php.ini里的curl.cainfo,指向此PEM文件,重启即可.

但是我这里尝试好久都没用. 只有暂时关闭curl的检查
//$options['verify'] = false;

DNS中的TXT记录和强制SSL的关系

在启用了Strato的全站SSL后,会自动的在DNS设置内添加一个TXT记录.类似

TXT-Record: 201709070554452mwbv8q0pk9py5r8qongpqm7wudpnjtayd66rgjbn9jpemdnzi

这样所有的请求会被转到不是A记录内指定的IP地址了.

但是,如果你取消SSL后,这个TXT记录不会自动消除.造成指向错误.清除这个TXT记录后,故障消失.

常用域名记录解释:A记录、MX记录、CNAME记录、TXT记录、AAAA记录、NS记录

来源 https://www.ezloo.com/2011/04/a_mx_cname_txt_aaaa_ns.html

A记录

A记录是用来创建到IP地址的记录。

A记录设置技巧

1、如果想创建不带www的记录,即ezloo.com,在主机记录中填写@或者留空,不同的注册商可能不一样。

2、创建多个域名到同一个IP,比如给博客建了二级域名,可以使用*.blog.ezloo.com来指向一个IP,这样的话,不管是访问a.blog.ezloo.com还是b.blog.ezloo.com都能到同一个IP。

3、如果你给同一个二级域名设置了多个A记录,比如你建了两个blog的A记录,其中一个指向了111.111.111.111,另一个指向了111.111.111.112,那么在查询的时候,每次返回的数据包含了两个IP地址,但是在返回的过程中数据排列的顺序每次都不相同。由于大 部分的客户端只选择第一条记录所以通过这种方式可以实现一定程度的负载均衡。

在命令行下可以通过nslookup -qt=a www.ezloo.com来查看A记录。
MX记录

在命令行下可以通过 nslookup -qt=mx ezloo.com 来查看MX记录。

mx 记录的权重对 Mail 服务是很重要的,当发送邮件时,Mail 服务器先对域名进行解析,查找 mx 记录。先找权重数最小的服务器(比如说是 10),如果能连通,那么就将服务器发送过去;如果无法连通 mx 记录为 10 的服务器,那么才将邮件发送到权重为 20 的 mail 服务器上。

这里有一个重要的概念,权重 20 的服务器在配置上只是暂时缓存 mail ,当权重 20 的服务器能连通权重为 10 的服务器时,仍会将邮件发送的权重为 10 的 Mail 服务器上。当然,这个机制需要在 Mail 服务器上配置。(http://blog.ixpub.net/viewthread-1308142)
CNAME记录

CNAME记录也成别名记录,它允许你将多个记录映射到同一台计算机上。比如你建了如下几条记录:

a1 CNAME a.ezloo.com
a2 CNAME a.ezloo.com
a3 CNAME a.ezloo.com
a A 111.222.111.222

我们访问a1(a2,a3).ezloo.com的时候,域名解析服务器会返回一个CNAME记录,并且指向a.ezloo.com,然后我们的本地电脑会再发送一个请求,请求a.ezloo.com的解析,返回IP地址。

当我们要指向很多的域名到一台电脑上的时候,用CNAME比较方便,就如上面的例子,我们如果服务器更换IP了,我们只要更换a.ezloo.com的A记录即可。

在命令行下可以使用nslookup -qt=cname a.ezloo.com来查看CNAME记录。
TXT记录

TXT记录一般是为某条记录设置说明,比如你新建了一条a.ezloo.com的TXT记录,TXT记录内容“this is a test TXT record.“,然后你用 nslookup -qt=txt a.ezloo.com ,你就能看到“this is a test TXT record“的字样。

除外,TXT还可以用来验证域名的所有,比如你的域名使用了Google的某项服务,Google会要求你建一个TXT记录,然后Google验证你对此域名是否具备管理权限。

在命令行下可以使用nslookup -qt=txt a.ezloo.com来查看TXT记录。
AAAA记录

AAAA记录是一个指向IPv6地址的记录。

可以使用nslookup -qt=aaaa a.ezloo.com来查看AAAA记录。
NS记录

NS记录是域名服务器记录,用来指定域名由哪台服务器来进行解析。可以使用nslookup -qt=ns ezloo.com来查看。
TTL值

TTL=time to live,表示解析记录在DNS服务器中的缓存时间。比如当我们请求解析www.ezloo.com的时候,DNS服务器发现没有该记录,就会下个NS服务器发出请求,获得记录之后,该记录在DNS服务器上保存TTL的时间长度。当我们再次发出请求解析www.ezloo.com 的时候,DNS服务器直接返回刚才的记录,不去请求NS服务器。TTL的时间长度单位是秒,一般为3600秒。

kaforum免费升级到https

使用 https://letsencrypt.org/getting-started/ 的免费服务.

因为ubuntu版本12过老了.需要手动生成证书. 配置的过程可以参考其他的apache ssl配置.

注意证书有效期才2周,需要自动更新. 
https://certbot.eff.org/#ubuntuother-apache

先测试一下.