用谷歌浏览器来当手机模拟器
[
2010-9-30 17:44 | by 张宴 ]
2010-9-30 17:44 | by 张宴 ]
很多网站都通过User-Agent来判断浏览器类型,如果是3G手机,显示手机页面内容,如果是普通浏览器,显示普通网页内容。
谷歌Chrome浏览器,可以很方便地用来当3G手机模拟器。在Windows的【开始】-->【运行】中输入以下命令,启动谷歌浏览器,即可模拟相应手机的浏览器去访问3G手机网页:
谷歌Android:
苹果iPhone:
诺基亚N97:
试一试,分别用Android、iPhone、诺基亚访问http://www.163.com/、http://blog.s135.com/、http://www.google.com.hk/、http://3g.qq.com、http://t.sina.cn这些3G手机网页,看看有什么不同。
更多款手机的User-Agent:http://www.zytrax.com/tech/web/mobile_ids.html
10月11日备注:如果想切换回普通浏览器模式,关掉所有Chrome浏览器,重开即可。如果不想关闭浏览器,切回普通浏览器模式,则访问:
谷歌Chrome浏览器,可以很方便地用来当3G手机模拟器。在Windows的【开始】-->【运行】中输入以下命令,启动谷歌浏览器,即可模拟相应手机的浏览器去访问3G手机网页:
谷歌Android:
chrome.exe --user-agent="Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
苹果iPhone:
chrome.exe --user-agent="Mozilla/5.0 (iPad; U; CPU OS 3_2_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B500 Safari/531.21.10"
诺基亚N97:
chrome.exe --user-agent="Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124"
试一试,分别用Android、iPhone、诺基亚访问http://www.163.com/、http://blog.s135.com/、http://www.google.com.hk/、http://3g.qq.com、http://t.sina.cn这些3G手机网页,看看有什么不同。
更多款手机的User-Agent:http://www.zytrax.com/tech/web/mobile_ids.html
10月11日备注:如果想切换回普通浏览器模式,关掉所有Chrome浏览器,重开即可。如果不想关闭浏览器,切回普通浏览器模式,则访问:
chrome.exe --user-agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3"
为 MySQL 增加 HTTP/REST 客户端:MySQL UDF 函数 mysql-udf-http 1.0 发布
[
2010-9-8 18:43 | by 张宴 ]
2010-9-8 18:43 | by 张宴 ]
[文章作者:张宴 本文版本:v1.0 最后修改:2010.09.08 转载请注明原文链接:http://blog.s135.com/mysql-udf-http/]
Mysql-udf-http 是一款简单的MySQL用户自定义函数(UDF, User-Defined Functions),具有http_get()、http_post()、http_put()、http_delete()四个函数,可以在MySQL数据库中利用HTTP协议进行REST相关操作。
项目网址:http://code.google.com/p/mysql-udf-http/
中文说明:http://blog.s135.com/mysql-udf-http/
使用环境:Linux操作系统,支持的MySQL版本:5.1.x 和 5.5.x。5.0.x未经测试。
软件作者:张宴
一、REST架构风格:
REST(Representational State Transfer)是一种轻量级的Web Service架构风格,其实现和操作明显比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。REST最早是由 Roy Thomas Fielding 博士2000年在论文《Architectural Styles and the Design of Network-based Software Architectures》中提出的,中文译文全文PDF点此下载。另外,有篇译文对REST做了一个简化说明。
目前,REST架构风格的常见实现是基于HTTP协议及其四种基本方法(如POST、GET、PUT和DELETE)的。有人将HTTP协议的四种方法与CRUD原则相对应,CRUD原则对于资源只需要四种行为:Create(创建)、Read(读取)、Update(更新)和Delete(删除)就可以完成对其操作和处理。


在Mysql-udf-http中,四个函数http_post()、http_get()、http_put()、http_delete()分别对应HTTP协议的POST、GET、PUT、DELETE四种方法。
REST是一种架构风格,而不是协议或标准。HTTP协议“POST、GET、PUT、DELET”四种方法与CRUD原则“Create、Read、Update、Delete”四种行为的一一对应关系只是一种架构设计习惯,而不是规范。因此,POST方法也可以用来更新资源,PUT方法也可以用来创建资源,这就要看具体应用程序作者的定义了。例如Tokyo Tyrant除了支持Memcached协议外,还支持REST方式存取,PUT代表创建和更新,GET代表读取,DELETE代表删除(关于Tokyo Tyrant的安装使用请点击这儿)。
目前国内外流行的Web 2.0应用API接口中,很多都支持REST架构风格。例如:新浪微博开放平台、人人网API、Google OpenID、Flickr、Twitter、eBay、Facebook、Last.fm、del.icio.us、Yahoo Search、Amazon S3、Amazon EC2、Digg、Microsoft Bing、FriendFeed、PayPal、Foursquare,更多...
当记录数成百上千万条时,通常采用 MySQL 分表减低数据库压力。但是,全部数据按点击数、精华、积分排序显示等功能,在MySQL 分表中则无法实现。编写 Mysql-udf-http 的最初目的,是为了在项目开发中,将 MySQL 各分表的数据自动同步到我们的 TCSQL 高速列表数据库,用来做列表查询、显示,内容页则根据ID直接查询各 MySQL 分表的内容。由于HTTP协议的通用性,通过 Mysql-udf-http 可以做更多的事情。
通过Mysql-udf-http,你可以在MySQL中利用触发器,将MySQL的数据同步到支持REST的应用上。例如你有一个独立博客,你可以在文章表创建MySQL触发器,这样,在发表文章时,就可以将文章标题、URL自动同步到新浪微博、Twitter。你想用 Tokyo Tyrant 做缓存,也可以利用MySQL触发器在发生增、删、改时,将数据自动同步到 Tokyo Tyrant。详细配置方法本文第4节中会有介绍。
二、Mysql-udf-http的安装与使用:
1. 在Linux系统上安装Mysql-udf-http
注意:“/usr/local/webserver/mysql/”是你的MySQL安装路径,如果你的MySQL安装路径不同,请自行修改。
Mysql-udf-http 是一款简单的MySQL用户自定义函数(UDF, User-Defined Functions),具有http_get()、http_post()、http_put()、http_delete()四个函数,可以在MySQL数据库中利用HTTP协议进行REST相关操作。
项目网址:http://code.google.com/p/mysql-udf-http/
中文说明:http://blog.s135.com/mysql-udf-http/
使用环境:Linux操作系统,支持的MySQL版本:5.1.x 和 5.5.x。5.0.x未经测试。
软件作者:张宴
一、REST架构风格:
REST(Representational State Transfer)是一种轻量级的Web Service架构风格,其实现和操作明显比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。REST最早是由 Roy Thomas Fielding 博士2000年在论文《Architectural Styles and the Design of Network-based Software Architectures》中提出的,中文译文全文PDF点此下载。另外,有篇译文对REST做了一个简化说明。
目前,REST架构风格的常见实现是基于HTTP协议及其四种基本方法(如POST、GET、PUT和DELETE)的。有人将HTTP协议的四种方法与CRUD原则相对应,CRUD原则对于资源只需要四种行为:Create(创建)、Read(读取)、Update(更新)和Delete(删除)就可以完成对其操作和处理。


在Mysql-udf-http中,四个函数http_post()、http_get()、http_put()、http_delete()分别对应HTTP协议的POST、GET、PUT、DELETE四种方法。
REST是一种架构风格,而不是协议或标准。HTTP协议“POST、GET、PUT、DELET”四种方法与CRUD原则“Create、Read、Update、Delete”四种行为的一一对应关系只是一种架构设计习惯,而不是规范。因此,POST方法也可以用来更新资源,PUT方法也可以用来创建资源,这就要看具体应用程序作者的定义了。例如Tokyo Tyrant除了支持Memcached协议外,还支持REST方式存取,PUT代表创建和更新,GET代表读取,DELETE代表删除(关于Tokyo Tyrant的安装使用请点击这儿)。
目前国内外流行的Web 2.0应用API接口中,很多都支持REST架构风格。例如:新浪微博开放平台、人人网API、Google OpenID、Flickr、Twitter、eBay、Facebook、Last.fm、del.icio.us、Yahoo Search、Amazon S3、Amazon EC2、Digg、Microsoft Bing、FriendFeed、PayPal、Foursquare,更多...
当记录数成百上千万条时,通常采用 MySQL 分表减低数据库压力。但是,全部数据按点击数、精华、积分排序显示等功能,在MySQL 分表中则无法实现。编写 Mysql-udf-http 的最初目的,是为了在项目开发中,将 MySQL 各分表的数据自动同步到我们的 TCSQL 高速列表数据库,用来做列表查询、显示,内容页则根据ID直接查询各 MySQL 分表的内容。由于HTTP协议的通用性,通过 Mysql-udf-http 可以做更多的事情。
通过Mysql-udf-http,你可以在MySQL中利用触发器,将MySQL的数据同步到支持REST的应用上。例如你有一个独立博客,你可以在文章表创建MySQL触发器,这样,在发表文章时,就可以将文章标题、URL自动同步到新浪微博、Twitter。你想用 Tokyo Tyrant 做缓存,也可以利用MySQL触发器在发生增、删、改时,将数据自动同步到 Tokyo Tyrant。详细配置方法本文第4节中会有介绍。
二、Mysql-udf-http的安装与使用:
1. 在Linux系统上安装Mysql-udf-http
注意:“/usr/local/webserver/mysql/”是你的MySQL安装路径,如果你的MySQL安装路径不同,请自行修改。
数据仓库与Web商业智能平台架构设计
[
2010-7-23 18:12 | by 张宴 ]
2010-7-23 18:12 | by 张宴 ]
此文为《程序员》杂志约稿,发表在2010年6月刊。
文章以“KBI用户行为分析”的项目架构为原型,对Web商业智能平台的架构设计进行了概要介绍。实现海量数据的分析挖掘计算相对较易,如何以灵活的可扩展性框架,来便捷地应对项目开发周期中,来自众多项目干系人的需求变更,才是难点。
文章以“KBI用户行为分析”的项目架构为原型,对Web商业智能平台的架构设计进行了概要介绍。实现海量数据的分析挖掘计算相对较易,如何以灵活的可扩展性框架,来便捷地应对项目开发周期中,来自众多项目干系人的需求变更,才是难点。
想要个宝宝,原来的“1室1厅”太小,于是将在公司附近莱镇香格里小区的房子卖掉,暂时在南三环与南四环之间的角门路,租了个两居,离老婆单位经济日报社近一点。我上班的路程也由原来的2公里变成了28公里。“地铁4号线”换“地铁13号线”再换公司班车太折腾,且人多如蚂蚁,遂买了辆电动摩托,速度最快50码,骑行上下班。
搜狗地图的路书功能不错,可以将行驶路程用Flash动画表示出来。
Flash Player文件
最后,怀念一下,我们已经不再拥有的那曾经的家:
搜狗地图的路书功能不错,可以将行驶路程用Flash动画表示出来。
Flash Player文件最后,怀念一下,我们已经不再拥有的那曾经的家:
当 MySQL 和 Memcached 遇到尾部空格时
[
2010-7-6 18:42 | by 张宴 ]
2010-7-6 18:42 | by 张宴 ]
同事下午遇到一问题,MySQL 和 Memcached 对于同一个key,不能对应起来。最终原因是:PHP将key写入MySQL数据库之前,没有经过trim()过滤首尾空格(关键是尾部空格),结果:
1、MySQL的varchar、char类型字段,SELECT .... WHERE 查询时忽略字段的尾部空格。例如varchar类型字段uidcode中,存储的含有尾部空格的内容“rewinx ”,通过以下三种方式均可查询到:

