PHP5研究室 - 国内Android用户的第一选择! http://www.phpv.net/ 为Android手机提供免费应用软件,ROM,免费游戏,破解刷机,汉化工具! 同时为Android开发者提供交流平台. Wed, 17 Jan 2018 18:09:58 +0000 Chiron ver1.0 zh-cn hourly 1 PHP 中文手册2010年最新版【带评论】 http://www.phpv.net/html/1716.html http://www.phpv.net/html/1716.html#comment Sun, 09 Jan 2011 00:35:00 +0000 http://www.phpv.net/html/1716.html 站点都更新了,手册这么重要的玩意不更新怎么行?

大家都知道,PHP中文手册在N年前因为更新太慢远远落后于英文版,于是被官方从http://php.net/docs.php文档页撤掉了。
中文文档小组的邮件列表也是很久都没有动静,无奈啊大家都太忙。

这个版本是由HonestQiao同学维护的,编译时间是2010年1月1日,带最新评论。

下载地址(下载解压后如打开无法正常查看,请从鼠标右键查看属性解锁)

 

功能:Features
----------------------------------------------------------------------------------
1. 最新PHP中文/英文手册,每周SVN同步到最新版本
2. 整合在线评论信息,蕴含巨大宝藏,学习进阶必备
3. CHM格式,方便随身携带,可与其他软件完美配合使用
4. 导航详细,索引完整,搜索方便
5. 需求征集,打造最易用PHP中文CHM手册

一、更新日志:ChangeLog
----------------------------------------------------------------------------------
2011年1月1日,V0.9.6提供测试,元旦快乐
2010年12月10日,2010演示版V0.9.5提供测试,纪念PHP5.3.4发布
2010年11月29日,2010演示版V0.9.4提供测试,修复大量内部跳转链接问题
2010年11月12日,2010演示版V0.9.3提供测试,开始修复手册中过期内容
2010年10月10日,2010演示版V0.9.2提供测试
2010年10月2日,正在完善相关处理脚本和程序,为正式发布做准备;因手册本身无实质变化,暂不上传本周版本!
2010年9月26日,2010演示版V0.9提供测试
2010年9月18日,2010演示版V0.8提供测试,9.18纪念版。
2010年9月9日,2010演示版V0.7提供测试,评论内PHP代码高亮,并加入手册新版本更新提醒功能(下次更新后,即可自动提示)。
2010年9月2日,2010演示版V0.6提供测试,特别纪念PHP手册中文翻译补完计划手册首次提交 PHP官方SVN。
2010年8月29日,2010演示版V0.5提供测试,加入在线中文和英文手册的连接,提供英文手册CHM整合评论版。
2010年8月17日,2010演示版V0.4提供测试,修正编码问题,可供Windows/CHM、ChmSee、iCHM等完好好使用!
2010年8月12日,2010演示版V0.3提供测试,版式完善,加上了CHM导航目录和索引,可供正式使用
2010年8月11日,2010演示版V0.2提供测试,样式修改基本完善
2010年8月5日,2010演示版V0.1提供测试,基本整合最新手册和评论
2010年8月1日,准备新版本,学习最新资料,准备代码和处理脚本
2008年3月19日,因官方问题,老版本暂停继续更新
2007年10月5日,开始提供本CHM手册


二、当前问题列表:BUG
----------------------------------------------------------------------------------
1. CHM左则目录没有目录细节:已处理
2. CHM左则索引基本没有:已处理
3. CHM导航信息与CHM内容编码不一致,导致部分chm查看器乱码:已处理
4. xCHM查看时导航乱码(主要因为xCHM自身问题,望各位提供解决方法)

三、说明:More
----------------------------------------------------------------------------------
1. 因为属于演示版,所以可能存在问题,例如可能版式、乱码等,但正在全力完善!
2. 请协助改进,与 http://docs.php.net/manual/en/index.php 对比测试
3. 如有问题,敬请告知,多谢了!
4. 反馈请致信 honestqiao@163.com,标题【PHP手册反馈】;亦可通过QQ/5601680、MSN/honestqiao@hotmail.com反馈
5. 一旦测试反馈和修改完善,就进入正式发布队列,每周更新
6. 下载后如打开无法正常查看,请从鼠标右键查看属性,点击解除锁定即可

 

来,再发一次下载地址

下载地址,点我!

]]>
Linux 服务器忘记用户名&密码取回办法 http://www.phpv.net/html/1715.html http://www.phpv.net/html/1715.html#comment Sun, 09 Jan 2011 00:01:25 +0000 http://www.phpv.net/html/1715.html 今天遇到的问题,服务器版本是 ubuntu9.04  我发神经去改了 /etc/passwd 文件里的用户UID

一改了以后,sudo就出错了:

sudo: uid 1000 does not exist in the passwd file!
who are you?

结果啥事也不能做,别的用户又没有sudo的权限。试过PHP木马,找过这个系统版本的BUG下载 full-nelson.c 并编译想提权至ROOT都未成功。

最后只能请机房解决。操作步骤如下:
----------------------------------------------------------------

1.  按电源键关机,等待正常关机后重新开机。
2.  开机时按ESC键,在引导菜单中光标移至第二项【ubuntu 9.04 , kernel 2.6.28-11 server (recovery mode) 】回车。
3.  在recovery menu 中,选择最后一项【root Drop to root shell prompt】后回车。
4.  执行命令
       mount -o remount,rw /
       sed -i "s#1876#1000#g" /etc/passwd  (这命令是把UID改回来,如果要改密码这里的命令就是 passwd 您的用户名 然后输入新密码,要是你连自己用户名都不记得,可以ls /home 看看)
5. 最后按Ctrl+Alt+Del 三键重启服务器。

----------------------------------------------------------------

我在操作到第3步时遇到错误 Give root password for maintenance (or type Control-D to continue)

解 决办法是第2步时按 e 键进入编辑模式,选择kernel 那行再次按e 键,将ro single替换为rw single init=/bin/bash后回车确认,按 b 键引导boot。这样就不会报Give root password for maintenance错误了。

机器是用 lilo 来引导的话,这么改 boot: linux init=/bin/bash

 

PS:此方法适于所有LINUX的机器,所以取了这么个标题。

 

]]>
phpv,2011众石启航, 听取大家的意见 http://www.phpv.net/html/1714.html http://www.phpv.net/html/1714.html#comment Thu, 06 Jan 2011 09:50:26 +0000 http://www.phpv.net/html/1714.html 首先祝福这里的各位朋友2011新年 快乐!

PHP5研究室已经小有时日没有更新了,一方面站长蚊子的工作比较忙碌,另外一方面也 因为这里的人手比较有限。2011年已经到来了,PHP5研究室将继续为大家带来各种PHP相关的新闻,技术资料,以及各种有用的参考资料。

为了可以在2011年把PHP5研究室发展得更好,这里诚挚听取各位读者,以及PHP5研究室各位老朋友的意见和建议。如果您对我们的发展有任何的意见或者建议,请暂时通过我们的论坛发送消息给 抽烟的老K,或者抽烟的蚊子。我们也将会在短时间内为大家开放更多的交流渠道,便于听取大家的各种意见和建议。谢谢大家~!

PHP5研究室

2011.1.6

]]>
淘宝的可伸缩高性能互联网架构揭密 http://www.phpv.net/html/1713.html http://www.phpv.net/html/1713.html#comment Mon, 12 Jul 2010 10:38:18 +0000 http://www.phpv.net/html/1713.html        时间过得很快,来淘宝已经两个月了,在这两个月的时间里,自己也感受颇深。下面就结合淘宝目前的一些底层技术框架以及自己的一些感触来说说如何构建一个可 伸缩,高性能,高可用性的分布式互联网应用。

应用无状态(淘宝session框架)

       俗话说,一个系 统的伸缩性的好坏取决于应用的状态如何管理。为什么这么说呢?咱们试想一下,假如我们在session中保存了大量与客户端的状态信 息的话,那么当保存状态信息的server宕机的时候,我们怎么办?通常来说,我们都是通过集群来解决这个问题,而通常 所说的集群,不仅有负载均衡,更重要的是要有失效恢复failover,比如tomcat采 用的集群节点广播复制,jboss采 用的配对复制等session状 态复制策略,但是集群中的状态恢复也有其缺点,那就是严重影响了系统的伸缩性,系统不能通过增加更多的机器来达到良好的水平伸缩,因为集群节点间session的 通信会随着节点的增多而开销增大,因此要想做到应用本身的伸缩性,我们需要保证应用的无状态性,这样集群中的各个节点来说都是相同的,从而是的系统更好的 水平伸缩。

        OK, 上面说了无状态的重要性,那么具体如何实现无状态呢?此时一个session框架就会发挥作用了。幸运的是淘 宝已经具有了此类框架。淘宝的session框架采用的是client cookie实现,主要将状态 保存到了cookie里 面,这样就使得应用节点本身不需要保存任何状态信息,这样在系统用户变多的时候,就可以通过增加更多的应用节点来达到水平扩展的目的.但 是采用客户端cookie的 方式来保存状态也会遇到限制,比如每个cookie一般不能超过4K的大小,同时很多浏览器都限制一个站点最 多保存20cookie.淘 宝cookie框 架采用的是“多值cookie”, 就是一个组合键对应多个cookie的 值,这样不仅可以防止cookie数 量超过20, 同时还节省了cookie存 储有效信息的空间,因为默认每个cookie都会有大约50个字节的元信息来描述cookie

        除 了淘宝目前的session框 架的实现方式以外,其实集中式session管理来完成,说具体点就是多个无状态的应用节点连接一个session 服 务器,session服 务器将session保 存到缓存中,session服 务器后端再配有底层持久性数据源,比如数据库,文件系统等等。

 

 

 

有效使用缓存(Tair

        做 互联网应用的兄弟应该都清楚,缓存对于一个互联网应用是多么的重要,从浏览器缓存,反向代理缓存,页面缓存,局部页面缓存,对象缓存等等都是缓存应用的场 景。

        一 般来说缓存根据与应用程序的远近程度不同可以分为:local cache remote cache。 一般系统中要么采用local cache,要么采用remote cache,两者混合使用的话对 于local cacheremote cache的数据一致性处理会变 大比较麻烦.

        在 大部分情况下,我 们所说到的缓存都是读缓存,缓存还有另外一个类型:写缓存.  对 于一些读写比不高,同时对数据安全性需求不高的数据,我们可以将其缓存起来从而减少对底层数据库的访问,比如 统计商品的访问次数,统 计API的 调用量等等,可 以采用先写内存缓存然后延迟持久化到数据库,这样可以大大减少对数据库的写压力。

        OK, 我以店铺线的系统为例,在用户浏览店铺的时候,比如店铺介绍,店铺交流区页面,店铺服务条款页面,店铺试衣间页面,以及店铺内搜索界面这些界面更新不是非 常频繁,因此适合放到缓存中,这样可以大大减低DB的负载。另外宝贝详情页面相对也更新比较 少,因此也适合放到缓存中来减低DB负载。

 

 

 

应用拆分(HSF

首 先,在说明应用拆分之前,我们先来回顾一下一个系统从小变大的过程中遇到的一些问题,通过这些问题我们会发现拆分对于构建一个大型系统是如何的重要。

系 统刚上线初期,用户数并不多,所有的逻辑也许都是放在一个系统中的,所有逻辑跑到一个进程或者一个应用当中,这个时候因为比较用户少,系统访问量低,因此 将全部的逻辑都放在一个应用未尝不可。但是,兄弟们都清楚,好景不长,随着系统用户的不断增加,系统的访问压力越来越多,同时随着系统发展,为了满足用户 的需求,原有的系统需要增加新的功能进来,系统变得越来越复杂的时候,我们会发现系统变得越来越难维护,难扩展,同时系统伸缩性和可用性也会受到影响。那 么这个时候我们如何解决这些问题呢?明智的办法就是拆分(这也算是一种解耦),我们需要将原来的系统根据一定的标准,比如业务相关性等分为不同的子系统, 不同的系统负责不同的功能,这样切分以后,我们可以对单独的子系统进行扩展和维护,从而提高系统的扩展性和可维护性,同时我们系统的水平伸缩性scale out大 大的提升了,因为我们可以有针对性的对压力大的子系统进行水平扩展而不会影响到其它的子系统,而不会像拆分以前,每次系统压力变大的时候,我们都需要对整 个大系统进行伸缩,而这样的成本是比较大的,另外经过切分,子系统与子系统之间的耦合减低了,当某个子系统暂时不可用的时候,整体系统还是可用的,从而整 体系统的可用性也大大增强了。

因 此一个大型的互联网应用,肯定是要经过拆分,因为只有拆分了,系统的扩展性,维护性,伸缩性,可用性才会变的更好。但是拆分也给系 统带来了问题,就是子系统之间如何通信的问题,而具体的通信方式有哪些呢?一般有同步通信和异步通信,这里我们首先来说下同步通信,下面的主题“消息系 统”会说到异步通信。既然需要通信,这个时候一个高性能的远程调用框架就显得非常总要啦,因此咱们淘宝也有了自己的HSF框 架。

 

上 面所说的都是拆分的好处,但是拆分以后必然的也会带来新的问题,除了刚才说的子系统通信问题外,最值得关注的问题就是系统之间的依赖关系,因为系统多了, 系统的依赖关系就会变得复杂,此时就需要更好的去关注拆分标准,比如能否将一些有依赖的系统进行垂直化,使得这些系统的功能尽量的垂直,这也是目前淘宝正 在做的系统垂直化,同时一定要注意系统之间的循环依赖,如果出现循环依赖一定要小心,因为这可能导致系统连锁启动失败。

OK, 既然明白了拆分的重要性,我们看看随着淘宝的发展,淘宝本身是如何拆分系统的。

首 先我们来看以下这个图:

 

 

 

 

 

 

从 上面的图可以看出淘宝系统的一个演变过程,在这个演变的过程中,我们所说的拆分就出现V2.2V3.0之 间。在V2.2版 本中,淘宝几乎所有的逻辑都放在(Denali)系统中,这样导致的问题就是系统扩展和修改非常麻烦,并且更加致命的是随 着淘宝业务量的增加,如果按照V2.2的架构已经没有办法支撑以后淘宝的快速发展,因此大家决定对整个系统进行拆分,最 终V3.0版 本的淘宝系统架构图如下:

 

 

 

 

 

从 上图可以看出V3.0版 本的系统对整个系统进行了水平和垂直两个方向的拆分,水平方向上,按照功能分为交易,评价,用户,商品等系统,同样垂直方向上,划分为业务系统,核心业务 系统以及以及基础服务,这样以来,各个系统都可以独立维护和独立的进行水平伸缩,比如交易系统可以在不影响其它系统的情况下独立的进行水平伸缩以及功能扩 展。

 

 

 

 从上面可以看出,一个大型系统要想变得可维 护,可扩展,可伸缩,我们必须的对它进行拆分,拆分必然也带来系统之间如何通信以及系统之间依赖管理等问题,关于通信方面,淘宝目前独立开发了自己的高性 能服务框架HSF, 此框架主要解决了淘宝目前所有子系统之间的同步和异步通信(目前HSF主要用于同步场合,FutureTask方 式的调用场景还比较少)。至于系统间的依赖管理,目前淘宝还做的不够好,这应该也是我们以后努力解决的问题。

 

 

数据库拆分(TDDL

        在 前面“应用拆分”主题中,我们提到了一个大型互联网应用需要进行良好的拆分,而那里我们仅仅说了应用级别的拆 分,其实我们的互联网应用除了应用级别的拆分以外,还有另外一个很重要的层面就是存储如何拆分的。因此这个主题主要涉及到如何对存储系统,通常就是所说的RDBMS进 行拆分。

好 了,确定了这个小节的主题之后,我们回顾一下,一个互联网应用从小变大的过程中遇到的一些问题,通过遇到的问题来引出我们拆分RDBMS的 重要性。

系 统刚开始的时候,因为系统刚上线,用户不多,那个时候,所有的数据都放在了同一个数据库中,这个时候因为用户少压力小,一个数据库完全可以应付的了,但是 随着运营那些哥们辛苦的呐喊和拼命的推广以后,突然有一天发现,oh,god,用户数量突然变多了起来,随之而 来的就是数据库这哥们受不了,它终于在某一天大家都和惬意的时候挂掉啦。此时,咱们搞技术的哥们,就去看看究竟是啥原因,我们查了查以后,发现原来是数据 库读取压力太大了,此时咱们都清楚是到了读写分离的时候,这个时候我们会配置一个servermaster节 点,然后配几个salve节 点,这样以来通过读写分离,使得读取数据的压力分摊到了不同的salve节点上面,系统终于又恢复了正常,开 始正常运行了。但是好景还是不长,有一天我们发现master这哥们撑不住了,它负载老高了,汗 流浃背,随时都有翘掉的风险,这个时候就需要咱们垂直分区啦(也就是所谓的分库),比如将商品信息,用户信息,交易信息分别存储到不同的数据库中,同时还 可以针对商品信息的库采用mastersalve模式,OK, 通过分库以后,各个按照功能拆分的数据库写压力被分担到了不同的server上面,这样数据库的压力终于有恢复 到正常状态。但是是不是这样,我们就可以高枕无忧了呢?NO,这个NO, 不是我说的,是前辈们通过经验总结出来的,随着用户量的不断增加,你会发现系统中的某些表会变的异常庞大,比如好友关系表,店铺的参数配置表等,这个时候 无论是写入还是读取这些表的数据,对数据库来说都是一个很耗费精力的事情,因此此时就需要我们进行“水平分区”了(这就是俗话说的分表,或者说sharding.

OK,上 面说了一大堆,无非就是告诉大家一个事实“数据库是系统中最不容易scale out的一层”,一个大型的互联网 应用必然会经过一个从单一DB server,Master/salve,再到垂直分区(分 库),然后再到水平分区(分表,sharding)的过程,而在这个过程中,Master/salve 以 及垂直分区相对比较容易,对应用的影响也不是很大,但是分表会引起一些棘手的问题,比如不能跨越多个分区join查 询数据,如何平衡各个shards的 负载等等,这个时候就需要一个通用的DAL框架来屏蔽底层数据存储对应用逻辑的影响,使得底层数据的访问对应用透明化。

拿 淘宝目前的情况来说,淘宝目前也正在从昂贵的高端存储(小型机+ORACLE)切换到MYSQL,切 换到MYSQL以 后,势必会遇到垂直分区(分库)以及水平分区(Sharding)的问题,因此目前淘宝根据自 己的业务特点也开发了自己的TDDL框架,此框架主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制。

 

 

 

异步通信(Notify

远 程调用框架的 介绍中,我 们说了一个大型的系统为了扩展性和伸缩性方面的需求,肯定是要进行拆分,但是 拆分了以后,子 系统之间如何通信就成了我们首要的问题,远程调用框架小节 中,我 们说了同步通信在一个大型分布式系统中的应用,那么这一小节我们就来说说异步通信.好了,既 然说到了异步通信,那 么消 息中间件就 要登场了,采 用异步通信这其实也是关系到系统的伸缩性,以及最大化的对各个子系统进行解耦.

说 到异步通信,我们需要关注的一点是这里的异步一定是根据业务特点来的,一定是针对业务的异步,通常适合异步的场合是一些松耦合的通信场合,而对于本身业务 上关联度比较大的业务系统之间,我们还是要采用同步通信比较靠谱。

OK,那 么下一步我们说说异步能给系统带来什么样子的好处。首先我们想想,假如系统有AB两个 子系统构成,假如AB是 同步通信的话,那么要想使得系统整体伸缩性提高必须同时对AB进行 伸缩,这就影响了对整个系统进行scale out.其次,同步调用还会影响到可用性,从数学推理的角度来说,A同 步调用B, 如果A可 用,那么B可 用,逆否命题就是如果B不 可用,那么A也 不可用,这将大大影响到系统可用性,再次,系统之间异步通信以后可以大大提高系统的响应时间,使得每个请求的响应时间变短,从而提高用户体验,因此异步在 提高了系统的伸缩性以及可用性的同时,也大大的增强了请求的响应时间(当然了,请求的总体处理时间也许不会变少)。

 

下 面我们就以淘宝的业务来看看异步在淘宝的具体应用。交易系统会与很多其它的业务系统交 互,如果在一次交易过程中采用同步调用的话,这就要求要向交易成功,必须依赖的所有系统都可用,而如果采用异步通信以后,交易系 统借助于消息中间件Notify和 其它的系统进行了解耦,这样以来当其它的系统不可用的时候,也不会影响到某此交易,从而提高了系统的可用性。

 

最后,关于异步方面的讨论,我可以 推荐大家一些资源:

 1 . J2EE meets web2.0

 2. Ebay架构特点(HPTS 2009)

 

 

 

非结构化数据存储 ( TFS,NOSQL)

        在 一个大型的互联网应用当中,我们会发现并不是所有的数据都是结构化的,比如一些配置文件,一个用户对应的动态,以及一次交易的快照等信息,这些信息一般不 适合保存到RDBMS中, 它们更符合一种Key-value的 结构,另外还有一类数据,数据量非常的大,但是实时性要求不高,此时这些数据也需要通过另外的一种存储方式进行存储,另外一些静态文件,比如各个商品的图 片,商品描述等信息,这些信息因为比较大,放入RDBMS会引起读取性能问题,从而影响到其它 的数据读取性能,因此这些信息也需要和其它信息分开存储,而一般的互联网应用系统都会选择把这些信息保存到分布式文件系统中,因此淘宝目前也开发了自己的 分布式文件系统TFSTFS目 前限制了文件大小为2M, 适合于一些小于2M数 据的存放。

        随 着互联网的发展,业界从08年 下半年开始逐渐流行了一个概念就是NOSQL。我们都知道根据CAP理论,一致性,可用性和分区容错性3者 不能同时满足,最多只能同时满足两个,我们传统的关系数据采用了ACID的事务策略,而ACID的 事务策略更加讲究的是一种高一致性而降低了可用性的需求,但是互联网应用往往对可用性的要求要略高于一致性的需求,这个时候我们就需要避免采用数据的ACID事 务策略,转而采用BASE事 务策略,BASE事 务策略是基本可用性,事务软状态以及最终一致性的缩写,通过BASE事务策略,我们可以通过最终一致性来提 升系统的可用性,这也是目前很多NOSQL产品所采用的策略,包括facebook cassandra,apache hbase,google bigtable等,这些产品非常适合一些非结构化的数据,比如key-value形 式的数据存储,并且这些产品有个很好的优点就是水平伸缩性。目前淘宝也在研究和使用一些成熟的NOSQL产品。

      

监控、预警系统

       对于大型的系统 来说,唯一可靠的就是系统的各个部分是不可靠。

因 为一个大型的分布式系统中势必会涉及到各种各样的设备,比如网络交换机,普通PC机,各种型号的网卡,硬盘,内存等等,而这 些东东都在数量非常多的时候,出现错误的概率也会变大,因此我们需要时时刻刻监控系统的状态,而监控也有粒度的粗细之分,粒度粗一点的话,我们需要对整个 应用系统进行监控,比如目前的系统网络流量是多少,内存利用率是多少,IOCPU的 负载是多少,服务的访问压力是多少,服务的响应时间是多少等这一系列的监控,而细粒度一点的话,我们就需对比如应用中的某个功能,某个URL的 访问量是多,每个页面的PV是 多少,页面每天占用的带宽是多少,页面渲染时间是多少,静态资源比如图片每天占用的带宽是多少等等进行进一步细粒度的监控。因此一个监控系统就变得必不可 少了。

前 面说了一个监控系统的重要性,有了监控系统以后,更重要的是要和预警系统结合起来,比如当某个页面访问量增多的时候,系统能自动预警,某台ServerCPU和 内存占用率突然变大的时候,系统也能自动预警,当并发请求丢失严重的时候,系统也能自动预警等等,这样以来通过监控系统和预警系统的结合可以使得我们能快 速响应系统出现的问题,提高系统的稳定性和可用性。

配置统一管理

       一个大型的分布 式应用,一般都是有很多节点构成的,如果每次一个新的节点加入都要更改其它节点的配置,或者每次删除一个节点也要更改配置的话,这样不仅不利于系统的维护 和管理,同时也更加容易引入错误。另外很多时候集群中的很多系统的配置都是一样的,如果不进行统一的配置管理,就需要再所有的系统上维护一份配置,这样会 造成配置的管理维护很麻烦,而通过一个统一的配置管理可以使得这些问题得到很好的解决,当有新的节点加入或者删除的时候,配置管理系统可以通知各个节点更 新配置,从而达到所有节点的配置一致性,这样既方便也不会出错。

]]>
程序员特有的9个坏习惯 http://www.phpv.net/html/1712.html http://www.phpv.net/html/1712.html#comment Fri, 09 Jul 2010 14:07:37 +0000 http://www.phpv.net/html/1712.html    如果你是一个程序员, 或者你就读计算机相关专业, 那么你应该能理解下面这些诡异的小习惯是怎么养成的, 或者你本身就有着其中的某些习惯:

  0. 程序员数数会从0开始数起.

  例: 程序员吵 架的时候会说: “我数三下, 你再不闭嘴我就不客气了! 零! 一! 二!” 或者列清单的时候编号会从0.开始写.

  因: array[0]是数组的第一个元素.

  评: 这个习惯的养成是一个艰难的过程. 多少次的越界, 多少次的循环次数错误让我们深深的记住了从0开始.

  1. 程序员用肯定和否定 回答选择性的问题.

  例: 问 “您想喝咖啡还是喝茶?” 程序员答: “嗯.”

  因: 当条件或||有一个子句值为真, 则整个语句值为真.

  评: 这个习惯夸张了一点, 但这的确是程序员思维方式的通病, 用计算机的处理逻辑处理人类问题. 当然这样的回答显然是存在编程错误的, 因为对于这个问题他错误的返回了布尔型的值. 虽然高度怀疑有没有人关心这种回答的结果是怎样, 还是给出一个答案. 如果真的在程序的世界里, 服务员会优先考虑给你咖啡, 如果没有咖啡了, 才会端茶给你.

  2. 程序员普遍患有或曾经患有分号结尾综合症;

  例: 比如这几行;

   因: 大部分程序, 特别是多数程序员的启蒙编程语言C语言是用分号结尾语句的;

   评: 换行之前习惯用分号结尾, 这是程序员专属的坏习惯. 还记得编译报的各种诡异的错最后原因总是少了那一个小小的”;”吗? 这就是这个坏习惯的成因. 据说分号结尾是有典故的, 因为键盘上的分号正好在右手小拇指的位置, 比起句号之类有着得天独厚的地理优势. 当然也有不需要分号结尾的编程语言(比如Ruby还有Python), 刚用起来会因为没有分号结尾而格外纠结.

  3. 程序员对”语言”的概念和普通人有差.

  例: 问: “你都会哪些语言?” 普通人: “我会汉语和英语, 还会一点点法语.” 程序员: “我会C语言, C++ 和 Java, 还会一点点Ruby.”

  因: 程序员的世界里没有母语和外语, 只有编程语言.

  评: 说真的, 程序语言的语法学起来比外语更容易, 拿到一个用没学过的语言写的程序, 你多少可以看懂部分程序. 程序语言没有国界, 是各国程序员交流最好的桥梁.

   4. 程序员格格外外的厌恶括号/引号不配对的情形.

  例: 看到这样的内容 (举个简单的例子(我知道你懂的), 你能表示”我很淡定我不抓狂吗?

  因: 各种不配对问题会导致编译错误.

   评: 扫视代码, 对不配对的情况异常敏感, 瞥一眼就能发现哪里少了个右括号. 这种症状在使用那些带自动补全功能的开发环境时变得更为纠结.

   5. 程序员认为 千(k) == 1024.

  例: 程序员换算表: 1km == 1024m, 1kg == 1024g.

  因: 成因很曲折 计算机是二进制的世界 -> 1024是2的10次方 -> 英语里用kilo一词来表示 -> kilo翻译成中文是”千”, 比如千米, 千克.

  评: 也许一般人会认为500, 1000是很整的数, 但程序员会觉得512, 1024是很整的数. 不要奇怪, 如果128, 256, 512这种形式看着不够整, 帮你转换成二进制: 10000000, 100000000, 1000000000…

  6. 程序员惯用 == 来表示相等的意思.

  例: 见5.

  因: 在程序语言中, “=” 是赋值, “==” 才用来判断二者是否相等.

  评: 单等和双等的区别是程序入门必修课, 也是老师爱考的考点. 如果在C语言if语句的判定条件里写了个单等, 编译能通过, 结果却往往不对, 够一个新手查上一阵子的. 当然目前的语言大都考虑到这一点, 防止了这类的误写, 但是单等和双等的差异已经深入每个程序员的 内心.

  7. 程序员使用”//”表示”请无视这一行文字”.

   例: 餐厅中. 程序员A: “我吃鱼香肉丝盖饭, 你吃什么?”

  程序员B: “宫保鸡丁盖饭.”

  程序员A 在点菜单写上:

  鱼香肉丝盖饭 1

  宫保鸡丁盖饭 1

  程序员B: “我还是要牛肉面吧!”

  程序员A 更正点菜单:

  鱼香肉丝盖饭 1

  // 宫保鸡丁盖饭 1

  牛肉面 1

   因: 程序中用”//”为代码加上注释, 程序运行时会无视掉”//”开头的代码行.

  评: 如果和一伙程序员在一起时被冷落了, 可以抱怨一句”喂喂喂我是被注释掉了吗?” 相信一向以幽默感丰富又有爱心著称的程序员们会关注你的.

  8. 程序员有 中文标点恐惧症.

  例: 如果你注意到了, 这篇文章自始至终都在使用英文标点, 这就是最好的例子.

  因: 程序中的全部符号都严格需要是英文半角标点.

  评: 这个坏习惯是有中国特色的, 中国程序员特 有的. 任何一名优秀的我国程序员都应该可以作到区别中文标点和英文标点. 比如, 和,还有 ’和 ‘. 真的, 当年初学编程的时候, 诸如 “error C2018: unknown character ’0xa3′” 的错误看得还不够多吗!

  就是这样一群人, 如果你慢吞吞的用电脑他们会急躁的抢过键盘熟练的使用各种快捷键, 他们会对着小孩子讲计算机的三原色是红绿蓝而不是红黄蓝, 他们描述大小距离更偏向于以像素作单位, 陪女朋友看电影看到电影院座位上稀稀落落的人就想做磁盘碎片整理…抱怨归抱怨, 这不也正是他们的可爱之处吗!

]]>
怎样把自己培养成为一个优秀的程序员 http://www.phpv.net/html/1711.html http://www.phpv.net/html/1711.html#comment Fri, 07 May 2010 13:53:26 +0000 http://www.phpv.net/html/1711.html  

态度篇

 1. 做实事:不要抱怨,发牢骚,指责他人,找出问题所在,想办法解决。对问题和错误,要勇于承担。

 2. 欲速则不达:用小聪明、权宜之计解决问题,求快而不顾代码质量,会给项目留下要命的死角。

 3. 对事不对人:就事论事,明智、真诚、虚心地讨论问题,提出创新方案。

 4. 排除万难,奋勇前进:勇气往往是克服困难的唯一方法。

 

学习篇

 5. 跟踪变化:新技术层出不穷并不可怕。坚持学习新技术,读书,读技术杂志,参加技术活动,与人交流。要多理解新词背后的所以然,把握技术大趋势,将新技术用 于产品开发要谨慎。

 6. 对团队投资:打造学习型团队,不断提高兄弟们的平均水平。

 7. 懂得丢弃:老的套路和技术,该丢,就得丢。不要固步自封。

 8. 打破砂锅问到底:不断追问,真正搞懂问题的本质。为什么?应该成为你的口头禅。

 9. 把握开发节奏:控制好时间,养成好习惯,不要加班。

 

开发流程篇

 10. 让客户做决定:让用户在现场,倾听他们的声音,对业务最重要的决策应该让他们说了算。

 11. 让设计指导而不是操纵开发:设计是前进的地图,它指引的是方向,而不是目的本身。设计的详略程度应该适当。

 12. 合理地使用技术:根据需要而不是其他因素选择技术。对各种技术方案进行严格地追问,真诚面对各种问题。

 13. 让应用随时都可以发布:通过善用持续集成和版本管理,你应该随时都能够编译、运行甚至部署应用。

 14. 提早集成,频繁集成:集成有风险,要尽早尽量多地集成。

 15. 提早实现自动化部署

 16. 使用演示获得频繁反馈

 17. 使用短迭代,增量发布

 18. 固定价格就意味着背叛承诺:估算应该基于实际的工作不断变化。

 

用户篇

 19. 守护天使:自动化单元测试是你的守护天使。

 20. 先用它再实现它:测试驱动开发其实是一种设计工具。

 21. 不同环境,就有不同问题:要重视多平台问题。

 22. 自动验收测试

 23. 度量真实的进度:在工作量估算上,不要自欺欺人。

 24. 倾听用户的声音:每一声抱怨都隐藏着宝贵的真理。

 

编程篇

 25. 代码要清晰地表达意图:代码是给人读的,不要耍小聪明。

 26. 用代码沟通:注释的艺术。

 27. 动态地进行取舍:记住,没有最佳解决方案。各种目标不可能面面俱到,关注对用户重要的需求。

 28. 增量式编程:写一点代码就构建、测试、重构、休息。让代码干净利落。

 29. 尽量简单:宁简勿繁。如果没有充足的理由,就不要使用什么模式、原则和特别的技术。

 30. 编写内聚的代码:类和组件应该足够小,任务单一。

 31. 告知,不要询问:多用消息传递,少用函数调用。

 32. 根据契约进行替换:委托往往优于继承。

 

调试篇

 33. 记录问题解决日志:不要在同一地方摔倒两次。错误是最宝贵的财富。

 34. 警告就是错误:忽视编译器的警告可能铸成大错。

 35. 对问题各个击破:分而治之是计算机科学中最重要的思想之一。但是,要从设计和原型阶段就考虑各部分应该能够很好地分离。

 36. 报告所有的异常

 37. 提供有用的错误信息:稍微多花一点心思,出错的时候,将给你带来极大便利。

 

团队协作篇

 38. 定期安排会面时间:常开会,开短会。

 39. 架构师必须写代码:不写代码的架构师不是好架构师。好的设计都来自实际编程。编程可以带来深入的理解。

 40. 实行代码集体所有制:让开发人员在系统不同区域中不同的模块和任务之间轮岗。

 41. 成为指导者:教学相长。分享能提高团队的总体能力。

 42. 让大家自己想办法:指引方向,而不是直接提供解决方案。让每个人都有机会在干中学习。

 43. 准备好后再共享代码:不要提交无法编译或者没有通过单元测试的代码!

 44. 做代码复查:复查对提高代码质量、减少错误极为重要。

 45. 及时通报进展与问题:主动通报,不要让别人来问你。

]]>
大型高性能网站的十项规则 http://www.phpv.net/html/1710.html http://www.phpv.net/html/1710.html#comment Mon, 19 Apr 2010 12:34:14 +0000 http://www.phpv.net/html/1710.html 在我们公司ChinaNetCloud,见 过多种不同类型的网站和系统,有好也有差。其中有些系统拥有良好的服务器/网络架构,并且进行了合理的调整和监控 ;然而一般的系统都会有安全和性能上的 问题,不能良好运行,也无法变得更流行。

