Nginx ssi 隐藏404内容

测试服务器开启 SSI 以后,可以动态引入样式和其他内容的页面片,模拟dev环境。

有时候,传到测试服务器的重构稿DEMO忘记上传页面片文件,或者已经有了样式,不需要页面片但是忘记删除引用了。就会在页面片引入的位置显示404内容,样式受影响。

Nginx可以自定义404内容,但是这种情况不适用,设置后会整个页面跳转到404页面。

解决方法如下,设置shtml文件永远不返回404:

location ~ \.shtml$ {
	if (!-e $request_filename) {
		return 200;
	}
}

更进一步,如果连shtml内容报错都想忽略的话,可以这样设置:

location / {
	ssi on;
	ssi_silent_errors off; # 关掉错误提示
	ssi_types text/shtml;
	
	root   /www;
	index  index.php index.html index.htm;
}

修改后记得先

service nginx configtest

然后再重启。

service nginx restart

用 d3.js 生成可以互动的中国地图

这是一个 step by step 的教程,不讲解原理,想深入了解请咨询google和github。

1,首先,我们需要地图坐标

Nature earth 可以下载地图坐标,这里有1:10m,1:50m,1:110m三种精度的数据可选,第一种最详细,文件尺寸也最大,后面两种文件较小,但是不包含省市信息(除了北美)。

这个页面下载 1:10m 的地图
国家: Download countries (5.11 MB) version 3.1.0
省:Download states and provinces (13.97 MB) version 3.0.0
省会: Download populated places (1.46 MB) version 3.0.0

【这里不演示省会信息,但是处理方法相同】下载后解压缩可以看到多种数据格式,我们需要 .shp 文件。
也就是这两个文件:
ne_10m_admin_0_countries.shp【8.8M】
ne_10m_admin_1_states_provinces.shp【21.6M】

2,转换坐标文件

下载的文件包含全球所有国家和地区,我们现在只需要中国的地图数据。

现在需要用到 Geospatial Data Abstraction Library – GDAL 的 ogr2ogr 工具把shp文件转换为GeoJSON。
假设你用 OS X 并且安装了 brew,运行:

> brew install gdal

安装后运行:

> ogr2ogr -f GeoJSON -where "SU_A3 = 'CHN' OR SU_A3='TWN'" countries.json ne_10m_admin_0_countries.shp

同样处理省市文件:

> ogr2ogr -f GeoJSON -where "gu_a3 = 'CHN'" states.json ne_10m_admin_1_states_provinces.shp

转换后的文件就可以用 d3.js 来生成地图啦。

3,压缩坐标文件

但是有个问题,经过上面转换后,文件尺寸有

countries.json【651KB】
states.json 【2.6MB】

不可能直接用到网页中啊。还好已经有人做过这一步工作了, http://www.mapshaper.org/上传上面的文件,会展示出来地图信息,拖动滚动条调整精度,国家地图我选择4.0%,省市地图我选择 25%。

然后选择导出GeoJSON。

countries.json【651KB】 -> china_countries_min.json 【25KB】
states.json 【2.6MB】 -> states_min.json【767KB】

减少了很多,不过还是有点大,我们需要用另外一个工具 topojson 进一步去除不必要的信息,假设你用 OS X 并且安装了 Node.js,运行:

> npm install -g topojson

分别处理以上两个文件:

> topojson --id-property SU_A3 -p name=NAME -p name -o china_countries_topo.json china_countries_min.json
> topojson --id-property adm1_cod_1 -p name -o states_topo.json states_min.json

处理后:

countries.json【651KB】 -> china_countries_min.json 【25KB】-> china_countries_topo.json【6KB】
states.json 【2.6M】 -> states_min.json【767KB】-> states_topo.json【104KB】

文件小到网页加载可以接受了,不过,在 mapshapher.org 这一步,可以试试调成精度更低的省市级别的文件,进一步减小文件尺寸。

3,生成地图

终于来到了最后一步,展示地图,废话不多说直接看代码:
Continue reading

ubuntu 设置 sendmail

给博客装了个登录保护的插件 Login security solution,用来防止猜密码,初次安装会强制所有用户需改密码。
登录的时候提示重置密码,然后报错,不能发送邮件……
ubuntu设置很简单

apt-get install sendmail

一路 y 确认

再测试发邮件

echo “This is a test.” | mail -s Testing [email protected]

提示需要安装 mailutils

apt-get install mailutils

一路 y 确认,什么也不用配置

再测试发邮件

echo “This is a test.” | mail -s Testing [email protected]

发送成功,现在可以修改密码了。

插件要求好高,要20位以上,包含大小写字母特殊字符,不能含有站点信息。

把帽子扔过篱笆

把帽子扔过篱笆

上个月收到苹果的开发者账号续费邮件,我注册已经这么久了么?

那我买design+code,sketch3也超过一年了?

还没有发布过一个,额,还没有做过一个自己的APP

去年买的跑鞋,一次没穿

elance月费,就让他扣吧

我丢过去就走,不爬过去