[转]常用在线地图及其背后的小知识

常用在线地图的版本声明——谷歌地图(Mapabc), 百度地图(NaviInfo & MapBar & CenNavi), 
搜狐地图收购了图行天下(NaviInfo & Nav2)。

 NaviInfo就是声称连续7年在中国车载导航地图市场份额超过60%,连续3年在手机导航地图市场份额超过50%的四维图新。图吧(MapBar)运营方为图为先,使用的是原始数据亦是NaviInfo。

CenNavi(世纪高通)则是支持RDS、 DARC、DAB多种数据传输系统规范的,为车载终端提供实时交通路况信息服务的一家道路即时信息提供商,并不直接提供地图。

NAV2则是上海纳维,是NAVTEQ与NaviInfo的合资公司,两个公司都以NAV开头,所以就称为NAV2了吧(猜的)。前者是一家成立的1985年,较为先驱的制作导航用的地图公司,目前其母公司为Nokia。后者就是那个四维图新。

Mapabc即图盟,目前是AutoNavi(高德)的子公司,虽然它在自己的主页上宣称“Mapabc已经成为中国市场占有率最高、平台响应速率最快、地图数据最丰富的基础地图服务提供商”。不过没有数字,一切都显得很无力,甚至是好笑。

AutoNavi(高德),与NaviInfo一样是一家有国家测绘资质的原始数据提供商,总体占用率低于NaviInfo,不过高端车载的预装率比较高。报道称——“30万以上车型中市场占有率达到59.3%,在80万以上车型中市场占有率更是达到64.6%,宝马、奥迪、奔驰、凯迪拉克等高端品牌均采用的是高德的地图产品。”

Nginx的Rewrite功能配置

Rewrite的Flags

last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301

 

Discuz!在Nginx下的Rewrite

rewrite ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2 last;
rewrite ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3 last;
rewrite ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^(.*)/profile-(username|uid)-(.+)\.html$ $1/viewpro.php?$2=$3 last;
rewrite ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3 last;
rewrite ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2 last;

php不能使用exec执行命令的问题解决方法

在项目中要使用 aapt dump badging 命令来获取apk包信息,单独放到一个php文件里可以执行返回信息,但是放到项目中就不行,百度了一遍之后发现,原来是apache配置文件里使用了php安全模式引起的。

Windows下处理apache虚拟主机的权限:

1、开启安全模式,可以禁用exec()、system()等函数。

2、在httpd.conf中用php_admin_value open_basedir限制PHP的存取目录。

3、在php_admin_value open_basedir别忘了加上php.ini中指定的PHP临时上传目录和session保存目录,不然会无法上传文件、存取session。

php.ini中按如下配置:

upload_tmp_dir = “E:/APMServ5.2.0/PHP/uploadtemp/”

session.save_path = “E:/APMServ5.2.0/PHP/sessiondata/”

4、Apache2.0配置示例:


ServerName www.abc.com
DocumentRoot “E:/smis”
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php
AllowOverride None
Order Deny,Allow
Allow from all
php_admin_value open_basedir “E:/smis/;E:/APMServ5.2.0/PHP/uploadtemp/;E:/APMServ5.2.0/PHP/sessiondata/”
php_admin_value safe_mode On

5、Apache2.2配置示例:


ServerName www.abc.com
DocumentRoot “E:/smis”


Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php

Nginx 使用中文文件名中文目录404错误

一:确定你的系统是UTF编码
[root@Tserver ~]# env|grep LANG
LANG=en_US.UTF-8

二:NGINX配置文件里默认编码设置为utf-8
server
{
listen 80;
server_name .inginx.com ;
index index.html index.htm index.php;
root /usr/local/nginx/html/inginx.com;
charset utf-8;
}

三:如果使用putty
windows –> translation –>UTF-8

mkdir NGINX中文技术站
echo ‘NGINX中文技术站’ > NGINX中文技术站/中国.html

四,如果是用securecrt 上传文件,请选择 回话–>外观–UTF-8
如果是FTP软件也将默认编码设置为TUF-8

五,如果上传的文件名出现乱码显示
执行
for f in `ls *.html` ; do mv $f `ls $f|iconv -f GBK -t UTF-8`; done

完毕

2013,真正的转折点

去年的这个时候,怀着忐忑的心情去上班。


这篇博客在 2013年2月16日14:15写了个开头,然后一过就是4年,都没有续下去,今天是2016年11月18日,博客升级完之后进来看到,于是想补充一下,但是已经完全记不得当时的心情了。

从日期来看,应该是在国笔公司上班的那段时间,原以为2013年会有什么不一样的表现,其实到最后,还是平平凡凡的过完了2013,只是,8月份又辞职了。那会佛山一个朋友准备搞人才网,叫我一起,我也是从那个时候开始忙起来,周末和晚上都没有了自己的时间了。

2013,更多的问题还是感情上的问题,分分合合,纠缠清,不知道是该分开还是在一起,现在往回看,觉得那时候真的好幼稚的。

php判断两个文件是否完全相同

场景:在线文件存储,如各种云备份功能;

起因:如果有大量的小文件上传,有些是重复的,会造成服务器端大量的文件冗余,霸占了大量的硬盘容量不说,还不方便维护管理,这个时候,就需要判断服务器端上是否存在文件了。