在中国, 开源的LAMP栈是最流行的网络架构,它使用PHP开发,运行在Apache服务器上,以MySQL作为数据库,所有这些都运行在Linux上。它是个可靠的平台,运行良好,是现在全球最 流行的Internet系统架构。然而,我们很难对其规模进行正确的扩展并保持安全性,因为每个应用层都有其自身的问题、缺陷和最佳实践。我们的工作就是 帮助企业用最低的操作成本来创建并运行高性能的、可伸缩的、安全的系统,因此对于这类问题我们有很丰富的经验。

当前的实际情况是,很多网站都是由开发人员 快速而廉价地创建,通常没有任何IT人员或者经理,只是由程序员来管理系统。造成的结果是,虽然花费很低的成本网站就可以开始运行,但是当拥有大量用户、 需要扩展规模的时候,通常就会面临真正的问题。毕竟,中国拥有三亿八千万的Internet用户,如果其中的0.01%访问这个站点,就很容易引发25 万~50万的页面访问量。这些问题在各个级别上都会产生,下面总结的规则是对最一般的问题进行概述,并且说明为什么这些规则如此重要,以及最好采用什么方 法来修正它们。遵循这些建议的站点会提高它的可伸缩性、安全性以及操作上的稳定性。


使用合适的会话管理
第 一个想到的扩展系统的方法就是添加更多硬件。例如,使用两台服务器而不是一台。这听着合理,但会产生潜在问题:会话管理。这对Java程序来说是很严重的问题,在PHP中也会产生可延展性问题, 对于数据库的负载尤其如此。

会话被定义为单独的最终用户登录或者连接一 段时间,其中通常会包含多个TCP/IP的HTTP连接、几个Web页面,通常还包括几十个甚至上百个页面元素,如框架、菜单、Ajax更新等。所有这些 HTTP请求都需要知道用户是谁,才能满足安全的要求,并向用户传送适当的内容,因为这些都是会话的组成部分。通常每个会话都会包括相互关联的会话数据, 如用户名、用户ID、历史、购物车、统计资料等等信息。

问题在 于,在有两台Web服务器和多个 HTTP连接的情况下,用户流量会在两台服务器之间分配和移动,服务器很难知道用户是谁,并对所有数据进行跟踪,因为每个页面或者页面的组成部分都可能来 自不同的服务器。在PHP中,通常是这样解决的,在第一次连接或登录的时候就创建一个会话ID并将其放在Cookie中,然后这个Cookie会和每个 HTTP请求一起发送。

这样做带来一个问题,接下来每段PHP脚本 都需要基于ID来查找会话数据。由于PHP无法在执行过程之间保持状态(这与Java不同),这个会话数据需要存储在某个地方,通常是在数据库中。但是, 如果复杂的页面需要在每个页面载入过程中对其进行十次查找(这是经常要做的),那就意味着每个页面都要执行10次SQL查询,这会导致数据库上很大的负 载。

在前面所举的中国 Internet用户 0.01%的例子中,可能很容易在每秒内仅仅为了管理会话就生成上百个查询。解决方法是一直使用位于Cookie中的会话ID,并且使用像 Memcached之类的服务来缓存会话数据以获得高性能。

还要注 意其中存在安全性的问题,因为黑客可 以伪造另一个用户的会话ID,这是很容易找到或看到的,特别是在公用的Wi-Fi中。解决方法是对会话ID进行恰当的加密或者签名,并将其与时间区间、 IP地址以及其他关键信息 像浏览器或者其他细节相绑定。在Internet上有很多不错的关于良好的会话管理的例子,你可以根据需要找到最适合的。

 

总是要考虑安全性
尽管编写像防止SQL注入和登录安全之类的 代码涉及很多安全问题,但不幸的是,几乎没有人考虑过安全性,而那些考虑到的人也没有对其进行很好地理解。而本文要关注的是操作性的系统安全。对于这类安 全,我们的焦点集中在三个安全领域:防火墙、运行的用户以及文件访问权限。

除了配置专门的硬件防火墙(像Cisco的 ASA)之外,所有服务器都还应该运行像Iptables之类的防火墙,它会保护服务器免受其他威胁和攻击。这些威胁和攻击可能来自公共的 Internet、其他服务器或本地服务器,也包括使用VPN或者SSH通道的开发和操作人员。我们仅对指定的IP开放确实需要的端口。Iptables 可能会很复杂,但是有很多不错的模板,我们通常可以使用它们来帮助客户创建Iptables。例如,默认的RedHat或者CentOS防火墙的配置说明 只有10行,显然并不实用。我们最佳实践的Iptables配置大概有5页,这其中包含了Linux所能提供的最高级的安全防范。

所有公用的服务,都应该运行在专门的用户 下,如Apache。切记永远都不要使用Root用户运行,因为这会让任何闯入到Apache的用户接管整个服务器。如果Apache只是运行在 Apache用户下或者运行在Nobody下,那么闯入Apache就不是一件容易的事情了。

Web服务器运行或者服务的文件 (像.php和.html文件)对于Web服务器的用户应该是不可写的。这意味着Apache或者Nginx用户不应该拥有Web目录的写权限。有很多方 法都可以做到这一点,而最简单的就是将这些文件为其他用户所有,然后让Apache/Nginx等用户归属于能够使用640权限读取文件的组中。这会防范 几乎所有的黑客和针对页面的攻击。

此 外,永远不要使用Ftp来上传文件,特别 是在公用的Wi-Fi环境中,因为在其中黑客很容易盗取用户名和密码。取而代之的是使用Sftp会更加安全。另外,每个雇员都应该拥有自己的用户ID和随 机密码。

 

使用标准的路径和安装配置

一个令人讨厌的部署问题是,开发者很少考虑 他们的软件会被部署到生产Web服务器的什么位置,以及如何部署。我们看到过许多大型的系统将它们的PHP代码部署在/home/xiaofeng或者 /web/code路径下。事实上,这两个路径都是非常不标准的,并且会带来操作和安全性的问题。当这些系统从开发环境转移到测试环境再到生产环境中时, 因为每个安装配置都是非标准的,所以经常会出现问题,这时就需要开发者调整才能够正常工作。

你应该总是使用标准的安装包和二进制文件来 安装像Apache之类的服务器。不要从源代码编译或者安装Tarball,因为这会导致长期稳定性和管理上的问题,另外在服务器上安装多个不同的版本也 会造成混淆。

Web 站点应该总是在指定的平台和 Linux发布的标准路径下进行测试和部署 ,像 RedHat 或者CentOS下的/var/www/html路径。这有助于对系统进行有效的权限管 理、备份、配置、监控以及其他操作。

Web 服务器的日志应该存放在/var /logs或者/var/logs/app_name下,而不应该位于主代码区域。这样做的原因不仅仅是因为这些标准的路径很重要,更应该关注的是,恰当 地配置服务器会将/var配置为分离的文件系统。如果应用程序突然写入了大量日志并占用所有磁盘空间,由于我们做了以上的配置就不会导致系统崩溃,或者其 他严重的问题。如果日志位于其他位置,就可能会产生问题。

总是使用日志

在Web系统中做多少日志都不为过。所有系 统都应该将重要的数据写入到日志中,不管是它们自己的日志还是系统的Syslog。Cron的Job以及其他Shell脚本或者C语言的程序,对日志都有 相应标准以及简单的函数。在Shell脚本中,只需要使用 Logger命令就可以实现日志的写入。在脚本启动/停止、重要的脚本执行以及实时数据产生的 情况下都要执行写入日志操作。这样出现问题的时候,查看主要的系统日志就可以很容易地看到发生了什么。

大型系统经常会使用专门的工具如 Local5来记录日志,并配置Syslog或者Syslog-ng来将其存放在单独的文件中,这样会更容易使用。需要注意的是,Syslog工具和 Logger(以及任何Syslog调用)默认优先使用user.notice,如有必要,你可以对其进行调整。

一个好的系统会对程序进行配置,用来打开或 者关闭日志,并可以选择在每模块或者功能的级别上应用不同级别的日志。这使得我们可以记录非常详细和强大的日志,用来分析和调试在生产操作中所发生的问 题。


大型网站的十项规则

大型高性能网站的十项规则

 

使用良好的数据库设计和SQL

在任何系统中,数据库通常是最大的性能瓶 颈。而影响数据库性能的最大两个问题是数据库设计和SQL代码质量。很多系统都拥有良好的或者至少是可用的数据库设计,但由于没有经过适当的性能测 试,SQL代码质量通常都会很差。这样的SQL代码在开发环境中可能运行很快,因为其中只有小数据集和最小的负载。但是当成千上万的用户同时读取数据库中 上百万条记录的时候,它就很可能会崩溃。

不幸的 是,这些问题一开始并不明显,直到系 统增大、突然开始崩溃的时候才会显现出来。在增大的过程中,数据库系统看起来运行得很快(因为数据都位于内存中,而且很少有并发的查询),并且对用户的响 应也很快,但实际上它的内部运行效率很低。这并不重要,我们关注的是在系统增大并遇到性能问题之前找到这些问题并加以解决。

关于这个问题有很多不错的书和站点进行了解 析,其中的关键工具包括慢查询日志、INNODB状态系统,以及描述当前性能的MySQL统计信息。我们见到过很多系统每秒会读取500,000条数据, 这是出现SQL问题的明显预兆,但公司往往对其一无所知直到服务器开始崩溃。

MySQL系统应该对所有数据使用 INNODB存储引擎,因为INNODB与之前的MyISAM相比,运行得更快、更稳定,并且管理性能和备份工作也更加容易和快捷。在主配置文件 中,INNODB应该被设置为默认的数据库引擎,并且系统应该不时地进行检查,看是否意外创建了MyISAM的表。

总要拥有良好的DB配置和备份

很多公司都没有良好的备份机制,也不知道如 何恰当地完成这项工作。MySQL的Dump是不够的,因为最好的备份方法是使用LVM快照和INNODB对系统进行热备份,从而得到超快的速度和超高的 可靠性。

另外,在将所有备份文件从服务器上转移出来 之前要进行压缩和加密。另外还要确保拥有设计合理的MySQL配置。MySQL默认安装使用说明中只有5~10行关于配置的说明,这根本不适合开发使用。 而我们提供给客户的最佳实践文档足足有10页那么长。文档中大约有100种有用的关于安全、性能和稳定性问题的设定,包括防止数据败坏,其中很多设定都是 非常重要的。

使用读/写数据库分离

随着系统变得越来越庞大,特别是当它们拥有 很差的SQL时,一台数据库服务器通常不足以处理负载。但是多个数据库意味着重复,除非你对数据进行了分离。更一般地,这意味着建立主/从副本系统,其中 程序会对主库编写所有的Update、Insert和Delete变更语句,而所有Select的数据都读取自从数据库(或者多个从数据库)。

尽管概念上很简单,但是想要合理、精确地实 现并不容易,这可能需要大量的代码工作。因此,即便在开始时使用同一台数据库服务器,也要尽早计划在PHP中使用分离的DB连接来进行读写操作。如果正确 地完成该项工作,那么系统就可以扩展到2台、3台甚至12台服务器,并具备高可用性和稳定性。

使用类似Memcached之类的数据库缓存

即便有了好的数据库设计、SQL和读写分 离,大型的系统仍然需要更快的性能,特别是对会话状态、好友列表以及BBS文字之类的东西。为了达到这个目的,我们可以使用像MemCached之类的数 据缓存,它是一个高性能的简单数据缓存,已经被所有最大型的站点使用。但是要小心的是,不要100%依赖于一台Memcache服务器来提高性能,因为如 果那台服务器崩溃了,就会破坏整个系统的性能。在这种情况下,应该使用2~3台Memcache服务器形成簇集架构,并且有选择地包含一个缓存准备过程, 如果缓存服务器重启,需要重新载入数据,它能够快速地载入缓存。


构建测试和开发环境

很多公司只有开发者的桌面系统和他们的生产 服务器。当系统变得越来越大、越来越复杂时,测试和管理代码就会导致严重的问题。最佳的实践是拥有两个测试系统,一个用于开发者的代码和功能的整合测试, 另一个要与生产环境完全一致,从而更容易向生产环境平滑地过渡。幸运的是,现在使用云计算(或者私有云)可以轻松达到这一点。一个5~10台服务器的生产 环境,可以很容易地在办公室或者IDC中使用一台服务器来复制,从而用于测试,而这台服务器我们可以用于多个客户的项目。


使 用版本控制

最后,要对一切使用版本控制,包括测试和生 产环境的部署。很多开发者都使用SVN或者类似的方法。在理想状态下,这些方法可以被用于所有代码、脚本、HTML、图片、配置、文档和测试。版本控制应 该是代码转移到测试环境的必经之路,而不是简单地复制或者使用tar文件,因为这二者都是不可靠的。开发者应该将所有一切都签入,打上标签,然后将它们签 出到测试系统。如果所有都没问题,那么它们会将该版本签出到生产环境。

总结

不管 是在开发还是在运营过程中,创建可靠的 高性能Web系统都有很多应该注意的事项。本文试图从可操作性和可靠性的角度讨论最重要的几点。当你构建和管理站点的时候,请不要忘了这些重要的问题。遵 循这些规则会有助于确保系统长久、良好地运行。

作者简介:

Steve Mushero,ChinaNetCloud 公司联合创始人、CEO兼CTO,拥有全球20多年的技术管理经验。曾担任土豆网、Intermind和 Advanced Management Systems等多家企业CTO

译者简介:

侯伯薇,生于凤城,学在春城,做过国内和对 日项目,现在大连某保险公司工作。乐于钻研技术,同时注重业务知识,勤于思考,愿意与人交流和分享。

]]>
Save Mysql 拯救MySQL! http://www.phpv.net/html/1709.html http://www.phpv.net/html/1709.html#comment Thu, 28 Jan 2010 19:22:41 +0000 http://www.phpv.net/html/1709.html 为阻止Oracle收购Sun,在欧盟似乎已决定批准这项70亿美元的收购案之后,MySQL数据库创始人开始寻求中国和俄罗斯帮助。

在一封给中国 MySQL用户的邮件中写道 “亲爱的拯救MySQL的中国签名支持者,欧盟可能无法拯救MySQL, 中国和俄罗斯可能是拯救MySQL的希望之所在。中国拥有强大、独立以及自信的反垄断主管机关,因此,我本人在此请求您的帮助。对于您的签名,我们深表感谢。如果可以的话,我们需要您的进一步帮助……”


下面是具体的参与方法
点击这个链接并且填写自己的信息提交即可
http://helpmysql.org/cn/petition

 

 

FAQ:

----------------------------------

我们还有多少时间?

时间紧迫,但您仍然可以帮上忙。如果已经太晚(不论好还是坏),我们将立即停用请愿书,并在本网站每一页面上公布结果。

在我们通知您之前,请不要相信已经结束的任何说法。这些说法可能是试图破坏本次活动的某些人散布的。

本次活动网站于2009年12月28日启动。我们越早赢得大量支持者越好。关键的日期是2010年1月4日。那一天(明年的第一个工作日)我们计划 正式向监管者、其他政府机构、议会和记者提交请愿书。之后,我们将继续收集支持,直到程序结束,而且表示持续的支持也很重要。我们可能在2010年1月或 者可能2月份进行请愿书的多次提交。

活动为何是全球性的?

甲骨文需要在全球所有主要市场取得审批。因此,我们将在世界不同地区提交请愿书。

一般而言,监管者会把数据库市场的地理范围界定为全球性的。只要想想MySQL,显然就明白了:人们可以在全球各地下载或获取MySQL,并在各地使用它。因此,您的签名支持甚至会到达您的国家以外的世界其他地方的监管者面前。

我们需要多少签名才能成功?

没有特定限值。这不是事先就知道100,000签名者就能启动政治程序(根据某些法律)的请愿。这是有关MySQL用户的关注和希望达成令MySQL今后独立于甲骨文的真正解决方案(或者至少依赖程度更小)的表达。

这不仅仅是关于绝对数字的问题,而是如何能尽快签字,而且签字是否始终以较高速度增长的问题。您越快签字,越快让其他人知道就越好。

如何处理我的数据?我能相信你吗?

我们知道如您支持本次活动那么您就信任我们,我们将证明我们是值得信赖的。

我们有明确的资料保密声明,请见请愿书页,说明您的数据将只能用于提交请愿书给监管者、其他政府机关、议会和重要、声誉良好的新闻机构记者。如我们向您发送了有关本次活动的信息,您可点击取消链接,这样您将不会收到我们的任何其他电子邮件。

你们如何向监管者、议会和新闻机构提交请愿书?谁会看到请愿书?

有时候请愿书是以打印文件的方式提交,以表明其数量庞大。但是,为了环保考虑,我们可能选择以电子格式提交大多数的请愿书。监管者、议会和重要、著 名的新闻媒体会收到它们,其中附带了不得以任何与本次活动无关的方式使用数据的明确要求,并且,新闻媒体必须签署接收上述要求的文件,并将不被允许从请愿 书中引用任何姓名和其他唯一或范围较窄的识别数据,除非他们从签字人处收到书面明示许可(包括电子邮件方式),允许在报道中提及。

处理本次案件的监管者将把请愿书放入甲骨文/太阳微电子案卷中。对于查看该卷宗有特殊的规定。例如,欧盟甲骨文律师当然会有权看到请愿书。因此,有必要让请愿书具有真正的震撼效果。

我们不要求请愿书中提供任何特殊的敏感信息,如您决定填写其中内容的,我们也不希望您在公共或私人评论字段中提供任何敏感信息。

如何能最有效地帮助请愿成功?

显然最好的第一步就是您在请愿书上签字。

帮助倡议 部分,您可找到进一步说明和材料,以及在网站上设置的标语。

我们相信您知道其他专业的MySQL用户,并且有办法鼓励他们在请愿书上签字。

我需要现在亲自写信给欧盟吗?或者写信给本国的反垄断机构或议会,例如欧洲议会?

我们认为本次活动将产生大量的回复,当然对于各个机构而言处理完整的请愿书更加容易一些。我们尽可能通过互联网进行号召,包括通过电子邮件,除非通过直接联系能够取得明显不同的良好效果。

如果您可以代表10名或以上员工规模的公司发言,并且MySQL对贵公司很重要,或者如果您可以代表100名或以上员工规模的公司发言,而且贵公司 把MySQL用于重大业务目的,请联系贵国反垄断机构,并表达您关于甲骨文收购MySQL计划的关注。如您需要任何帮助,请使用联系表向我们提问。

]]>
通过分区(Partition)提升MySQL性能 http://www.phpv.net/html/1708.html http://www.phpv.net/html/1708.html#comment Fri, 27 Nov 2009 10:49:16 +0000 抽烟的蚊子 http://www.phpv.net/html/1708.html
数据库分区是一种物理数据库设计技术,DBA和数据库建模人员对其相当熟悉。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。

分区主要有两种形式://这里一定要注意行和列的概念(row是行,column是列)

1. 水平分区(Horizontal Partitioning)这种形式分区是对表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。

举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录。(朋奕注:这里具体使用的分区方式我们后面再说,可以先说一点,一定要通过某个属性列来分割,譬如这里使用的列就是年份)

2. 垂直分区(Vertical Partitioning) 这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列 被划分到特定的分区,每个分区都包含了其中的列所对应的行。

举个简单例子:一个包含了大text和BLOB列的表,这些text和BLOB列又不经常被访问,这时候就要把这些不经常使用的text和BLOB了划分到另一个分区,在保证它们数据相关性的同时还能提高访问速度。

在数据库供应商开始在他们的数据库引擎中建立分区(主要是水平分区)时,DBA和建模者必须设计好表的物理分区结构,不要保存冗余的数据(不同表中同时都包含父表中的数据)或相互联结成一个逻辑父对象(通常是视图)。这种做法会使水平分区的大部分功能失效,有时候也会对垂直分区产生影响。

在MySQL 5.1中进行分区

MySQL5.1中最激动人心的新特性应该就是对水平分区的支持了。这对MySQL的使用者来说确实是个好消息,而且她已经支持分区大部分模式:

Range(范围) – 这种模式允许DBA将数据划分不同范围。例如DBA可以将一个表通过年份划分成三个分区,80年代(1980’s)的数据,90年代(1990’s)的数据以及任何在2000年(包括2000年)后的数据。

Hash(哈希) – 这中模式允许DBA通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区,。例如DBA可以建立一个对表主键进行分区的表。

Key(键值) – 上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。

List(预定义列表) – 这种模式允许系统通过DBA定义的列表的值所对应的行数据进行分割。例如:DBA建立了一个横跨三个分区的表,分别根据2004年2005年和2006年值所对应的数据。

Composite(复合模式) - 很神秘吧,哈哈,其实是以上模式的组合使用而已,就不解释了。举例:在初始化已经进行了Range范围分区的表上,我们可以对其中一个分区再进行hash哈希分区。