在MySQL手册第“11.4.1. CHAR和VARCHAR类型”节中写道(http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#char):请注意所有MySQL校对规则属于PADSPACE类。这说明在MySQL中的所有CHAR和VARCHAR值比较时不需要考虑任何尾部空格。请注意所有MySQL版本均如此,并且它不受SQL服务器模式的影响。
2、PHP 的 Memcache 扩展,则在set、get时,自动将key中的空格,转换成了半角下划线“_”。当然,直接通过 Memcached 协议来读取,key值“rewinx ”就要写成“rewinx_”了。
1、MySQL的varchar、char类型字段,SELECT .... WHERE 查询时忽略字段的尾部空格。例如varchar类型字段uidcode中,存储的含有尾部空格的内容“rewinx ”,通过以下三种方式均可查询到:

在MySQL手册第“11.4.1. CHAR和VARCHAR类型”节中写道(http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#char):请注意所有MySQL校对规则属于PADSPACE类。这说明在MySQL中的所有CHAR和VARCHAR值比较时不需要考虑任何尾部空格。请注意所有MySQL版本均如此,并且它不受SQL服务器模式的影响。
2、PHP 的 Memcache 扩展,则在set、get时,自动将key中的空格,转换成了半角下划线“_”。当然,直接通过 Memcached 协议来读取,key值“rewinx ”就要写成“rewinx_”了。
轻量级开源简单队列服务 HTTPSQS 1.3 版本发布
[
2010-6-29 18:27 | by 张宴 ]
2010-6-29 18:27 | by 张宴 ]
[文章作者:张宴 本文版本:v1.0 最后修改:2010.06.29 转载请注明原文链接:http://blog.s135.com/httpsqs_1_3/]
HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。
项目网址:http://code.google.com/p/httpsqs/
使用文档:http://blog.s135.com/httpsqs/
使用环境:Linux(同时支持32位、64位操作系统,推荐使用64位操作系统)
软件作者:张宴
队列(Queue)又称先进先出表(First In First Out),即先进入队列的元素,先从队列中取出。加入元素的一头叫“队头”,取出元素的一头叫“队尾”。利用消息队列可以很好地异步处理数据传送和存储,当你频繁地向数据库中插入数据、频繁地向搜索引擎提交数据,就可采取消息队列来异步插入。另外,还可以将较慢的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理,例如FLV视频转换、发送手机短信、发送电子邮件等。
HTTPSQS 具有以下特征:
● 非常简单,基于 HTTP GET/POST 协议。PHP、Java、Perl、Shell、Python、Ruby等支持HTTP协议的编程语言均可调用。
● 非常快速,入队列、出队列速度超过10000次/秒。
● 高并发,支持上万的并发连接,C10K不成问题。
● 支持多队列。
● 单个队列支持的最大队列数量高达10亿条。
● 低内存消耗,海量数据存储,存储几十GB的数据只需不到100MB的物理内存缓冲区。
● 可以在不停止服务的情况下便捷地修改单个队列的最大队列数量。
● 可以实时查看队列状态(入队列位置、出队列位置、未读队列数量、最大队列数量)。
● 可以查看指定队列ID(队列点)的内容,包括未出、已出的队列内容。
● 查看队列内容时,支持多字符集编码。
● 源代码不超过800行,适合二次开发。
HTTPSQS 1.3 版本增加的功能:
1、服务器端:
● 增加了重要功能:定时将内存缓冲区内容写到磁盘的功能。
HTTPSQS 1.2 及以前的版本,只有当内存缓冲区满的时候,才将内存中的内容写到磁盘,如果这期间服务器宕机,将导致一部分数据丢失。从 1.3 版本开始,支持了定时(默认5秒钟/次)将内存缓冲区内容同步到磁盘的功能,可以在启动 HTTPSQS 时使用“-s <second>”参数设置同步间隔。在 HTTPSQS 运行过程中,可以通过浏览器访问“http://host:port/?name=your_queue_name&opt=synctime&num=间隔秒数”来实时修改同步间隔,无需重启。
● 增加了辅助功能:以JSON格式查看队列状态。
原有的查询队列状态功能“http://host:port/?name=your_queue_name&opt=status”,适合通过浏览器访问,人工查看,不便于程序处理。新增加的功能“http://host:port/?name=your_queue_name&opt=status_json”,以JSON格式输出队列状态信息,便于客户端程序进行处理,输出的格式示例如下:
● 增加了以下四项启动参数:
2、客户端:
● PHP客户端Class增加了Keep-alive长连接断线自动检测、自动重连功能,PHP客服端守护进程从HTTPSQS读取数据时,不用考虑连接异常断开处理。非常适合PHP客服端作为守护进程,从队列GET读取数据,或者批量往队列中写入数据的应用。
● PHP客户端Class增加了函数$httpsqs->status_json($host, $port, $charset, $name);、$httpsqs->synctime($host, $port, $charset, $name, $num);、$httpsqs->pstatus_json($host, $port, $charset, $name);、$httpsqs->psynctime($host, $port, $charset, $name, $num);,详细使用说明请见:http://blog.s135.com/httpsqs/
HTTPSQS 1.1/1.2 版本如何升级到 HTTPSQS 1.2 版本:
●服务器端版本完全兼容:编译安装 HTTPSQS 1.3,替换 HTTPSQS 1.1/1.2,然后“kill httpsqs的进程ID”,按原来的启动参数启动 HTTPSQS 即可,数据完全兼容。
●客户端版本完全兼容:HTTPSQS 1.3 版本的PHP客户端,仍可以直接操作 HTTPSQS 1.1/1.2。两个版本的PHP客户端函数使用方式、参数相同,1.3 版本的PHP客户端与 1.2 版本相比,增加了status_json()、synctime()、pstatus_json()、psynctime()四个函数。
HTTPSQS 的生产环境应用:
●金山通行证(https://my.xoyo.com)
队列应用类型:手机短信上行、手机短信下发、邮件下发
队列应用要求:稳定性高,存储数据量大
队列部署结构:一主、一备两台 HTTPSQS 热备模式
●金山用户行为分析系统(http://kbi.xoyo.com)
队列应用类型:用户鼠标点击、访问URL原始数据采集
队列应用要求:并发性能高,存储数据量大
队列部署结构:多台 HTTPSQS 应用层哈希分布式模式
●金山逍遥网站内搜索
队列应用类型:索引准实时更新。在金山游戏官网中,新闻、论坛帖子、客服公告、SNS社区等发生的增、删、改操作,文本内容实时写入HTTPSQS队列,全站搜索引擎增量索引准实时(1分钟内)更新的数据源取自HTTPSQS。
●金山逍遥网全站通用评论系统
队列应用类型:评论发表
●金山《剑侠情缘》电视连续剧四大角色人物选秀活动(http://zt.xoyo.com/haixuan/)
队列应用类型:用户上传的照片异步裁剪、缩放处理
●新浪邮箱(http://mail.sina.com.cn)
队列应用类型:用户登陆日志记录
HTTPSQS 1.3 版本的详细使用说明,请访问: http://blog.s135.com/httpsqs/
HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。
项目网址:http://code.google.com/p/httpsqs/
使用文档:http://blog.s135.com/httpsqs/
使用环境:Linux(同时支持32位、64位操作系统,推荐使用64位操作系统)
软件作者:张宴
队列(Queue)又称先进先出表(First In First Out),即先进入队列的元素,先从队列中取出。加入元素的一头叫“队头”,取出元素的一头叫“队尾”。利用消息队列可以很好地异步处理数据传送和存储,当你频繁地向数据库中插入数据、频繁地向搜索引擎提交数据,就可采取消息队列来异步插入。另外,还可以将较慢的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理,例如FLV视频转换、发送手机短信、发送电子邮件等。
HTTPSQS 具有以下特征:
● 非常简单,基于 HTTP GET/POST 协议。PHP、Java、Perl、Shell、Python、Ruby等支持HTTP协议的编程语言均可调用。
● 非常快速,入队列、出队列速度超过10000次/秒。
● 高并发,支持上万的并发连接,C10K不成问题。
● 支持多队列。
● 单个队列支持的最大队列数量高达10亿条。
● 低内存消耗,海量数据存储,存储几十GB的数据只需不到100MB的物理内存缓冲区。
● 可以在不停止服务的情况下便捷地修改单个队列的最大队列数量。
● 可以实时查看队列状态(入队列位置、出队列位置、未读队列数量、最大队列数量)。
● 可以查看指定队列ID(队列点)的内容,包括未出、已出的队列内容。
● 查看队列内容时,支持多字符集编码。
● 源代码不超过800行,适合二次开发。
HTTPSQS 1.3 版本增加的功能:
1、服务器端:
● 增加了重要功能:定时将内存缓冲区内容写到磁盘的功能。
HTTPSQS 1.2 及以前的版本,只有当内存缓冲区满的时候,才将内存中的内容写到磁盘,如果这期间服务器宕机,将导致一部分数据丢失。从 1.3 版本开始,支持了定时(默认5秒钟/次)将内存缓冲区内容同步到磁盘的功能,可以在启动 HTTPSQS 时使用“-s <second>”参数设置同步间隔。在 HTTPSQS 运行过程中,可以通过浏览器访问“http://host:port/?name=your_queue_name&opt=synctime&num=间隔秒数”来实时修改同步间隔,无需重启。
● 增加了辅助功能:以JSON格式查看队列状态。
原有的查询队列状态功能“http://host:port/?name=your_queue_name&opt=status”,适合通过浏览器访问,人工查看,不便于程序处理。新增加的功能“http://host:port/?name=your_queue_name&opt=status_json”,以JSON格式输出队列状态信息,便于客户端程序进行处理,输出的格式示例如下:
{"name":"xoyo","maxqueue":1000000,"putpos":4562,"putlap":2,"getpos":900045,"getlap":1,"unread":104517}
● 增加了以下四项启动参数:
-s <second> 同步内存缓冲区内容到磁盘的间隔秒数(默认值:5)
-c <num> 内存中缓存的最大非叶子节点数(默认值:10000)
-m <size> 数据库内存缓存大小,单位:MB(默认值:100)
-i <file> 保存进程PID到文件中(默认值:/tmp/httpsqs.pid)
-c <num> 内存中缓存的最大非叶子节点数(默认值:10000)
-m <size> 数据库内存缓存大小,单位:MB(默认值:100)
-i <file> 保存进程PID到文件中(默认值:/tmp/httpsqs.pid)
2、客户端:
● PHP客户端Class增加了Keep-alive长连接断线自动检测、自动重连功能,PHP客服端守护进程从HTTPSQS读取数据时,不用考虑连接异常断开处理。非常适合PHP客服端作为守护进程,从队列GET读取数据,或者批量往队列中写入数据的应用。
● PHP客户端Class增加了函数$httpsqs->status_json($host, $port, $charset, $name);、$httpsqs->synctime($host, $port, $charset, $name, $num);、$httpsqs->pstatus_json($host, $port, $charset, $name);、$httpsqs->psynctime($host, $port, $charset, $name, $num);,详细使用说明请见:http://blog.s135.com/httpsqs/
HTTPSQS 1.1/1.2 版本如何升级到 HTTPSQS 1.2 版本:
●服务器端版本完全兼容:编译安装 HTTPSQS 1.3,替换 HTTPSQS 1.1/1.2,然后“kill httpsqs的进程ID”,按原来的启动参数启动 HTTPSQS 即可,数据完全兼容。
●客户端版本完全兼容:HTTPSQS 1.3 版本的PHP客户端,仍可以直接操作 HTTPSQS 1.1/1.2。两个版本的PHP客户端函数使用方式、参数相同,1.3 版本的PHP客户端与 1.2 版本相比,增加了status_json()、synctime()、pstatus_json()、psynctime()四个函数。
HTTPSQS 的生产环境应用:
●金山通行证(https://my.xoyo.com)
队列应用类型:手机短信上行、手机短信下发、邮件下发
队列应用要求:稳定性高,存储数据量大
队列部署结构:一主、一备两台 HTTPSQS 热备模式
●金山用户行为分析系统(http://kbi.xoyo.com)
队列应用类型:用户鼠标点击、访问URL原始数据采集
队列应用要求:并发性能高,存储数据量大
队列部署结构:多台 HTTPSQS 应用层哈希分布式模式
●金山逍遥网站内搜索
队列应用类型:索引准实时更新。在金山游戏官网中,新闻、论坛帖子、客服公告、SNS社区等发生的增、删、改操作,文本内容实时写入HTTPSQS队列,全站搜索引擎增量索引准实时(1分钟内)更新的数据源取自HTTPSQS。
●金山逍遥网全站通用评论系统
队列应用类型:评论发表
●金山《剑侠情缘》电视连续剧四大角色人物选秀活动(http://zt.xoyo.com/haixuan/)
队列应用类型:用户上传的照片异步裁剪、缩放处理
●新浪邮箱(http://mail.sina.com.cn)
队列应用类型:用户登陆日志记录
HTTPSQS 1.3 版本的详细使用说明,请访问: http://blog.s135.com/httpsqs/
Linux 下 PHP 5.2.x 连接 SQL Server 数据库 FreeTDS 配置笔记
[
2010-6-25 18:00 | by 张宴 ]
2010-6-25 18:00 | by 张宴 ]
CentOS 5.4 Linux 下的 PHP(FastCGI) 需要连接相关部门的SQL Server 2000数据库,配置了扩展FreeTDS扩展。
1、编译安装FreeTDS
输入以下内容:
2、编译安装PHP自带MSSQL扩展
进入本地已存在的php-5.2.XX源码包目录:
3、在php.ini配置文件中增加mssql.so
增加一行:
4、重启PHP FastCGI
5、测试文件(test_mssql.php):
1、编译安装FreeTDS
mkdir -p /data0/software/
cd /data0/software/
wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar zxvf freetds-stable.tgz
cd freetds-0.82/
./configure --prefix=/usr/local/webserver/freetds --with-tdsver=8.0 --enable-msdblib
make && make install
cd ../
echo "/usr/local/webserver/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf
ln -s /usr/local/webserver/freetds/lib/libsybdb.so.5.0.0 /usr/local/webserver/freetds/lib/libsybdb.so.4
/sbin/ldconfig
rm -f /usr/local/webserver/freetds/etc/freetds.conf
vi /usr/local/webserver/freetds/etc/freetds.conf
cd /data0/software/
wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar zxvf freetds-stable.tgz
cd freetds-0.82/
./configure --prefix=/usr/local/webserver/freetds --with-tdsver=8.0 --enable-msdblib
make && make install
cd ../
echo "/usr/local/webserver/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf
ln -s /usr/local/webserver/freetds/lib/libsybdb.so.5.0.0 /usr/local/webserver/freetds/lib/libsybdb.so.4
/sbin/ldconfig
rm -f /usr/local/webserver/freetds/etc/freetds.conf
vi /usr/local/webserver/freetds/etc/freetds.conf
输入以下内容:
引用
[global]
# TDS protocol version
; tds version = 4.2
# Whether to write a TDSDUMP file for diagnostic purposes
# (setting this to /tmp is insecure on a multi-user system)
; dump file = /tmp/freetds.log
; debug flags = 0xffff
# Command and connection timeouts
; timeout = 10
; connect timeout = 10
# If you get out-of-memory errors, it may mean that your client
# is trying to allocate a huge buffer for a TEXT field.
# Try setting 'text size' to a more reasonable limit
text size = 64512
host = mssql.yourdomain.com
port = 1433
tds version = 8.0
client charset = UTF-8
# TDS protocol version
; tds version = 4.2
# Whether to write a TDSDUMP file for diagnostic purposes
# (setting this to /tmp is insecure on a multi-user system)
; dump file = /tmp/freetds.log
; debug flags = 0xffff
# Command and connection timeouts
; timeout = 10
; connect timeout = 10
# If you get out-of-memory errors, it may mean that your client
# is trying to allocate a huge buffer for a TEXT field.
# Try setting 'text size' to a more reasonable limit
text size = 64512
host = mssql.yourdomain.com
port = 1433
tds version = 8.0
client charset = UTF-8
2、编译安装PHP自带MSSQL扩展
进入本地已存在的php-5.2.XX源码包目录:
cd /data0/software/php-5.2.XX/ext/mssql/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-mssql=/usr/local/webserver/freetds/
make && make install
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-mssql=/usr/local/webserver/freetds/
make && make install
3、在php.ini配置文件中增加mssql.so
vi /usr/local/webserver/php/etc/php.ini
增加一行:
引用
extension = "mssql.so"
4、重启PHP FastCGI
/usr/local/webserver/php/sbin/php-fpm restart
5、测试文件(test_mssql.php):
金山游戏KSG-逍遥网招聘系统工程师
[
2010-6-1 13:36 | by 张宴 ]
2010-6-1 13:36 | by 张宴 ]
职位名称:金山游戏KSG-逍遥网系统工程师
所属部门:KSG-逍遥网XOYO
招聘人数:2人
工作地点:北京金山软件大厦
相关描述:http://job.kingsoft.com/intro.php?id=372
工作职责:
1、Linux/Unix 服务器安装、配置、调优;
2、常用环境搭建,如:apache、php、mysql、nginx、memcache、svn、vpn、iSCSI等;
3、系统脚本编写,数据统计;
4、配合逍遥网动态应用云计算架构平台开发。
任职资格:
1、熟悉网络理论(如OSI七层模型,TCP状态机),网络协议(TCP/IP)等;
2、熟悉各种网络设备的配置调试及故障分析;
3、熟悉UNIX系统,具备一定的语言开发能力(Perl,PHP,C,shell等)及相关开发工作经验;
4、有大型社区网站运维经验者优先,熟悉分布式架构;
5、愿意积极主动的思考如何把工作做好;
6、有团队合作精神,能够承受较大的工作压力。
简历请发至 zhangyan2[at]kingsoft.com(发邮件时[at]请改成@) 或 hr@kingsoft.com(如投给hr邮箱,邮件主题请包含关键词“系统工程师”,便于邮件自动识别分发)
职位名称:金山游戏KSG-逍遥网PHP工程师
所属部门:KSG-逍遥网XOYO
招聘人数:4人
工作地点:北京金山软件大厦
相关描述:http://job.kingsoft.com/intro.php?id=494
工作职责:
1、熟悉apache+php5 + mysql 开发,1年以上开发经验;
2、有PHP主流框架的使用经验,能自己写一套MVC框架更佳;
3、熟悉各种设计模式,并能应用在开发当中;
4、熟悉json+AJAX技术和模板技术,了解css+div和JavaScript;
5、熟悉Apache、MySQL和Linux的日常管理和维护,熟悉分布式架构;
6、有Linux下C语言开发经验者优先;
7、具有文档编写能力,面向对象的编程思想,优良的编程风格和习惯;
8、较强的团队协作能力、沟通能力和学习能力。
任职资格:
1、1年及以上PHP web应用程序开发;
2、熟练使用CSS,HTML,javascript;
3、扎实的SQL知识,熟练使用MySQL;
4、良好的SQL ,PL/SQL编程技巧,有在Mysql下的编程;
5、具有出色的独立工作能力及团队合作精神。
简历请发至 zhangyan2[at]kingsoft.com(发邮件时[at]请改成@) 或 hr@kingsoft.com(如投给hr邮箱,邮件主题请包含关键词“PHP”,便于邮件自动识别分发)
金山软件公司
金山软件公司,自1989年第一款办公软件产品WPS1.0投放市场以来,目前已经成为中国最知名的软件企业之一,是中国领先的应用软件产品和互联网服务供应商。
金山软件在珠海、北京、成都、大连、深圳五地分设研发中心,2005年成立日本合资公司。公司目前主要涉及软件和网游两大核心业务,创造了金山词霸、WPS Office、金山毒霸、剑侠情缘、封神榜等众多知名产品。
2007年10月9日,金山软件在香港联交所主板成功上市,股份编号3888。
金山在不断成长的20年中,经历了岁月的洗礼与沉淀。一直以来,金山执着于对技术的创新,在2000多名公司员工中,从事研发相关工作的人员超过总体的60%。因为坚持的奋斗与努力,金山人相信,创造出世界上一流的软件产品、创造一家世界一流的软件公司、让我们的软件运行在每一台电脑上,都一定是可以实现的梦想。
金山游戏
金山从1995年开始进入游戏产业,成立珠海西山居工作室。1996年之后,《中关村启示录》、《剑侠情缘》、《朝鲜战争》等单机游戏陆续发布。2003年,金山进入网游产业,做植根于中华文化的网游产品。同年西山居工作室推出首款网游《剑侠情缘网络版》并大获成功。
2004年,金山游戏业务开始飞速发展,陆续成立烈火、亚丁等工作室,并推出《封神榜》、《春秋Q传》等系列产品。与此同时,《剑侠情缘网络版》首度进军台湾、马来西亚等海外市场。2005年6月《剑侠情缘网络版》登陆越南,迅速占领越南网游80%市场份额。
2009年,金山游戏(之前网游事业部)作为独立公司运营,简称“KSG”。如今,金山游戏主要面向计算机游戏和数字电视娱乐产业,是集自主研发和独立运营于一体的中国最知名的数字娱乐产品和服务供货商之一,代表作品包括:剑侠情缘系列、封神榜系列等,其中“剑侠系列”游戏被誉为“中国原创武侠游戏第一品牌”。目前,金山游戏产品注册人数超过1亿4千万。
金山游戏拥有员工超过1200人,由研发和运营两大体系构成,设有西山居、烈火、亚丁、鲸彩、上水轩、七尘斋六大游戏工作室,主要从事大型MMO游戏自主研发,并且控股多家游戏工作室,同时运营超过10款大型MMO游戏。金山游戏运营中心设有网游运营、业务发展、业务拓展、市场、区域营销、运维、客户服务等相关运营体系,服务于亿万用户;同时,在全国七大片区设立20多个分公司和办事处,覆盖了全国渠道网络。
金山逍遥Xoyo.com
金山逍遥Xoyo.com是金山游戏官方网站,为金山旗下的各款游戏产品提供网络营销服务,包括金山公司网游介绍、客户服务、在线充值、玩家社区等内容建设和在线服务支持。
作为金山游戏未来发展战略中的重要组成部分,金山逍遥Xoyo.com致力于发挥网络营销多途径、低成本的优势,帮助公司打造各工作室与产品品牌,降低整体营销成本;同时以“吸引新用户、服务老用户”为目标,为金山游戏用户提供高品质的服务。
所属部门:KSG-逍遥网XOYO
招聘人数:2人
工作地点:北京金山软件大厦
相关描述:http://job.kingsoft.com/intro.php?id=372
工作职责:
1、Linux/Unix 服务器安装、配置、调优;
2、常用环境搭建,如:apache、php、mysql、nginx、memcache、svn、vpn、iSCSI等;
3、系统脚本编写,数据统计;
4、配合逍遥网动态应用云计算架构平台开发。
任职资格:
1、熟悉网络理论(如OSI七层模型,TCP状态机),网络协议(TCP/IP)等;
2、熟悉各种网络设备的配置调试及故障分析;
3、熟悉UNIX系统,具备一定的语言开发能力(Perl,PHP,C,shell等)及相关开发工作经验;
4、有大型社区网站运维经验者优先,熟悉分布式架构;
5、愿意积极主动的思考如何把工作做好;
6、有团队合作精神,能够承受较大的工作压力。
简历请发至 zhangyan2[at]kingsoft.com(发邮件时[at]请改成@) 或 hr@kingsoft.com(如投给hr邮箱,邮件主题请包含关键词“系统工程师”,便于邮件自动识别分发)
职位名称:金山游戏KSG-逍遥网PHP工程师
所属部门:KSG-逍遥网XOYO
招聘人数:4人
工作地点:北京金山软件大厦
相关描述:http://job.kingsoft.com/intro.php?id=494
工作职责:
1、熟悉apache+php5 + mysql 开发,1年以上开发经验;
2、有PHP主流框架的使用经验,能自己写一套MVC框架更佳;
3、熟悉各种设计模式,并能应用在开发当中;
4、熟悉json+AJAX技术和模板技术,了解css+div和JavaScript;
5、熟悉Apache、MySQL和Linux的日常管理和维护,熟悉分布式架构;
6、有Linux下C语言开发经验者优先;
7、具有文档编写能力,面向对象的编程思想,优良的编程风格和习惯;
8、较强的团队协作能力、沟通能力和学习能力。
任职资格:
1、1年及以上PHP web应用程序开发;
2、熟练使用CSS,HTML,javascript;
3、扎实的SQL知识,熟练使用MySQL;
4、良好的SQL ,PL/SQL编程技巧,有在Mysql下的编程;
5、具有出色的独立工作能力及团队合作精神。
简历请发至 zhangyan2[at]kingsoft.com(发邮件时[at]请改成@) 或 hr@kingsoft.com(如投给hr邮箱,邮件主题请包含关键词“PHP”,便于邮件自动识别分发)
金山软件公司
金山软件公司,自1989年第一款办公软件产品WPS1.0投放市场以来,目前已经成为中国最知名的软件企业之一,是中国领先的应用软件产品和互联网服务供应商。
金山软件在珠海、北京、成都、大连、深圳五地分设研发中心,2005年成立日本合资公司。公司目前主要涉及软件和网游两大核心业务,创造了金山词霸、WPS Office、金山毒霸、剑侠情缘、封神榜等众多知名产品。
2007年10月9日,金山软件在香港联交所主板成功上市,股份编号3888。
金山在不断成长的20年中,经历了岁月的洗礼与沉淀。一直以来,金山执着于对技术的创新,在2000多名公司员工中,从事研发相关工作的人员超过总体的60%。因为坚持的奋斗与努力,金山人相信,创造出世界上一流的软件产品、创造一家世界一流的软件公司、让我们的软件运行在每一台电脑上,都一定是可以实现的梦想。
金山游戏
金山从1995年开始进入游戏产业,成立珠海西山居工作室。1996年之后,《中关村启示录》、《剑侠情缘》、《朝鲜战争》等单机游戏陆续发布。2003年,金山进入网游产业,做植根于中华文化的网游产品。同年西山居工作室推出首款网游《剑侠情缘网络版》并大获成功。
2004年,金山游戏业务开始飞速发展,陆续成立烈火、亚丁等工作室,并推出《封神榜》、《春秋Q传》等系列产品。与此同时,《剑侠情缘网络版》首度进军台湾、马来西亚等海外市场。2005年6月《剑侠情缘网络版》登陆越南,迅速占领越南网游80%市场份额。
2009年,金山游戏(之前网游事业部)作为独立公司运营,简称“KSG”。如今,金山游戏主要面向计算机游戏和数字电视娱乐产业,是集自主研发和独立运营于一体的中国最知名的数字娱乐产品和服务供货商之一,代表作品包括:剑侠情缘系列、封神榜系列等,其中“剑侠系列”游戏被誉为“中国原创武侠游戏第一品牌”。目前,金山游戏产品注册人数超过1亿4千万。
金山游戏拥有员工超过1200人,由研发和运营两大体系构成,设有西山居、烈火、亚丁、鲸彩、上水轩、七尘斋六大游戏工作室,主要从事大型MMO游戏自主研发,并且控股多家游戏工作室,同时运营超过10款大型MMO游戏。金山游戏运营中心设有网游运营、业务发展、业务拓展、市场、区域营销、运维、客户服务等相关运营体系,服务于亿万用户;同时,在全国七大片区设立20多个分公司和办事处,覆盖了全国渠道网络。
金山逍遥Xoyo.com
金山逍遥Xoyo.com是金山游戏官方网站,为金山旗下的各款游戏产品提供网络营销服务,包括金山公司网游介绍、客户服务、在线充值、玩家社区等内容建设和在线服务支持。
作为金山游戏未来发展战略中的重要组成部分,金山逍遥Xoyo.com致力于发挥网络营销多途径、低成本的优势,帮助公司打造各工作室与产品品牌,降低整体营销成本;同时以“吸引新用户、服务老用户”为目标,为金山游戏用户提供高品质的服务。
快速跳转到Google SSL 中文版的网址:ggssl.com [此文被墙,无法浏览]
[
2010-5-28 23:18 | by 张宴 ]
2010-5-28 23:18 | by 张宴 ]
Google 最近提供了 SSL(HTTPS) 搜索功能(https://www.google.com),可以保护用户的搜索关键字和搜索结果不被ISP等第三方机构拦截、窃取,不被墙连接重置。
国内用户访问 https://www.google.com 默认情况下会跳转到谷歌香港 http://www.google.com.hk,解决方法为先点击“Google.com in English“访问 http://www.google.com/ncr (仅需要点击一次),该网址会种一个Cookie,防止跳转,再设置搜索语言为中文,再输入 https://www.google.com 即可,比较麻烦。
本人将这一复杂的流程简化为一个域名:ggssl.com,只需要访问:http://ggssl.com,即可利用脚本快速跳转到 Google SSL 加密搜索中文版。第一次访问自动设置并跳转,以后访问立即自动跳转。
Google SSL 搜索快速跳转域名:http://ggssl.com
国内用户访问 https://www.google.com 默认情况下会跳转到谷歌香港 http://www.google.com.hk,解决方法为先点击“Google.com in English“访问 http://www.google.com/ncr (仅需要点击一次),该网址会种一个Cookie,防止跳转,再设置搜索语言为中文,再输入 https://www.google.com 即可,比较麻烦。
本人将这一复杂的流程简化为一个域名:ggssl.com,只需要访问:http://ggssl.com,即可利用脚本快速跳转到 Google SSL 加密搜索中文版。第一次访问自动设置并跳转,以后访问立即自动跳转。
Google SSL 搜索快速跳转域名:http://ggssl.com
再提供一种解决Nginx文件类型错误解析漏洞的方法
[
2010-5-21 18:46 | by 张宴 ]
2010-5-21 18:46 | by 张宴 ]
[文章作者:张宴 本文版本:v1.2 最后修改:2010.05.24 转载请注明原文链接:http://blog.s135.com/nginx_0day/]
注:2010年5月23日14:00前阅读本文的朋友,请按目前v1.1版本的最新配置进行设置。
昨日,80Sec 爆出Nginx具有严重的0day漏洞,详见《Nginx文件类型错误解析漏洞》。只要用户拥有上传图片权限的Nginx+PHP服务器,就有被入侵的可能。
其实此漏洞并不是Nginx的漏洞,而是PHP PATH_INFO的漏洞,详见:http://bugs.php.net/bug.php?id=50852&edit=1
例如用户上传了一张照片,访问地址为http://www.domain.com/images/test.jpg,而test.jpg文件内的内容实际上是PHP代码时,通过http://www.domain.com/images/test.jpg/abc.php就能够执行该文件内的PHP代码。
网上提供的临时解决方法有:
方法①、修改php.ini,设置cgi.fix_pathinfo = 0;然后重启php-cgi。此修改会影响到使用PATH_INFO伪静态的应用,例如我以前博文的URL:http://blog.s135.com/read.php/348.htm 就不能访问了。
方法②、在nginx的配置文件添加如下内容后重启:if ( $fastcgi_script_name ~ \..*\/.*php ) {return 403;}。该匹配会影响类似 http://www.domain.com/software/5.0/test.php(5.0为目录),http://www.domain.com/goto.php/phpwind 的URL访问。
方法③、对于存储图片的location{...},或虚拟主机server{...},只允许纯静态访问,不配置PHP访问。例如在金山逍遥网论坛、SNS上传的图片、附件,会传送到专门的图片、附件存储服务器集群上(pic.xoyo.com),这组服务器提供纯静态服务,无任何动态PHP配置。各大网站几乎全部进行了图片服务器分离,因此Nginx的此次漏洞对大型网站影响不大。
本人再提供一种修改nginx.conf配置文件的临时解决方法,兼容“http://blog.s135.com/demo/0day/phpinfo.php/test”的PATH_INFO伪静态,拒绝“http://blog.s135.com/demo/0day/phpinfo.jpg/test.php”的漏洞攻击:
也可将以下内容写在fcgi.conf文件中,便于多个虚拟主机引用:
附:文章修改历史
● [2010年05月21日] [Version 1.0] 新建
● [2010年05月23日] [Version 1.1] 针对网友michael提出的“如果构造一个形如/..trojan.jpg/dummy.php/?abcd=1,似乎可以绕过防范的nginx配置”,进行了配置修改,防范了此类情况发生。提供测试的URL如下,拒绝漏洞访问:
http://blog.s135.com/demo/0day/phpinfo.jpg (里面是PHP代码)
http://blog.s135.com/demo/0day/phpinfo.jpg/.php
http://blog.s135.com/demo/0day/phpinfo.jpg/dummy.php
http://blog.s135.com/demo/0day/phpinfo.jpg/dummy.php/?abcd=1
同时兼容正常的PATH_INFO伪静态请求,测试URL如下:
http://blog.s135.com/demo/0day/phpinfo.php (这是正常的PHP文件)
http://blog.s135.com/demo/0day/phpinfo.php/test
http://blog.s135.com/demo/0day/phpinfo.php/news123.html
http://blog.s135.com/read.php/348.htm
● [2010年05月24日] [Version 1.2] 修正文字描述错误。
注:2010年5月23日14:00前阅读本文的朋友,请按目前v1.1版本的最新配置进行设置。
昨日,80Sec 爆出Nginx具有严重的0day漏洞,详见《Nginx文件类型错误解析漏洞》。只要用户拥有上传图片权限的Nginx+PHP服务器,就有被入侵的可能。
其实此漏洞并不是Nginx的漏洞,而是PHP PATH_INFO的漏洞,详见:http://bugs.php.net/bug.php?id=50852&edit=1
例如用户上传了一张照片,访问地址为http://www.domain.com/images/test.jpg,而test.jpg文件内的内容实际上是PHP代码时,通过http://www.domain.com/images/test.jpg/abc.php就能够执行该文件内的PHP代码。
网上提供的临时解决方法有:
方法①、修改php.ini,设置cgi.fix_pathinfo = 0;然后重启php-cgi。此修改会影响到使用PATH_INFO伪静态的应用,例如我以前博文的URL:http://blog.s135.com/read.php/348.htm 就不能访问了。
方法②、在nginx的配置文件添加如下内容后重启:if ( $fastcgi_script_name ~ \..*\/.*php ) {return 403;}。该匹配会影响类似 http://www.domain.com/software/5.0/test.php(5.0为目录),http://www.domain.com/goto.php/phpwind 的URL访问。
方法③、对于存储图片的location{...},或虚拟主机server{...},只允许纯静态访问,不配置PHP访问。例如在金山逍遥网论坛、SNS上传的图片、附件,会传送到专门的图片、附件存储服务器集群上(pic.xoyo.com),这组服务器提供纯静态服务,无任何动态PHP配置。各大网站几乎全部进行了图片服务器分离,因此Nginx的此次漏洞对大型网站影响不大。
本人再提供一种修改nginx.conf配置文件的临时解决方法,兼容“http://blog.s135.com/demo/0day/phpinfo.php/test”的PATH_INFO伪静态,拒绝“http://blog.s135.com/demo/0day/phpinfo.jpg/test.php”的漏洞攻击:
location ~* .*\.php($|/)
{
if ($request_filename ~* (.*)\.php) {
set $php_url $1;
}
if (!-e $php_url.php) {
return 403;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
{
if ($request_filename ~* (.*)\.php) {
set $php_url $1;
}
if (!-e $php_url.php) {
return 403;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
也可将以下内容写在fcgi.conf文件中,便于多个虚拟主机引用:
if ($request_filename ~* (.*)\.php) {
set $php_url $1;
}
if (!-e $php_url.php) {
return 403;
}
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $uri;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
set $php_url $1;
}
if (!-e $php_url.php) {
return 403;
}
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $uri;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
附:文章修改历史
● [2010年05月21日] [Version 1.0] 新建
● [2010年05月23日] [Version 1.1] 针对网友michael提出的“如果构造一个形如/..trojan.jpg/dummy.php/?abcd=1,似乎可以绕过防范的nginx配置”,进行了配置修改,防范了此类情况发生。提供测试的URL如下,拒绝漏洞访问:
http://blog.s135.com/demo/0day/phpinfo.jpg (里面是PHP代码)
http://blog.s135.com/demo/0day/phpinfo.jpg/.php
http://blog.s135.com/demo/0day/phpinfo.jpg/dummy.php
http://blog.s135.com/demo/0day/phpinfo.jpg/dummy.php/?abcd=1
同时兼容正常的PATH_INFO伪静态请求,测试URL如下:
http://blog.s135.com/demo/0day/phpinfo.php (这是正常的PHP文件)
http://blog.s135.com/demo/0day/phpinfo.php/test
http://blog.s135.com/demo/0day/phpinfo.php/news123.html
http://blog.s135.com/read.php/348.htm
● [2010年05月24日] [Version 1.2] 修正文字描述错误。
MySQL Infobright 数据仓库快速安装笔记[原创]
[
2010-5-17 13:09 | by 张宴 ]
2010-5-17 13:09 | by 张宴 ]
[文章作者:张宴 本文版本:v1.1 最后修改:2010.05.18 转载请注明原文链接:http://blog.s135.com/infobright/]
Infobright是一个与MySQL集成的开源数据仓库(Data Warehouse)软件,可作为MySQL的一个存储引擎来使用,SELECT查询与普通MySQL无区别。
一、Infobright的基本特征:
优点:
查询性能高:百万、千万、亿级记录数条件下,同等的SELECT查询语句,速度比MyISAM、InnoDB等普通的MySQL存储引擎快5~60倍
存储数据量大:TB级数据大小,几十亿条记录
高压缩比:在我们的项目中为18:1,极大地节省了数据存储空间
基于列存储:无需建索引,无需分区
适合复杂的分析性SQL查询:SUM, COUNT, AVG, GROUP BY
限制:
不支持数据更新:社区版Infobright只能使用“LOAD DATA INFILE”的方式导入数据,不支持INSERT、UPDATE、DELETE
不支持高并发:只能支持10多个并发查询
二、Infobright 安装与基本用法:
1、下载安装社区版Infobright二进制Linux版本,端口3307
①、64位系统:
②、32位系统:
Infobright是一个与MySQL集成的开源数据仓库(Data Warehouse)软件,可作为MySQL的一个存储引擎来使用,SELECT查询与普通MySQL无区别。
一、Infobright的基本特征:
优点:
查询性能高:百万、千万、亿级记录数条件下,同等的SELECT查询语句,速度比MyISAM、InnoDB等普通的MySQL存储引擎快5~60倍
存储数据量大:TB级数据大小,几十亿条记录
高压缩比:在我们的项目中为18:1,极大地节省了数据存储空间
基于列存储:无需建索引,无需分区
适合复杂的分析性SQL查询:SUM, COUNT, AVG, GROUP BY
限制:
不支持数据更新:社区版Infobright只能使用“LOAD DATA INFILE”的方式导入数据,不支持INSERT、UPDATE、DELETE
不支持高并发:只能支持10多个并发查询
二、Infobright 安装与基本用法:
1、下载安装社区版Infobright二进制Linux版本,端口3307
ulimit -SHn 65535
mkdir -p /data0/mysql/3307
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
cd /usr/local
mkdir -p /data0/mysql/3307
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
cd /usr/local
①、64位系统:
wget http://www.infobright.org/downloads/ice/infobright-3.3.1-x86_64-ice.tar.gz
tar zxvf infobright-3.3.1-x86_64-ice.tar.gz
mv infobright-3.3.1-x86_64 infobright
tar zxvf infobright-3.3.1-x86_64-ice.tar.gz
mv infobright-3.3.1-x86_64 infobright
②、32位系统:
wget http://www.infobright.org/downloads/ice/infobright-3.3.1-i686-ice.tar.gz
tar zxvf infobright-3.3.1-i686-ice.tar.gz
mv infobright-3.3.1-i686 infobright
tar zxvf infobright-3.3.1-i686-ice.tar.gz
mv infobright-3.3.1-i686 infobright
通过Nginx使全站页面变灰,哀悼玉树地震遇难者
[
2010-4-20 15:52 | by 张宴 ]
2010-4-20 15:52 | by 张宴 ]
引用
新华网北京4月20日电 国务院决定,为表达全国各族人民对青海玉树地震遇难同胞的深切哀悼,2010年4月21日举行全国哀悼活动,全国和驻外使领馆下半旗志哀,停止公共娱乐活动。
4月21日全国哀悼日,将去除网站全站所有站点色彩(变灰),悼念遇难同胞,愿死者安息。
金山逍遥网旗下站点众多,虽然官网都有统一的页头、页尾,但是,还有一部分站点(例如用户中心、注册充值页面、游戏客户端内嵌网站、活动专题页等)页头、页尾不相同。但是,所有站点采用的都是Nginx服务器,95%以上的站点都经过Nginx负载均衡服务器,因此只需要在Nginx负载均衡服务器上,利用sub_filter指令在输出的HTML中增加一行:
<style type="text/css">html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }</style>
就可以实现在IE及IE内核浏览器下,所有网站变灰色。步骤如下:
1、重新编译Nginx,增加http_sub_module模块:
wget http://nginx.org/download/nginx-0.8.35.tar.gz
tar zxvf nginx-0.8.35.tar.gz
cd nginx-0.8.35
./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module
make && make install
pkill -9 nginx
/usr/local/webserver/nginx/sbin/nginx
tar zxvf nginx-0.8.35.tar.gz
cd nginx-0.8.35
./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module
make && make install
pkill -9 nginx
/usr/local/webserver/nginx/sbin/nginx
2、在nginx.conf配置文件的http {...}大括号内增加以下两行:
sub_filter '</head>' '<style type="text/css">html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }</style></head>';
sub_filter_once on;
sub_filter_once on;
保存后,重新加载配置文件:
/usr/local/webserver/nginx/sbin/nginx -t
/usr/local/webserver/nginx/sbin/nginx -s reload
/usr/local/webserver/nginx/sbin/nginx -s reload
3、如果某些带有Flash的页面仍显示彩色,或浏览器上下滚动条拖动时Flash FLV播放器变花(例如剑网3、剑侠世界官网分流页),将Flash改为JS输出(本例为SWFObject):
<script type="text/javascript" src="http://v.xoyo.com/site/v.xoyo.com/web/js/swf.js"></script>
<div id="video_content"></div>
<script type="text/javascript">
<!--
var video_player_so = new SWFObject("http://api.v.xoyo.com/external/player.swf?autostart=true&config=http://api.v.xoyo.com/external/video-542.swf", "sotester", "439", "246", "7");
video_player_so.addParam("wmode", "opaque");
video_player_so.addParam("allowfullscreen","true");
video_player_so.addParam("allowscriptaccess","always");
video_player_so.write("video_content");
//-->
</script>
<div id="video_content"></div>
<script type="text/javascript">
<!--
var video_player_so = new SWFObject("http://api.v.xoyo.com/external/player.swf?autostart=true&config=http://api.v.xoyo.com/external/video-542.swf", "sotester", "439", "246", "7");
video_player_so.addParam("wmode", "opaque");
video_player_so.addParam("allowfullscreen","true");
video_player_so.addParam("allowscriptaccess","always");
video_player_so.write("video_content");
//-->
</script>
这样,整个页面,包括Flash播放器中的视频就都变灰色了。
金山逍遥网 sersync 服务器实时镜像、自动同步程序开源
[
2010-4-14 19:32 | by 张宴 ]
2010-4-14 19:32 | by 张宴 ]
Sersync 是我们金山逍遥网技术支持部平台组周洋同学,开发的一款基于 inotify + rsync 的大量文件的多服务器自动同步程序,目前已开源,开源协议为 New BSD License。
原理:
使用 Linux 2.6 内核的 inotify 监控 Linux 文件系统事件,被监听目录下如果有文件发生修改,sersync 将通过内核自动捕获到事件,并将该文件利用 rsync 同步到多台远程服务器。sersync 仅仅同步发生增、删、改事件的单个文件或目录,不像rsync镜像同步那样需要比对双方服务器整个目录下数千万的文件,并且支持多线程同步,因此效率非常高。
应用:
金山游戏官网的 CMS 内容发布系统。无论编辑通过 Web 还是 FTP 上传图片、视频、附件,还是系统工程师直接去CMS发布服务器上增加、修改、删除文件,干完这些事情后不用做任何处理,sersync 会自动将发生增、删、改事件的文件同步到远程服务器,并可以在文件同步完成后,自动调用 CDN(ChinaCache)缓存刷新接口,刷新发生修改、删除的文件的访问 URL。
更多内容,请访问项目网址:http://code.google.com/p/sersync/
原理:
使用 Linux 2.6 内核的 inotify 监控 Linux 文件系统事件,被监听目录下如果有文件发生修改,sersync 将通过内核自动捕获到事件,并将该文件利用 rsync 同步到多台远程服务器。sersync 仅仅同步发生增、删、改事件的单个文件或目录,不像rsync镜像同步那样需要比对双方服务器整个目录下数千万的文件,并且支持多线程同步,因此效率非常高。
应用:
金山游戏官网的 CMS 内容发布系统。无论编辑通过 Web 还是 FTP 上传图片、视频、附件,还是系统工程师直接去CMS发布服务器上增加、修改、删除文件,干完这些事情后不用做任何处理,sersync 会自动将发生增、删、改事件的文件同步到远程服务器,并可以在文件同步完成后,自动调用 CDN(ChinaCache)缓存刷新接口,刷新发生修改、删除的文件的访问 URL。
更多内容,请访问项目网址:http://code.google.com/p/sersync/
Tokyo Cabinet Key-Value数据库及其扩展应用PPT[原创]
[
2010-4-3 00:12 | by 张宴 ]
2010-4-3 00:12 | by 张宴 ]
以下是我4月2日在“2010年数据库技术大会”的演讲PPT,介绍了 Tokyo Cabinet Key-Value 数据库的性能优化关键参数,以及金山逍遥网在Tokyo Cabinet基础上实现的TCSQL实时列表缓存数据库(Version 1.3)。
PDF格式下载:
下载文件
PDF格式下载:
下载文件
《实战Nginx:取代Apache的高性能Web服务器》已出版发行
[
2010-3-23 23:56 | by 张宴 ]
2010-3-23 23:56 | by 张宴 ]
书名:《实战Nginx:取代Apache的高性能Web服务器》
作者:张宴
出版社:电子工业出版社
ISBN号:9787121102479
出版日期:2010年03月
字数:430千字
页码:352
开本:16
网上书城:
卓越亚马逊:http://www.amazon.cn/mn/detailApp/ref=sr_1_1?_encoding=UTF8&s=books&qid=1270279433&asin=B003CHHHB8&sr=8-1
当当网:http://product.dangdang.com/product.aspx?product_id=20807089&ref=search-0-A
China-Pub:http://www.china-pub.com/196364
电子工业出版社书城:http://www.phei.com.cn/bookshop/bookinfo.asp?bookcode=TP102470&booktype=main

作者:张宴
出版社:电子工业出版社
ISBN号:9787121102479
出版日期:2010年03月
字数:430千字
页码:352
开本:16
网上书城:
卓越亚马逊:http://www.amazon.cn/mn/detailApp/ref=sr_1_1?_encoding=UTF8&s=books&qid=1270279433&asin=B003CHHHB8&sr=8-1
当当网:http://product.dangdang.com/product.aspx?product_id=20807089&ref=search-0-A
China-Pub:http://www.china-pub.com/196364
电子工业出版社书城:http://www.phei.com.cn/bookshop/bookinfo.asp?bookcode=TP102470&booktype=main










![订阅回忆未来[张宴]的博客](http://pic1.s135.com/images/rewin/rss.gif)