解决:

1、比较笨的办法:用file_get_contents把文件load进内存里对二进制进行比较,这种比较占系统资源,效率也不太高。

2、计算文件hash值,可以md5,sha1,crc32等多种方法同时使用,这样就可以避免单一方式重复碰撞的可能,但是建议两种方式为宜,减少运算量,可以先检查文件大小,再检查md5,如果都相同,可以再增加检查sha1或crc32,不同文件全部重复的可能性,几乎不存在。

代码:

$filename = "test.txt";
$sha1file = sha1_file($filename);
echo $sha1file;
$md5file = md5_file($filename);
echo $md5file;

做云存储、网盘什么之类的应该也是用的这种原理,但肯定会更细致。以后再慢慢研究。

php使用rsa加密

在android项目中要用到加密与服务端通讯,避免中途被人恶意截取了信息。

我在linux下生成了密钥对,拿到windows环境下开发调试,发现总是报这个错:

supplied key param cannot be coerced into a private

百度了很久才找到一点有用的信息,在phpchina里有一帖子也遇到同样问题。

原文:http://bbs.phpchina.com/thread-222563-1-1.html

大致原因是因为公钥和私钥不配对,并没有根据私钥来生成公钥。

然后我到linux下重新生成了密钥对,再测试,果然通过了。

debian linux环境下安装vmware虚拟机

宿主环境:

Debian Linux 6 AMD64

VMWare 7.1.6

 

虚拟环境:

CentOS 6.3 64bit 最小化安装

 

宿主配置

宿主需要安装的依赖包:

apt-get install perl

apt-get install gcc

apt-get install linux-headers-2.6.32-5-all-amd64

下载安装版本:VMware-Workstation-Full-7.1.6-744570.x86_64.bundle

以下序列号来源于网络:GY11R-0VE41-085VZ-VZPQC-Q20G2

 #sh ./VMware-Workstation-Full-7.1.6-744570.x86_64.bundle

然后会弹出安装界面,然后一步步图形化的操作,跟windows上安装差不多。

 

虚拟机配置

设置固定IP:

#ifconfig -a 查看一下网卡信息
#netstat -r 查看网关

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static            还有一种是dhcp
BROADCAST=192.168.135.255   广播地址
NETWORK=192.168.135.0       网段   
IPADDR=192.168.135.128      ip地址
HWADDR=00:0C:29:0C:0C:34    网卡地址
GATEWAY=192.168.135.2       网关(这个和/etc/resolv.conf中的DNS一样)
ONBOOT=yes                  当启动的时候启用

vi /etc/resolv.conf  修改DNS
nameserver 192.168.35.2

#ifdown
#ifup

以下内容来源于网络,本人做了些话修改:

一、linux虚拟机采用Bridge(桥接)上网
适用:使用路由器上网的企业或家庭环境(静态ip)
(1)将VMware下的linux虚拟机设置为Bridge上网,并将linux的ip设置成与主机ip同一网段。
     测试:ping www.163.com (若ping得通,说明已经成功连接到外网)
(2)此时外网直接访问linux虚拟机的ip即可
注意:此时局限于企业或家庭的局域网,如果要真正的互联网访问这台linux虚拟机,需要在做一个外网ip
二、linux虚拟机采用NAT上网
适用:校园网或者托管到机房的服务器(动态ip)
(1)将VMware下的linux虚拟机设置为NAT上网。
这里需要注意的是:
如果你的主机为XP系统,那么下面的测试一般能ping通;
如果你的主机是Win7系统,那么你需要将VMware的版本升级到7.1以上(记得安装完重启电脑),否则下面的测试一般不能ping通(假如你ping通,那你人品真的非常好!)。
     测试:ping www.163.com (若ping得通,说明已经成功连接到外网)

(2)VMware虚拟机的端口映射
使用NAT上网的linux虚拟机是和宿主机共享一个ip的,此时外网访问这个ip是访问你的宿主机,而不是你的linux虚拟机!因此此时需要对VMware虚拟机做一个端口映射!
具体方法如下:
a、VMware下Edit->Virtual Network Editor->VMnet8->NAT Setting->Add开始设置端口映射。
b、Host port 为要映射到主机的主机端口
   Type     依情况而定
   Virtual machine IP Address 为linux虚拟机的IP地址(超级权限,ifconfig可查看)
   Virtual machine port       为要映射到主机的虚拟机端口
c、举例:将linux虚拟机的ssh端口22映射到主机的6000端口,外界访问时直接访问主机地址的6000端口即访问linux虚拟机的22端口。

可能是因为我安装的VMWare版本不同,没有找到做端口影射界面,后来是直接修改配置文件。

# vim /etc/vmware/vmnet8/nat/nat.conf

[incomingtcp]
# ftp port
8021 = 192.168.35.128:21
8121 = 192.168.35.129:21

# ssh port
8022 = 192.168.35.128:22
8122 = 192.168.35.129:22

# web port
8000 = 192.168.35.128:80
8100 = 192.168.35.129:80

:wq 保存退出

#service vmware restart 重启vmware服务,然后重新开虚拟机,进入虚拟系统。这时候通过外网已经可以访问进来了。。。