分区带来的好处太多太多了,有多少?俺也不知道,自己猜去吧,要是觉得没有多少就别用,反正俺也不求你用。不过在这里俺强调两点好处:

性能的提升(Increased performance) - 在扫描操作中,如果MySQL的优化器知道哪个分区中才包含特定查询中需要的数据,它就能直接去扫描那些分区的数据,而不用浪费很多时间扫描不需要的地方了。需要举个例子?好啊,百万行的表划分为10个分区,每个分区就包含十万行数据,那么查询分区需要的时间仅仅是全表扫描的十分之一了,很明显的对比。同时对十万行的表建立索引的速度也会比百万行的快得多得多。如果你能把这些分区建立在不同的磁盘上,这时候的I/O读写速度就“不堪设想”(没用错词,真的太快了,理论上100倍的速度提升啊,这是多么快的响应速度啊,所以有点不堪设想了)了。

对数据管理的简化(Simplified data management) - 分区技术可以让DBA对数据的管理能力提升。通过优良的分区,DBA可以简化特定数据操作的执行方式。例如:DBA在对某些分区的内容进行删除的同时能保证余下的分区的数据完整性(这是跟对表的数据删除这种大动作做比较的)。

此外分区是由MySQL系统直接管理的,DBA不需要手工的去划分和维护。例如:这个例如没意思,不讲了,如果你是DBA,只要你划分了分区,以后你就不用管了就是了。

站在性能设计的观点上,俺们对以上的内容也是相当感兴趣滴。通过使用分区和对不同的SQL操作的匹配设计,数据库的性能一定能获得巨大提升。下面咱们一起用用这个MySQL 5.1的新功能看看。

下面所有的测试都在Dell Optiplex box with a Pentium 4 3.00GHz processor, 1GB of RAM机器上(炫耀啊……),Fedora Core 4和MySQL 5.1.6 alpha上运行通过。

如何进行实际分区

看看分区的实际效果吧。我们建立几个同样的MyISAM引擎的表,包含日期敏感的数据,但只对其中一个分区。分区的表(表名为part_tab)我们采用Range范围分区模式,通过年份进行分区:



   1. mysql> CREATE TABLE part_tab
   2. -> ( c1 int default NULL,
   3. -> c2 varchar(30) default NULL,
   4. -> c3 date default NULL
   5. ->
   6. -> ) engine=myisam
   7. -> PARTITION BY RANGE (year(c3)) (PARTITION p0 VALUES LESS THAN (1995),
   8. -> PARTITION p1 VALUES LESS THAN (1996) , PARTITION p2 VALUES LESS THAN (1997) ,
   9. -> PARTITION p3 VALUES LESS THAN (1998) , PARTITION p4 VALUES LESS THAN (1999) ,
  10. -> PARTITION p5 VALUES LESS THAN (2000) , PARTITION p6 VALUES LESS THAN (2001) ,
  11. -> PARTITION p7 VALUES LESS THAN (2002) , PARTITION p8 VALUES LESS THAN (2003) ,
  12. -> PARTITION p9 VALUES LESS THAN (2004) , PARTITION p10 VALUES LESS THAN (2010),
  13. -> PARTITION p11 VALUES LESS THAN MAXVALUE );
  14. Query OK, 0 rows affected (0.00 sec)

注意到了这里的最后一行吗?这里把不属于前面年度划分的年份范围都包含了,这样才能保证数据不会出错,大家以后要记住啊,不然数据库无缘无故出错你就爽了。那下面我们建立没有分区的表(表名为no_part_tab):


   1. mysql> create table no_part_tab
   2. -> (c1 int(11) default NULL,
   3. -> c2 varchar(30) default NULL,
   4. -> c3 date default NULL) engine=myisam;
   5. Query OK, 0 rows affected (0.02 sec)

下面咱写一个存储过程(感谢Peter Gulutzan给的代码,如果大家需要Peter Gulutzan的存储过程教程的中文翻译也可以跟我要,chenpengyi◎gmail.com),它能向咱刚才建立的已分区的表中平均的向每个分区插入共8百万条不同的数据。填满后,咱就给没分区的克隆表中插入相同的数据:


   1. mysql> delimiter //
   2. mysql> CREATE PROCEDURE load_part_tab()
   3. -> begin
   4. -> declare v int default 0;
   5. -> while v < 8000000
   6. -> do
   7. -> insert into part_tab
   8. -> values (v,’testing partitions’,adddate(’1995-01-01′,(rand(v)*36520) mod 3652));
   9. -> set v = v + 1;
  10. -> end while;
  11. -> end
  12. -> //
  13. Query OK, 0 rows affected (0.00 sec)
  14. mysql> delimiter ;
  15. mysql> call load_part_tab();
  16. Query OK, 1 row affected (8 min 17.75 sec)
  17. mysql> insert into no_part_tab select * from part_tab;
  18. Query OK, 8000000 rows affected (51.59 sec)
  19. Records: 8000000 Duplicates: 0 Warnings: 0

表都准备好了。咱开始对这两表中的数据进行简单的范围查询吧。先分区了的,后没分区的,跟着有执行过程解析(MySQL Explain命令解析器),可以看到MySQL做了什么:



   1. mysql> select count(*) from no_part_tab where
   2. -> c3 > date ‘1995-01-01′ and c3 < date ‘1995-12-31′;
   3. +———-+
   4. | count(*) |
   5. +———-+
   6. | 795181 |
   7. +———-+
   8. 1 row in set (38.30 sec)
   9. mysql> select count(*) from part_tab where
  10. -> c3 > date ‘1995-01-01′ and c3 < date ‘1995-12-31′;
  11. +———-+
  12. | count(*) |
  13. +———-+
  14. | 795181 |
  15. +———-+
  16. 1 row in set (3.88 sec)
  17. mysql> explain select count(*) from no_part_tab where
  18. -> c3 > date ‘1995-01-01′ and c3 < date ‘1995-12-31′\G
  19. *************************** 1. row ***************************
  20. id: 1
  21. select_type: SIMPLE
  22. table: no_part_tab
  23. type: ALL
  24. possible_keys: NULL
  25. key: NULL
  26. key_len: NULL
  27. ref: NULL
  28. rows: 8000000
  29. Extra: Using where
  30. 1 row in set (0.00 sec)
  31. mysql> explain partitions select count(*) from part_tab where
  32. -> c3 > date ‘1995-01-01′ and c3 < date ‘1995-12-31′\G
  33. *************************** 1. row ***************************
  34. id: 1
  35. select_type: SIMPLE
  36. table: part_tab
  37. partitions: p1
  38. type: ALL
  39. possible_keys: NULL
  40. key: NULL
  41. key_len: NULL
  42. ref: NULL
  43. rows: 798458
  44. Extra: Using where
  45. 1 row in set (0.00 sec)

从上面结果可以容易看出,设计恰当表分区能比非分区的减少90%的响应时间。而命令解析Explain程序也告诉我们在对已分区的表的查询过程中仅对第一个分区进行了扫描,其他都跳过了。
哔厉吧拉,说阿说……反正就是这个分区功能对DBA很有用拉,特别对VLDB和需要快速反应的系统。

对Vertical Partitioning的一些看法

虽然MySQL 5.1自动实现了水平分区,但在设计数据库的时候不要轻视垂直分区。虽然要手工去实现垂直分区,但在特定场合下你会收益不少的。例如在前面建立的表中,VARCHAR字段是你平常很少引用的,那么对它进行垂直分区会不会提升速度呢?咱们看看测试结果:



   1. mysql> desc part_tab;
   2. +——-+————-+——+—–+———+——-+
   3. | Field | Type | Null | Key | Default | Extra |
   4. +——-+————-+——+—–+———+——-+
   5. | c1 | int(11) | YES | | NULL | |
   6. | c2 | varchar(30) | YES | | NULL | |
   7. | c3 | date | YES | | NULL | |
   8. +——-+————-+——+—–+———+——-+
   9. 3 rows in set (0.03 sec)
  10. mysql> alter table part_tab drop column c2;
  11. Query OK, 8000000 rows affected (42.20 sec)
  12. Records: 8000000 Duplicates: 0 Warnings: 0
  13. mysql> desc part_tab;
  14. +——-+———+——+—–+———+——-+
  15. | Field | Type | Null | Key | Default | Extra |
  16. +——-+———+——+—–+———+——-+
  17. | c1 | int(11) | YES | | NULL | |
  18. | c3 | date | YES | | NULL | |
  19. +——-+———+——+—–+———+——-+
  20. 2 rows in set (0.00 sec)
  21. mysql> select count(*) from part_tab where
  22. -> c3 > date ‘1995-01-01′ and c3 < date ‘1995-12-31′;
  23. +———-+
  24. | count(*) |
  25. +———-+
  26. | 795181 |
  27. +———-+
  28. 1 row in set (0.34 sec)

在设计上去掉了VARCHAR字段后,不止是你,俺也发现查询响应速度上获得了另一个90%的时间节省。所以大家在设计表的时候,一定要考虑,表中的字段是否真正关联,又是否在你的查询中有用?

补充说明

这么简单的文章肯定不能说全MySQL 5.1 分区机制的所有好处和要点(虽然对自己写文章水平很有信心),下面就说几个感兴趣的:

◆支持所有存储引擎(MyISAM, Archive, InnoDB, 等等)

◆ 对分区的表支持索引,包括本地索引local indexes,对其进行的是一对一的视图镜像,假设一个表有十个分区,那么其本地索引也包含十个分区。

◆关于分区的元数据Metadata的表可以在INFORMATION_SCHEMA数据库中找到,表名为PARTITIONS。

◆All SHOW 命令支持返回分区表以及元数据的索引。

◆对其操作的命令和实现的维护功能有(比对全表的操作还多):



   1. o ADD PARTITION
   2. o DROP PARTITION
   3. o COALESCE PARTITION
   4. o REORGANIZE PARTITION
   5. o ANALYZE PARTITION
   6. o CHECK PARTITION
   7. o OPTIMIZE PARTITION
   8. o REBUILD PARTITION
   9. o REPAIR PARTITION

站在性能主导的观点上来说,MySQL 5.1的分区功能能给数据性能带来巨大的提升的同时减轻DBA的管理负担,如果分区合理的话。如果需要更多的资料可以去 http://dev.mysql.com/doc/refman/5.1/en/partitioning.html或 http://forums.mysql.com/list.php?106获得相关资料。

]]>
PHP里模拟$_PUT http://www.phpv.net/html/1705.html http://www.phpv.net/html/1705.html#comment Tue, 10 Nov 2009 10:30:02 +0000 抽烟的蚊子 http://www.phpv.net/html/1705.html
 $_PUT = array();
if ('PUT' == $_SERVER['REQUEST_METHOD']) {
     parse_str(file_get_contents('php://input'), $_PUT);
 }

通过php://input得到的数据是raw data,所以需要用parse_str解析一下。

不过需要说明的是,当表单是enctype="multipart/form-data"类型的时候(就是上传文件那种类型),这种方法是无效的(此时 php://input为空),一旦PHP发现请求的Content-Type是multipart/form-data,就会无条件的代你处理表单数据,然后保存到$_FILES里,此时无法得到raw data,只能用一些偏门方法

以apache为例,修改httpd.conf(为了使用RequestHeader语法,请先激活header模块):

<Location "/demo.php">
     RequestHeader set Content-Type foobar
 </Location>

通过重置Content-Type请求头为foobar(只要不是multipart/form-data即可),此时php://input就有数据了,不过原本应有的$_FILES数据却不存在了,所以基本上只有演示上的意义,如果想得到raw data,只能自己根据数据生成,在PEAR里有类似的实现:HTTP_Request2_MultipartBody。

浏览器一般只允许使用GET/POST方法,虽然可以通过JS来发送PUT方法,但是还得编写代码,相对而言,使用命令行下的CURL命令则显得方便很多,在开发测试时很有用,所以学习一下还是必要的:

curl -X PUT http://www.domain.com/demo.php -d "id=1" -d "title=a"

这样就会通过PUT方法发送id, title数据,测试时demo.php的代码就类似上面的php://input。
]]>
HR与程序员是怎么读你的求职简历的 http://www.phpv.net/html/1704.html http://www.phpv.net/html/1704.html#comment Tue, 10 Nov 2009 10:18:26 +0000 admin http://www.phpv.net/html/1704.html 人事部门是这样阅读简历的

  • (+15分)如果简历中说到了和工作职位相符的技能超过5次以上。
  • (+8分)如果简历中说到了和工作职位相符的技能3次到5次。
  • (+4分)如果简历中说到了和工作职位相符的技能1次到2次。
  • (+4分)Cover Letter(“求职信”或“自荐信”)提到了招聘人员。
  • (+2分)简历中有Cover Letter(求职信)。
  • (-10分)没有提到和职位描述相关的技能。
  • (-15分)没有受过大专教育。


程序员是这样阅读简历的


  • (+15分)曾经因为好玩而写过操作系统或编译器。
  • (+12分)简历被Latex编译过。
  • (+11分)为开源软件贡献过代码。
  • (+9分)上学的时候曾经写过操作系统或编译器。
  • (+8分)有一个BLOG分享技术知识。
  • (+8分)编程/机器人/工程俱乐部主席。
  • (+7分)编程/机器人/工程竞赛参与者。
  • (+7分)在Google和Microsoft实习过。
  • (+6分)使用动态语言(Python/Perl/Ruby)写过非试验性的程序。
  • (+5分)知道3种或多于3种的编程语言。
  • (+5分)之前的工作和目前的职位有很相似的经验。
  • (+4分)有过实习经验。
  • (+4分)自己创过业开过公司。
  • (+4分)有一个通过Rail, PHP或ASP.NET的个人主页。
  • (+3分)有一个自己域名的邮件地址。
  • (+3分)改过一些由动态语言(Python/Perl/Ruby)写的程序。
  • (+2分)有一个个人主页。
  • (+1分)高学历,学习成绩优秀,等。
  • (+0分)有奖学金。
  • (+0分)在快餐店工作过。
  • (-0.5分)Fackbook上有一张看上去喝醉了的照片。
  • (-1分)有博士头衔。
  • (-2分)有一个一般的求职信。
  • (-2分)在简历中说自己懂Word/Excel。
  • (-2分)在简历中有拼写和语法错误。
  • (-3分)简历的字体太小。
  • (-4分)所有的编程经验只是在学校中。
  • (-4分)只知道一门编程语言。
  • (-6分)简历有三页以上。
  • (-6分)简历中有一些无关的东西。
  • (-7分)得到过一些课程的认证。
  • (-8分)相关专业课程很低的成绩。
  • (-10分)在技能中,把Visual Basic列在第一的位置。
  • (-12分)在Facebook中,有过光膀子的照片。
  • (-15分)简历中的缩进同时使用了空格和Tab键。


我个人觉得其中的很多东西真是说出了程序员的那种特性。

配图
------------------------------------------------

下面这个图片来源国外,是一个关于程序员面试时的简历,被人事部门和程序员本身评审的角度不同的图片。当然,这是一个从国外面试的视角制作的图片,不过,可以看出,其中很多东西都是和国内是相同的。让我们通过这个图片也来了解一下自身吧。

程序员怎样阅读简历(点击看大图)

]]>
谈PHP 闭包特性在实际应用中的问题 http://www.phpv.net/html/1703.html http://www.phpv.net/html/1703.html#comment Tue, 13 Oct 2009 10:15:52 +0000 抽烟的蚊子 http://www.phpv.net/html/1703.html 原文链接: http://justafewlines.com/2009/10/whats-wrong-with-php-closures/

PHP5.3 新版本跟随了很多新特性, 其中比较惹眼的特性之一就是支持了闭包。那么以后,我们也可以和那帮写 Ruby、Javascript 等等“高科技语言”的家伙们一样,写出非常酷的代码吗?呃,其实大部分情况下是可以的,而有些方面还是令人非常的困扰,下面慢慢道来。

很多语言的都提供了非常优雅和漂亮的操作数组的方法。在下面的例子中,会使用 PHP5.3 以及其他语言提供的闭包功能,用于展示如何“客观的”操作迭代数组。

译注:原文作者比较火星,我不了解 Groovy 以及 Scala 语言,所以这里我加上 Javascript 的实现。

在开始之前先说明下,本例子仅仅是阐明观点,并没有考虑性能等其他方面的因素。

“货比三家”

用个简单的例子开始,有下面个数组:

$nums = array(10, 20, 30, 40);

需要找出数组中大于 15 的项。那么,不考虑闭包的情况下,我们或许会这样写:

$res = array();
foreach ($nums as $n) {
if ($n > 15) {
$res[] = $n;
}
}

如果语言本身有闭包支持的,那么或许会这样写(Groovy 语言)

def res = nums.findAll { it > 15 }

或者使用 Scala 语言

val res = nums filter (_ > 15)

译注:Javascript 1.6 的话会是如下

var res = nums.filter(function(c){return c > 15});

因为循环操作已被抽象起来,所以可以看到 Groovy 、Scala (以及 Javascript) 都很漂亮得用一行就可以搞定。

当然,如果使用 PHP5.3 的闭包,也可以做到

$res = array_filter($nums, function($v) { return $v > 15; });

PHP 在这方面使用了比 Scala 更多的字符,但对比先前的例子,它更简短并且能更好得阅读。

顺便说下,上面的 PHP 代码实际上是使用了 Lambda 解析式,并不是个真正的闭包,这个 并不是我们目前关注的重点。详细阐述 PHP 闭包以及 Lambda 解析式的资料,可以参考这里

目前看来感觉都还不错,那么我们再的题目增加点难度:找到所有大于 15 的项, 然后乘以 2 再加上作用域中的的某个变量值以后再返回。

Groovy 的实现:

def x = 1
def res = nums .findAll { it > 15 } .collect { it * 2 + x }

Scala 的实现:

val x = 1
val res = nums filter (_ > 15) map (_ * 2 + x)

译注,Javascript 的实现:

var i = 1;
var res = nums.filter(function(c){return c > 15}).map(function(c){return c * 2 + i});

以及 PHP:

$x = 1;
$res = array_map(
function($v) use ($x) { return $v * 2 + $x; },
array_filter(
$nums,
function($v) { return $v > 15; })
);

光从代码量方面,现在看起来 PHP 与其他语言有出入了。先抛开代码字面上本身 的审美不谈,上面的 PHP 代码还有个额外的问题。

例如,如果需要使用数组的键而非值作比较,怎么办?是的,上面的代码就办不到了。同时,从语法角度上说,上面的代码非常难以阅读。

返璞归真,这时还是得返回老土的思路去解决问题:

$x = 1;
$res = array();
foreach ($nums as $n) {
if ($n > 15) {
$res[] = $n * 2 + $x;
}
}

呼,这样看起来又很清楚了。但这个时候你或许又会迷惑了:“那还瞎折腾啥,这不就是个数组操作吗?”。

是的,好戏还在后头。这个时候该让 PHP 的某些高级特性出场,来搞定这看似有自残倾向 的“无聊问题”。

ArrayObject – 对数组的封装

PHP 有个称作 SPL 的标准库,其中包含了个叫做 ArrayObject 的类,它能提供“像数组一 样操作类”的功能,例如

$res = new ArrayObject(array(10, 20, 30, 40));
foreach ($res as $v) {
echo "$vn";
}

ArrayObject 是个内置的类,所以你可以像其他类类操作一样封装它。

Arr - 包上糖衣

既然我们已经有了 ArrayObject 以及闭包这些特性,我们就可以开始尝试封装它:

class Arr extends ArrayObject
{
static function make($array)
{
return new self($array);
}

function map($func)
{
$res = new self();
foreach ($this as $k => $v) {
$res[$k] = $func($k, $v);
}
return $res;
}

function filter($func)
{
$res = new self();
foreach ($this as $k => $v) {
if ($func($k, $v)) {
$res[$k] = $v;
}
}
return $res;
}
}

好了,万事俱备。下面重写的 PHP 代码就可以解决上面提到的问题,并且看起来语法上“差 不多”了:

$res = Arr::make($nums)
->filter(function($k, $v) { return $v > 15; })
->map(function($k, $v) { return $v * 2; });

上面的代码与传统方式有何不同呢?首先,它们可以递归并形成作用链式的调用,因此可以 添加更多的类似操作。

同时,可以通过回调的两个参数分别操作数组的键以及值其项 - $k 对应键以及 $v 对应值 。这使得我们可以在闭包中使用键值,这在传统的 PHP 函数 array_fliter 中是无法实现的。

另外个带来的额外好处就是更加一致 API 调用。使用传统的 PHP 函数操作,它们有可能第一个参数是个闭包,或者是个数组,抑或是多个数组…总之谁知道呢?

这里是 Arr 类的完整源代码,还包含了其他有用的函数(类似 reduce 以及 walk),其实它 们的实现其实方式和代码类似。

博弈

这个问题其实很难回答 - 这需要根据代码的上下文以及程序员自身等众多因素决定。其实 ,当我第一眼看见 PHP 的闭包实现时,我感觉似乎回到了那很久以前的 Java 时期,当时 我在开始使用匿名内置类(anonymous inner classes)来实现闭包。当然,这虽然可以做到, 但看起来实在是些画蛇添足。PHP 闭包本身是没错,只是它的实现以及语法让我感到非常的困惑。

其他具有闭包特性的语言,它们可以非常方便的调用闭包并同时具有优雅的语法。在上面的例子 中,在 Scala 中使用传统的循环也可以工作,但你会这样写吗?而从另个方面,那么有人 说上面这个题目使用 PHP 的闭包也可以实现,但一般情况下你会这样写吗?

可以确定,PHP 闭包在些情况下可以成为锐利的军刀(例如延时执行以及资源调用方面), 但在传统的迭代以及数组操作面前就显得有些为难。不要气馁不管怎么样, 返璞归真编写具有兼容性的、清爽的代码以及 API 是最重要的。

结束语

像所有后来加上的语法特性一样(记得当年 Java 的 Generics 特性不?以及前几年的 PHP OOP 特性),它们都需要时间磨合以及最终稳定下来。随着 PHP5.3 甚至将来的 PHP6 逐渐普及,越来越多的技巧和特性相信在不远的将来逐渐的被聪明的程序员挖掘出来。

回到最初文章开头那个题目,对比

$res = Arr::make($nums)
->filter(function($k, $v) { return $v > 15; })
->map(function($k, $v) { return $v * 2; });

以及

val res = nums filter (_ > 15) map (_ * 2)

两者之间的区别。归根结底它们仅是语法而已,本质上都是殊途同归解决了同个问题。程序 语言的应用特性不同,自然孰优孰劣也就无从比较。

最后,这里有此篇文章的代码示例, 相信可以找到更多如何使用 PHP 进行函数式迭代(当然不仅仅是这些)的心得。

-- Split --

不靠谱之博主心得

坦白讲,虽然在 PHP5.0 之前就了解过提出的新增闭包等功能,但在看到 PHP5.3 提供的闭 包以及 Lambda 功能后,与原本心理期待的还是有些出入。

甚至相对于熟悉的 JavaScript,PHP 的闭包在我看来,像是“别的语言都有了,所以我也要有” 的这种心态下的产物。

但正如上文中所言,相比 JavaScript 等其他动态语言,PHP 出于自身的应用以及实现的哲学 出发,与其他开发语言不尽相同。

因此在某些特性的调用方式、实现方法也会不一样,这难免会让熟悉另外具有类似功能的语言 的人感到的不适应。

从 PHP5.3 推出至今,还不到半年的时间,相比 JavaScript 等这些早已具有闭包等特性的 动态语言相比,自然是显得非常稚嫩。

同时,广大的开发者对于 PHP5.3 提供的包括闭包在内的新特性还在持观望态度。PHP 的闭包特性目前还是存在于实验室中,其应用于实际开发如要突破的不仅仅是语言特性 ,还要经过效率、安全性等方面的考验。

但相信,如原文作者所言,随着 PHP 版本的推进,PHP 的闭包应用场合会越来越频繁。像 当年 PHP4 转换到 PHP5 一样,对语言新特性的适应,其实是种痛并快乐着的过程。

]]>
JavaScript可否多线程? 深入理解JavaScript定时机制 http://www.phpv.net/html/1700.html http://www.phpv.net/html/1700.html#comment Sun, 27 Sep 2009 11:41:00 +0000 admin http://www.phpv.net/html/1700.html JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不少人都深有同感, 例如

setTimeout( function(){ alert(’你好!’); } , 0);
setInterval( callbackFunction , 100);

认为setTimeout中的问候方法会立即被执行,因为这并不是凭空而说,而是JavaScript API文档明确定义第二个参数意义为隔多少毫秒后,回调方法就会被执行. 这里设成0毫秒,理所当然就立即被执行了.
同理对setInterval的callbackFunction方法每间隔100毫秒就立即被执行深信不疑!

但随着JavaScript应用开发经验不断的增加和丰富,有一天你发现了一段怪异的代码而百思不得其解:

div.onclick = function(){
setTimeout( function(){document.getElementById(’inputField’).focus();}, 0);
};

既然是0毫秒后执行,那么还用setTimeout干什么, 此刻, 坚定的信念已开始动摇.

直到最后某一天 , 你不小心写了一段糟糕的代码:

setTimeout( function(){ while(true){} } , 100);
setTimeout( function(){ alert(’你好!’); } , 200);
setInterval( callbackFunction , 200);

第一行代码进入了死循环,但不久你就会发现,第二,第三行并不是预料中的事情,alert问候未见出现,callbacKFunction也杳无音讯!

这时你彻底迷惘了,这种情景是难以接受的,因为改变长久以来既定的认知去接受新思想的过程是痛苦的,但情事实摆在眼前,对JavaScript真理的探求并不会因为痛苦而停止,下面让我们来展开JavaScript线程和定时器探索之旅!

拔开云雾见月明

出现上面所有误区的最主要一个原因是:潜意识中认为,JavaScript引擎有多个线程在执行,JavaScript的定时器回调函数是异步执行的.

而事实上的,JavaScript使用了障眼法,在多数时候骗过了我们的眼睛,这里背光得澄清一个事实:

JavaScript引擎是单线程运行的,浏览器无论在什么时候都只且只有一个线程在运行JavaScript程序.

JavaScript引擎用单线程运行也是有意义的,单线程不必理会线程同步这些复杂的问题,问题得到简化.

那么单线程的JavaScript引擎是怎么配合浏览器内核处理这些定时器和响应浏览器事件的呢?
下面结合浏览器内核处理方式简单说明.

浏览器内核实现允许多个线程异步执行,这些线程在内核制控下相互配合以保持同步.假如某一浏览器内核的实现至少有三个常驻线 程:javascript引擎线程,界面渲染线程,浏览器事件触发线程,除些以外,也有一些执行完就终止的线程,如Http请求线程,这些异步线程都会产 生不同的异步事件,下面通过一个图来阐明单线程的JavaScript引擎与另外那些线程是怎样互动通信的.虽然每个浏览器内核实现细节不同,但这其中的 调用原理都是大同小异.


由图可看出,浏览器中的JavaScript引擎是基于事件驱动的,这里的事件可看作是浏览器派给它的各种任务,这些任务可以源自 JavaScript引擎当前执行的代码块,如调用setTimeout添加一个任务,也可来自浏览器内核的其它线程,如界面元素鼠标点击事件,定时触发 器时间到达通知,异步请求状态变更通知等.从代码角度看来任务实体就是各种回调函数,JavaScript引擎一直等待着任务队列中任务的到来.由于单线 程关系,这些任务得进行排队,一个接着一个被引擎处理.

上图t1-t2..tn表示不同的时间点,tn下面对应的小方块代表该时间点的任务,假设现在是t1时刻,引擎运行在t1对应的任务方块代码内,在这个时间点内,我们来描述一下浏览器内核其它线程的状态.

t1时刻:

GUI渲染线程:

该线程负责渲染浏览器界面HTML元素,当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行.本文虽然重 点解释JavaScript定时机制,但这时有必要说说渲染线程,因为该线程与JavaScript引擎线程是互斥的,这容易理解,因为 JavaScript脚本是可操纵DOM元素,在修改这些元素属性同时渲染界面,那么渲染线程前后获得的元素数据就可能不一致了.

