利用新浪ip地区接口和中国气象天气接口实现天气预报

这个标题有点长,中国气象天气接口以及国内到县区的中国气象专用地区码,之前的两篇文章里都介绍过了,还差一个ip地址库,去网上找纯真库然后配合php的iplocation扩展当然可以解决问题,不过并不是所有服务器都是linux系统,也不是所有人都能安装php扩展,所以还是找个稳定的可靠的第三方接口比较好,新浪的ip地区接口就不错: 继续阅读“利用新浪ip地区接口和中国气象天气接口实现天气预报”

中国气象的地区编码数据

中国气象有个json数据接口,比如杭州的天气数据是:http://m.weather.com.cn/data/101210101.html,那个101210101就是中国气象给杭州市城区编的地区码,下面讲解一下这个编码规则。

前三位101是国家编码,101就是中国了,21是省编码,21=浙江省,再往下两位就是该省的地级市编码,最后两位是该地级市的县区编码。

101 21 01 01
国    省  市  县

附件里是中国气象的中国地区编码,序列化的数组,到县区,近几年有区域调整的地方,可能没有更新过来。

附上PHP解析代码:

<?php
$area = file_get_contents("area.php");
$area = unserialize($area);
//print_r($area);
$province = array();
foreach($area as $k => $v){
	$province[$k] = $v['level0'];
}
//print_r($province);

// 找江苏省南京市江宁区代号
$pid = array_search('江苏',$province);
if($pid !== false){
	echo $pid;
	$citys = $area[$pid]['level1'];// 江苏所有地级市
	$cityid = array_search('南京',$citys);
	if($cityid !== false){
		echo ','.$cityid;
		// 县区
		$countys = $area[$pid]['level2'][$cityid];
		$countyid = array_search('江宁',$countys);
		if($countyid !== false){
			echo ','.$countyid;
			echo '中国气象id:'.$area[$pid]['level3'][$countyid];
		}else{
			echo 'no countyid';
		}
	}else
		echo 'no cid';
}else
	echo 'no pid';

附件:

area

PHP含有转义字符的字符串最好用双引号修饰

先来段代码:

<?php
echo strlen("\n");
echo strlen('\n');
echo strlen('\'');

会输出什么呢?

答案是121,单引号修饰的字符串,里面的反斜杠不会当成转义符,就是反斜杠。

而里面的单引号又必须转义,所以严格来讲,单引号修饰的字符串,反斜杠只转义单引号。

双引号修饰的字符串,始终将反斜杠当成转义符。所以需要用到转义符的地方,包括正则表达式,最好用双引号修饰,谨记。

推荐一个不错的wp高亮插件

嘿嘿,http://wordpress.org/extend/plugins/syntax-highlighter-with-add-button-in-editor/

非常不错。

下载解压,放到wp-content/plugins目录

然后到后台插件目录启用

wp编辑器下方就有插入代码的插件了,有多种语言高亮供选择

#比如sql:
select * from mytable;

鼠标悬停到代码区,还可以查看源代码和拷贝到粘贴区,很强

一个简单的文件缓存模型

在众多nosql产品横行的时代,文件缓存有什么用呢,大量文件读写效率问题,文件锁的问题,都是很讨厌的,但是还是有地方可以用到,小型的系统,或者没有提供nosql的空间,文件缓存还是非常有用的,具体代码如下,注释丰富。 继续阅读“一个简单的文件缓存模型”

verlet一个基于html5的js物理引擎

标题好像很拗口,就是在canvas上做符合物理规律的动画,重力、弹性、碰撞等等。

git clone https://github.com/subprotocol/verlet-js.git

里面有4个examples。

那个蜘蛛是非常牛B的,看了js源码,困啊,没想到html5+js能做出如此牛B的效果。

没有git,也可以下载zip包:https://github.com/subprotocol/verlet-js/archive/master.zip

效果是牛,只不过js也不好写啊,门槛还是有的。

用php读取验证码图片里的字符

听说过可以用程序读取验证码里的字符,一直不知道实现方法,这两天找到一个php写的类,可以读取比较规整的验证码图片里的数字,分享一下,后面有附件下载。

先讲一下原理,gd库里有个函数imagecolorat(resource,x,y),可以获取指定像素的RGB值,关键点就在这里,如果验证码图片做的比较简单,有固定RGB的背景,比如白色,字体大小和位置又相对固定,就可以分析出来。

一张图片从像素的角度看,实际上就是一个二维数组,每个像素点都有RGB值,过滤掉背景点(置0),留下字符所占位的像素点(置1),这样就可以得到一个只有0|1两个值的二维数组,如果打印这个二维数组,就会发现1组成的形状正好是图片里的字符,接下来要做的就是,按照字符所在位置和宽高,从上往下,从左到右,读取每个字符的特征码,如果只有数字的话,特征码就只有0-9,加上字母的话,也就是30来个特征码,不算多,拿图片里读取出来的特征码和已存在的特征码进行比对,就能得到具体的字符了。 继续阅读“用php读取验证码图片里的字符”

mysql 全文索引用法

mysql全文索引的缺陷,这个大家都知道,不支持中文,另外高频词也不索引,但是针对英文字段还是比较有用的。

创建全文索引,有phpmyadmin直接点个按钮,没有就只能写语句了:

alter table xxx add fulltext (fields)

注意可以对多个char varchar text字段全文索引

使用全文索引查询,肯定不是like语句了,有专门的语句:

match (fields) against (‘searchkey’ IN NATURAL LANGUAGE MODE)

后面那长串修饰词,实际上是匹配模式,有好几种,具体应用场景不细述,可以查手册,既然用到了全文索引,再搞复杂的条件,那真是头进水了。