月度归档:2017年08月

WIFI信号测试的3种方法

现在WIFI普遍的测试为场测及信号强度和掉包率

方法1:信号强度测试

  1. 1

    测试软件:WIFI分析仪

  2. 2

    环境搭建:如图

    WIFI信号测试的3种方法

  3. 3

    测试方法:在被测物体上安装WIFI分析仪。

    END

方法2:吞吐量测试

  1. 1

    测试平台:客户端:(电脑 )+ 被测机器

                 服务器端:电脑 + 无线路由

  2. 2

     测试软件:IxChariot Endpoint

  3. 3

    环境搭建:

    WIFI信号测试的3种方法

  4. 4

    测试方法:

          客户端:我们在客户端安装所测机器上安装Performance Endpoint,查看客户端IP。

      服务器:在服务器端安装IxChariot(控制台)。将无线路由器的LAN口与服务器端通过网线连接,组成一个小型局域网,查看服务端IP。

      在服务器打开IxChariot,并选择Throughput脚本。建立一个测试进程,测试时间设置为1分钟。 

    END

方法3:暗室测试

  1. 将整套测试的系统放在在暗室中测试(4m*7m*3m),保证相对干净的环境,并通过在路由器上加衰减器的方法模拟在不同的距离下测试吞吐量。

    WIFI信号测试的3种方法

  2. 2

    引进混响实验室和全新的测试系统来测试WiFi的辐射功率和接收灵敏度以及吞吐量测试,为客户提供全方向(3D)的测试结果。

       该系统可以测试2m*2m*2m的物体。    

    WIFI信号测试的3种方法

php增加经纬度地址编码geohash扩展

geohash

php geohash extension (php geohash 扩展)

geohash简介:

geohash是一种地址编码,它能把二维的经纬度编码成一维的字符串。

geohash有以下几个特点:

首先,geohash用一个字符串表示经度和纬度两个坐标。某些情况下无法在两列上同时应用索引 (例如MySQL 4之前的版本,Google App Engine的数据层等),利用geohash,只需在一列上应用索引即可。

其次,geohash表示的并不是一个点,而是一个矩形区域。比如编码wx4g0ec19,它表示的是一个矩形区域。 使用者可以发布地址编码,既能表明自己位于北海公园附近,又不至于暴露自己的精确坐标,有助于隐私保护。

第三,编码的前缀可以表示更大的区域。例如wx4g0ec1,它的前缀wx4g0e表示包含编码wx4g0ec1在内的更大范围。
这个特性可以用于附近地点搜索。首先根据用户当前坐标计算geohash(例如wx4g0ec1)然后取其前缀进行查询 (SELECT * FROM
place WHERE geohash LIKE ‘wx4g0e%’),即可查询附近的所有地点。Geohash比直接用经纬度的高效很多。

编译

git clone https://github.com/shenzhe/geohash.git

执行:
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install

然后把 geohash.so 加入到php.ini中 

方法

/**
 *  $latitude    //纬度
 *  $longitude   //经度
 *  $precision   //精密度, 默认是12
 *  返回 $precision 长度的 string 
 */
geohash_encode($latitude, $longitude, $precision=12);  



/**
 *  $hash    //geohash_encode后的值
 *  返回 array // Array
 *					(
 *					    [latitude] => 39.416916975752
 *					    [longitude] => 100.92223992571
 *					    [north] => 39.416917059571
 *					    [east] => 100.92224009335
 *					    [south] => 100.92223992571
 *					    [west] => 100.92223975807
 *					)
 */
geohash_decode($hash);

/**
 *  $hash    //geohash_encode后的值
 *  返回 在$hash 8个方向的hash值 (顺序:N, NE, E, SE, S, SW, W, NW)
 *  
 *		  NW N NE
 *		    \|/
 *		  W - - E
 *		    /|\
 *		  SW S SE
 * 
 */
geohash_neighbors($hash);

/**
 *  $precision    //精密度
 *  返回 数组,array("width"=>12.0, "height"=>12.0) 
 *  表示矩形的宽和高
 */
geohash_dimension($precision); 

nginx 根据IP进行灰度发布

灰度发布,简单来说,就是根据各种条件,让一部分用户使用旧版本,另一部分用户使用新版本。

nginx 的语法本身可以看作是一门小型的编程语言,通过简单的编程,可以轻松实现基于IP的灰度发布。

需求:搭建准生产环境,供开发人员/运维在线上做最后的调整。如果OK,直接用rsync推送至生产环境。

条件:办公室网络出口有固定IP

解决办法:

nginx 负载均衡器判断客户端IP地址,

如果是办公室IP,则反向代理到准生产环境;

如果不是,则反向代理到生产环境。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
upstream prod {
    server 192.168.1.10;
    server 192.168.1.11;
}
upstream pre-prod {
    server 192.168.1.100;
}
server {
    listen 80;
    access_log /var/log/nginx/access.log main;
    set $web_backend prod;
    if ($remote_addr ~ "123.123.123.123") {
        set $web_backend pre-prod;
    }
    location / {
        proxy_pass http://$web_backend;
        include proxy.conf;
    }
}

同理,也可以根据不同的IP,设置不同的网站根目录,达到相同的目的。

1
2
3
4
5
6
7
8
9
10
11
server {
    listen 80;
    access_log /var/log/nginx/access.log main;
    set $rootdir "/var/www/html";
    if ($remote_addr ~ "123.123.123.123") {
        set $rootdir "/var/www/test";
    }
    location / {
        root $rootdir;
    }
}

同理,还可以利用geoip做基于地理位置的灰度发布,不详细介绍。