在JavaScript引擎运行脚本期间,浏览器渲染线程都是处于挂起状态的,也就是说被”冻结”了.

所以,在脚本中执行对界面进行更新操作,如添加结点,删除结点或改变结点的外观等更新并不会立即体现出来,这些操作将保存在一个队列中,待JavaScript引擎空闲时才有机会渲染出来.

GUI事件触发线程:

JavaScript脚本的执行不影响html元素事件的触发,在t1时间段内,首先是用户点击了一个鼠标键,点击被浏览器事件触发线程捕捉后形成 一个鼠标点击事件,由图可知,对于JavaScript引擎线程来说,这事件是由其它线程异步传到任务队列尾的,由于引擎正在处理t1时的任务,这个鼠标 点击事件正在等待处理.

定时触发线程:

注意这里的浏览器模型定时计数器并不是由JavaScript引擎计数的,因为JavaScript引擎是单线程的,如果处于阻塞线程状态就计不了时,它必须依赖外部来计时并触发定时,所以队列中的定时事件也是异步事件.

由图可知,在这t1的时间段内,继鼠标点击事件触发后,先前已设置的setTimeout定时也到达了,此刻对JavaScript引擎来说,定时触发线程产生了一个异步定时事件并放到任务队列中, 该事件被排到点击事件回调之后,等待处理.
同理, 还是在t1时间段内,接下来某个setInterval定时器也被添加了,由于是间隔定时,在t1段内连续被触发了两次,这两个事件被排到队尾等待处理.

可见,假如时间段t1非常长,远大于setInterval的定时间隔,那么定时触发线程就会源源不断的产生异步定时事件并放到任务队列尾而不管它 们是否已被处理,但一旦t1和最先的定时事件前面的任务已处理完,这些排列中的定时事件就依次不间断的被执行,这是因为,对于JavaScript引擎来 说,在处理队列中的各任务处理方式都是一样的,只是处理的次序不同而已.

t1过后,也就是说当前处理的任务已返回,JavaScript引擎会检查任务队列,发现当前队列非空,就取出t2下面对应的任务执行,其它时间依此类推,由此看来:

如果队列非空,引擎就从队列头取出一个任务,直到该任务处理完,即返回后引擎接着运行下一个任务,在任务没返回前队列中的其它任务是没法被执行的.

相信您现在已经很清楚JavaScript是否可多线程,也了解理解JavaScript定时器运行机制了,下面我们来对一些案例进行分析:

案例1:setTimeout与setInterval

setTimeout(function(){
/* 代码块... */
setTimeout(arguments.callee, 10);
}, 10);

setInterval(function(){
/*代码块... */
}, 10);

这两段代码看一起效果一样,其实非也,第一段中回调函数内的setTimeout是JavaScript引擎执行后再设置新的setTimeout 定时, 假定上一个回调处理完到下一个回调开始处理为一个时间间隔,理论两个setTimeout回调执行时间间隔>=10ms .第二段自setInterval设置定时后,定时触发线程就会源源不断的每隔十秒产生异步定时事件并放到任务队列尾,理论上两个setInterval 回调执行时间间隔<=10.

案例2:ajax异步请求是否真的异步?

很多同学朋友搞不清楚,既然说JavaScript是单线程运行的,那么XMLHttpRequest在连接后是否真的异步?
其实请求确实是异步的,不过这请求是由浏览器新开一个线程请求(参见上图),当请求的状态变更时,如果先前已设置回调,这异步线程就产生状态变更事件放到 JavaScript引擎的处理队列中等待处理,当任务被处理时,JavaScript引擎始终是单线程运行回调函数,具体点即还是单线程运行 onreadystatechange所设置的函数.

]]>
PHP文件上传源码分析(RFC1867) http://www.phpv.net/html/1699.html http://www.phpv.net/html/1699.html#comment Sun, 27 Sep 2009 11:36:01 +0000 admin http://www.phpv.net/html/1699.html 文件上传,一般分为俩种方式FTP和HTTP, 对于我们的互联网应用来说: FTP上传虽然传输稳定, 但是易用性和安全性都是个问题. 你总不至于在用户要上传头像的时候告诉用户”请打开FTP客户端,上传文件到http://www.laruence.com/uploads/中, 并以2dk433423l.jpg命名”吧?

而基于HTTP的上传,相对来说易用性和安全性上就比FTP要增强了很多. 可以应用的上传方式有PUT, WEBDAV, 和RFC1867三种, 本文将分析在PHP中,是如何基于RFC1867实现文件上传的.

RFC1867

RCF1867是Form-based File Upload in HTML标准协议, RFC1867标准对HTML做出了两处修改:
 

1 为input元素的type属性增加了一个file选项。
2 input标记可以具有accept属性,该属性能够指定可被上传的文件类型或文件格式列表。

  
另外,本标准还定义了一种新的mime类型:multipart/form-data,以及当处理一个带有enctype=”multipart/form-data” 并且/或含有<input type=”file”>的标记的表单时所应该采取的行为。
  
举例来说,当HTML想让用户能够上传一个或更多的文件时,他可以这么写:

<form enctype="multipart/form-data" action="upload.php" method=post>
选择文件:
<input name="userfile" type="file">
文件描述:
<input name="description" type="text">
<input type="submit" value="上传">
</form>

这个表单, 大家一定不陌生, 而对于PHP来说, 它自己另外定义了一个默认表单元素MAX_FILE_SIZE, 用户可以通过这个隐藏的表单元素来建议PHP最多只容许上传文件的大小, 比如对于上面的例子, 我们希望用户上传的文件不能大于5000(5k)字节, 那么可以如下写:

<form enctype="multipart/form-data" action="upload.php" method=post>
<input type="hidden" value="5000" name="MAX_FILE_SIZE"> <!--文件大小-->
选择文件:
<input name="userfile" type="file">
文件描述:
<input name="description" type="text">
<input type="submit" value="上传">
</form>

姑且不说, 这个MAX_FILE_SIZE是多么的不可靠(所以基于浏览器的控制,都是不可靠的), 单纯从实现来讲, 我会慢慢介绍这个MAX_FILE_SIZE是如何起作用的.

当用户选择了一个文件(laruence.txt), 并填写好文件描述(”laruence的个人介绍”), 点击上传后, 发生了什么呢?

表单提交

在用户确定提交以后, 浏览器会发送如下类似格式的数据包到form中action属性指定的页面(在本例中是upload.php):

//请求头
POST /upload.php HTTP/1.0\r\n
...
Host: www.laruence.com\r\n
...
Content-length: xxxxx\r\n
...
Content-type: multipart/form-data, boundary=--------------7d51863950254\r\n
...\r\n\r\n
//开始POST数据内容
---------------7d51863950254
content-disposition: form-data; name="description"
laruence的个人介绍
---------------7d51863950254
content-disposition: form-data; name="userfile"; filename="laruence.txt"
Content-Type: text/plain
... laruence.txt 的内容...
---------------7d51863950254

接下来, 就是服务器, 是如何处理这些数据了.

接受上传

当Web服务器, 此处假设为Apache(另外假设PHP是以module方式安装在Apache上的), 接受到用户的数据时, 首先它根据HTTP请求头, 通过确定MIME TYPE为PHP类型, 然后经过一些过程以后(这部分,可以参看我之前的PHP Life Cycle ppt), 最终会把控制权交给PHP模块.

这个时候, PHP会调用sapi_activate来初始化一个请求, 在这个过程中, 首先判断请求类型, 此时是POST, 从而去调用sapi_read_post_data, 通过Content-type, 找到rfc1867的处理函数rfc1867_post_handler, 从而调用这个handler, 来分析POST来的数据.

关于rfc1867_post_handler这部分的源代码, 可以在mian/rfc1867.c找到, 另外也可以参看我之前的深入理解PHP之文件上传, 其中也列出的源代码.

然后, PHP通过boundary, 对于每一个分段, 都通过检查, 是否同时定义了:

	name和filename属性(有名文件上传)
没有定义name定义了filename(无名上传)
定义了name没有定义filename(普通数据),

从而进行不同的处理.

if ((cd = php_mime_get_hdr_value(header, "Content-Disposition"))) {
char *pair=NULL;
int end=0;

while (isspace(*cd)) {
++cd;
}

while (*cd && (pair = php_ap_getword(&cd, ';')))
{
char *key=NULL, *word = pair;

while (isspace(*cd)) {
++cd;
}

if (strchr(pair, '=')) {
key = php_ap_getword(&pair, '=');

if (!strcasecmp(key, "name")) {
//获取name字段
if (param) {
efree(param);
}
param = php_ap_getword_conf(&pair TSRMLS_CC);
} else if (!strcasecmp(key, "filename")) {
//获取filename字段
if (filename) {
efree(filename);
}
filename = php_ap_getword_conf(&pair TSRMLS_CC);
}
}
if (key) {
efree(key);
}
efree(word);
}

在这个过程中, PHP会去检查普通数据中,是否有MAX_FILE_SIZE.

 /* Normal form variable, safe to read all data into memory */
if (!filename && param) {
unsigned int value_len;
char *value = multipart_buffer_read_body(mbuff, &value_len TSRMLS_CC);
unsigned int new_val_len; /* Dummy variable */
......

if (!strcasecmp(param, "MAX_FILE_SIZE")) {
max_file_size = atol(value);
}

efree(param);
efree(value);
continue;
}

有的话, 就会按照它的值来检查文件大小是否超出.

if (PG(upload_max_filesize) > 0 && total_bytes > PG(upload_max_filesize)) {
cancel_upload = UPLOAD_ERROR_A;
} else if (max_file_size && (total_bytes > max_file_size)) {
#if DEBUG_FILE_UPLOAD
sapi_module.sapi_error(E_NOTICE,
"MAX_FILE_SIZE of %ld bytes exceeded - file [%s=%s] not saved",
max_file_size, param, filename);
#endif
cancel_upload = UPLOAD_ERROR_B;
}

通过上面的代码,我们也可以看到, 判断分为俩部, 第一部分是检查PHP默认的上传上限. 第二部分才是检查用户自定义的MAX_FILE_SIZE, 所以表单中定义的MAX_FILE_SIZE并不能超过PHP中设置的最大上传文件大小.

通过对name和filename的判断, 如果是文件上传, 会根据php的设置, 在文件上传目录中创建一个随机名字的临时文件:

 if (!skip_upload) {
/* Handle file */
fd = php_open_temporary_fd_ex(PG(upload_tmp_dir),
"php", &temp_filename, 1 TSRMLS_CC);
if (fd==-1) {
sapi_module.sapi_error(E_WARNING,
"File upload error - unable to create a temporary file");
cancel_upload = UPLOAD_ERROR_E;
}
}

返回文件句柄, 和临时随机文件名.

之后, 还会有一些验证,比如文件名合法, name合法等.

如果这些验证都通过, 那么就把内容读入, 写入到这个临时文件中.

.....
else if (blen > 0) {
wlen = write(fd, buff, blen); //写入临时文件.
if (wlen == -1) {
/* write failed */
#if DEBUG_FILE_UPLOAD
sapi_module.sapi_error(E_NOTICE, "write() failed - %s", strerror(errno));
#endif
cancel_upload = UPLOAD_ERROR_F;
}
}
....

当循环读入完成后, 关闭临时文件句柄. 记录临时变量名:

zend_hash_add(SG(rfc1867_uploaded_files), temp_filename,
strlen(temp_filename) + 1, &temp_filename, sizeof(char *), NULL);

并且生成FILE变量, 这个时候, 如果是有名上传, 那么就会设置:

$_FILES['userfile'] //name="userfile"

如果是无名上传, 则会使用tmp_name来设置:

$_FILES['tmp_name'] //无名上传

最终交给用户编写的upload.php处理.

这时在upload.php中, 用户就可以通过move_uploaded_file来操作刚才生成的文件了~

]]>
贴一份手机网站的USER-AGENT(统计总数非常少仅演示用) http://www.phpv.net/html/1698.html http://www.phpv.net/html/1698.html#comment Thu, 10 Sep 2009 11:30:45 +0000 http://www.phpv.net/html/1698.html 共计日志149769条。

计算总数语句:cat info_1 | awk 'BEGIN{a=0}/^ +[0-9]+ /{a+=$1}END{print a}'

可以看出‘-’(未识别)的非常多,约40%左右,刨去搜索引擎,MAUI_WAP_Browser(即山寨机)的比例最高,Nokia的市场份额应该是最高的。

 

统计文件info_1内容:

  65916 -
  41254 Baiduspider+(+http://www.baidu.com/search/spider.htm)
  10528 Nokia3100/1.0(wukong)
   7920 Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
   3089 DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
   2483 Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)
   2080 Mozilla/5.0 (compatible; YoudaoBot/1.0; http://www.youdao.com/help/webmaster/spider/; )
   1112 MAUI_WAP_Browser
    981 SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
    930 Sosospider+(+http://help.soso.com/webspider.htm)
    439 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0
    414 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.13400/498; U; zh) Presto/2.2.0
    307 NOKIA6120c
    301 MAUI WAP Browser
    269 Mozilla/4.0
    264 Mozilla/5.0 (Twiceler-0.9 http://www.cuil.com/twiceler/robot.html)
    257 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
    230 UNTRUSTED/1.0
    214 NokiaN73
    195 Nokia 5320
    195 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
    141 Nokia5530/10.0.050 (SymbianOS/9.4; U; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525
    133 NOKIA6120c/UCWEB7.0.0.33/28/999
    116 Nokia3230/2.0 (5.0717.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
    114 NokiaE71
    108 SAMSUNG-GT-E1110C_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/17.08.2007 Browser/OpenWave6.2.3.3.c.1.101/*MzU2Njk5MDIzMjI0NjY5 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
    105 SonyEricssonK750c/R1CA Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1
    104 NEC-N600/1.0 HopenOS/2.0
     93 Opera/9.60 (J2ME/MIDP; Opera Mini/4.0.12168/498; U; zh) Presto/2.2.0
     85 Nokia 6122c
     84 Nokia5800 XpressMusic
     83 NokiaE63
     82 SonyEricssonW700c/R1DB Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
     82 SonyEricssonK810i/R6BC Profile/MIDP-2.0 Configuration/CLDC-1.1
     82 Opera/9.60 (J2ME/MIDP; Opera Mini/4.0.13067/498; U; zh) Presto/2.2.0
     79 NOKIA5320
     78 NokiaN70-1/5.0737.3.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB7.0.0.33/27/999
     78 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; baidu Transcoder;)
     73 SonyEricssonW550c/R4CB Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     73 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14753/498; U; zh) Presto/2.2.0
     73 Nokia5200/2.0 (05.53) Profile/MIDP-2.0 Configuration/CLDC-1.1
     70 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19
     69 NOKIAN78
     69 NOKIA5700
     68 NOKIAN85
     64 CMCC/1.0/NokiaN95
     62 Nokia N96/UCWEB7.0.0.33/28/999
     62 NOKIAN95
     59 Nokia5800 XpressMusic/UCWEB7.0.0.33/50/999
     59 Nokia 5320/UCWEB7.0.0.33/28/999
     57 Nokia5320/04.13 (SymbianOS/9.3; U; Series60/3.2 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
     57 NOKIAN79
     56 NokiaE71/1.0 (110.21.006) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
     56 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; CIBA; .NET CLR 2.0.50727)
     55 Opera/9.60 (J2ME/MIDP; Opera Mini/4.0.12814/498; U; zh) Presto/2.2.0
     55 NokiaE63/UCWEB7.0.0.33/28/999
     54 MOT-MPx220(2005.8.16)/SW3.510/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)
     53 SonyEricssonK510c/R4EA Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
     53 PalmCentro/v0001/RC1 Mozilla/4.0(兼容;MSIE 6.0;Windows 98;PalmSource/Palm-D053; Blazer/4.5) 16;320x320
     53 Nokia3110c/2.0 (05.01) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
     52 UNTRUSTED/1.0/AJSC/1.5
     52 SonyEricssonT707/R1EA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1 JavaPlatform/JP-8.4.2
     52 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.13918/866; U; zh) Presto/2.2.0
     50 Opera/9.60 (J2ME/MIDP; Opera Mini/4.0.10992/498; U; zh) Presto/2.2.0
     49 Nokia7310c_CMCC/2.0 (07.51) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
     47 Mozilla/5.0 (iPod; U; CPU iPhone OS 3_0 like Mac OS X; zh-cn) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16
     45 NOKIAN78/UCWEB7.0.0.33/28/999
     45 Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; zh-cn) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16
     44 NokiaN70/5.0635.2.5.3 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
     44 Nokia6120c/4.21 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/4.21; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) Mozilla/5.0 AppleWebKit/413 (KHTML, like Gecko) Safari/413
     44 NOKIANokia N81/UCWEB7.0.0.33/28/999
     44 Googlebot-Image/1.0
     43 Nokia6300/2.0 (07.21) Profile/MIDP-2.0 Configuration/CLDC-1.1
     40 NokiaN73/UCWEB7.0.0.33/28/999
     40 NOKIAE50/UCWEB7.0.0.33/28/999
     39 dopod S1_CMCC/5.2.1235/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
     39 Nokia6681/2.0 (6.09.00) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1
     39 Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/21.0.025; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
     38 SAMSUNG-SGH-X828/NetFront 3.2/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU5MzA4MDAxOTg2NDA5
     38 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14912/866; U; zh) Presto/2.2.0
     38 NokiaN82/1.0 (11.1.117) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
     38 Nokia6300/2.0 (06.01) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
     36 Opera/8.01 (J2ME/MIDP; Opera Mini/3.1.8718/1712; zh; U; ssr)
     34 NokiaN70/5.0717.2.5.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
     34 Nokia7610/2.0 (7.0642.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
     34 Nokia7070_CMCC/2.0 (06.82) Profile/MIDP-2.1 Configuration/CLDC-1.1
     34 NOKIAN82
     34 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)
     34 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone)
     33 dopod D600_CMCC/5.1.422/WAP1.2 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
     33 NokiaN78
     33 NokiaN70/ 5.0741.4.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
     33 Mozilla/5.0 (en-us) AppleWebKit/525.13 (KHTML, like Gecko; Google Wireless Transcoder) Version/3.1 Safari/525.13
     33 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
     32 Mozilla/5.0 (SymbianOS/9.1; U; [zh-cn, zh]; SymbianOS/9.1 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413
     31 NokiaN81
     30 NokiaN70/ 5.0741.4.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB7.0.0.33/27/999
     30 Nokia5300/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1
     30 Nokia2630_CMCC/2.0 (06.82) Profile/MIDP-2.1 Configuration/CLDC-1.1
     30 Nokia1681c_CMCC/2.0 (06.82) Profile/MIDP-2.1 Configuration/CLDC-1.1
     30 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; 360SE)
     28 TIANYU-KTOUCH/V918/MIDP2.0/CLDC1.1/Screen-240x320
     28 SonyEricssonS700i/R3K SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     28 SAMSUNG-SGH-E258/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU3ODU0MDE1ODg0NjI5 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
     28 NokiaNokia 5320
     28 Nokia6220c/UCWEB7.0.0.33/28/999
     28 Nokia1680c_CMCC/2.0 (05.61) Profile/MIDP-2.1 Configuration/CLDC-1.1
     28 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322)
     27 dopod P660_CMCC/5.2.1941/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UCWEB7.0.0.33/31/999
     27 Opera/9.52 (Windows NT 5.1; U; en)
     27 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
     26 V60/SW1.0.0/WAP2.0
     26 SAMSUNG-SGH-E768/1.0 RTK-E/1.0 DF/1.0 Release/11.27.2006 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU0NTc2MDEzNTgzMDAx UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
     26 Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.12497/498; U; zh) Presto/2.2.0
     26 NokiaN81/UCWEB7.0.0.33/28/999
     26 NokiaN79/SymbianOS/9.3 Series60/3.2 Release/11.049; Mozilla/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML,like Gecko) Safari/413
     26 NokiaN72/2.0635.2.0.2 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
     26 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; CIBA; InfoPath.1; MAXTHON 2.0)
     26 GIONEE-L10/SW1.0.0/WAP2.0
     25 Opera/8.01 (J2ME/MIDP; Opera Mini/3.1.10012/1712; zh; U; ssr)
     25 NokiaN72/5.0706.4.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
     25 NokiaN70-1/5.0737.3.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
     25 NOKIA3250
     25 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)
     24 SAMSUNGSGH-i450
     24 SAMSUNG-SGH-i728_CMCC_U1/1.0 Release/03.07 Browser/IE6 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
     24 Nokia5800 XpressMusic/UCWEB7.0.0.33/50/800
     24 Nokia 6210s
     24 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009031915 Gentoo Firefox/3.0.7
     24 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95_8GB/20.0.016; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
     24 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)
     24 Huawei/1.0/0HUAWEI U7300/B100 Browser/Obigo-Browser/Q05A MMS/Obigo-MMS/Q05A SyncML/HW-SyncML/1.0 Java/HWJa/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Player/QTV-Player/5.3 UNTRUSTED/1.0
     23 SonyEricssonW800c/R1AA/SN357851008078144 Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
     23 Opera/8.01 (J2ME/MIDP; Opera Mini/3.1.10012/1712; en; U; ssr)
     23 NokiaN85/SymbianOS/9.3 Series60/3.2 Release/11.048; Mozilla/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML,like Gecko) Safari/413
     23 NokiaE71/UCWEB7.0.0.33/28/999
     22 SonyEricssonK550c/R1JD Release/Jan-23-2007 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
     22 SAMSUNG-SGH-i908E_CMCC/1.0 Release/03.07 Browser/IE6 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
     22 SAMSUNG-SGH-C288_CMCC/1.0 RTK-E/1.0 SYSOL/1.0 Release/09.01.2007 Browser/OpenWave6.2.3.3.c.1.101/*MzU0MjE0MDIyOTAyNDA2 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
     22 SAMSUNG-GT-S3600C/1.0 RTK-E/1.0 DF/1.0 Release/07.01.2008 Browser/NetFront3.4  Profile/MIDP-2.0 Configuration/CLDC-1.1
     22 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
     22 MOT-A1600_CMCC/1.0 LinuxOS/2.4.20 Release/6.16.2008 Browser/Opera8.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R542_G_11.60.61P
     22 LENOVO-P780/176A
     21 V66/SW1.0.0/WAP2.0
     21 SAMSUNG-SGH-J708/1.0 RTK-E/1.0 DF/1.0 Release/02.05.2008 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUzNzQwMDIwMzgyOTk0 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
     21 NokiaN72/ 5.0741.4.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
     21 Nokia6630/1.0 (3.45.110) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1
     20 SonyEricssonW958c/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 598) Opera 8.65 [zh-CN]
     20 SAMSUNG-SGH-J618_CMCC/1.0 Release/5.29.2007 Browser/NetFront3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
     20 SAMSUNG-SGH-F268/1.0 RTK-E/1.0 DF/1.0 Release/07.04.2007 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU1MDY3MDIxMTgyOTc3 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
     20 NokiaN70/3.0544.5.2 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
     20 Nokia5610d-1/2.0 (07.12) Profile/MIDP-2.1 Configuration/CLDC-1.1
     20 Nokia5200/2.0 (04.71) Profile/MIDP-2.0 Configuration/CLDC-1.1
     20 Nokia1680c/2.0 (06.82) Profile/MIDP-2.1 Configuration/CLDC-1.1
     19 TIANYU-KTOUCH/A608/MIDP2.0/CLDC1.1/Screen-240x320
     19 SonyEricssonW810c/R4EA Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
     19 Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.13907/866; U; zh) Presto/2.2.0
     19 NokiaN97
     19 Nokia5610_CMCC/2.0 (08.20) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
     19 Nokia3110c/2.0 (06.02) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
     19 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; CIBA; InfoPath.1)
     19 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UCWEB7.0.0.33/31/999
     19 AMOI-E72/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone)
     18 UCWEB7.0.0.33/28/999
     18 SAMSUNG-GT-S5230C/1.0 SHP/R5 Release/02.01.2009 Browser/NetFront3.5 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1
     18 Nokia3230/2.0 (5.0614.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
     18 NOKIAN79/UCWEB7.0.0.33/28/999
     18 NEC-N6206/1.0 Release/06.15.2006 Browser/CMS2.0.0 Profile/MIDP-2.0
     17 SonyEricssonW850i/R1EJ Release/Sep-24-2006 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     17 NokiaN95/1.0 (11.1.010) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
     17 NokiaN-GageQD/1.0 SymbianOS/6.1 Series60/1.2 Profile/MIDP-1.0 Configuration/CLDC-1.0
     17 Nokia7610s/2.0 (04.70) Profile/MIDP-2.1 Configuration/CLDC-1.1
     17 Nokia5200/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
     17 NOKIANokia N81
     17 NOKIAN80
     17 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; iCafeMedia; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)
     17 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CIBA)
     17 IPhone UCWEB6.0
     17 GIONEE-A66/SW1.0.0/WAP2.0
     16 Nokia6303c/2.0 (06.21) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+
     16 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)
     16 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
     15 sonyericssonw700c
     15 dopod C858g/5.1.422/WAP1.2 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.6)
     15 SAMSUNG-SGH-i718plus_CMCC/1.0 Release/03.07 Browser/IE6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (compatible; MSIE 6.0; Windows CE; IEMobile 7.7)
     15 SAMSUNG-SGH-E908/NetFront 3.2/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
     15 SAMSUNG-SGH-D508/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU2MDk4MDA4ODYwMDUy UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
     15 NokiaN70-1/5.0705.3.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
     15 Nokia5200/2.0 (05.00) Profile/MIDP-2.0 Configuration/CLDC-1.1
     15 Nokia2610/2.0 (06.73) Profile/MIDP-2.0 Configuration/CLDC-1.1
     15 Nokia1680c/2.0 (05.61) Profile/MIDP-2.1 Configuration/CLDC-1.1
     15 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5
     15 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95/30.0.015; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
     15 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; CIBA)
     15 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6)
     15 LENOVO-P620/(2008.08.08) S001/WAP2.0
     14 SAMSUNG-SGH-D908/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUyOTA5MDEyMjg3NDky UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
     14 Nokia6220c
     14 Nokia5800/21.0.025.1 (SymbianOS/9.4; U; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
     14 NOKIAE50
     14 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2
     14 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95/31.0.017; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
     14 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)
     14 BIRD_D720_CMCC/1.00 Mtk6227/V21-05C Release/7.14.2006 Browser/Teleca Profile/MIDP-2.0 Configuration/CLDC-1.0
     13 SonyEricssonS500c/R8BE Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     13 SAMSUNG-SGH-X708/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU5MDkxMDAwMTk3MTY2 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
     13 SAMSUNG-SGH-U608/1.0 Release/1.24.2007 Browser/NetFront3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
     13 Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.13906/498; U; zh) Presto/2.2.0
     13 NokiaE66/1.0 (200.21.012) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
     13 NokiaE66/1.0 (110.21.006) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
     13 Nokia5000/1.0 (03.50) Profile/MIDP-2.1 Configuration/CLDC-1.1
     13 Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413
     13 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.30729)
     13 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler 4.0; .NET CLR 2.0.50727; CIBA)
     13 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)
     13 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)
     13 MOT-V3ie/08.02.03R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
     13 MOT-MPx220/1.390 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)
     13 Lenovo-S700/CMCC_S101 LMP/LML Release/2008.12.24 Profile/MIDP2.0 Configuration/CLDC1.1
     13
     12 SonyEricssonW610c/R1JD Release/Jan-23-2007 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
     12 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14205/498; U; zh) Presto/2.2.0
     12 Opera/9.50 (Windows NT 5.1; U; en)
     12 Opera/9.5 (Microsoft Windows; PPC; Opera Mobi/1184; U; zh-cn)
     12 Nokia6670/2.0 (7.0642.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
     12 Nokia6220c-1
     12 NOKIA6120c UCWEB/6.0
     12 NOKIA5630d-1/UCWEB7.0.0.33/28/999
     12 Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/11.0.021; Profile/MIDP-2.1 Configuration/CLDC-1.1; en-us) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.12344
     12 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN85-1/10.045; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
     12 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN79-1/11.049; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
     12 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2)
     12 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; MAXTHON 2.0)
     12 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Nokia N70/5.0741.4.0.1; 7185) Opera 8.51 [zh-CN]
     12 Mozilla/3.0 (compatible)
     12 LCT_X700B_01/LBFM401A/WAP2.0Profile
     11 dopod830/5.1.65/WAP1.2 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)
     11 UCWEB6.0
     11 SonyEricssonW908c/R1FA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1
     11 SonyEricssonW508/R1EA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1 JavaPlatform/JP-8.4.2
     11 SonyEricssonK770i/R8BC Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     11 SonyEricssonC902/R3EA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1 JavaPlatform/JP-8.3.3
     11 Opera/9.5 (Windows NT 5.1; U; Meizu M8; MEIZU Version/1.0;M81B08AIBQVI80353; zh-cn)
     11 NokiaE66
     11 Nokia7360/2.0 (05.22) Profile/MIDP-2.0 Configuration/CLDC-1.1
     11 Nokia7260/2.0 (06.20) Profile/MIDP-2.0 Configuration/CLDC-1.1
     11 Nokia7100s/1.0 (05.22) Profile/MIDP-2.1 Configuration/CLDC-1.1
     11 Nokia6060/2.0 (5.11) Profile/MIDP-2.0 Configuration/CLDC-1.1
     11 Nokia5300/2.0 (04.71) Profile/MIDP-2.0 Configuration/CLDC-1.1
     11 Nokia3110c/2.0 (07.01) Profile/MIDP-2.0 Configuration/CLDC-1.1
     11 Nokia3110c/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
     11 Nokia2610/2.0 (06.70) Profile/MIDP-2.0 Configuration/CLDC-1.1
     11 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5 (.NET CLR 3.5.30729)
     11 DopodC720W/Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 320x240)
     11 AHONG_D09+
     10 dopod P660_CMCC/5.2.1941/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.7)
     10 dopod C720/5.2.968/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone)
     10 ZTE-D90PLUS/1.0 SMIT-Browser/2.0.0 CTC/1.0
     10 TCL-e300/w05.44.08/WAP-2.0/MIDP-2.0 Configuration/CLDC-1.0
     10 SonyEricssonW810c/R4EA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     10 SonyEricssonW595/R3DA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1 JavaPlatform/JP-8.3.2
     10 SAMSUNG-SGH-E848/1.0 Release/2.21.2007 Browser/NetFront3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
     10 SAMSUNG-GT-I8510T/1.0 SymbianOS/9.3 Series60/3.2 Release/5.30.2008 Browser/OSS3.1 Profile/MIDP-2.1 Configuration/CLDC-1.1
     10 RT240X320/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0
     10 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14320/866; U; zh) Presto/2.2.0
     10 Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.11355/866; U; zh) Presto/2.2.0
     10 Opera/9.60 (J2ME/MIDP; Opera Mini/4.0.10592/498; U; zh) Presto/2.2.0
     10 NokiaN72/5.0819.4.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
     10 NokiaE66/1.0 (100.21.108) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
     10 Nokia7610/2.0 (6.0525.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
     10 Nokia6670/2.0 (5.0509.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
     10 Nokia6300/2.0 (06.01) Profile/MIDP-2.0 Configuration/CLDC-1.1
     10 Nokia5610_CMCC/2.0 (08.20) Profile/MIDP-2.1 Configuration/CLDC-1.1
     10 Nokia5200/2.0 (05.00) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
     10 Nokia5200/2.0 (03.93) Profile/MIDP-2.0 Configuration/CLDC-1.1
     10 NOKIAN76/UCWEB7.0.0.33/28/999
     10 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.1; TheWorld)
     10 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322)
     10 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 1.7)
     10 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7)
     10 MX8/1.00 Nucleus RTOS/V1.11.19 MTK6225/07B Release/04.25.2008 Browser/Teleca Profile/MIDP-2.0 Configuration/CLDC-1.0
     10 LENOVO-V517/(2006.03.07)Ver01.16/WAP2.0
      9 malata_MT126
      9 SonyEricssonW995/R1EA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1 JavaPlatform/JP-8.4.2
      9 SHARP/1.0/SH9010C/SHC001 Mozilla/4.08 (compatible) Browser/NF/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
      9 SAMSUNG-SGH-J708_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/10.22.2007 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.102 (GUI) MMP/2.0 Untrusted/1.0
      9 NokiaN81(51.01)/SymbianOS/9.1 Series60/3.0
      9 NokiaN-GageQD/1.0 SymbianOS/6.1 Series60/1.2 Profile/MIDP-1.0 Configuration/CLDC-1.0/UCWEB7.0.0.33/26/999
      9 Nokia6120c/6.01 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/6.01; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) Mozilla/5.0 AppleWebKit/413 (KHTML, like Gecko) Safari/413
      9 Nokia6030/2.0 (y4.10) Profile/MIDP-2.0 Configuration/CLDC-1.1
      9 Nokia5220/2.0 (04.86) Profile/MIDP-2.1 Configuration/CLDC-1.1
      9 Nokia3500c/2.0 (05.51) Profile/MIDP-2.0 Configuration/CLDC-1.1
      9 NOKIAN95/UCWEB7.0.0.33/28/999
      9 Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.8.0.9) Gecko/20070118 gecko Red Hat/1.5.0.9-10.el5 Firefox/1.5.0.9 pango-text GoBrowser
      9 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN85-1/30.019; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      9 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
      9 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; icafe8)
      9 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TheWorld)
      9 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727)
      9 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      9 MOT-V3c/1.01 UP.Browser/6.2.3.9 (GUI) MMP/2.0
      9 MOT-RAZRV3x/85.9B.C0R MIB/BER2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1
      9 MOT-C261/0.1.75 UP.Browser/6.2.3.9.c.12 (GUI) MMP/2.0
      9 Lenovo-S50/S101 LMP/XM Release/2007.11.13 Profile/MIDP2.0 Configuration/CLDC1.1
      9 (C)NokiaN79/SymbianOS/9.1 Series60/3.0
      8 dopod S1_CMCC/5.2.1235/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.6)
      8 TIANYU-KTOUCH/A662/MIDP2.0/CLDC1.1/Screen-240X320
      8 SonyEricssonW950i/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 598) Opera 8.65 [zh-CN]
      8 SonyEricssonK530c/R8BA Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      8 Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.11355/498; U; zh) Presto/2.2.0
      8 Opera/9.0 (CoolPad6168H/CMCC WindowsceOS/5.0/(2009.04.05)03.05.6168H/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1; U; zh-cn)
      8 Openwave
      8 Nokia6600s/2.0 (06.14) Profile/MIDP-2.1 Configuration/CLDC-1.1
      8 Nokia6120c(B12.01)/SymbianOS/9.1 Series60/3.0
      8 Nokia3110c/2.0 (06.02) Profile/MIDP-2.0 Configuration/CLDC-1.1
      8 Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.2) Gecko/20090730 SUSE/3.5.2-2.1 Firefox/3.5.2
      8 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2,gzip(gfe) (via translate.google.com)
      8 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE71-1/200.21.118; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      8 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE63-1/100.21.110; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      8 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6)
      8 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)
      8 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)
      8 MOT-E680i/E680I_G_0D.C3.A8P Mozilla/4.0 (compatible; MSIE 6.0; Linux; Motorola E680i; 1030) Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera 7.50 [zh-cn]
      8 LCT_D450B_01/LBYM510A/WAP2.0 Profile
      8 GIONEE-N73/SW1.0.0/WAP2.0
      7 dopod S1_CMCC/5.2.1235/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UCWEB7.0.0.33/31/999
      7 UNISTARL500
      7 TIANYU-KTOUCH/A903/MIDP2.0/CLDC1.1/Screen-240X320
      7 TIANYU-KTOUCH/A7726/MIDP2.0/CLDC1.1/Screen-240x320
      7 SonyEricssonW580i/R8BE Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 SonyEricssonK800c/R8BA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 SonyEricssonK750c/R1BC/SN359302000258027 Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 SonyEricssonK510c/R4CH Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 SAMSUNG-SGH-Z548/Openwave 7.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 SAMSUNG-SGH-J700/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      7 SAMSUNG-SGH-D828E/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUxNzk5MDEwMzc1NzMz UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      7 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.13934/498; U; zh) Presto/2.2.0
      7 NokiaE71/1.0 (200.21.012) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 NokiaE63/1.0(101.21.010) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 Nokia7360/2.0 (04.90) Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 Nokia7260/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 Nokia6300/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 Nokia6288/2.0 (05.92) Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 Nokia6070/2.0 (04.23) Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 Nokia5730S-1/UCWEB7.0.0.33/28/999
      7 Nokia5310/2.0 (07.01) Profile/MIDP-2.1 Configuration/CLDC-1.1
      7 Nokia5070/2.0 (04.21) Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 Nokia3230/SymbianOS/8.0 Series60/2.6
      7 Nokia3110c/2.0 (07.21) Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 Nokia2660_CMCC/2.0 (05.66) Profile/MIDP-2.1 Configuration/CLDC-1.1
      7 NOKIAN73
      7 NOKIA5700/UCWEB7.0.0.33/28/999
      7 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN81-3/21.0.010 Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      7 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 584)
      7 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; TencentTraveler 4.0; (R1 1.6); .NET CLR 2.0.50727)
      7 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; MAXTHON 2.0)
      7 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Nokia N70/5.0706.4.0.1; 7185) Opera 8.51 [zh-CN]
      7 MOT-L7/08.D5.08R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      7 LENOVO-E209_CMCC/S105 LMP/XM Release/2008.02.18
      7 KONKA_D263/KAA263_0.93.C01 Nucleus/1.0 MTK/6226 Release/0C.01.2005 Browser/Teleca_obigo Profile/MIDP-1.0 Configuration/CLDC-1.0
      7 BIRD E810/1.00 Nucleus RTOS/V1.11.19 MTK6227/06A Release/12.28.2006 Browser/Teleca Profile/MIDP-2.0 Configuration/CLDC-1.0
      7 AHONG_6225_176X220/1.0
      6 dopod P800/5.1.342/WAP1.2 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)
      6 ZTE-Me/Mobile
      6 SonyEricssonW580c_CMCC/R8BE SEMC-SW/R8BE Release/01.15.2008 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      6 SonyEricssonW350c/R11AA Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      6 SonyEricssonK700c/R2AE SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      6 SonyEricssonK310c/R4DA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      6 SAMSUNG-SGH-i908E_CMCC/1.0 Release/03.07 Browser/IE6 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UCWEB7.0.0.33/31/999
      6 SAMSUNG-SGH-i908E_CMCC/1.0 Release/03.07 Browser/IE6 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mozilla/4.0 (compatible; MSIE 4.01
      6 SAMSUNG-SGH-G608/1.0 RTK-E/1.0 DF/1.0 Release/06.22.2007 Browser/NetFront3.4  Profile/MIDP-2.0 Configuration/CLDC-1.1
      6 SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      6 Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.12142/498; U; zh) Presto/2.2.0
      6 NokiaN72/SymbianOS/8.0 Series60/2.6
      6 Nokia7210c/2.0 (05.60) Profile/MIDP-2.1 Configuration/CLDC-1.1
      6 Nokia6208c/2.0 (04.51) Profile/MIDP-2.1 Configuration/CLDC-1.1
      6 Nokia6108/1.0 (05.30) Profile/MIDP-1.0 Configuration/CLDC-1.0
      6 Nokia6030/2.0 (5.20) Profile/MIDP-2.0 Configuration/CLDC-1.1
      6 Nokia5320(19.01)/SymbianOS/9.1 Series60/3.0
      6 Nokia5300/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
      6 Nokia5300/2.0 (03.93) Profile/MIDP-2.0 Configuration/CLDC-1.1
      6 Nokia5130/2.0 (06.65) Profile/MIDP-2.1 Configuration/CLDC-1.1
      6 Nokia5000/1.0 (05.45) Profile/MIDP-2.1 Configuration/CLDC-1.1
      6 Nokia2610/2.0 (06.72) Profile/MIDP-2.0 Configuration/CLDC-1.1
      6 Nokia2610/2.0 (06.70) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      6 NOKIAN95 8GB
      6 Mozilla/5.0 (iPod; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16
      6 Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5
      6 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13
      6 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN78-1/13.052; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      6 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/6.01; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      6 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; FunWebProducts; InfoPath.2)
      6 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727)
      6 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      6 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; 360SE)
      6 MOT-A810/1.0 LinuxOS/2.4.20 Release/6.10.2008 Browser/Opera8.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/GSM_E28.24.1_G_11.00.85R
      6 LenovoI399_CMCC/S100 LMP/SH Release/2008.01.09 Profile/MIDP-2.0 Configuration/CLDC-1.1
      6 LCT_D500B_01/LBDM510A/WAP2.0 Profile
      6 HEDY_H797_PLXBROW
      6 Amoi-E65/Plat-V-FT/WAP2.0/MIDP2.0/CLDC1.0
      6 AHONG_D08/1.0
      5 dopod D600_CMCC/5.1.422/WAP1.2 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
      5 dopod D600_CMCC UCWEB6.0
      5 SonyEricssonZ520i/R3C Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1
      5 SonyEricssonW958c/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 306) Opera 8.60 [zh-CN]
      5 SCH-X939 UP.Browser/6.2.3.2 (GUI) MMP/2.0
      5 SAMSUNG-SGH-i908/1.0 Opera 9.5
      5 SAMSUNG-SGH-i608/1.0 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.6)
      5 SAMSUNG-SGH-M618/M618ZCGI6/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU5MDk4MDEyOTEwNjc2 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      5 SAMSUNG-SGH-CC03_CMCC/1.0 RTK-E/1.0 SYSOL/1.0 Release/09.01.2007 Browser/OpenWave6.2.3.3.c.1.101/*MzUzODY2MDI4MjA3NTI3 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      5 SAMSUNG-SGH-CC03_CMCC/1.0 RTK-E/1.0 SYSOL/1.0 Release/09.01.2007 Browser/OpenWave6.2.3.3.c.1.101/*MzUzODY2MDI3MjUxNzQw UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      5 SAMSUNG-C3310C_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/11.05.2008 Browser/NetFront3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
      5 Opera/8.01 (J2ME/MIDP; Opera Mini/3.1.8540/1712; zh; U; ssr)
      5 OPENWAVE
      5 NokiaN82/1.0 (20.1.062) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      5 NokiaN72/ 5.0741.4.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB7.0.0.33/27/999
      5 NokiaN70/SymbianOS/8.0 Series60/2.6
      5 NokiaE50-1/3.0 (07.36.0.0) SymbianOS/9.1 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      5 Nokia9300/5.51 Series80/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      5 Nokia7610/SymbianOS/8.0 Series60/2.6
      5 Nokia7310c_CMCC/2.0 (09.40) Profile/MIDP-2.1 Configuration/CLDC-1.1
      5 Nokia7210c/2.0 (04.86) Profile/MIDP-2.1 Configuration/CLDC-1.1
      5 Nokia6670/2.0 (6.0525.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
      5 Nokia6300/2.0 (07.30) Profile/MIDP-2.0 Configuration/CLDC-1.1
      5 Nokia6220c-1/UCWEB7.0.0.33/28/999
      5 Nokia6208c/2.0 (03.60) Profile/MIDP-2.1 Configuration/CLDC-1.1
      5 Nokia5610_CMCC/2.0 (05.82) Profile/MIDP-2.1 Configuration/CLDC-1.1 nokia5610 UNTRUSTED/1.0
      5 Nokia5300/2.0 (04.71) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      5 Nokia5200/2.0 (03.70) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      5 Nokia5130/2.0 (05.80) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      5 Nokia5070/2.0 (04.22) Profile/MIDP-2.0 Configuration/CLDC-1.1
      5 Nokia5000/1.0 (06.31) Profile/MIDP-2.1 Configuration/CLDC-1.1
      5 Nokia3500c/2.0 (06.01) Profile/MIDP-2.0 Configuration/CLDC-1.1
      5 Nokia2680s_CMCC/1.0 (05.42) Profile/MIDP-2.1 Configuration/CLDC-1.1
      5 Nokia2610/2.0 (05.90) Profile/MIDP-2.0 Configuration/CLDC-1.1
      5 NOKIAN82/UCWEB7.0.0.33/28/800
      5 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN85-1/11.047; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      5 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN81-3/10.0.035 Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      5 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE90-1/400.34.93 Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      5 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE66-1/102.07.81; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      5 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/3.83; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      5 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      5 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; 360SE)
      5 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322)
      5 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
      5 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1; .NET CLR 2.0.50727)
      5 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
      5 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Xda Orbit; 240x320)/UCWEB7.0.0.33/31/6500
      5 MOT-L7/08.D5.09R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      5 MOT-A1200e/1.0 LinuxOS/2.4.20 Release/1.31.2007 Browser/Opera8.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R541_G_11.56.14R
      5 LenovoP768/S100 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      5 Lenovo-X1m/S102 LMP/LML Release/2008.11.21 Profile/MIDP2.0 Configuration/CLDC1.1
      5 KG70c/1.0 UP.Browser/6.2.3.8 (GUI) MMP/2.0
      5 HW-C5600/C5600C58B401 ACS-NETFRONT/3.2 CTC/1.0
      5 CO518
      4 msnbot/1.1 (+http://search.msn.com/msnbot.htm)
      4 dopod P800/5.1.342/WAP1.2 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)
      4 XJXN-F420/(2006.12.25)M.RF4201111.M01001.V1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0
      4 W200_176220_WBMPGIFJPEGMIDI
      4 UNTRUSTED/1.0/WAP2.0/MIDP2.0/CLDC1.0
      4 TCL_A288_01/L3M0501.1.0_M411A/WAP2.0 Profile
      4 SonyEricssonW908c/R1FA Profile/MIDP-2.1 Configuration/CLDC-1.1
      4 SonyEricssonW880i/R1JC Release/Jan-22-2007 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 SonyEricssonW610i//R6BC Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 SonyEricssonW580c_CMCC/R8BA SEMC-SW/R8BA Release/10.10.2007 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 SonyEricssonW395c/R1CB Browser/OpenWave/1.0 Profile/MIDP-2.1 Configuration/CLDC-1.1
      4 SonyEricssonW350c/R11CA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 SonyEricssonS500i/R8BE Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 SonyEricssonK530c/R8BA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 SKYWORTH-T610/J5C/WAP2.0
      4 SAMSUNG-SGH-i718/MSIE4.01/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 (compatible; MSIE 6.0; Windows CE; IEMobile 6.8)
      4 SAMSUNG-SGH-J708_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/10.22.2007 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1 Untrusted/1.0
      4 SAMSUNG-SGH-J608/1.0 Release/4.13.2007 Browser/NetFront3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU3Nzk5MDEzNjUwODU0
      4 SAMSUNG-SGH-J608/1.0 Release/4.13.2007 Browser/NetFront3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU3Nzk5MDExMzc5NDcy
      4 SAMSUNG-SGH-E958/1.0 Release/7.11.2007 Browser/NetFront3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU3ODIzMDEwNjM4OTE4
      4 SAMSUNG-SGH-E498/NetFront 3.2/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU1MDE4MDExNDQ2MTEy
      4 SAMSUNG-SGH-E378/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      4 SAMSUNG-SGH-E208/1.0 RTK-E/1.0 DF/1.0 Release/11.27.2006 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU2Mzg5MDExNTc0NDQ2 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      4 SAMSUNG-SGH-C288_CMCC/1.0 RTK-E/1.0 SYSOL/1.0 Release/09.01.2007 Browser/OpenWave6.2.3.3.c.1.101/*MzU1NTgwMDI2NTkyMzIx UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      4 SAMSUNG-GT-C3050C/1.0 Release/1.19.2009 Browser/Openwave6.2.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      4 SAMSUNG-E1100C_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/17.08.2007 Browser/OpenWave6.2.3.3.c.1.101/*MzU5ODkzMDIxNjc2OTgx UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      4 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.13559/498; U; zh) Presto/2.2.0
      4 Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.13572/866; U; zh) Presto/2.2.0
      4 Opera/9.60 (J2ME/MIDP; Opera Mini/4.0.10592/498; U; en) Presto/2.2.0
      4 NokiaN81/ SymbianOS/9.2 Series60/3.1 Release/20.1.009 Mozilla/5.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML, like Gecko) Safari/413
      4 NokiaN78/SymbianOS/9.3 Series60/3.2 Release/12.046; Mozilla/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML,like Gecko) Safari/413
      4 NokiaN73(S4.01)/SymbianOS/9.1 Series60/3.0
      4 NokiaN70-1/2.0539.1.2 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 Nokia7260/2.0 (06.22) Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 Nokia7210c/2.0 (05.20) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      4 Nokia7210c/2.0 (05.20) Profile/MIDP-2.1 Configuration/CLDC-1.1
      4 Nokia7100s/1.0 (06.31) Profile/MIDP-2.1 Configuration/CLDC-1.1
      4 Nokia6300/2.0 (07.00) Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 Nokia6070/2.0 (04.21) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      4 Nokia6070/2.0 (04.21) Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 Nokia6070/2.0 (04.20) Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 Nokia5802 XpressMusic/UCWEB7.0.0.33/50/999
      4 Nokia5700/3.83.1 (SymbianOS/9.2; U; Series60/3.1 ; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) Mozilla/5.0 AppleWebKit/413 (KHTML, like Gecko) Safari/413
      4 Nokia5610d-1/2.0 (04.81) Profile/MIDP-2.1 Configuration/CLDC-1.1
      4 Nokia5610_CMCC/2.0 (05.82) Profile/MIDP-2.1 Configuration/CLDC-1.1
      4 Nokia5320_CMCC/04.13 (SymbianOS/9.3; U; Series60/3.2 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      4 Nokia5310_CMCC/2.0 (09.42) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      4 Nokia5310/2.0 (09.42) Profile/MIDP-2.1 Configuration/CLDC-1.1
      4 Nokia5300/2.0 (07.00) Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 Nokia5220/2.0 (04.00) Profile/MIDP-2.1 Configuration/CLDC-1.1
      4 Nokia5200/2.0 (05.53) Profile/MIDP-2.0 Configuration/CLDC-1.1 nokia5200 UNTRUSTED/1.0
      4 Nokia3500c/2.0 (07.21) Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 Nokia3110c/2.0 (06.60) Profile/MIDP-2.0 Configuration/CLDC-1.1 Mozilla/4.0 (compatible; MSIE 4.0; ) Opera UNTRUSTED/1.0
      4 Nokia2630_CMCC/2.0 (05.61) Profile/MIDP-2.1 Configuration/CLDC-1.1
      4 Nokia2610/2.0 (04.90) Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 Nokia N96
      4 NOKIANokia N81 8GB
      4 NOKIAN82/UCWEB7.0.0.33/28/999
      4 NOKIAE61i
      4 Mozilla/6.0 (compatible; MSIE 6.0; ) Opera
      4 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13
      4 Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/11.0.008; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      4 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95_8GB/31.0.015; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      4 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN81-3/11.0.045 Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      4 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/4.21; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.1) Gecko/2008070206 (CK-Amazon.com) Firefox/3.0.1,gzip(gfe) (via translate.google.com)
      4 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)
      4 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; zh-cn) Opera 8.54
      4 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler 4.0)
      4 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727)
      4 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MAXTHON 2.0)
      4 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CIBA)
      4 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
      4 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 2.0.50727)
      4 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CNCDialer)
      4 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)
      4 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Series 60/.002; 9730) Opera 8.65 [zh-CN]
      4 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Nokia N70/5.0717.2.5.1; 9404) Opera 8.65 [zh-CN]
      4 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Nokia N70/2.0635.3.0.2; 7185) Opera 8.51 [zh-CN]
      4 MOT-MOTOROKREM30_CMCC/1.0 LinuxOS/2.6.10 Release/07.18.2008 Browser/OSS1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R6716_G_71.01.23R_A
      4 MOT-E375/0E.23.10R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
      4 MOT-A1200r/1.0 LinuxOS/2.4.20 Release/8.22.2006 Browser/Opera8.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R532C2_G_11.30.32P
      4 Lenovo-S5/CMCC_S106 LMP/XM Release/2007.06.29 Profile/MIDP2.0 Configuration/CLDC1.1
      4 LG-KF510_CMCC/07.02.00 Infineon/SGold3 Release/05.10.2007 Browser/Teleca Q05a Profile/MIDP-2.0 Configuration/CLDC-1.1
      4 LENOVO-ET980/(2005.10.01)Ver1.0.1/WAP2.0 Profile/MIDP-2.0  Configuration/CLDC-1.1/ Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
      4 HTC_P5500 Mozilla/4.0
      4 HTC-2125/1.2 Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 240x320)
      4 GIONEE-L6/SW1.0.0/WAP2.0
      4 Dopod575/4.21.1088/WAP1.2 Profile/MIDP2.0  Configuration/CLDC1.0/Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)
      4 BlackBerry8100/4.5.0.124 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/120
      4 BIRD E818/1.00 Nucleus RTOS/V1.11.19 MTK6227/06A Release/12.28.2006 Browser/Teleca Profile/MIDP-2.0 Configuration/CLDC-1.0
      4 AHONG_D16/1.0
      3 dopod T8288_CMCC/5.2.19965/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.1 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)
      3 dopod T4288/5.2.20761/WAP2.0 profile/MIDP2.0 Configuration/CLDC1.1 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)
      3 dopod P860_CMCC/5.2.1620/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UCWEB7.0.0.33/31/999
      3 SonyEricssonZ770i/R1FA Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 SonyEricssonW800c/R1BC Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      3 SonyEricssonW800c/L33m411/WAP2.0 profile
      3 SonyEricssonW710c/R1EE Release/Sep-03-2006 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      3 SonyEricssonW595c/R3EA Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 SonyEricssonW350c/R11AA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      3 SonyEricssonK850i/R1CA Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 SonyEricssonK790c/R1GB Release/Nov-30-2006 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      3 SonyEricssonK550c/R1JD Release/Jan-23-2007 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      3 SonyEricssonK550c//R6BC Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      3 SonyEricssonF305c/R1DA Browser/OpenWave/1.0 Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 SCH-W629 Infraware/5.10.CU (GUI)
      3 SAMSUNG-SGH-i908E_CMCC/1.0 Release/03.07 Browser/IE6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)
      3 SAMSUNG-SGH-U700/1.0 SHP/VPP/R5 NetFront/3.4 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1
      3 SAMSUNG-SGH-F258/1.0 RTK-E/1.0 DF/1.0 Release/07.04.2007 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU5MzM4MDEyOTAyMDM4 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      3 SAMSUNG-SGH-E738/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU2OTAxMDAwOTI5NzAy UP.Browser/6.2.3.3.c.1.102 (GUI) MMP/2.0
      3 SAMSUNG-SGH-E398/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUzNDU4MDE2MTM2NzU5 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      3 SAMSUNG-SGH-D908/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUxODEyMDExNjYzOTQ4 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      3 SAMSUNG-SGH-D828E/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUxNzk5MDEwMzUxNzkx UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      3 SAMSUNG-SGH-C458/1.0 RTK-E/1.0 SYSOL/1.0 Release/05.01.2007 Browser/OpenWave6.2.3.3.c.1.102 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU4NTY1MDEyMDUzNzQw UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      3 SAMSUNG-SGH-C188-CMCC/RAINBOW 3.0/WAP1.2/*MzU1Mzk1MDE3MDg3NjE1
      3 RT240X320/M.RR4960001.M01002.V1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0
      3 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.13918/498; U; zh) Presto/2.2.0
      3 Opera/9.60 (J2ME/MIDP; Opera Mini/4.0.13574/498; U; zh) Presto/2.2.0
      3 Opera/8.01 (J2ME/MIDP; Opera Mini/3.1.8295/1724; zh; U; ssr)
      3 NokiaN78/UCWEB7.0.0.33/28/999
      3 NokiaN76
      3 NokiaN72/5.0819.4.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB7.0.0.33/27/999
      3 NokiaN70//SN355721020557858 5.0741.4.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
      3 NokiaN70-1/2.0539.1.2 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1 UCWEB/5.1
      3 NokiaE71/1.0 (100.21.108) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      3 Nokia8310/1.0 (06.01)
      3 Nokia7650/1.0 SymbianOS/6.1 Series60/0.9 Profile/MIDP-1.0 Configuration/CLDC-1.0
      3 Nokia7500/2.0 (05.21) Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 Nokia7500/2.0 (03.42) Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 Nokia7360/2.0 (03.21) Profile/MIDP-2.0 Configuration/CLDC-1.1
      3 Nokia7310c_CMCC/2.0 (08.20) Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 Nokia7100s/1.0 (06.32) Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 Nokia7100s/1.0 (05.41) Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 Nokia7070_CMCC/2.0 (06.35) Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 Nokia6680/1.0 (5.04.40) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1
      3 Nokia6600s/2.0 (05.23) Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 Nokia6288/2.0 (04.43) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      3 Nokia6220c/04.13 (SymbianOS/9.3; U; Series60/3.2 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      3 Nokia6120ciB11.01/SymbianOS/9.1 Series60/3.0
      3 Nokia6120c/6.51 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/6.51; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) Mozilla/5.0 AppleWebKit/413 (KHTML, like Gecko) Safari/413
      3 Nokia6108/1.0 (05.04) Profile/MIDP-1.0 Configuration/CLDC-1.0
      3 Nokia5630
      3 Nokia5530
      3 Nokia5220/2.0 (05.63) Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 Nokia5200/2.0 (05.53) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
      3 Nokia5200/2.0 (04.71) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      3 Nokia3500c/2.0 (07.21) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
      3 Nokia3230/2.0 (5.0717.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0/UCWEB7.0.0.33/27/999
      3 Nokia3230/2.0 (5.0625.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0/UCWEB7.0.0.33/27/999
      3 Nokia3110c/2.0 (06.02) Profile/MIDP-2.0 Configuration/CLDC-1.1 nokia3110c UNTRUSTED/1.0
      3 Nokia3100/1.0 (06.31) Profile/MIDP-1.0 Configuration/CLDC-1.0
      3 Nokia3100/1.0 (05.91) Profile/MIDP-1.0 Configuration/CLDC-1.0
      3 Nokia2680s/1.0 (06.17) Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 Nokia2610/2.0 (05.65) Profile/MIDP-2.0 Configuration/CLDC-1.1
      3 Nokia2610/2.0 (04.90) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      3 Nokia2600c/2.0 (05.22) Profile/MIDP-2.1 Configuration/CLDC-1.1
      3 NOKIAN91
      3 NOKIA6120c/UCWEB7.0.0.33/28/800
      3 NOKIA5320/UCWEB7.0.0.33/28/999
      3 NOKIA3250/UCWEB7.0.0.33/28/999
      3 N79/SymbianOS/9.1 Series60/3.0
      3 Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A102 Safari/419.3
      3 Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; zh-cn) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20
      3 Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)
      3 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN78-1/20.149; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      3 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN78-1/12.046; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      3 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN82/20.0.062; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      3 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE71-2/200.21.118; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      3 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE71-1/110.07.127; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      3 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE71-1/100.07.76; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      3 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE63-1/200.21.012; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      3 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE63-1/110.21.006; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      3 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      3 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; MAXTHON 2.0)
      3 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.1)
      3 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; 360SE)
      3 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 538)
      3 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
      3 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
      3 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) )
      3 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; InfoPath.1)
      3 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.1.4322)
      3 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Alexa Toolbar)
      3 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; CIBA)
      3 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Alexa Toolbar)
      3 Mozilla/4.0 (compatible; MSIE 6.0; ) Opera
      3 MOT-MOTOZINEZN5_CMCC/1.0 LinuxOS/2.6.10 Release/02.01.2008 Browser/OSS1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R6637_G_81.02.0BR
      3 MOT-L7i/AAUG2135AA Release/07.18.2006 MIB/BER2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 EGE/1.0 Software/08.03.0ER
      3 MOT-A1200e/1.0 LinuxOS/2.4.20 Release/1.31.2007 Browser/Opera8.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R541_G_11.56
      3 LG-KG90 MIC/WAP2.0 MIDP-2.0/CLDC-1.1
      3 LG-G639/V100/WAP2.0  Profile/MIDP-2.0  Configuration/CLDC-1.0
      3 LENOVO-i301/1.0 Release/070904 Browser/mBrowser4.0
      3 LENOVO-S90/(071119)S003 Browser/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      3 KBT_X730A_C02/LBYM511B/WAP2.0 Profile
      3 Haier-HG-V76/1.0 RTKE_OS/01.00 SS5210/8.0 Release/12.31.2007 Browser/Techsoft-01.00.00 Profile/MIDP-2.0 Configuration/CLDC-1.1
      3 Haier-HG-V70-CMCC/1.0 Release/03.25.2008 Browser/Obigo2.0
      3 GIONEE-Q8/SW1.0.0/WAP2.0
      3 GIONEE-H66/SW1.0.0/WAP2.0
      3 Bird.M19/LO,901/WAP2.0/MIDP-2.0/CLDC-1.1 Browser/UP.Browser/7.1.0.f.1.144 (GUI)
      3 A11/1.0 MTK_6217/2.0
      2 dopod310/5.1.195/WAP1.2 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone)
      2 dopod S1_CMCC/5.2.1235/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.0
      2 dopod C858g/5.1.422/WAP1.2 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0
      2 dopod 595/Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)
      2 ZTEA833_CMCC/07 Release/22.11.2007 Browser/wap2.0 Sync/SyncClient1.1
      2 Xda Orbit; 240x320 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)
      2 UNISCOPE-U2/(2006.01.01)Ver1.0.1/WAP1.2
      2 TIANYU-KTOUCH/A612/MIDP2.0/CLDC1.1/Screen-240x320
      2 TCL A618/1.0 MTK/W08.16 Release/01.01.2008 Browser/Teleca-1.2 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 SonyEricssonZ610i/R1JG Release/Feb-15-2007 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 SonyEricssonW980/R3EA Profile/MIDP-2.1 Configuration/CLDC-1.1
      2 SonyEricssonW910i/R1FA Profile/MIDP-2.1 Configuration/CLDC-1.1
      2 SonyEricssonW910i/R1FA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1
      2 SonyEricssonW595c/R3EA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1 JavaPlatform/JP-8.3.3
      2 SonyEricssonW595c/R3DA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1 JavaPlatform/JP-8.3.2
      2 SonyEricssonW595/R3EA Profile/MIDP-2.1 Configuration/CLDC-1.1
      2 SonyEricssonW595/R3DA Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0
      2 SonyEricssonW580c_CMCC/R8BE SEMC-SW/R8BE Release/01.15.2008 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 SonyEricssonW580c_CMCC/R8BA SEMC-SW/R8BA Release/10.10.2007 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      2 SonyEricssonW395c/R1CB Browser/OpenWave/1.0 Profile/MIDP-2.1 Configuration/CLDC-1.1, SonyEricssonW395c/R1CB Browser/OpenWave/1.0 Profile/MIDP-2.1 Configuration/CLDC-1.1
      2 SonyEricssonW200c/R4GB Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 SonyEricssonW200c/R4GB Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 SonyEricssonT628/R601 Profile/MIDP-1.0 Configuration/CLDC-1.0
      2 SonyEricssonT628/R401 Profile/MIDP-1.0 Configuration/CLDC-1.0
      2 SonyEricssonP990i/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 513) Opera 8.65 [zh-CN]
      2 SonyEricssonK800i/R1JG Release/Feb-15-2007 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 SonyEricssonK790c/R1KG Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 SonyEricssonK750c/R1DB/SN353785011672242 Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 SonyEricssonK750c/R1DB Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 SonyEricssonK750c/R1AA Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      2 SonyEricssonK310c/R4EA Release/Aug-17-2006 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 SonyEricssonC905/R1DA Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0 SonyEricssonC905/R1DA032(DaTou2009 Universal/1.0 20
      2 SonyEricssonC702c/R3EA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1 JavaPlatform/JP-8.3.3
      2 SCH-W579 UP.Browser/6.2.3.8 (GUI) MMP/2.0
      2 SAMSUNGSGH-I408
      2 SAMSUNG-SGH-i900/1.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
      2 SAMSUNG-SGH-i718plus_CMCC/1.0 Release/03.07 Browser/IE6 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 SAMSUNG-SGH-Z140/1.0 SHP/VPP/R5 SMB3.1 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1
      2 SAMSUNG-SGH-X838/NetFront 3.2/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUzMTIzMDEwMTE1NDI5
      2 SAMSUNG-SGH-U708/1.0 SHP/VPP/R5 NetFront/3.4 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1 UNTRUSTED/1.0
      2 SAMSUNG-SGH-M628_CMCC/1.0 Release/2.28.2008 Browser/Openwave6.2.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      2 SAMSUNG-SGH-J808E_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/07.04.2007 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU1NjgyMDIxODEzMDMx UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      2 SAMSUNG-SGH-G808/1.0 SHP/VPP/R5 NetFront/3.4 Qtv/5.3 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1
      2 SAMSUNG-SGH-E898/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUzMjA5MDEyNDQ1MDQ1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      2 SAMSUNG-SGH-E848i/1.0 RTK-E/1.0 DF/1.0 Release/04.14.2007 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU0NjI4MDIxMzIwMjYy UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      2 SAMSUNG-SGH-E258/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUzNDY0MDE3NzY5MTg0 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      2 SAMSUNG-SGH-E258/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUzNDY0MDE2NTI3MTEy UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      2 SAMSUNG-SGH-E258/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 Untrusted/1.0
      2 SAMSUNG-SGH-D528/NetFront 3.2/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU5ODUyMDAwNjE3MTY4
      2 SAMSUNG-SGH-CC03_CMCC/1.0 RTK-E/1.0 SYSOL/1.0 Release/09.01.2007 Browser/OpenWave6.2.3.3.c.1.101/*MzUzODY2MDI3MjU3MzY2 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      2 SAMSUNG-SGH-C288_CMCC/1.0 RTK-E/1.0 SYSOL/1.0 Release/09.01.2007 Browser/OpenWave6.2.3.3.c.1.101/*MzU1NTgwMDIxNjE5NjE2 UP.Brows
      2 SAMSUNG-SGH-C168_CMCC/1.0 RTK-E/1.0 SYSOL/1.0 Release/01.25.2007 Browser/OpenWave6.2.3.3.c.1.101/*MzU2NzAxMDE4Njc0Mjk0 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      2 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14839/498; U; zh) Presto/2.2.0
      2 Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.11333/866; U; zh) Presto/2.2.0
      2 Opera/9.60 (J2ME/MIDP; Opera Mini/4.0.10992/498; U; en) Presto/2.2.0
      2 Opera/8.01 (J2ME/MIDP; Opera Mini/3.1.10423/1724; zh; U; ssr)
      2 NokiaN95(D6.01)/SymbianOS/9.1 Series60/3.0
      2 NokiaN78/SymbianOS/9.3 Series60/3.2 Release/20.149; Mozilla/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML,like Gecko) Safari/413
      2 NokiaN73(S4.02)/SymbianOS/9.1 Series60/3.0
      2 NokiaN70/5.0819.2.5.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB7.0.0.33/27/999
      2 NokiaN70/5.0610.2.5.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia8600 Luna/2.0 (04.00) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia7610s/2.0 (05.20) Profile/MIDP-2.1 Configuration/CLDC-1.1
      2 Nokia7610/2.0 (6.0525.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0/UCWEB7.0.0.33/27/999
      2 Nokia7500/2.0 (05.20) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      2 Nokia7500/2.0 (03.42) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      2 Nokia7370/2.0 (04.51) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      2 Nokia6680/1.0 (5.04.07) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia6600/1.0 (5.53.0) SymbianOS/7.0s Series60/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0 UCWEB/6.0
      2 Nokia6303c/2.0 (06.40) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+
      2 Nokia6300/2.0 (04.71) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia6300/2.0 (04.20) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia6230/2.0 (03.15) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia6210s/03.09.2 (SymbianOS/9.3; U; Series60/3.2 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      2 Nokia6122c_CMCC/4.34 (SymbianOS/9.2; U; Series60/3.1 Nokia6122c_CMCC/4.34; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) Mozilla/5.0 AppleWebKit/413 (KHTML, like Gecko) Safari/413
      2 Nokia6120cAP13.03/SymbianOS/9.1 Series60/3.0
      2 Nokia6120cAP13.02/SymbianOS/9.1 Series60/3.0
      2 Nokia6120cAP13.01/SymbianOS/9.1 Series60/3.0
      2 Nokia6080/2.0 (03.40) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia6070/2.0 (04.22) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia6070/2.0 (03.22) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia6030/2.0 (5.40) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia6030/2.0 (5.30) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia6020/2.0 (04.50) Profile/MIDP-2.0 Configuration/CLDC-1.1 Nokia6020 UCWEB/6.0
      2 Nokia5310XpressMusic/2.0 (07.01) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      2 Nokia5310XpressMusic/2.0 (07.01) Profile/MIDP-2.1 Configuration/CLDC-1.1
      2 Nokia5310XpressMusic/2.0 (05.81) Profile/MIDP-2.1 Configuration/CLDC-1.1
      2 Nokia5310/2.0 (08.32) Profile/MIDP-2.1 Configuration/CLDC-1.1 nokia5310 UNTRUSTED/1.0
      2 Nokia5310/2.0 (05.81) Profile/MIDP-2.1 Configuration/CLDC-1.1
      2 Nokia5300/2.0 (07.20) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia5300/2.0 (05.00) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia5200/2.0 (07.00) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
      2 Nokia5200/2.0 (05.51) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia5200/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia5000/1.0 (05.45) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      2 Nokia3600s/2.0 (06.26) Profile/MIDP-2.1 Configuration/CLDC-1.1
      2 Nokia3230/2.0 (4.0526.2ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
      2 Nokia3220/2.0 (05.90) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia3220/2.0 (05.10) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia3120/1.0 (06.31) Profile/MIDP-1.0 Configuration/CLDC-1.0
      2 Nokia3110c/2.0 (07.21) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
      2 Nokia3110c/2.0 (06.60) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia3110c/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 Nokia2680s/1.0 (04.91) Profile/MIDP-2.1 Configuration/CLDC-1.1
      2 Nokia2626/2.0 (04.61) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      2 Nokia1680c/2.0 (05.63) Profile/MIDP-2.1 Configuration/CLDC-1.1
      2 NOKIAN76
      2 N82/SymbianOS/9.1 Series60/3.0
      2 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5
      2 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.14) Gecko/20080404 (FoxPlus) Firefox/2.0.0.14
      2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2
      2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9) Gecko/2008052906 Firefox/3.0
      2 Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/20.0.012; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      2 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia6220c-1/03.06; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      2 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
      2 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; 360SE)
      2 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.2)
      2 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      2 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; QQDownload 551; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; CIBA; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; CIBA; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; TencentTraveler 4.0)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; QQDownload 538; TencentTraveler 4.0; InfoPath.2; .NET CLR 1.1.4322; aff-kingsoft-ciba; .NET CLR 2.0.50727)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; msn OptimizedIE8;ZHCN)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; CIBA)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TheWorld)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 1.7; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; InfoPath.1)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; CIBA)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; MAXTHON 2.0)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; icafe8; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; icafe8; .NET CLR 2.0.50727)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler 4.0; .NET CLR 2.0.50727)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Sicent; .NET CLR 2.0.50727)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Sicent)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 570; TencentTraveler 4.0)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 551)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0(Compatible Mozilla/4.0(Compatible-EmbeddedWB 14.59 http://bsalsa.com/ EmbeddedWB- 14.59  from: http://bsalsa.com/ ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; CIBA)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; 360SE)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; MAXTHON 2.0)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; InfoPath.2; CIBA; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; MAXTHON 2.0)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Nokia N70/5.0741.4.0.1; 9404) Opera 8.65 [zh-CN]
      2 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Xda Orbit; 240x320)
      2 Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)
      2 MOT-Z1/1.01 UP.Browser/6.2.3.9 (GUI) MMP/2.0
      2 MOT-V730/1.0 MIB1.2/v1.0
      2 MOT-ROKR E2/1.0 R564_G_12.01.29P/12.28.2005 Mozilla/4.0 (compatible; MSIE 6.0; Linux; Motorola ROKR E2; 1860) Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera 8.50 [zh-cn]
      2 MOT-Q8_CMCC/1.0 Release/01.10.2007 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/WM6.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)
      2 MOT-L71/AAUG2163AA 08.02.06R/10.21.2005 MIB/BER2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 EGE/1.0
      2 MOT-L6/0A.60.55R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      2 MOT-K2/1.01 Infraware/5.01.CU (GUI)
      2 MOT-E680G/1.0 E680G_G_0D.C5.AEP/04.09.2006 Mozilla/4.0 (compatible; MSIE 6.0; Linux; Motorola E680G; 2186) Profile/MIDP-2.0 Con
      2 MOT-E680G/1.0 E680G_G_0D.C5.AEP/04.09.2006 Mozilla/4.0 (compatible; MSIE 6.0; Linux; Motorola E680G; 1483) Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera 8.00 [zh-cn]
      2 MOT-A810/1.0 LinuxOS/2.4.20 Release/6.10.2008 Browser/Opera8.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/GSM_E28.24.1_G_11.00.75R
      2 MOT-A1200/1.0 R532_G_11.00.48P/12.28.2005 Mozilla/4.0 (compatible; MSIE 6.0; Linux; Motorola A1200; 1555) Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera 8.00 [zh-cn]
      2 MOT-A1200/1.0 LinuxOS/2.4.20 Release/6.20.2006 Browser/Opera8.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R532_G_11.00.53P
      2 MOExplorer/1.0
      2 Lenovo_ET600/Lenovo WindowsMobile/6 Release/4.22.2007 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12)
      2 Lenovo-V608/140 Release/080821 Browser/mBrowser4.0
      2 LONGCOS_SK18_2SIM
      2 LENOVO-V727/(07.03.10)Ver00.15/WAP2.0
      2 LENOVO-V528/A7
      2 LCT_X845B_01/LKBM501A/WAP2.0 Profile
      2 LCT_N500B_01/LBWM501/WAP2.0 Profile
      2 KONKA_D363/KAA363_0.93.822 Nucleus/1.0 MTK/6228 Release/0C.01.2005 Browser/Teleca_obigo Profile/MIDP-1.0 Configuration/CLDC-1.0
      2 HS-D90/1.0 OBIGO/Q04A1-1.11 CTC/1.0
      2 GIONEE-V300/SW1.0.0/WAP2.0
      2 CO518/1.0 MTK/W07.12 Release/03.26.2007 Browser/Teleca-1.2
      2 CELLTEL_CBM/1.0
      2 CECT A1000
      2 BlackBerry9630/4.7.1.40 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/105
      2 BlackBerry8100/4.5.0.81 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/122
      2 Bird.S689/K03,MI/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0 UP.Browser/6.2.2.6.d.3.100 (GUI) MMP/1.0
      2 BXH_L300B_02/L3P1W02/WAP2.0 Profile
      2 BIRD V788/1.00 Nucleus RTOS/V1.11.19 MTK6227/06A Release/12.28.2006 Browser/Teleca Profile/MIDP-2.0 Configuration/CLDC-1.0
      2 AOB_N880C_01/LBEM511B/WAP1.2 Profile
      2 AMOI-M300/Plat-M38002/WAP2.0 Profile
      1 sonyericssonw580i
      1 sina/tky/WAP2.0
      1 nokia5320 UNTRUSTED/1.0
      1 j2me
      1 dopod T3238_CMCC/5.2.20257/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.1 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)
      1 dopod T2222_CMCC/5.2.19578/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.1
      1 dopod S700/5.2.19538/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.1 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)
      1 dopod S1_CMCC/5.2.1235/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)
      1 dopod P860_CMCC/5.2.1620/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.0
      1 dopod P800/5.1.342/WAP1.2 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
      1 dopod C858g/5.1.422/WAP1.2 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
      1 dopod C750/5.2.1236/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone)
      1 bbk058/1.0
      1 YuLong-Coolpad2938/1.0 iPanel/2.0 WAP2.0
      1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; QQDownload 1.7; .NET CLR 2.0.50727)
      1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; icafe8; .NET CLR 2.0.50727)
      1 UNISTARM320
      1 UNISTARA330
      1 UCWEB/6.0 UNTRUSTED/1.0 SonyEricssonM600i/R100 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 UCWEB/1.0.2 CFNetwork/342.1 Darwin/9.4.1
      1 Typhoon/R601 Profile/MIDP-1.0 Configuration/CLDC-1.0
      1 TSD-T18
      1 TS-TS800D
      1 TIANYU-KTOUCH/D772/Screen-176X220
      1 TIANYU-KTOUCH/B920/MIDP2.0/CLDC1.1/Screen-240X320
      1 TIANYU-KTOUCH/A930/Screen-240X320
      1 TIANYU-KTOUCH/A915/Screen-176X220
      1 TIANYU-KTOUCH/A907/Screen-240X320
      1 TIANYU-KTOUCH/A650/MIDP2.0/CLDC1.1/Screen-240x320
      1 TIANYU  B892
      1 TIANYU  B832
      1 TCL-M310/1.0 MTK/W07.12 Release/03.26.2007 Browser/Teleca-1.2
      1 SonyEricssonZ610i/R1ED Release/Aug-31-2006 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW980/R3EA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1 JavaPlatform/JP-8.3.3
      1 SonyEricssonW950i/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 405) Opera 8.65 [zh-CN]
      1 SonyEricssonW908c/R1EA Profile/MIDP-2.1 Configuration/CLDC-1.1 sonyericssonw908c
      1 SonyEricssonW908c/R1EA Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 SonyEricssonW888c/R8BA Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW850i/R1JG Release/Feb-15-2007 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW850i/R1GB Release/Nov-30-2006 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW810c/R4DB Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW810c/R4CE Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW760c/R3EA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1 JavaPlatform/JP-8.3.3
      1 SonyEricssonW700i/R1CA/SN351673013743322 Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW700i/R1CA Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 SonyEricssonW700c/R1DB Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW610i//R6BC Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW610c/R1JD Release/Jan-23-2007 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 Profile/MIDP-2.0 Config
      1 SonyEricssonW595c/R3DA Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 SonyEricssonW580i/R6BC Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW550c/R7B Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW395c/R1CB Browser/OpenWave/1.0 Profile/MIDP-2.1 Configuration/CLDC-1.1, SonyEricssonW395c/R1CB Browser/OpenWave/1.0 Profile/MIDP-2.1 Configuration/CLDC-1.1, SonyEricssonW395c/R1CB Browser/OpenWave/1.0 Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 SonyEricssonW380i/R11CA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW380c_CMCC/R11CA SEMC-SW/R11CA Release/08.19.2008 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonW350c/R10BA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonS500c/R8BE Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 SonyEricssonS500c/R8BA Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 SonyEricssonS500c/R6BC Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK818c/R6BC Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK810i/R8BA Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK800i/R8BF Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK800i/R8BA Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK800c/R1CB Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK750c/R1DB/SN357849001714459 Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 SonyEricssonK750c/R1CA/SN352557012993757 Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK700c/R2CA SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK550i/R1JD Release/Jan-23-2007 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK530i/R8BB Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK530i/R6BC Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK510c/R4EA Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK510c/R4EA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK310c/R4EA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonK310c/R4DA Java/SEMC-Java/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 SonyEricssonK300c/R2BD SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonJ300c/R2BD SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SonyEricssonF305c/R1DA Browser/OpenWave/1.0 Profile/MIDP-2.1 Configuration/CLDC-1.1, SonyEricssonF305c/R1DA Browser/OpenWave/1.
      1 Sogou Orion spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)
      1 SamsungI8510
      1 SS900/1.0 MTK/W07.12 Release/03.26.2007 Browser/Teleca-1.2
      1 SKYWORTH-T700/S200/WAP2.0
      1 SKYWORTH-T660/S100B/WAP2.0
      1 SKYWORTH-E738+/VL1A/WAP2.0
      1 SK-G588/2.0 WAP2.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12)
      1 SIE-SXG75 Browser/UP.Browser/7.1.1.k.4 (GUI) MMP/2.0
      1 SEC-SGHE840/1.0 NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SAMSUNGSGH-i450/UCWEB7.0.0.33/28/999
      1 SAMSUNG-SGH-i900/1.0 Release/03.07 Browser/IE6 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
      1 SAMSUNG-SGH-i900/1.0
      1 SAMSUNG-SGH-i728_CMCC_U1/1.0 Release/03.07 Browser/IE6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (compatible; MSIE 6.0; Windows CE; IEMobile 7.7)
      1 SAMSUNG-SGH-i718plus_CMCC/1.0 Release/03.07 Browser/IE6 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
      1 SAMSUNG-SGH-i718/MSIE4.01/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
      1 SAMSUNG-SGH-i600ORANGE/BVGD2
      1 SAMSUNG-SGH-X708/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU5MDkxMDAxMjU2NDgy UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/
      1 SAMSUNG-SGH-X658/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU5NzIwMDAxMTMxNzg4 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/
      1 SAMSUNG-SGH-U708E/1.0 RTK-E/1.0 DF/1.0 Release/02.05.2008 Browser/NetFront3.4  Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 SAMSUNG-SGH-U608/1.0 Release/1.24.2007 Browser/NetFront3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU2MzUwMDE0MDg0ODE3
      1 SAMSUNG-SGH-U608/1.0 Release/1.24.2007 Browser/NetFront3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU1MjUzMDE1NjkwOTY1
      1 SAMSUNG-SGH-S508/1.0*MzUxOTI1MDA2ODI3ODcw UP.Browser/5.0.5.1 (GUI)
      1 SAMSUNG-SGH-M628_CMCC/1.0 Release/2.28.2008 Browser/Openwave6.2.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 SAMSUNG-SGH-L258/1.0 RTK-E/1.0 DF/1.0 Release/05.21.2007 Browser/Openwave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.
      1 SAMSUNG-SGH-J708i_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/12.18.2008 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*b24AAE4AAOpQ8Z/lTADq UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-J708_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/10.22.2007 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUzMzY5MDIzNjA5MTUx UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-J708_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/10.22.2007 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU5OTEzMDEyMTUzNzQ5 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-J708_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/10.22.2007 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU3NzIwMDIyMzcxNjYy UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-J708_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/10.22.2007 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU3NzIwMDI4NTYwMzY3 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-J608/1.0 Release/4.13.2007 Browser/NetFront3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU3Nzk5MDEzMTI3MDQ0
      1 SAMSUNG-SGH-G608/1.0 RTK-E/1.0 DF/1.0 Release/06.22.2007 Browser/NetFront3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 Untrusted/1.0
      1 SAMSUNG-SGH-F488/1.0 SHP/VPP/R5 NetFront/3.4 Qtv/5.3 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1/*MzU2MTgxMDIxMzQ1MjY3
      1 SAMSUNG-SGH-F338/1.0 SHP/VPP/R5 NetFront/3.4 Qtv5.3 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1 UNTRUSTED/1.0
      1 SAMSUNG-SGH-F268/1.0 RTK-E/1.0 DF/1.0 Release/07.04.2007 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1 Untrusted/1.0
      1 SAMSUNG-SGH-F258/1.0 RTK-E/1.0 DF/1.0 Release/07.04.2007 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU5MzM4MDEzNjk5MDA1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-E898/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUzMjA5MDEwNzM3OTcx UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-E398/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUzNDU4MDE2OTIxNDk5 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-E251C/1.0 RTK-E/1.0 DF/1.0 Release/02.05.2008 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU0NzM3MDIwMzUxODQ2 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-D908i/1.0 RTK-E/1.0 DF/1.0 Release/11.27.2006 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUxOTA3MDI0NTM2MTQ3 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-D908i/1.0 RTK-E/1.0 DF/1.0 Release/11.27.2006 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU1NjU0MDEwNDUxNjQ0 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-D908i/1.0 RTK-E/1.0 DF/1.0 Release/11.27.2006 Browser/OpenWave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1
      1 SAMSUNG-SGH-D908/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUxODAwMDExNDcyNjQy UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-D908/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU2MTE5MDEwNzA2NDUz UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-D888_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/08.17.2007 Browser/Openwave6.2.3.3.c.1.101 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU2NzAzMDE1MTczNTY5 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-D828/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUxNzQ2MDEwMTI1MzEx UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-D608/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU4MjI0MDAwMTQyMTAz UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-D528/NetFront 3.2/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzUzMTM0MDEyNzgzNzU5
      1 SAMSUNG-SGH-CC01_CMCC/1.0 Release/8.22.2007 Browser/RAINBOW 3.0/*MzUyMDk5MDI4MjQ1OTQ4
      1 SAMSUNG-SGH-C288_CMCC/1.0 RTK-E/1.0 SYSOL/1.0 Release/09.01.2007 Browser/OpenWave6.2.3.3.c.1.101/*MzU1NTgwMDI3NzI4NzQy UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-C288_CMCC/1.0 RTK-E/1.0 SYSOL/1.0 Release/09.01.2007 Browser/OpenWave6.2.3.3.c.1.101/*MzU1NTgwMDI2OTAxNDA3 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 SAMSUNG-SGH-C268/RAINBOW 3.0/WAP1.2/*MzU1MzY5MDE2MTU2ODQ2
      1 SAMSUNG-SGH-C158-CMCC/RAINBOW 3.0/WAP1.2 Profile/MIDP-2.0 Configuration/CLDC-1.0*MzU1NzkxMDEzNTkzMzUw
      1 SAMSUNG-SGH-B518_CMCC/1.0 Release/2.28.2008 Browser/Openwave6.2.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.
      1 SAMSUNG-SCH-F689/1.0 POLARIS/5.30.WAP CTC/1.0 Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 SAMSUNG-SCH-F309/1.0 POLARIS/5.30.WAP CTC/1.0
      1 SAMSUNG-GT-S7520U/1.0 SHP/VPP/R5 NetFront/3.5 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1
      1 SAMSUNG-GT-S5230C/1.0 SHP/R5 Release/02.01.2009 Browser/NetFront3.5 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1 UNTRUSTED/1.0
      1 SAMSUNG-GT-S3500C/1.0 Release/10.23.2008 Browser/NetFront3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MzU5OTc5MDIxNDY2MTgy
      1 SAMSUNG-E1100C_CMCC/1.0 RTK-E/1.0 DF/1.0 Release/17.08.2007 Browser/OpenWave6.2.3.3.c.1.101/*MzU5ODkzMDIwNTk5ODYx UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0
      1 S302c/EJ.A07.201108.1616\x04
      1 PhilipsX620/07 Release/22.11.2007 Browser/wap2.0 Sync/SyncClient1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 PHILIPS 960 UP.Browser/6.2.3.9.d.1.100 (GUI) MMP/2.0
      1 Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.2.15 Version/10.00
      1 Opera/9.64 (Windows NT 5.1; U; zh-cn) Presto/2.1.1
      1 Opera/9.64 (Windows NT 5.1; U; Edition IBIS; zh-cn) Presto/2.1.1
      1 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14881/866; U; zh) Presto/2.2.0
      1 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14842/498; U; zh) Presto/2.2.0
      1 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14741/498; U; zh) Presto/2.2.0
      1 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.13659/866; U; en) Presto/2.2.0
      1 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.13337/866; U; zh) Presto/2.2.0
      1 Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.13216/866; U; zh) Presto/2.2.0
      1 Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.13068/866; U; zh) Presto/2.2.0
      1 Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.10781/866; U; zh) Presto/2.2.0
      1 Opera/9.60 (J2ME/MIDP; Opera Mini/4.0.9800/866; U; zh) Presto/2.2.0
      1 Opera/9.60 (J2ME/MIDP; Opera Mini/4.0.9660/498; U; zh) Presto/2.2.0
      1 Opera/9.5 (Windows NT 5.1; U; Meizu M8; MEIZU Version/1.0;M81B08AHL****0255; zh-cn)
      1 Opera/8.01 (J2ME/MIDP; Opera Mini/3.1.9746/1724; zh; U; ssr)
      1 Opera/8.01 (J2ME/MIDP; Opera Mini/3.1.7196/1724; zh; U; ssr)
      1 Opera/8.01 (J2ME/MIDP; Opera Mini/3.1.10423/1712; cn; U; ssr)
      1 Openwave/UCWEB7.0.0.33/28/999
      1 OPWV-SDK/62 UP.Browser/6.2.2.1.208 (GUI) MMP/2.0 GoBrowser
      1 NokiaNokia 6122c
      1 NokiaN97/UCWEB7.0.0.33/50/999
      1 NokiaN95/1.2 (20.1.001) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 NokiaN95/1.0 (12.1.007) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 NokiaN868MP/2.0628.0.0.1 S60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 NokiaN81(66.01)/SymbianOS/9.1 Series60/3.0
      1 NokiaN79/SymbianOS/9.3 Series60/3.2 Release/10.045; Mozilla/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML,like Gecko) Safari/413
      1 NokiaN79/CMCC SymbianOS/9.3 Series60/3.2 Release/11.049; Mozilla/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML,like Gecko) Safari/413
      1 NokiaN79
      1 NokiaN78/CMCC SymbianOS/9.3 Series60/3.2 Release/14.003; Mozilla/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML,like Gecko) Safari/413
      1 NokiaN76/CMCC SymbianOS/9.2 Series60/3.1 Release/21.1.004 Mozilla/5.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 NokiaN73-2/3.0638.0.0.2_rm132 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 NokiaN73-1/3.0638.0.0.44_rm132 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 NokiaN73(16)/SymbianOS/9.1 Series60/3.0
      1 NokiaN72/5.0706.4.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB7.0.0.33/27/999
      1 NokiaN72/2.0625.2.0.2 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 NokiaN72/2.0617.1.0.3 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 NokiaN70/5.0819.2.5.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 NokiaN70/5.0635.2.5.3 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB7.0.0.33/27/999
      1 NokiaN70//SN359570014046600 5.0741.4.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 NokiaN70-1/SymbianOS/8.0 Series60/2.6
      1 NokiaN70-1/5.0609.2.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/7.0.2.3.119 (GUI) MMP/2.0 Push/PO
      1 NokiaE75-1
      1 NokiaE66/UCWEB7.0.0.33/28/999
      1 NokiaE51
      1 Nokia7610s/2.0 (05.72) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia7610Supernova/2.0 (04.82) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia7610/2.0 (7.0642.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0 UCWEB/6.0
      1 Nokia7500/2.0 (05.20) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia7373
      1 Nokia7310c_CMCC/2.0 (07.51) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia7310c/2.0 (07.51) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia7260/2.0 (04.81) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia7210c/2.0 (05.20) Profile/MIDP-2.1 Configuration/CLDC-1.1 Nokia7210c UCWEB/6.0 UNTRUSTED/1.0
      1 Nokia7210c/2.0 (04.86) Profile/MIDP-2.1 Configuration/CLDC-1.1 nokia7210c UNTRUSTED/1.0
      1 Nokia6681/2.0 (7.11.00) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6681/2.0 (5.37.01) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6681/2.0 (3.20.3) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB7.0.0.33/27/800
      1 Nokia6670/SymbianOS/8.0 Series60/2.6
      1 Nokia6500s/2.0 (09.40) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia6500s/2.0 (06.61) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia6500s-1/2.0 (09.40) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia6500s-1/2.0 (04.84) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      1 Nokia6500c/2.0 (04.92) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia6300/2.0 (07.21) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
      1 Nokia6288/2.0 (04.43) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6280/2.0 (06.43) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 Nokia6270/2.0 (03.90) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 Nokia6270/2.0 (03.81) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6230/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6220c-1/SymbianOS/9.1 Series60/3.0
      1 Nokia6122c_CMCC/4.33 (SymbianOS/9.2; U; Series60/3.1 Nokia6122c_CMCC/4.33; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) Mozilla/5.0 AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Nokia6122c_CMCC/4.31 (SymbianOS/9.2; U; Series60/3.1 Nokia6122c_CMCC/4.31; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) Mozilla/5.0 AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Nokia6122cCN01.02/SymbianOS/9.1 Series60/3.0
      1 Nokia6120c/5.11.1 (SymbianOS/9.2; U; Series60/3.1 Nokia6120c/5.11.1; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) Mozilla/5.0 AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Nokia6111/2.0 (03.82) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6111/2.0 (03.77) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6080/2.0 (04.22) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6070/2.0 (03.22) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 Nokia6070/2.0 (03.20) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6030/2.0 (y3.44) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6030/2.0 (y3.43) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6020/2.0 (04.90) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6020/2.0 (04.50) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia6020/2.0 (04.10) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia5802 XpressMusic
      1 Nokia5730S-1
      1 Nokia5700/6.01 (SymbianOS/9.2; U; Series60/3.1 Nokia5700/6.01; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) Mozilla/5.0 AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Nokia5700(AP13.01)/SymbianOS/9.1 Series60/3.0
      1 Nokia5611/2.0 (09.70) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia5610d-1/2.0 (09.40) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia5320d-1(20.01)/SymbianOS/9.1 Series60/3.0
      1 Nokia5320_CMCC/04.13 (SymbianOS/9.3; U; Series60/3.2 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KH
      1 Nokia5310_CMCC/2.0 (09.42) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia5310_CMCC/2.0 (08.32) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      1 Nokia5310_CMCC/2.0 (07.01) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia5310XpressMusic/2.0 (09.42) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      1 Nokia5310/2.0 (p) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia5310/2.0 (06.62) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia5310/2.0 (03.63) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      1 Nokia5300/2.0 (05.00) Profile/MIDP-2.0 Configuration/CLDC-1.1 nokia5300 UNTRUSTED/1.0
      1 Nokia5300/2.0 (03.93) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 Nokia5220/2.0 (05.63) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      1 Nokia5220/2.0 (04.00) Profile/MIDP-2.1 Configuration/CLDC-1.1 OPENWAVE
      1 Nokia5200/2.0 (07.00) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia5200/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1 Nokia5200 UCWEB/6.0 UNTRUSTED/1.0
      1 Nokia5200/2.0 (03.93) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 Nokia3600s/2.0 (05.64) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia3600s/2.0 (05.20) Profile/MIDP-2.1 Configuration/CLDC-1.1  UNTRUSTED/1.0
      1 Nokia3500c/2.0 (07.00) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
      1 Nokia3500c/2.0 (07.00) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia3500c/2.0 (06.60) Profile/MIDP-2.0 Configuration/CLDC-1.1  UNTRUSTED/1.0
      1 Nokia3300/1.0 (4.07) Profile/MIDP-1.0 Configuration/CLDC-1.0
      1 Nokia3250/SymbianOS/9.1 Series60/3.0
      1 Nokia3230/2.0 (5.0625.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 Nokia3230/2.0 (5.0614.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0/UCWEB7.0.0.33/27/999
      1 Nokia3230/2.0 (4.0537.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 Nokia3230/2.0 (3.0515.0ch) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 Nokia3120/1.0 (05.54) Profile/MIDP-1.0 Configuration/CLDC-1.0
      1 Nokia3110c/2.0 (06.01) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia3110c/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1 nokia3110c
      1 Nokia3110c/2.0 (05.50) Profile/MIDP-2.0 Configuration/CLDC-1.1 Nokia3110c UCWEB/6.0 UNTRUSTED/1.0
      1 Nokia3110c/2.0 (04.91) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 Nokia3100/1.0 (06.11) Profile/MIDP-1.0 Configuration/CLDC-1.0
      1 Nokia3100/1.0 (05.54) Profile/MIDP-1.0 Configuration/CLDC-1.0
      1 Nokia2630/2.0 (04.20) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia2626/2.0 (04.61) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia2610/2.0 (07.11) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia2610/2.0 (07.10) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia2610/2.0 (06.73) Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0
      1 Nokia2610/2.0 (04.51) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia2610/2.0 (04.50) Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Nokia2610 UCWEB/6.0
      1 Nokia2600c/2.0 (05.61) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia2320c/2.0 (06.75) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia1681c_CMCC/2.0 (05.61) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia1681c/2.0 (05.61) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 Nokia1680c_CMCC/2.0 (06.82) Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 NOKIAN86 8MP
      1 NOKIAN85/UCWEB7.0.0.33/28/999
      1 NOKIAN80/UCWEB7.0.0.33/28/999
      1 NOKIAN75/UCWEB7.0.0.33/28/999
      1 NOKIAE65
      1 NOKIAE62
      1 NOKIAE61/UCWEB7.0.0.33/28/999
      1 NOKIAE61
      1 NOKIAE52-1/UCWEB7.0.0.33/28/999
      1 Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7C116a Safari/528.16
      1 Mozilla/5.0 (compatible; Windows; U; Windows NT 6.0; en-US; rv:1.9.0.7; .NET CLR 1.1.4322; .NET CLR 1.0.3705) Gecko/2009021910 Firefox/3.0.7
      1 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko Firefox/3.0
      1 Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 GTB5
      1 Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)
      1 Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729)
      1 Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)
      1 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/3.0.189.0 Safari/531.0
      1 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5
      1 Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729)
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 4.0.20506)
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729)
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13,gzip(gfe) (via translate.google.com)
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 GTBDFff GTB6 (.NET CLR 3.5.30729)
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.3 Safari/532.0
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.36 Safari/525.19
      1 Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/20.0.012; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (K
      1 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN78-1/21.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN78-1/10.136; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia6220c-1/05.15; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTM
      1 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia6220c-1/03.23; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia6210Navigator/04.13; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia5320d-1/03.26; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95_8GB/30.0.018; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN82/30.0.019; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE63-1/110.21.005; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE51-1/220.34.37; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
      1 Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es65
      1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.11) Gecko/2009060214 Firefox/3.0.11
      1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.1) Gecko/2008070206 (CK-Amazon.com) Firefox/3.0.1
      1 Mozilla/5.0 (Linux; U; Android 1.5; zh-cn; HTC Dream Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1
      1 Mozilla/4.0 (compatible;ak; MSIE 7.0; Windows NT 5.1; GTB6)
      1 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; .NET CLR 3.0.30618; CIBA)
      1 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; QQDownload 1.7; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      1 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; CNCDialer; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      1 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQDownload 570; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)
      1 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQDownload 534; msn OptimizedIE8;ZHCN)
      1 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
      1 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTJA-E.T.(QinDaHai); .NET CLR 1.1.4322)
      1 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; CIBA; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; FDM; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; QQDownload 551; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; MSN OptimizedIE8;ZHCN)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; POTU(RR:28031409:0); GTB5; QQDownload 1.7; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; SLCC1; .NET CLR 2.0.50727; CIBA; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GoogleT5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; (R1 1.6); SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0;  Embedded Web Browser from: http://bsalsa.com/; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; QQDownload 584; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; QQDownload 538; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; Maxthon; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; QQDownload 538; Avant Browser; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; QQDownload 534; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; QQDownload 1.7; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; QQDownload 1.7; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; QQDownload 1.7; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.1)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; CNCDialer; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; TencentTraveler ; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.1.3; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; TencentTraveler 4.0; CIBA; msn OptimizedIE8;ZHCN)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; QQDownload 584; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; QQDownload 584; TencentTraveler 4.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; QQDownload 1.7; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; QQDownload 1.7)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; .NET CLR 1.1.4322)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 1.1.4322)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 2.0.50727; msn OptimizedIE8;ZHCN)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.2)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; CIBA; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; CIBA; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 4.0.20506; InfoPath.2; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CIBA; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 551; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 538; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CIBA)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 1.7; GTB6; .NET CLR 1.1.4322; InfoPath.1)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 1.7; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 1.7; (R1 1.6))
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0(Compatible Mozilla/4.0(Compatible-EmbeddedWB 14.59 http://bsalsa.com/ EmbeddedWB- 14.59  from: http://bsalsa.com/ ; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;  Embedded Web Browser from: http://bsalsa.com/; CIBA; .NET CLR 1.1.4322)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; QQDownload 1.7; aff-kingsoft-ciba; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; QQDownload 1.7; TencentTraveler 4.0; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; MyIE2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; ESB{88BE18C2-43A3-43D4-ADF1-6808DFABB798}; Alexa Toolbar; mxie; GTB6; .NET CLR 1.1.4322)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; CNCDialer; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; CIBA; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; MS-RTC LM 8; SASstaged; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; CIBA; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Alexa Toolbar)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CIBA; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera 8.0
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; icafe8; cafe8)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; icafe8; Sicent)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; icafe8; QQDownload 570; GTB6)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; icafe8; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iCafeMedia; icafe8; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iCafeMedia; GTB6)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iCafeMedia)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; cafe8; icafe8; MOZILLA/4.0(COMPATIBLE MOZILLA/4.0(COMPATIBLE-EMBEDDEDWB 14.59 HTTP://BSALSA.COM/ EMBEDDEDWB- 14.59  FROM: HTTP://BSALSA.COM/ ; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; baiduds; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;); .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; InfoPath.1; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler 4.0; CIBA)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler 4.0; (R1 1.6))
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler )
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Sicent; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Sicent; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Sicent1; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 584; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 570; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 570; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 570; CIBA; .NET CLR 2.0.50727; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 570; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 570; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 570; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 570)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 551; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; InfoPath.2; CIBA; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 551; CIBA)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 551; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 551; .NET CLR 2.0.50727; aff-kingsoft-ciba; staticlogin:product=cbpro09&act=login&info=ZmlsZW5hbWU9UG93ZXJ3b3JkMjAwOVByby4yNTI2OS40MDEwLmV4ZSZtYWM9NkRCOEVENzU0RjY2NDVBMjlERjI4NkUxNjEwQ0U2ODgmcGFzc3BvcnQ9JnZlcnNpb249MjAwOS4wOC4yMi4yLjI4NCZjcmFzaHR5cGU9MQ==&verify=78c8eaee9476ba1cc0a5b2ee380946c6)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 538; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 538; .NET CLR 1.1.4322)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; TencentTraveler 4.0)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; (R1 1.6))
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; GTB6; .NET CLR 1.1.4322)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; .NET CLR 2.0.50727; IEShow Toolbar; IEShow oktieToolBar; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; .NET CLR 1.1.4322; .NET CLR 2.0.50727; CIBA)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; POTU(RR:28031409:0:5484205); Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; GreenBrowser)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0(Compatible Mozilla/4.0(Compatible-XDeskShow)EmbeddedWB- 14.59  from: http://bsalsa.com/ ; .NET CLR 1.1.4322; InfoPath.1)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; CIBA; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; CIBA; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; CIBA; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; CIBA)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MS-RTC LM 8; InfoPath.1; CIBA; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; .NET CLR 2.0.50727; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; IEShow Toolbar; IEShow stock01ToolBar)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; aff-kingsoft-ciba)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; TencentTraveler ; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; QQDownload 538)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; QQDownload 1.7; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; CIBA; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; QQDownload 1.7)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; CIBA; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; CIBA; .NET CLR 1.1.4322; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; Foxy/1; Foxy/1)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; CIBA)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; AskTB5.3)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; MS-RTC LM 8; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; (R1 1.6))
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB5)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; CIBA; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CNCDialer; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;); .NET CLR 1.1.4322; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CNCDialer; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CNCDialer; GTB6; ${USR_AGNT})
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CNCDialer; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CIBA; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NETSPX1; InfoPath.1)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; aff-kingsoft-ciba; staticlogin:product=cboxf09&act=login&info=ZmlsZW5hbWU9UG93ZXJ3b3JkMjAwOU94Zi4yNTI2OS40MDExLmV4ZSZtYWM9RDcyNUM0MzBEMENDNDM3MUE5MTYwRUZERjJFMDlFNEYmcGFzc3BvcnQ9JnZlcnNpb249MjAwOS4wNS4yNS4zLjI3MiZjcmFzaHR5cGU9MQ==&verify=330d4699ae79a72de939e20dc876af02; GreenBrowser)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; aff-kingsoft-ciba; InfoPath.1)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; CIBA)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Alexa Toolbar)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.2; InfoPath.1; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.2)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CIBA; InfoPath.2)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MDDR; CIBA; InfoPath.1)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3))
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;  Embedded Web Browser from: http://bsalsa.com/; Maxthon; .NET CLR 2.0.50727; Alexa Toolbar)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;  Embedded Web Browser from: http://bsalsa.com/; CIBA; .NET CLR 2.0.50727; TheWorld)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;  Embedded Web Browser from: http://bsalsa.com/; .NET CLR 2.0.50727; CIBA; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MAXTHON 2.0)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;  Embedded Web Browser from: http://bsalsa.com/)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MYIE2 0.3)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; CollapsarWEB qihoobot@qihoo.net)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; 360SE)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/hspr-H102; Blazer/4.2) 16;320x320
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Alexa Toolbar)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Linux; Motorola A780; 781) MOT-A780/R52_G_0D.74.A2R Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera 7.50 [zh-cn]
      1 Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
      1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 240x320)
      1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone)/UCWEB7.0.0.33/33/999
      1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)/UCWEB7.0.0.33/31/999
      1 MOT-V975/82.31.56. MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 MOT-V3ie/08.02.05R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 MOT-V3i/08.BD.93R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 MOT-V360i/08.D5.07R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 MOT-ROKR E2/1.0 R564_G_12.01.48P/12.28.2005 Mozilla/4.0 (compatible; MSIE 6.0; Linux; Motorola ROKR E2; 2445) Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera 8.50 [zh-cn]
      1 MOT-MOTOU9_CMCC/1.0 LinuxOS/2.6.10 Release/03.17.2008 Browser/OSS1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R6632_G_81.17.04R
      1 MOT-MOTOROKRE8_CMCC/1.0 LinuxOS/2.6.10 Release/11.16.2007 Browser/OSS1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R6718_G_71.10.13R_E
      1 MOT-MOTOROKRE6/R533_G_11.12.02P Mozilla/4.0 (compatible; MSIE 6.0; Linux; MOTOROKRE6; 781) Profile/MIDP-2.0 Configuration/CLDC-
      1 MOT-MOTORAZRV8_CMCC/1.0 LinuxOS/2.6.10 Release/06.30.2007 Browser/Opera8.50 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R601_G_80.44.2DR
      1 MOT-MOTORAZRV8_CMCC/1.0 LinuxOS/2.6.10 Release/06.30.2007 Browser/Opera8.50 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R601_G_80.44.2BR
      1 MOT-MOTORAZRV82GB_CMCC/1.0 LinuxOS/2.6.10 Release/08.30.2007 Browser/Opera8.50 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R601_G_80.56.15R
      1 MOT-MOTORAZRV82GB_CMCC/1.0 LinuxOS/2.6.10 Release/08.30.2007 Browser/Opera8.50 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R601_G_80.54.0CR
      1 MOT-E770/85.98.E0R MIB/BER2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 MOT-E680i/E680I_G_0D.C5.ABP Mozilla/4.0 (compatible; MSIE 6.0; Linux; Motorola E680i; 1320) Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera 7.50 [zh-cn]
      1 MOT-E398B/0E.20.95R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 MOT-C650/0B.D1.1AR MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 MOT-C168/ WAP.Browser/1.0
      1 MOT-A1200e/R541_G_11.xx.yyR Mozilla/4.0 (compatible; MSIE 6.0 Linux; A1200e;nnn) Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera
      1 MOT-A1200/1.0 R532_G_11.00.43P/12.28.2005 Mozilla/4.0 (compatible; MSIE 6.0; Linux; Motorola A1200; 1555) Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera 8.00 [zh-cn]
      1 MDJ_X901A_15/LK5M511B/WAP2.0 Profile
      1 MDJ_M670A_002/LBEM503/WAP2.0
      1 MDJ_D401B_03/LBAM510C/WAP1.2 Profile
      1 MDJ_D401B_01/LBAM510C/WAP1.2 Profile
      1 MAUI WAP Browser MAUI WAP Browser
      1 M608/MIDP2.0/CLDC1.1/Screen-240X320
      1 Lenovo_A510/(2008.09.12)S016/WAP2.0Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 LenovoI389_CMCC/S100 LMP/SH Release/2009.03.16 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 LenovoI389_CMCC/S100 LMP/SH Release/2008.11.28 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 LenovoI389_CMCC/S100 LMP/SH Release/2008.07.30 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Lenovo-i817/CMCC_S114 LMP/XM Release/2007.07.31 Profile/MIDP2.0 Configuration/CLDC1.1
      1 Lenovo-i300/S003 LMP/LML Release/2009.03.19 Profile/MIDP2.0 Configuration/CLDC1.1
      1 Lenovo-P609/2008.08.28 P609_S019_080828/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 LONGYU-M680/SW1.0.0/WAP2.0
      1 LG/KF755/v1.0
      1 LG/KF690/v10a Browser/Obigo-Q05A/3.12 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1
      1 LG-KU380/v1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 LG-KP500-CH Teleca/WAP2.0 MIDP-2.0/CLDC-1.1
      1 LG-KF510 Obigo/WAP2.0 MIDP-2.0/CLDC-1.1 UNTRUSTED/1.0
      1 LG-KF300e/CMCC Release/1.4.2008 Obigo/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 LG-KC550 Teleca/WAP2.0 MIDP-2.0/CLDC-1.1
      1 LENOVO-i807/(2006.11.28)S129/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.1
      1 LENOVO-i760/(2008.06.18)i760_S003_080618/WAP1.2/2.0+Profile/MIDP-1.0/2.0 Configuration/CLDC-1.1
      1 LENOVO-i716/(07.08.29)Ver00.13/WAP2.0
      1 LENOVO-i360/(061103)S185/WAP2.0 Profile
      1 LENOVO-P709/S100 NXP5210/DV7 Release/4.25.2007 Obigo/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 LENOVO-P708/(2005.10.12)S274/WAP1.2.1 Profile//
      1 LENOVO-P330/(06.10.14)Ver00.14/WAP2.0
      1 LENOVO-I720/(2006.08.16)Ver1.5.0/WAP1.2 Profile//
      1 LENOVO-E300/(2005.09.01)S273/WAP1.2.1 Profile//
      1 LCT_X880B_01/1.0 Nucleus/1.13.21 MTK6225/07A Release/5.1.2008 Browser/TelecaQ03C1 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 LCT_TV900B_01/LBGM510A/WAP2.0 Profile
      1 KONKA-A69/(2004.07.01)SW2.0.0/WAP1.2 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 KINGER WAP Browser
      1 KBT_D650B_A1/LBIM401C/WAP2.0 Profile
      1 Java1.4.2_06
      1 IACGP/1.00(Tx:9;Ty:8;Font:16;Gx:176;Gy:208;C:CF;G:J2;GI:2;Screen:176*208;Group_ID:GMP209)/WAP2.0
      1 Haier_V200PLUS/(2005.07.01)1.0/WAP2.0 Browser/CMSmBrowser4.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 HTC_Touch_Diamond2_T5353 Opera/9.50 (Windows NT 5.1; U; en)
      1 HPiPAQrw6800/1.0/Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)
      1 HOSIN_S16/SW1.0.0/WAP2.0/MIDP-2.0 Configuration/CLDC-1.1
      1 GIONEE-V36/SW1.0.0/WAP2.0
      1 GIONEE-V20/SW1.0.0/WAP2.0
      1 GIONEE-L800/SW1.0.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 GIONEE-L600/SW1.0.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 GIONEE-H68/SW1.0.0/WAP2.0
      1 GIONEE-A15/SW1.0.0/WAP2.0
      1 GIONEE-A10/SW1.0.0/WAP2.0
      1 GIGABYTE-g-Smart Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; GIGABYTE-g-Smart)/UCWEB7.0.0.33/31/999
      1 E71/SymbianOS/9.1 Series60/3.0
      1 E66/SymbianOS/9.1 Series60/3.0
      1 Dopod828/4.21.1088/WAP1.2 Profile/MIDP2.0 Configuration/CLDC1.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)
      1 Dopod577W/Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 240x320)
      1 Dopod565 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)
      1 DPD-S900C/U1 by 鏃犲咖 OPERA/9.5 CTC/1.0
      1 CW-CC10/v1.0  TechSoft-Browser/1.0.0  CTC/1.0
      1 CT9A9G Profile/MIDP-2.0 Configuration/CLDC-1.0 ObigoInternetBrowser/QO3C EGE/1.0
      1 CECT U600/1.0 TELECA/W07.12 Release/03.26.2007 Browser/Teleca-1.2
      1 BlackBerry9000/4.6.0.297 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/150
      1 BlackBerry8700/4.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/175
      1 Bird-S570/6.1.0.7 UP.Browser/6.1.0.7.8.c.1.100 (GUI) MMP/1.0
      1 BIRD_D730/V1.0.0/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 BIRD_D660/V1.0.0/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0 BIRD_D660/V1.0.0/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 BIRD_D615/1.00 Nucleus RTOS/V1.11.19 MTK6227/05C_V21 Release/5.25.2006 Browser/Teleca Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 BIRD_D611/V1.0.0/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 BIRD V808/1.00 Nucleus RTOS/V1.11.19 MTK6227/06A Release/12.28.2006 Browser/Teleca Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 BIRD V786/1.00 Nucleus RTOS/V1.11.19 MTK6227/06A Release/12.28.2006 Browser/Teleca Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 BIRD V750/1.00 Nucleus RTOS/V1.11.19 MTK6227/06A Release/12.28.2006 Browser/Teleca Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 BIRD F527/1.00 Nucleus RTOS/V1.11.19 MTK6229/07B Release/01.25.2008 Browser/Teleca Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 AmoiE860/6.1.08/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.1 Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
      1 AmoiE850/6.1.08/WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.1 Mozilla/4.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)
      1 Amoi-N810/CMCC Release/02.09.2007 Browser/Mozilla4.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
      1 Amoi-N5/CMCC Release/10.09.2007 Browser/Mobile2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Amoi-A510/(2006.10.21)SW1.0.2/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
      1 Amoi-A50/(2006.10.21)SW1.0.2/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0
      1 Alcatel-TH4/1.0 UP.Browser/6.2.ALCATEL MMP/1.0
      1 AMOI-M610/SW1.0.0/WAP2.0
      1 AMOI-E72/1.0/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 (compatible; MSIE 4.01; Windows CE; Smartphone)
      1 AHONG_D17/1.0
      1 AHONG_D13_P/1.0
      1 AHONG_D05/1.0
      1 AHONG_D01/1.0
      1 A15/1.0 MTK_6217/2.0
      1 (C)NokiaN78/SymbianOS/9.1 Series60/3.0
      1 (C)Nokia5630/SymbianOS/9.1 Series60/3.0

]]>
在 PHP 中创建更好的名称空间 http://www.phpv.net/html/1697.html http://www.phpv.net/html/1697.html#comment Mon, 20 Jul 2009 15:36:17 +0000 admin http://www.phpv.net/html/1697.html PHP V5.3 支持为 PHP 类、常量和函数提供名称空间。使用名称空间避免命名冲突,并为 PHP 代码提供上下文。这些技巧为构建名称空间提供一些指导原则,从而充分利用名称空间带来的好处。

在 PHP V5.3 中引入的名称空间是为 PHP 类、常量和函数提供上下文的一种方式,从而可以将使用相同名称的元素看作是惟一的。惟一的名称避免了命名冲突,当两个类或函数使用相同的名称时就会发生这 种情况。有时这些 PHP 类表示现实世界中的相同对象,但它们的行为是完全不同的。名称空间能够确保您拥有正确的 PHP 类、常量或函数,并且要使用您的 PHP 类的人能够确保他们使用了正确的类。

代码中的名称空间就像现实世界中的上下文。考虑一个表示现实世界中的汽车对象的类。例如,通过 Internet 销售汽车的公司使用的 Automobile 类的行为可能与保险销售公司使用的 Automobile 类完全不同。

作为应用程序开发人员,您可能使用其他人编写的组件。您不能保证其他人永远不使用您已经使用的类名,但这些类的行为却大相径庭。在出现名称空间之前,PHP 开发人员通常将上下文构建到类名中,例如 My_Enterprise_PersonXML_Validator

清单 1 显示了一个位于名称空间中的类。


清单 1. 在名称空间中声明类
				
<?php
namespace IBM;
class Foo {
...
}
?>

下面给出了一个例子,展示了如何在名称空间中引用类。


清单 2. 在名称空间中引用类
				
<?php
$foo = new \IBM\Foo();
?>

在向所有类添加名称空间之前定义一个名称空间策略是个不错的 主意。尽管在某种程度上也可以不断地构建名称空间,但最好为名称空间确定一个通用结构,以方便名称空间的组织,并减少以后可能需要的修改。只要正确使用, 除了提供上下文之外,名称空间还可以用来组织 PHP 代码。

其他语言(比如 Java™ 和 C#)在很久以前就使用名称空间。在选择名称空间命名方式上,我使用的约定类似于这些语言的约定,因为许多开发人员都对此比较熟悉,便于他们理解。不过, 与 Java 语言不同的是,PHP 中的名称空间与类所在的目录之间没有联系。您可以给类、函数或常量选择任意的名称空间。您甚至可以对一个文件使用多个名称空间。同时,PHP 名称空间也不同于 C#,您可以对类以外的函数或常量使用名称空间。

顶级名称空间

如果您为某个组织构建名称空间,您可以使用组织名作为顶级域。一般情况下,使用组织名称创建顶级名称空间已经足以为 PHP 代码提供上下文,以及避免命名冲突,除非该组织编写大量用途不一的应用程序。

清单 3 的示例显示了如何声明顶级名称空间。


清单 3. 顶级名称空间
				
<?php
namespace IBM;
...
?>







次级名称空间

次级名称空间 是顶级名称空间内部的名称空间。当顶级名称空间还不足以为 PHP 类建立上下文时,它们提供进一步说明。

在创建次级名称空间时,不要凭一时的兴趣而过多地创建,这很重要。随着次级名称空间的增多,组织和引用它们就会变得越来越困难。如果您希望名称空间发挥双重作用,即避免命名冲突和组织 PHP 代码,那么就要更加注意这点了。

在决定为了方便组织代码应该向另一个名称空间引入多少个次级名称空间时,我尝试将该数量限制为 7 个(上下浮动不超过 2),以利用数字 7 更加容易记住这个优势。这并不总是奏效的,但我将它作为一个指导原则,以确保不将名称空间划分为过多的次级名称空间。

清单 4 的示例显示了在顶级名称空间中声明次级名称空间。


清单 4. 次级名称空间
				
<?php
namespace IBM\DeveloperWorks;
...
?>

反斜杠(\)将次级名称空间 “developerWorks” 与顶级名称空间 “IBM” 分开。

在声明次级名称空间时,您可以使用两个常见技巧,或同时使用它们。获取名称空间的常见地方是项目名或应用程序名;另一个地方是域名。

通过项目定义

如果您使用组织名作为顶级名称空间,并且想通过次级名称空间来进一步提供上下文,那么可以使用项目名或应用程序名作为次级名称空间。例如,如果您构建一个称为 Greeter 的新应用程序(用于获取用户的名称并问候他们),那么清单 5 中的名称空间将为称为 Prompt 的类提供完整的上下文。


清单 5. 使用应用程序名作为次级名称空间
				
<?php
namespace IBM\Greeter;
class Prompt {
...
}
?>

由于 Prompt 可能是多个应用程序或库的类名,所以为该名称空间添加组织名和项目名能够让这个 Prompt 类与其他同名的类区分开来。

通过域定义

使用域名是另一种选择次级名称空间的常见方式,如 清单 6 所示。它也可以用于项目名之后,是否使用取决于您对可重用性的计划(见 “根据可重用性命名”)。

是对更大的问题域的一组分类。域的一个例子是在更大型的应用程序中处理帐户、客户和产品的 “Account”、“Customers” 或 “Products”。


清单 6. 使用域作为次级名称空间
				
<?php
namespace IBM\MyApp\Account;
class Address {
...
}
?>







根据可重用性命名

除了应用支持可重用性的模块概念之外,类和名称空间的命名方式也能够实现可重用性。有时不良的命名方式会损害可重用性,因为不佳的名称暗示着类仅能用于特定目的。同样,错误地应用名称空间可能会不必要地局限类的使用范围,让它们的重用变得困难。

在 使用组织名的顶级名称空间中,应该保留 “Common”、“Core”、“Lib” 等可跨应用程序重用的名称空间。一个常见的例子是验证,其中针对整个企业的库存单位(SKU)、帐号或发票号的规则是一样的,从而获得合适的规则和长度。 对于 Validator 类,类似清单 7 的名称空间是不错的选择。


清单 7. 使用通用的 validation 名称空间
				
<?php
namespace MyCompany\Common\Validation;
class NotNullValidator {
...
}
?>

在这里,组织名用作顶级域(“MyCompany”)。“Common” 名称空间用作项目。即使在编写这个类的同时也许正在编写一个特定的应用程序,该类一样可以在组织的任何项目中使用。最后,“Validation” 用作类的域。







使用别名

尽管名称空间能够帮助您组织类并避免命名约定,但其缺点是名称过长。幸运的是,PHP 支持使用别名,因此可以在代码中使用更短的别名。清单 8 提供了一个示例。


清单 8. 使用别名
				
<?php
use MyCompany\Common\Validation as Validators;
?>







命名约定

名称空间命名使用单词首字母大写或 PASCAL 命名约定,这与其他 PHP 约定一样,比如 PHP Extension 和 Application Repository (PEAR) 包命名和文件名。例如,清单 9 中的名称空间比 清单 10 中的名称空间要好。


清单 9. 单词首字母大写或 PASCAL 命名
				
<?php
namespace MyNamespace;
?>

避免使用与其他 PHP 约定冲突的命名和大小写约定。


清单 10. 使用糟糕的大小写约定
				
<?php
namespace mynamespace;
...
?>





结束语

PHP 中的名称空间能够用于组织代码、避免命名冲突以及为类、函数和常量提供上下文。在名称空间中使用模式或约定让代码更易于理解,并且更易于引用和使用。

]]>
PHP招聘:如何面试应届生求职者 http://www.phpv.net/html/1696.html http://www.phpv.net/html/1696.html#comment Wed, 15 Jul 2009 16:58:33 +0000 抽烟的蚊子 http://www.phpv.net/html/1696.html 为什么要招应届生?不是因为便宜,有人说还没跳过槽的人忠诚度能搞些,这也不尽然,有些人没经受过工作的压力,总以为自己碰巧找到个压力大的工作, 换换会好些。我的原因是……应届生好调教。在他们没有被各种枯燥乏味的工作折磨的以为写程序本来就这么 SB 之前好好洗洗脑子。


1、2、3 是基础题,4、5、6 问的是数据库操作,7 算是综合能力吧。

1. 进制运算

可以是让他模拟一些简单的字符串函数,类似 bin2hex、base_convert、base64_encode,或者单纯的,让他手动算一下 7 进制的 54321 显示为 9 进制是多少。

应该高中或者之前就能接触到 2 进制 10 进制之间的换算了吧,当然,他当时很可能没听懂。通常的情况,如果以前没留意这个问题但有理解能力的,可能能在几分钟的做出一些成功不成功的尝试。至少不应该很茫然。最糟糕的情况,连整数的最大值是多少都不知道,那就算了。

2. 描述一下常见的关于读取文件内容的操作,及各自的特点

应 该不用迟疑太久就把 file、fopen、file_get_contents、readfile 列出来。表现好点还可以提下 readfile 的流式读取不占内存之类的。如果看的教材太老,可能只会说 fopen。最糟糕的辩解是不说跟数据库打交道比较多,文件操作没怎么接触过,完全无视文件静态化的存在。

3. 怎么模拟一个 POST 表单提交

答 socket 或者 cURL 都可以。

4. 列举一些常规优化方式

正 确索引(就不强求完全理解多列索引了,最好能知道每个查询只能用到一个索引),知道索引提高查询速度、降低插入速度。正确的字段类型(能知道 char 和 varchar 的区别和优缺点)。text 类字段可以单放一个表用主键关联。总之他能说的越多越好。顺便问问他他所知道的最大处理能力是每秒多少条,哪怕是测试环境里的 benchmarking(今天看到份简历,号称三年工作经验,将半个月三万条插入形容为他所遇到的最高的负载,写在简历的醒目位置)。

5. “你知道,把时间存在数据库里有两种方法,一种是用时间戳,就是 PHP 函数 time() 产生的那种整数,另一种是 MySQL 里字段类型设成 datetime。那么,为什么一定要后一种方式?”

最简单的一个例子,如果存的是时间戳,你无法按类似“所有周三的数据”这种方式显示内容。这表明了他的学习阶段:是否接触了类似日志分析类的东西。因为这些是早晚都要接触到的。

6. 简单联表查询

有这么两个表

user 表:

id  name
1   张三
2   李四
3   王五
4   赵六

apple 表:

id  user  number
1   1     5
2   3     3
3   1     8
4   4     6
5   3     2
6   4     2

apple 表的 user 字段跟 user 表的 id 对应,一条 SQL 语句查出每个人都有多少苹果

如果他不知道 join,可能会这么写

SELECT user.name, SUM(apple.number) FROM user, apple WHERE user.id = apple.user GROUP BY user.id

正确答案应该是这样

SELECT user.name, SUM(apple.number) FROM user LEFT JOIN apple ON user.id = apple.user GROUP BY id

这两条语句的差别是,不用 join 无法显示出李四有 0 个苹果 -_-

7. 假设我们要做一个公交系统的常见服务,就是做查公交车怎么倒车的。假设完全由你自己来搞,我只关心最后结果,你会怎么做这个项目。说的越详细越好。

可能需要不断提示。考查一个人的做事能力,比方说他首先会想到需要数据,数据库应该怎么设计,有几个表,什么样的字段。
可 以加分的地方可以有这么几个点。给站名编 id,匹配数字的速度要远大于匹配字符串。站点之间要距离的数据,这样计算最优倒车路线应该能考虑到站数,倒车次数、距离等权值。如果很有远见,任意两点 之间的数据应该是提前算好的,比方说有 200 条公交线路和 2000 个站点,始发终点的组合可能是 2000 * 1000,每种线路可能有 1 - 6 种方案,有个表是来装这近一千万行结果的,如果有线路变化,再用本地的机器重新算一遍线路。这样整个系统才有实用价值。不然可能每次查询都需要耗费数秒或 者更长时间,只能当单机软件用。


这些题本身是交流的话题,而不是“做对 5 道以上我就招你”这种门槛。我面试时每道题都会给予充分的时间,如果他做不上来,也起码能判断他的思考方式,而忌讳说“如果你不知道就明说,咱们赶紧做下 一题”。同时也能观察出性格等方面。比方说第 6 题,有人把 SUM 写成 COUNT,我就问他你看看前面写的是否有问题,同时又怕太明显,又补充一句“也可能什么错误也没有、我在误导你,你自己判断”,于是他就不再理会、继续 接着写完整个 SQL。再综合他的其他一些表现,我的结论是此人主见极强的,我不会用。属于出了 BUG 第一念头是 BUG 在解释器上、做出来的程序跟产品需求不符时会说是你产品没说明白的那种。相反,我很欣赏那些在做完第一道题的 7 进制转换后还知道验算的,因为既然是笔算就很容易出错。我觉得这种人思考严谨、负责任。

其他的一些知识,比方说 memcache、SVN、单元测试这些,都属于经验问题,应届生很少需要接触到这些东西(甚至文件静态化也很少碰到),不像上面,我需要以此来判断面试者对编程是否已经入门。

还是在 ngacn 上看到的一句话,团队需要两种人,要么 NB 的,要么听话的。

]]>
为什么设计师应该学习编写代码 http://www.phpv.net/html/1694.html http://www.phpv.net/html/1694.html#comment Wed, 08 Jul 2009 17:30:52 +0000 admin http://www.phpv.net/html/1694.html 通常,在完成了一件网页设计后,设计师的无知都会显露无遗而备受指责。他们把创建网页代码的繁重工作都留给了程序员们。这种现象不只出现在网络开发行业,在软件及游戏开发业也是如此。

残酷的事实就是:开发进度可能会因设计师而停滞不前。为了追求最佳效率,设计师不仅需要描描画画,还需要能把它做出来!本文中,我想与读者分享一些为什么设计师需要学习编写代码的理由。

做现实可行的设计

有了一个最终产品将如何实现的明确印象,设计师将拿出更多实际可行的概念。作为开发进程中不可或缺的一份子,设计师肩负着确保他们的设计能够顺利转 移到网络介质上,同时还要考虑其可用性,网页易读性和可实现性。一个对用户友好的网站不仅有简洁清晰的浏览顺序逻辑,还向用户提供一切所需的信息而不会显 得咄咄逼人或是杂乱无章。想要知道一种 Web 布局是否可行的唯一途径就是亲自去了解如何建立一个网页。

使沟通更轻松

在几乎所有的设计与实现各自独立的产品中,设计组和实现组从没有满足过对方的期望,尤其是那些无形的产品,比如网站,软件和游戏。这通常归结于产品的期望和产品可行性的相互妥协,目前看来,这是难以完美统一的。解决之道是:设计师应该亲身尝试设计作品的实现,以避免沟通中的混淆,误解和误传。

方便的迭代开发过程

一个实践中的设计不应是绝对的。我的意思是,设计应该是灵活友好的,能够在修改以迎合系统技术限制的同时不扭曲其原有内涵。这些重复但必要的改动只 能由原设计师来实现。一个设计师/开发者能够比开发人员把设计重提到设计师手里进行改动更加高效。而且设计师和开发者之间——事实上经常如此——会产生摩 擦。

更好更和谐的结果

我常常喜欢把软件,网络或是游戏开发想成是管弦乐,而设计师是作曲家,开发者是乐团的指挥家。想象一下二者是同一个人将会怎样?交响曲将会是令人惊叹的,迷人的,纯正的!不仅是大师的神作,而且还是其本人亲自指挥的!

缩短开发时间

设计师同时充当程序员的角色意味着设计和编码的进度即使不是同时的也是连续的。结果就是开发周期的缩短——谁会不关心效率呢?

设计师更加市场化

现代的设计师需要提升自身的能力以保持个人价值,有一套技能是远远不够的,我们往往需要戴着不同的头衔:设计师,前端开发者,文章作者和项目经理。

通过学习实现你自己的设计,而不是让设计成为开发者手中的孤儿——你提升了自身价值。毕竟,在简历中提到设计和编码技能不会有坏处。相反,在这个金融危机时代的企业重组(参见:大规模裁员)和缩减开支的环境下,还能够强调一个人的重要性而免遭解雇。

然而,即使有这么多的理由支持设计师学习编写代码,这里还是有反对的声音。

引用 Lukas Mathis 的一篇有争议性的文章“设计师不是程序员”(注1)

如果设计师实现自己的设计,他会受制于两个不同的目标:代码的整洁和良好的用户体验。这两个目标是相互矛盾的。如果你要实现你自己的设计,你必然会为了代码的质量而妥协,这是不利于交互设计的。

实现自己设计的设计师面临着两个问题:他们知道一个很棒的新思路会建立混乱的代码,他们也知道如果改进用户体验,现有的代码会被打乱。这两者相互矛盾,因为用户体验都在于小的细节,而这些小细节最终毁于他们的不忍心使代码变得混乱。

这恰如其分的总结了“Web 开发纯化者”们所采取的强硬立场。他们是守旧派,倡导在设计和开发之间划清界限。显然,设计师为人类创作,开发者为机器创作。因此,用户体验设计师们应该设计出最可行的用户界面并让开发者做出最可行的编程决策。虽然这有一定的道理,但当我研究一个用户界面的时候,我从代码中寻找灵感的努力却以失败而告终。总之,在头脑中有一个技术及可用性限制的正确观念还是更有好处。

写在最后

归根结底,所开发项目的规模可能最终决定着设计师和开发者的角色。一个小型的应用可以由一个项目经理(注2)一手掌控,而一个大型的系统必然需要不同的专业人才!

注1 Mathis-Lukas——“Designers are not Programmers”——ignore the code

注2 Spolsky-Joel——描述了一个叫做“设计师兼程序员”的职位——“How to be a program manager”——Joel on Software

作者 John Urban 是加州大学的大二学生,主修计算机科学。

英文原文 http://sixrevisions.com/web_design/why-designers-should-learn-how-to-code/


转自:http://ineu.org.cn/blog/index.php/archives/431 ]]>
PHP 5.3.0 Released! http://www.phpv.net/html/1693.html http://www.phpv.net/html/1693.html#comment Wed, 01 Jul 2009 14:16:30 +0000 esayr http://www.phpv.net/html/1693.html 5.3.0 这就来了!
这个版本 release 得很自豪,是 PHP 5.* 系列的一个重大改进,包含了大量的新特性,修复了大量的BUG

新特性包括:命名空间,静态延迟绑定,闭包,可选的垃圾回收周期机制.
加了些 ext/phar, ext/intl   ext/fileinfo 的新扩展,修的BUG就超出140来个.

官方特意做了一个从PHP5.2迁移到PHP5.3的专题,点这里看
然后 ChangeLog 在这里.


最后,新版本点这里下载:



]]>
浅析豆瓣的 Google Analytics 应用 http://www.phpv.net/html/1692.html http://www.phpv.net/html/1692.html#comment Wed, 01 Jul 2009 13:46:02 +0000 admin http://www.phpv.net/html/1692.html 大家好,我是owen,主要从事 Online marketing 方面的工作,平时主要专注于 SEM 和 Web analytics。这次很荣幸能够应 Denis 之邀,在我爱水煮鱼抛砖引玉,发表 Web analytics 方面的文章,希望以后能够在这里,与大家多多交流这方面的知识。今天首先给大家简单谈谈豆瓣网怎么应用 Google Analytics。

豆瓣 Google Analytics 代码加载模式

豆瓣从今年开始也加入 Google Analytics 的统计阵营。让我们通过它加载的 Google Analytics 源码,简单分析一下它都是怎么应用的。

我们先从豆瓣的源码来看看它的Google Analytics统计代码

豆瓣 Google Analytics 代码
豆瓣 Google Analytics 代码

我们知道一般默认的 Google Analytics代码如下:

默认  Google Analytics 统计代码
默认 Google Analytics 统计代码

两相对比,我们就会发现豆瓣加载 ga.js 的方式与默认的方式有些不太一样,由于豆瓣并没有采用 https 加密访问,所以撇弃了默认的ga.js加载方式。

默认的统计函数,pageTracker 也被豆瓣改成了 _ga ,这个只是名称定义上的区别,并没有什么实质的改变。豆瓣的主要应用是下面两个函数:

使用 _ga._addOrganic 识别非主流搜索引擎

再来看豆瓣比默认 Google Analytics 代码增加的部分,那就是多了数个 _ga._addOrganic ,这是 Google Analytics 添加自定义搜索引擎的代码。尽管 Google Analytics 对于主流的搜索引擎都能自动识别,但毕竟能识别的是国外的主流搜索引擎,在国内,像搜狐的 Sogou,QQ 的 soso,网易的有道等搜索引擎,都不能被 Google Analytics 正确识别,而被当作推荐来源。这时候我们就可以利用_addOrganic 参数来识别这些非主流搜索引擎,如豆瓣的做法。

使用 _addIgnoredOrganic 忽略关键字

除了添加自定义搜索引擎,豆瓣在最后还添加了如下这些代码:

_ga._addIgnoredOrganic("豆瓣");
_ga._addIgnoredOrganic("douban");
_ga._addIgnoredOrganic("豆瓣网");
_ga._addIgnoredOrganic("www.douban.com");

这些代码用来把引号中的关键词从搜索引擎的关键词报告中排除,而当成直接点击量来源。

为什么要这么做?因为一个知名的大网站,来自这些品牌词的搜索流量都非常大,常常是排在前几位的搜索关键词来源,而这通常是因为搜索引擎养成现在的 人都懒得记网址,直接搜索品牌名来记住域名。这些品牌词对于网站的关键词来源分析并没有很直接的帮助,所以在来自品牌词的流量很大的情况下,可以直接把这 些关键词识别成直接点击量来源。

关于自定义 Google Analytics 搜索引擎排除特定关键词为直接点击量来源的语法,可以参考 Google Code 上关于这方面的详细介绍。

通过 _setVar 识别用户

当我们登录豆瓣后,再来分析豆瓣的源码,会发现多了一个ga._setVar(”xxxx”)的 Google Analytics 参数。

豆瓣使用 Google Analytics 的._setVar参数来跟踪登录用户行为
豆瓣使用 Google Analytics 的._setVar参数来跟踪登录用户行为

_setVar() 函数是 Google Analytics 的用户定义函数,主要用于对特定来源的用户行为进行分类,例如可以对登录浏览的用户设置一个数值,然后在 Google Analytics 后台的访问者/用户定义 中查看其浏览属性。

Google Analytics 访问者/用户定义报告
Google Analytics 访问者/用户定义报告

分析豆瓣的源码可以知道,豆瓣对每一个登录后的用户,都赋以一个专门的 id 值,这样可以在用户定义报告里,看到整体的登录用户访问行为,乃至每个登录用户的浏览行为。通过这样设定后,豆瓣便可以轻易获取高忠诚度访问用户的访问行为。关于_setVar()的更多说明,请参阅 Google Analytics的技术文档

如何根据访问者在我的网站上访问的页面或在表单上做出的响应对其进行分类?在 Google Analytics 官方的帮助文件,也给出了另外一个应用案例

值得注意的是,原来在设置 _setVar() 函数的时候,整个网站的跳出率会出现重大的偏差,不过在最近的google analytics官方博客,指出该bug已经修正,客户在进行这方面设置的时候,还是要注意对比前后数据是否有重大偏差。

通过 _trackPageview 区分不同类型的评论

豆瓣上的书评,影评和乐评可以说是豆瓣网站的核心价值所在。一般评论的URL格式如下:

豆瓣上单条评论的URL
豆瓣上单条评论的URL

当我们查看该页面的网页源代码时,会发现有趣的现象:

豆瓣单条评论页的 Google Analytics 代码
豆瓣单条评论页的 Google Analytics 代码

我们知道,一般 Google Analytics 的_trackPageview() 括弧中的参数是留空的, Google Analytics 会自动捕获网址的 URL 参数,如果在 _trackPageview()括弧中输入特定的数值,那么在 Google Analytics 的报表中,URL 将是我们指定的参数,而不再是我们在地址栏看到的 URL。

如上面的例子,我们在 Google Analytics 中看到的URL将是/book/review/1946018/,而不再是我们在浏览器地址栏看到的/review/1946018/

当所在频道是电影或者音乐时,_trackPageview() 中的参数将根据所在频道的属性,变为/movie/xxxxx 或者 /music/xxxxx的数值。

豆瓣通过对的参数进行重新指定,主要有以下的好处:

保证了用户和搜索引擎看到的 URL 比较简短,达到 URL 对用户友好和对搜索引擎友好的目的;而在 Google Analytics 报告中,通过 内容/内容细目/ 报告,又能了解到各个频道总的浏览情况。

在GA的内容细目报告中,将会多出 /book/ /music/ /movie/ 这样的文件夹来,总而获得各个频道的合计浏览数据。

而如果只是使用默认 _trackPageview(),你将只能得到所有评论页面的浏览数据,而无法得到细分的各个频道的浏览数据。

关于_trackPageview()的具体的使用方法可参照 Google Code 的说明

注意事项:使用 _trackPageview() 参数重新指定 URL 之后,网站覆盖图的数据将受到影响。可参阅 Google Analytics 的官方帮助文件

除了豆瓣使用 _trackPageview() 来对URL进行重写,大众点评网也采用了类似的做法(应该是比豆瓣更早采用。。。因为是我在点评网任职时候实验的做法;那时候豆瓣还没有使用 Google Analytis 统计代码,呵呵),有兴趣的同学可以自己去研究点评的 Google Analytis 代码。

]]>