物品装箱。柏彦大厦,再见。
明天北京金山软件将开始搬家,下周将在上地的金山软件大厦办公。
2008年5月,金山以1.75亿元的现金购新楼,金山软件大厦地点在北京市海淀区小营西路33号(公交站名:上地桥东),大厦地上5层、地下2层,总面积约15907平方米。搬新家后,将拥有洗浴室、健身房、员工餐厅(一日三餐免费)、免费停车位等。
北京金山软件大厦:
明天北京金山软件将开始搬家,下周将在上地的金山软件大厦办公。
2008年5月,金山以1.75亿元的现金购新楼,金山软件大厦地点在北京市海淀区小营西路33号(公交站名:上地桥东),大厦地上5层、地下2层,总面积约15907平方米。搬新家后,将拥有洗浴室、健身房、员工餐厅(一日三餐免费)、免费停车位等。
北京金山软件大厦:
AJAXCDR:利用 Flash 完美解决 JavaScript 和 AJAX 跨域 HTTP POST/GET 表单请求[原创]
[ 2009-3-9 11:54 | by 张宴 ]
[文章+部分代码 作者:张宴 本文版本:v1.0 最后修改:2009.03.09 转载请注明原文链接:http://blog.zyan.cc/ajaxcdr/]
最近的一个项目中,需要通过 JavaScript 提交表单数据到另一个域名下的PHP接口(因为数据较大,需要HTTP POST方式提交),并获取PHP接口的返回值,在页面无刷新、无跳转的情况下,更新div标签内的内容。
浏览器出于安全考虑,是不允许JavaScript代码进行跨域操作。JavaScript 和 AJAX 跨域访问分为两大类,一是本域和子域的交互,二是本域和其他域的交互。
一、本域和子域的交互:www.zyan.cc 和 blog.zyan.cc
二、本域和其他域的交互:blog.zyan.cc 和 api.bz
本域和子域的交互,可以通过iframe设置两个域名document.domain = "zyan.cc",实现统一zyan.cc域下的跨域访问。
本域和其他域的交互,可以通过iframe、代理、JS创建动态脚本等几种方法来实现,这里有篇文章对几种方法作了简要的介绍。
iframe、JS创建动态脚本这两种方法,需要开发者能控制两个域,两端都要编写相应的代码,非常麻烦。在本域服务器上用PHP写个代理中转程序,让本域PHP程序去读取远程其他域的数据再返回给自己,是常用的方法。但是,在本域“前端是CDN或Squid缓存服务器,后端才是PHP应用程序服务器”的系统架构下,穿透CDN或Squid去访问不能被缓存的PHP代理中转程序,效率是很低的。
国外有人尝试用 Flash 做 JavaScript 和 AJAX 跨域访问中转,无疑是一个好方法。JavaScript 将数据提交给本域下的 Flash,通过 Flash 中转去访问其他域的接口,条件只需要其他域的根目录下有一个crossdomain.xml文件,文件中设置允许所有域名或允许本域访问即可。很多网站的API域名都提供了crossdomain.xml文件。
例如:
1、新浪博客的crossdomain.xml文件(http://blog.sina.com.cn/crossdomain.xml)设置了允许所有域名访问;
2、饭否API的crossdomain.xml文件(http://api.fanfou.com/crossdomain.xml)设置了允许所有域名访问;
3、校内网API的crossdomain.xml文件(http://api.xiaonei.com/crossdomain.xml)设置了允许所有域名访问;
4、优酷网的crossdomain.xml文件(http://www.youku.com/crossdomain.xml)设置了允许所有域名访问;
5、土豆网的crossdomain.xml文件(http://www.tudou.com/crossdomain.xml)设置了允许所有域名访问;
6、逍遥视频的crossdomain.xml文件(http://v.xoyo.com/crossdomain.xml)设置了只允许*.xoyo.com域名访问;
7、网易的crossdomain.xml文件(http://www.163.com/crossdomain.xml)设置了只允许tech.163.com、sports.163.com等几个域名访问。
本人在“Cross-domain AJAX using Flash”的基础上,增加了对表单进行智能处理的功能,封装了一个JavaScript包:AJAXCDR。通过 AJAXCDR,即可轻松地解决 JavaScript 和 AJAX 跨域 HTTP POST/GET 表单请求,支持IE、Firefox、谷歌Chrome等多种浏览器。
AJAXCDR 拥有两个文件:ajaxcdr.js 和 ajaxcdr.swf,AJAXCDR 拥有一个 JavaScript 函数 AjaxCrossDomainRequest() 和一个全局变量 AjaxCrossDomainResponse。
一、AJAXCDR 下载:
最近的一个项目中,需要通过 JavaScript 提交表单数据到另一个域名下的PHP接口(因为数据较大,需要HTTP POST方式提交),并获取PHP接口的返回值,在页面无刷新、无跳转的情况下,更新div标签内的内容。
浏览器出于安全考虑,是不允许JavaScript代码进行跨域操作。JavaScript 和 AJAX 跨域访问分为两大类,一是本域和子域的交互,二是本域和其他域的交互。
一、本域和子域的交互:www.zyan.cc 和 blog.zyan.cc
二、本域和其他域的交互:blog.zyan.cc 和 api.bz
本域和子域的交互,可以通过iframe设置两个域名document.domain = "zyan.cc",实现统一zyan.cc域下的跨域访问。
本域和其他域的交互,可以通过iframe、代理、JS创建动态脚本等几种方法来实现,这里有篇文章对几种方法作了简要的介绍。
iframe、JS创建动态脚本这两种方法,需要开发者能控制两个域,两端都要编写相应的代码,非常麻烦。在本域服务器上用PHP写个代理中转程序,让本域PHP程序去读取远程其他域的数据再返回给自己,是常用的方法。但是,在本域“前端是CDN或Squid缓存服务器,后端才是PHP应用程序服务器”的系统架构下,穿透CDN或Squid去访问不能被缓存的PHP代理中转程序,效率是很低的。
国外有人尝试用 Flash 做 JavaScript 和 AJAX 跨域访问中转,无疑是一个好方法。JavaScript 将数据提交给本域下的 Flash,通过 Flash 中转去访问其他域的接口,条件只需要其他域的根目录下有一个crossdomain.xml文件,文件中设置允许所有域名或允许本域访问即可。很多网站的API域名都提供了crossdomain.xml文件。
例如:
1、新浪博客的crossdomain.xml文件(http://blog.sina.com.cn/crossdomain.xml)设置了允许所有域名访问;
2、饭否API的crossdomain.xml文件(http://api.fanfou.com/crossdomain.xml)设置了允许所有域名访问;
3、校内网API的crossdomain.xml文件(http://api.xiaonei.com/crossdomain.xml)设置了允许所有域名访问;
4、优酷网的crossdomain.xml文件(http://www.youku.com/crossdomain.xml)设置了允许所有域名访问;
5、土豆网的crossdomain.xml文件(http://www.tudou.com/crossdomain.xml)设置了允许所有域名访问;
6、逍遥视频的crossdomain.xml文件(http://v.xoyo.com/crossdomain.xml)设置了只允许*.xoyo.com域名访问;
7、网易的crossdomain.xml文件(http://www.163.com/crossdomain.xml)设置了只允许tech.163.com、sports.163.com等几个域名访问。
本人在“Cross-domain AJAX using Flash”的基础上,增加了对表单进行智能处理的功能,封装了一个JavaScript包:AJAXCDR。通过 AJAXCDR,即可轻松地解决 JavaScript 和 AJAX 跨域 HTTP POST/GET 表单请求,支持IE、Firefox、谷歌Chrome等多种浏览器。
AJAXCDR 拥有两个文件:ajaxcdr.js 和 ajaxcdr.swf,AJAXCDR 拥有一个 JavaScript 函数 AjaxCrossDomainRequest() 和一个全局变量 AjaxCrossDomainResponse。
一、AJAXCDR 下载:
Google Adsense西联汇款中国邮政储蓄提款详细步骤[原创]
[ 2009-3-1 17:16 | by 张宴 ]
今天,去阜成门北的中国邮政储蓄,提取了Google通过西联汇款汇来的101.28美元Google AdSense广告费,兑换成人民币691.37元。Google AdSense西联快汇提款不收取手续费。
西联国际汇款公司(Western Union)是世界上领先的特快汇款公司,迄今已有150年的历史,它拥有全球最大最先进的电子汇兑金融网络,代理网点遍布全球近200个国家和地区。按照正常的付款计划,付款汇出后的第一天起,您即可在当地的西联汇款代理机构取款。
西联汇款在中国的代理机构是中国农业银行和中国邮政储蓄。如果您的Google Adsense的付款方式选择的是西联汇款,则可以在付款汇出后的第一天起,在任意一家中国农业银行或中国邮政储蓄(最好选择大一点的营业网点,有些支行或分理处不办理西联汇款业务,点击这里可以查看西联汇款全国代理网点。),领取美元或按照当时汇率兑换成人民币。
提款步骤:
1、点击Google AdSense管理界面中的“付款历史”→“2009-2-24 付款细节”,携带该页提示的材料。
注意:提款不需要密码,汇款监控号(MTCN)非常重要,在提款之前不要泄漏。付款金额必须精确到小数点后的所有数字。必须携带身份证。抄下汇款人信息。
西联国际汇款公司(Western Union)是世界上领先的特快汇款公司,迄今已有150年的历史,它拥有全球最大最先进的电子汇兑金融网络,代理网点遍布全球近200个国家和地区。按照正常的付款计划,付款汇出后的第一天起,您即可在当地的西联汇款代理机构取款。
西联汇款在中国的代理机构是中国农业银行和中国邮政储蓄。如果您的Google Adsense的付款方式选择的是西联汇款,则可以在付款汇出后的第一天起,在任意一家中国农业银行或中国邮政储蓄(最好选择大一点的营业网点,有些支行或分理处不办理西联汇款业务,点击这里可以查看西联汇款全国代理网点。),领取美元或按照当时汇率兑换成人民币。
提款步骤:
1、点击Google AdSense管理界面中的“付款历史”→“2009-2-24 付款细节”,携带该页提示的材料。
注意:提款不需要密码,汇款监控号(MTCN)非常重要,在提款之前不要泄漏。付款金额必须精确到小数点后的所有数字。必须携带身份证。抄下汇款人信息。
网易的开源软件镜像站点
[ 2009-2-23 23:54 | by 张宴 ]
网易开通了一个开源软件的镜像站点,网址为:
http://mirrors.163.com/
提供的镜像有:
1、Linux及BSD发行版镜像:FreeBSD、OpenBSD、RedHat、archlinux、centos、debian、fedora、gentoo、trixbox、ubuntu等。
2、开源软件镜像:eclipse可扩展开发平台、防火墙、openfiler网络存储管理工具。
该镜像目前只有一台杭州电信的服务器,网通用户访问可能会比较慢。
如果您安装 CentOS 5.2 系统的服务器位于电信机房,您可以修改/etc/yum.repos.d/CentOS-Base.repo文件,将它的yum源更改成网易的镜像,代替国外的镜像,以便获取更快的下载速度。
您可以按照以下步骤从 blog.zyan.cc 下载修改后的 CentOS-Base.repo 文件到您的服务器。
附:修改后的 CentOS-Base.repo 文件内容如下:
http://mirrors.163.com/
提供的镜像有:
1、Linux及BSD发行版镜像:FreeBSD、OpenBSD、RedHat、archlinux、centos、debian、fedora、gentoo、trixbox、ubuntu等。
2、开源软件镜像:eclipse可扩展开发平台、防火墙、openfiler网络存储管理工具。
该镜像目前只有一台杭州电信的服务器,网通用户访问可能会比较慢。
如果您安装 CentOS 5.2 系统的服务器位于电信机房,您可以修改/etc/yum.repos.d/CentOS-Base.repo文件,将它的yum源更改成网易的镜像,代替国外的镜像,以便获取更快的下载速度。
您可以按照以下步骤从 blog.zyan.cc 下载修改后的 CentOS-Base.repo 文件到您的服务器。
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
wget http://blog.zyan.cc/soft/linux/centos/5.2/CentOS-Base.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
wget http://blog.zyan.cc/soft/linux/centos/5.2/CentOS-Base.repo
附:修改后的 CentOS-Base.repo 文件内容如下:
我的开源PHP中文分词扩展:PHPCWS 1.0.0[原创]
[ 2009-2-16 23:40 | by 张宴 ]
[文章/程序 作者:张宴 本文版本:v1.3 最后修改:2009.07.06 转载请注明原文链接:http://blog.zyan.cc/phpcws_v100/]
注:最新的分词系统 HTTPCWS 已经发布,用来取代 PHPCWS。
请点击以下网址下载 HTTPCWS:
http://code.google.com/p/httpcws
原来的 PHPCWS 停止更新。
名称:PHPCWS(PHP中文分词扩展)
协议:New BSD License
作者:张宴
网址:http://code.google.com/p/phpcws/
SVN:http://code.google.com/p/phpcws/source/browse/#svn/trunk/phpcws
一、PHPCWS 简介
1、什么是 PHPCWS ?
PHPCWS 是一款开源的PHP中文分词扩展,目前仅支持Linux/Unix系统。
PHPCWS 先使用“ICTCLAS 3.0 共享版中文分词算法”的API进行初次分词处理,再使用自行编写的“逆向最大匹配算法”对分词和进行词语合并处理,并增加标点符号过滤功能,得出分词结果。
ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System)是中国科学院计算技术研究所在多年研究工作积累的基础上,基于多层隐马模型研制出的汉语词法分析系统,主要功能包括中文分词;词性标注;命名实体识别;新词识别;同时支持用户词典。ICTCLAS经过五年精心打造,内核升级6次,目前已经升级到了ICTCLAS3.0,分词精度98.45%,各种词典数据压缩后不到3M。ICTCLAS在国内973专家组组织的评测中活动获得了第一名,在第一届国际中文处理研究机构SigHan组织的评测中都获得了多项第一名,是当前世界上最好的汉语词法分析器。
ICTCLAS 3.0 商业版是收费的,而免费提供的 ICTCLAS 3.0 共享版不开源,词库是根据人民日报一个月的语料得出的,很多词语不存在。所以本人对ICTCLAS分词后的结果,再采用逆向最大匹配算法,根据自己补充的一个9万条词语的自定义词库(与ICTCLAS词库中的词语不重复),对ICTCLAS分词结果进行合并处理,输出最终分词结果。
由于 ICTCLAS 3.0 共享版只支持GBK编码,因此,如果是UTF-8编码的字符串,可以先用PHP的iconv函数转换成GBK编码,再用phpcws_split函数进行分词处理,最后转换回UTF-8编码。
2、PHPCWS 中文分词在线演示
演示网址:http://blog.zyan.cc/demo/phpcws/
3、PHPCWS 分词速度及用途
初次使用时,Apache 或 php-cgi(FastCGI) 进程,需要加载一次词库到内存中,需要0.0X秒。58字节的一句话——“2009年2月13日,我编写了一款PHP中文分词扩展:PHPCWS 1.0.0。”,分词速度只需0.0003秒。
PHPCWS 属于《亿级数据的高并发通用搜索引擎架构设计》的一部分,用作“搜索查询接口”的关键字分词处理。在此架构中,Sphinx索引引擎对于CJK(中日韩)语言支持一元切分,假设【反恐行动是国产主视角射击网络游戏】这段文字,Sphinx会将其切成【反 恐 行 动 是 国 产 主 视 角 射 击 网 络 游 戏】,然后对每个字建立反向索引。如果用这句话中包含的字组成一个不存在的词语,例如【恐动】,也会被搜索到,所以搜索时,需要加引号,例如搜索【"反恐行动"】,就能完全匹配连在一起的四个字,不连续的【"恐动"】就不会被搜索到。但是,这样还有一个问题,搜索【"反恐行动游戏"】或【"国产网络游戏"】就会搜索不到。所以,我在搜索层写了个PHP中文分词扩展,搜索“反恐行动游戏”、“国产网络游戏”,会被PHPCWS中文分词函数分别切分为“反恐行动 游戏”、“国产 网络游戏”,这时候,用PHP函数给以空格分隔的词语加上引号,去搜索【"反恐行动" "游戏"】或【"国产" "网络游戏"】,就能搜索到这条记录了。由于PHPCWS位于搜索层,中文分词词库发生增、删、改,只需平滑重启一次Web服务器或php-cgi进程即可,无需重建搜索索引。
根据上述情况,对于那些采用二元交叉切分的搜索引擎,PHPCWS用在前端搜索层对用户输入的搜索关键字、短语进行分词处理,同样适合。PHPCWS开发的目的正在于此,对于短句、小文本中文分词切分,速度非常之快。
4、自定义词库
自定义词库名称为userdict.tch,格式为 Tokyo Cabinet DBM 的 Abstract key-value 内存哈希数据库(key为GBK编码的词语名词,value为词频。目前词频均填1,暂时用不上)。自定义词库的修改在安装步骤中会详细介绍。
二、phpcws 1.0.1 安装步骤
注:最新的分词系统 HTTPCWS 已经发布,用来取代 PHPCWS。
请点击以下网址下载 HTTPCWS:
http://code.google.com/p/httpcws
原来的 PHPCWS 停止更新。
名称:PHPCWS(PHP中文分词扩展)
协议:New BSD License
作者:张宴
网址:http://code.google.com/p/phpcws/
SVN:http://code.google.com/p/phpcws/source/browse/#svn/trunk/phpcws
一、PHPCWS 简介
1、什么是 PHPCWS ?
PHPCWS 是一款开源的PHP中文分词扩展,目前仅支持Linux/Unix系统。
PHPCWS 先使用“ICTCLAS 3.0 共享版中文分词算法”的API进行初次分词处理,再使用自行编写的“逆向最大匹配算法”对分词和进行词语合并处理,并增加标点符号过滤功能,得出分词结果。
ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System)是中国科学院计算技术研究所在多年研究工作积累的基础上,基于多层隐马模型研制出的汉语词法分析系统,主要功能包括中文分词;词性标注;命名实体识别;新词识别;同时支持用户词典。ICTCLAS经过五年精心打造,内核升级6次,目前已经升级到了ICTCLAS3.0,分词精度98.45%,各种词典数据压缩后不到3M。ICTCLAS在国内973专家组组织的评测中活动获得了第一名,在第一届国际中文处理研究机构SigHan组织的评测中都获得了多项第一名,是当前世界上最好的汉语词法分析器。
ICTCLAS 3.0 商业版是收费的,而免费提供的 ICTCLAS 3.0 共享版不开源,词库是根据人民日报一个月的语料得出的,很多词语不存在。所以本人对ICTCLAS分词后的结果,再采用逆向最大匹配算法,根据自己补充的一个9万条词语的自定义词库(与ICTCLAS词库中的词语不重复),对ICTCLAS分词结果进行合并处理,输出最终分词结果。
由于 ICTCLAS 3.0 共享版只支持GBK编码,因此,如果是UTF-8编码的字符串,可以先用PHP的iconv函数转换成GBK编码,再用phpcws_split函数进行分词处理,最后转换回UTF-8编码。
2、PHPCWS 中文分词在线演示
演示网址:http://blog.zyan.cc/demo/phpcws/
3、PHPCWS 分词速度及用途
初次使用时,Apache 或 php-cgi(FastCGI) 进程,需要加载一次词库到内存中,需要0.0X秒。58字节的一句话——“2009年2月13日,我编写了一款PHP中文分词扩展:PHPCWS 1.0.0。”,分词速度只需0.0003秒。
PHPCWS 属于《亿级数据的高并发通用搜索引擎架构设计》的一部分,用作“搜索查询接口”的关键字分词处理。在此架构中,Sphinx索引引擎对于CJK(中日韩)语言支持一元切分,假设【反恐行动是国产主视角射击网络游戏】这段文字,Sphinx会将其切成【反 恐 行 动 是 国 产 主 视 角 射 击 网 络 游 戏】,然后对每个字建立反向索引。如果用这句话中包含的字组成一个不存在的词语,例如【恐动】,也会被搜索到,所以搜索时,需要加引号,例如搜索【"反恐行动"】,就能完全匹配连在一起的四个字,不连续的【"恐动"】就不会被搜索到。但是,这样还有一个问题,搜索【"反恐行动游戏"】或【"国产网络游戏"】就会搜索不到。所以,我在搜索层写了个PHP中文分词扩展,搜索“反恐行动游戏”、“国产网络游戏”,会被PHPCWS中文分词函数分别切分为“反恐行动 游戏”、“国产 网络游戏”,这时候,用PHP函数给以空格分隔的词语加上引号,去搜索【"反恐行动" "游戏"】或【"国产" "网络游戏"】,就能搜索到这条记录了。由于PHPCWS位于搜索层,中文分词词库发生增、删、改,只需平滑重启一次Web服务器或php-cgi进程即可,无需重建搜索索引。
根据上述情况,对于那些采用二元交叉切分的搜索引擎,PHPCWS用在前端搜索层对用户输入的搜索关键字、短语进行分词处理,同样适合。PHPCWS开发的目的正在于此,对于短句、小文本中文分词切分,速度非常之快。
4、自定义词库
自定义词库名称为userdict.tch,格式为 Tokyo Cabinet DBM 的 Abstract key-value 内存哈希数据库(key为GBK编码的词语名词,value为词频。目前词频均填1,暂时用不上)。自定义词库的修改在安装步骤中会详细介绍。
二、phpcws 1.0.1 安装步骤
我收到的情人节礼物:《时间管理——给系统管理员》
[ 2009-2-14 23:59 | by 张宴 ]
老婆在我的豆瓣上看到我想读这本书:《时间管理——给系统管理员》(Time Management for System Administrators,By Thomas A. Limoncelli),于是悄悄买了这本书,送给我作为情人节礼物。虽然我现在主要从事系统架构与系统开发,研发时间比以前充足得多,手中的服务器异常的稳定,不像以前有那么多系统运维的琐事,但这本书却使我受益匪浅。
我翻阅了一下,虽然页数不厚,但内容很不错,书中告知了很多时间管理技巧,是作者工作经验的积累,非常值得借鉴!另外,语言也十分风趣。本书不只适合系统管理员,也适合所有从事IT业的人。
书籍简介:
中文书名:时间管理
副标题:给系统管理员
英文原版书名:Time Management for System Administrators
译者:O'Reilly Taiwan公司
作者:Thomas A.Limoncelli
ISBN:9787564109059
页数:210
定价:26.0
出版社:东南大学出版社
装帧:平装
出版年:2007
豆瓣上的介绍:http://www.douban.com/subject/2253513/
英文原版下载:http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=4824885
时间是珍贵的东西,对于系统管理员而言尤甚。没有其他工作会把那么多领域的事情一次推给一个人做。使用者经常以他们的请求干扰你,让你无法完成经理指派给你的长期项目;还有你的计算机就是不听话,总是在最关键的时刻与你耍脾气。尽管你精通职务上的技术,但是仍然发现必须在晚上和周末加班,只是为了满足一些要求。这只会随着时间给自己增加压力。
本书讨论的策略,不但帮你解决日常工作,还有能力处理无法避免的突发状况。作者将自己长期的职业生涯,诸如,支持桌面应用、服务器管理以及安全和软件开发等等,在本书中详实地举例说明。这意味着,你将得到有实战经验的建议,而非象牙塔般、从未在混沌的网络中工作过的陈腔滥调。
在其他技术上,你将学习如何:
·管理干扰
·消除时间的浪费..
·保持有效的日程表
·将经常发生的事情变成例行公事
·专注在手边的工作
·以客户预期排列优先级
·文件化和自动化处理以便快速执行...
我翻阅了一下,虽然页数不厚,但内容很不错,书中告知了很多时间管理技巧,是作者工作经验的积累,非常值得借鉴!另外,语言也十分风趣。本书不只适合系统管理员,也适合所有从事IT业的人。
书籍简介:
中文书名:时间管理
副标题:给系统管理员
英文原版书名:Time Management for System Administrators
译者:O'Reilly Taiwan公司
作者:Thomas A.Limoncelli
ISBN:9787564109059
页数:210
定价:26.0
出版社:东南大学出版社
装帧:平装
出版年:2007
豆瓣上的介绍:http://www.douban.com/subject/2253513/
英文原版下载:http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=4824885
时间是珍贵的东西,对于系统管理员而言尤甚。没有其他工作会把那么多领域的事情一次推给一个人做。使用者经常以他们的请求干扰你,让你无法完成经理指派给你的长期项目;还有你的计算机就是不听话,总是在最关键的时刻与你耍脾气。尽管你精通职务上的技术,但是仍然发现必须在晚上和周末加班,只是为了满足一些要求。这只会随着时间给自己增加压力。
本书讨论的策略,不但帮你解决日常工作,还有能力处理无法避免的突发状况。作者将自己长期的职业生涯,诸如,支持桌面应用、服务器管理以及安全和软件开发等等,在本书中详实地举例说明。这意味着,你将得到有实战经验的建议,而非象牙塔般、从未在混沌的网络中工作过的陈腔滥调。
在其他技术上,你将学习如何:
·管理干扰
·消除时间的浪费..
·保持有效的日程表
·将经常发生的事情变成例行公事
·专注在手边的工作
·以客户预期排列优先级
·文件化和自动化处理以便快速执行...
参加《软件需求管理最佳实践》培训
[ 2009-2-14 23:41 | by 张宴 ]
这个情人节,我只能晚上和老婆一起过了。因为2月14日、15日两个周末,我在参加北京金山软件公司的重要研发培训──《软件需求管理最佳实践》,讲师为曾任微软亚洲工程院测试经理的陆宏杰。
课程大纲:
课程主要议题:
1、对软件需求的理解
课程的中心思想是通过需求分析来提高项目整体效率和产品定位,节省开发、测试、管理的实施成本。对于每一个具体环节将从客户、开发、测试、管理的角度分别看待需求分析。
讲解软件项目的需求划分技巧;以及如何管理多名需求人员对产品/项目的整体把握,保证多名需求人员对需求理解的一致性;产品型和项目型软件在需求分析时的区别、技巧、以及如何快速把握需求关键点。
2、需求文档
很多时候需求人员过分关注特定的理论图形或表达法,而忽略了需求文档的实用性,这一部分从实际出发,讲解需求文档的质量标准、到底应该细致到什么程度才能对开发、测试及管理提供有力支撑,结合实例讲解需求和架构的配合,需求和开发的交互。
分析是否需要进行多次需求文档的转换,这样做的目的和结果是怎样的。分享需求文档的评审流程和规范,为什么要这样做,能够为管理层提供哪些支撑。
3、需求的细化
不仅讲解对显性功能和隐性功能的需求细化原则和技巧,而且分析为什么要考虑这些方面,不这样做会怎么样,每一部分都结合实例进行,同时结合需求细化讲解需求对测试的影响和交互,从测试的角度看待需求分析有什么样的配合技巧。
4、需求人员在整个软件生命周期中的作用
需求人员应该对整个软件生命周期提供持续的驱动力,需求人员在开发阶段、测试阶段、变更处理、甚至商务处理可以发挥哪些重要的作用。
同时,分别从“任务”和“人员”两个不同角度讲解如何优化项目开发模式,把瀑布式、迭代式等多种项目管理方法结合,利用最小化的资源提供最大化的产出。
课程中逐一要解决的问题:
1、需求分析缺乏经验
2、团队对设计目标的理解不一致
3、需求分析过程同软件开发过程严重脱节
4、无法有效的将从客户获取的信息转换成软件设计文档
5、开发人员和需求分析人员互相不认可,无法形成有效的协作
6、需求不明确,测试很难开展
更多信息见:http://www.msup.com.cn/?mod=training&show=6
课程大纲:
课程主要议题:
1、对软件需求的理解
课程的中心思想是通过需求分析来提高项目整体效率和产品定位,节省开发、测试、管理的实施成本。对于每一个具体环节将从客户、开发、测试、管理的角度分别看待需求分析。
讲解软件项目的需求划分技巧;以及如何管理多名需求人员对产品/项目的整体把握,保证多名需求人员对需求理解的一致性;产品型和项目型软件在需求分析时的区别、技巧、以及如何快速把握需求关键点。
2、需求文档
很多时候需求人员过分关注特定的理论图形或表达法,而忽略了需求文档的实用性,这一部分从实际出发,讲解需求文档的质量标准、到底应该细致到什么程度才能对开发、测试及管理提供有力支撑,结合实例讲解需求和架构的配合,需求和开发的交互。
分析是否需要进行多次需求文档的转换,这样做的目的和结果是怎样的。分享需求文档的评审流程和规范,为什么要这样做,能够为管理层提供哪些支撑。
3、需求的细化
不仅讲解对显性功能和隐性功能的需求细化原则和技巧,而且分析为什么要考虑这些方面,不这样做会怎么样,每一部分都结合实例进行,同时结合需求细化讲解需求对测试的影响和交互,从测试的角度看待需求分析有什么样的配合技巧。
4、需求人员在整个软件生命周期中的作用
需求人员应该对整个软件生命周期提供持续的驱动力,需求人员在开发阶段、测试阶段、变更处理、甚至商务处理可以发挥哪些重要的作用。
同时,分别从“任务”和“人员”两个不同角度讲解如何优化项目开发模式,把瀑布式、迭代式等多种项目管理方法结合,利用最小化的资源提供最大化的产出。
课程中逐一要解决的问题:
1、需求分析缺乏经验
2、团队对设计目标的理解不一致
3、需求分析过程同软件开发过程严重脱节
4、无法有效的将从客户获取的信息转换成软件设计文档
5、开发人员和需求分析人员互相不认可,无法形成有效的协作
6、需求不明确,测试很难开展
更多信息见:http://www.msup.com.cn/?mod=training&show=6
新年芙蓉镇之旅[图]
[ 2009-1-28 23:30 | by 张宴 ]
今天,我带着老婆、妹妹等在酉水之滨的“芙蓉镇”游玩了一整天。
芙蓉镇原名王村镇,位于湖南省湘西土家族苗族自治州永顺县,因同名电影《芙蓉镇》而得名。
芙蓉镇是一座具有两千年历史的古镇,位于酉水之滨,距县城51公里。原为西汉酉阳县治所,因得酉水舟楫之便,上通川黔,下达洞庭,自古为永顺通商口岸,素有“楚蜀通津”之称。享有酉阳雄镇、湘西“四大名镇”、“小南京”之美誉。
芙蓉镇不仅是一个具有悠久历史的千年古镇,也是融自然景色与古朴的民族风情为一体的旅游胜地,又是猛洞河风景区的门户、一个寻幽访古的最佳景点。四周是青山绿水,镇区内是曲折幽深的大街小巷,临水依依的土家吊脚木楼以及青石板铺就的五里长街,处处透析着淳厚古朴的土家族民风民俗,让游人至此赞不绝口,留连忘返。胡绩伟先生游览猛洞河和芙蓉镇以后作词赞道:“武陵山秀水幽幽,三峡落溪州。悬崖壁峭绿油油,悠悠荡华舟。烹鲜鱼,戏灵猴,龙洞神仙游,芙蓉古镇吊脚楼,土家情意稠。”
下面,且看今天拍摄的照片:
芙蓉镇原名王村镇,位于湖南省湘西土家族苗族自治州永顺县,因同名电影《芙蓉镇》而得名。
芙蓉镇是一座具有两千年历史的古镇,位于酉水之滨,距县城51公里。原为西汉酉阳县治所,因得酉水舟楫之便,上通川黔,下达洞庭,自古为永顺通商口岸,素有“楚蜀通津”之称。享有酉阳雄镇、湘西“四大名镇”、“小南京”之美誉。
芙蓉镇不仅是一个具有悠久历史的千年古镇,也是融自然景色与古朴的民族风情为一体的旅游胜地,又是猛洞河风景区的门户、一个寻幽访古的最佳景点。四周是青山绿水,镇区内是曲折幽深的大街小巷,临水依依的土家吊脚木楼以及青石板铺就的五里长街,处处透析着淳厚古朴的土家族民风民俗,让游人至此赞不绝口,留连忘返。胡绩伟先生游览猛洞河和芙蓉镇以后作词赞道:“武陵山秀水幽幽,三峡落溪州。悬崖壁峭绿油油,悠悠荡华舟。烹鲜鱼,戏灵猴,龙洞神仙游,芙蓉古镇吊脚楼,土家情意稠。”
下面,且看今天拍摄的照片:
百度、新浪、Mixi、Apache社区赞助的开源key-value分布式存储系统[原创]
[ 2009-1-21 10:24 | by 张宴 ]
[文章作者:张宴 本文版本:v1.0 最后修改:2009.01.21 转载请注明原文链接:http://blog.zyan.cc/post/394/]
key-value分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。如果辅以Real-Time Search Engine(实时搜索引擎)进行复杂条件检索、全文检索,就可以替代并发性能较低的MySQL等关系型数据库,达到高并发、高性能,节省几十倍服务器数量的目的。以MemcacheDB、Tokyo Tyrant为代表的key-value分布式存储,在上万并发连接下,轻松地完成高速查询。而MySQL,在几百个并发连接下,就基本上崩溃了。
虽然key-value分布式存储具有极高的性能,但是只能做类似于MySQL的SELECT * FROM table WHERE id = 123;简单主键查询。
“搜索索引引擎+key-value分布式存储”能够实现高并发的复杂条件查询、全文检索与数据显示。但是,由于索引更新需要时间,目前还不能实现完全意义上的Real-Time Search(实时搜索),只能称之为Near Real-Time Search(准实时搜索)。“搜索索引引擎+key-value分布式存储”除了做全文检索外,还可以在允许的索引延迟范围内,取代MySQL进行复杂条件查询。
我的文章《亿级数据的高并发通用搜索引擎架构设计》的程序编码已经完成,第一轮测试昨天已经结束,能够在高并发情况下实现1分钟内索引更新,属于“Near Real-Time Search Engine(准实时搜索引擎)+key-value分布式存储”应用。其中,索引引擎采用Sphinx,存储采用key-value分布式数据库Tokyo Tyrant。
以下是常见的key-value分布式存储系统:
其中,以下几款值得关注:
1、Hypertable:它是搜索引擎公司Zvents根据Google的9位研究人员在2006年发表的一篇论文《Bigtable:结构化数据的分布存储系统》开发的一款开源分布式数据储存系统。Hypertable是按照1000节点比例设计,以 C++撰写,可架在 HDFS 和 KFS 上。尽管还在初期阶段,但已有不错的效能:写入 28M 列的资料,各节点写入速率可达7MB/s,读取速率可达 1M cells/s。Hypertable目前一直没有太多高负载和大存储的应用实例,但是最近,Hypertable项目得到了百度的赞助支持,相信其会有更好的发展。
2、Tokyo Tyrant:它是日本最大的SNS社交网站mixi.jp开发的 Tokyo Cabinet key-value数据库网络接口。它拥有Memcached兼容协议,也可以通过HTTP协议进行数据交换。对任何原有Memcached客户端来讲,可以将Tokyo Tyrant看成是一个Memcached,但是,它的数据是可以持久存储的。Tokyo Tyrant 具有故障转移、日志文件体积小、大数据量下表现出色等优势,详见:http://blog.zyan.cc/post/362.htm
Tokyo Cabinet 2009年1月18日发布的新版本(Version 1.4.0)已经实现 Table Database,将key-value数据库又扩展了一步,有了MySQL等关系型数据库的表和字段的概念,相信不久的将来,Tokyo Tyrant 也将支持这一功能。值得期待。
key-value分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。如果辅以Real-Time Search Engine(实时搜索引擎)进行复杂条件检索、全文检索,就可以替代并发性能较低的MySQL等关系型数据库,达到高并发、高性能,节省几十倍服务器数量的目的。以MemcacheDB、Tokyo Tyrant为代表的key-value分布式存储,在上万并发连接下,轻松地完成高速查询。而MySQL,在几百个并发连接下,就基本上崩溃了。
虽然key-value分布式存储具有极高的性能,但是只能做类似于MySQL的SELECT * FROM table WHERE id = 123;简单主键查询。
“搜索索引引擎+key-value分布式存储”能够实现高并发的复杂条件查询、全文检索与数据显示。但是,由于索引更新需要时间,目前还不能实现完全意义上的Real-Time Search(实时搜索),只能称之为Near Real-Time Search(准实时搜索)。“搜索索引引擎+key-value分布式存储”除了做全文检索外,还可以在允许的索引延迟范围内,取代MySQL进行复杂条件查询。
我的文章《亿级数据的高并发通用搜索引擎架构设计》的程序编码已经完成,第一轮测试昨天已经结束,能够在高并发情况下实现1分钟内索引更新,属于“Near Real-Time Search Engine(准实时搜索引擎)+key-value分布式存储”应用。其中,索引引擎采用Sphinx,存储采用key-value分布式数据库Tokyo Tyrant。
以下是常见的key-value分布式存储系统:
其中,以下几款值得关注:
1、Hypertable:它是搜索引擎公司Zvents根据Google的9位研究人员在2006年发表的一篇论文《Bigtable:结构化数据的分布存储系统》开发的一款开源分布式数据储存系统。Hypertable是按照1000节点比例设计,以 C++撰写,可架在 HDFS 和 KFS 上。尽管还在初期阶段,但已有不错的效能:写入 28M 列的资料,各节点写入速率可达7MB/s,读取速率可达 1M cells/s。Hypertable目前一直没有太多高负载和大存储的应用实例,但是最近,Hypertable项目得到了百度的赞助支持,相信其会有更好的发展。
2、Tokyo Tyrant:它是日本最大的SNS社交网站mixi.jp开发的 Tokyo Cabinet key-value数据库网络接口。它拥有Memcached兼容协议,也可以通过HTTP协议进行数据交换。对任何原有Memcached客户端来讲,可以将Tokyo Tyrant看成是一个Memcached,但是,它的数据是可以持久存储的。Tokyo Tyrant 具有故障转移、日志文件体积小、大数据量下表现出色等优势,详见:http://blog.zyan.cc/post/362.htm
Tokyo Cabinet 2009年1月18日发布的新版本(Version 1.4.0)已经实现 Table Database,将key-value数据库又扩展了一步,有了MySQL等关系型数据库的表和字段的概念,相信不久的将来,Tokyo Tyrant 也将支持这一功能。值得期待。
Memcached的代理服务器软件:magent使用小记[原创]
[ 2009-1-19 00:02 | by 张宴 ]
[文章作者:张宴 本文版本:v1.0 最后修改:2009.01.19 转载请注明原文链接:http://blog.zyan.cc/post/393/]
magent是一款开源的Memcached代理服务器软件,其项目网址为:
http://code.google.com/p/memagent/
一、安装步骤:
1、编译安装libevent:
2、编译安装Memcached:
3、编译安装magent:
二、使用实例:
1、分别在11211、11212、11213端口启动3个Memcached进程,在12000端口开启magent代理程序;
2、11211、11212端口为主Memcached,11213端口为备份Memcached;
3、连接上12000的magent,set key1和set key2,根据哈希算法,key1被写入11212和11213端口的Memcached,key2被写入11212和11213端口的Memcached;
4、当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;
5、当11211、11212端口的Memcached重启复活,连接到12000端口,magent会从11211或11212端口的Memcached取数据,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管11213端口的Memcached还有数据(此问题尚待改进)。
magent是一款开源的Memcached代理服务器软件,其项目网址为:
http://code.google.com/p/memagent/
一、安装步骤:
1、编译安装libevent:
wget http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz
tar zxvf libevent-1.4.9-stable.tar.gz
cd libevent-1.4.9-stable/
./configure --prefix=/usr
make && make install
cd ../
tar zxvf libevent-1.4.9-stable.tar.gz
cd libevent-1.4.9-stable/
./configure --prefix=/usr
make && make install
cd ../
2、编译安装Memcached:
wget http://danga.com/memcached/dist/memcached-1.2.6.tar.gz
tar zxvf memcached-1.2.6.tar.gz
cd memcached-1.2.6/
./configure --with-libevent=/usr
make && make install
cd ../
tar zxvf memcached-1.2.6.tar.gz
cd memcached-1.2.6/
./configure --with-libevent=/usr
make && make install
cd ../
3、编译安装magent:
mkdir magent
cd magent/
wget http://memagent.googlecode.com/files/magent-0.5.tar.gz
tar zxvf magent-0.5.tar.gz
/sbin/ldconfig
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
make
cp magent /usr/bin/magent
cd ../
cd magent/
wget http://memagent.googlecode.com/files/magent-0.5.tar.gz
tar zxvf magent-0.5.tar.gz
/sbin/ldconfig
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
make
cp magent /usr/bin/magent
cd ../
二、使用实例:
memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
magent -u root -n 51200 -l 127.0.0.1 -p 12000 -s 127.0.0.1:11211 -s 127.0.0.1:11212 -b 127.0.0.1:11213
memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
magent -u root -n 51200 -l 127.0.0.1 -p 12000 -s 127.0.0.1:11211 -s 127.0.0.1:11212 -b 127.0.0.1:11213
1、分别在11211、11212、11213端口启动3个Memcached进程,在12000端口开启magent代理程序;
2、11211、11212端口为主Memcached,11213端口为备份Memcached;
3、连接上12000的magent,set key1和set key2,根据哈希算法,key1被写入11212和11213端口的Memcached,key2被写入11212和11213端口的Memcached;
4、当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;
5、当11211、11212端口的Memcached重启复活,连接到12000端口,magent会从11211或11212端口的Memcached取数据,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管11213端口的Memcached还有数据(此问题尚待改进)。
PHPSH:Facebook开发的PHP Shell的安装与使用[原创]
[ 2009-1-13 18:35 | by 张宴 ]
[文章作者:张宴 本文版本:v1.0 最后修改:2009.01.13 转载请注明原文链接:http://blog.zyan.cc/post/392/]
PHPSH 是 Facebook 团队开发的一款交互式 PHP Shell,可以方便地进行PHP命令行测试。
网址:http://www.phpsh.org/
安装方法:
注意:上述安装方法中的“/usr/local/webserver/php/bin/php”为您的PHP可执行文件路径。
使用示例:
PHPSH 是 Facebook 团队开发的一款交互式 PHP Shell,可以方便地进行PHP命令行测试。
网址:http://www.phpsh.org/
安装方法:
cd /opt/
wget http://www.phpsh.org/phpsh-latest.tgz
tar zxvf phpsh-latest.tgz
cd phpsh/
sed -i "s#php -q#/usr/local/webserver/php/bin/php -q#g" phpsh
chmod +x phpsh
ln -s /opt/phpsh/phpsh /bin/phpsh
wget http://www.phpsh.org/phpsh-latest.tgz
tar zxvf phpsh-latest.tgz
cd phpsh/
sed -i "s#php -q#/usr/local/webserver/php/bin/php -q#g" phpsh
chmod +x phpsh
ln -s /opt/phpsh/phpsh /bin/phpsh
注意:上述安装方法中的“/usr/local/webserver/php/bin/php”为您的PHP可执行文件路径。
使用示例:
[root@localhost ~]# phpsh
I can't find a tags file for you. To enable tab completion in phpsh,
go to the root directory of your php code and run 'ctags -R',
(or whatever the analagous command is with your version of ctags,)
then run phpsh from that directory or a subdirectory of that directory.
Commandline: /usr/local/webserver/php/bin/php -q /opt/phpsh/phpsh.php
phpsh (c)2006 by Charlie Cheever and Dan Corson and Facebook, Inc.
type 'h' or 'help' to see instructions & features
New Feature: You can use the -c option to turn off coloring
php> = 3 + 4
7
php> = md5("ZhangYan")
28f91f3a4b62ce57b7a533e742e8aae1
php> echo date("Y-m-d H:i:s")
2009-01-13 15:28:19
php> $var = "blog.zyan.cc"
php> echo $var
blog.zyan.cc
php> $array = array(array(1,2,3), array("a" => "b", "c" => "d", "e" => "f"), 'g', 'h')
php> = $array
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[a] => b
[c] => d
[e] => f
)
[2] => g
[3] => h
)
php> q
[root@localhost ~]# phpsh
I can't find a tags file for you. To enable tab completion in phpsh,
go to the root directory of your php code and run 'ctags -R',
(or whatever the analagous command is with your version of ctags,)
then run phpsh from that directory or a subdirectory of that directory.
Commandline: /usr/local/webserver/php/bin/php -q /opt/phpsh/phpsh.php
phpsh (c)2006 by Charlie Cheever and Dan Corson and Facebook, Inc.
type 'h' or 'help' to see instructions & features
New Feature: You can use the -c option to turn off coloring
php> = 3 + 4
7
php> = md5("ZhangYan")
28f91f3a4b62ce57b7a533e742e8aae1
php> echo date("Y-m-d H:i:s")
2009-01-13 15:28:19
php> $var = "blog.zyan.cc"
php> echo $var
blog.zyan.cc
php> $array = array(array(1,2,3), array("a" => "b", "c" => "d", "e" => "f"), 'g', 'h')
php> = $array
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[a] => b
[c] => d
[e] => f
)
[2] => g
[3] => h
)
php> q
[root@localhost ~]# phpsh
从大学毕业后,已经很久没有玩过游戏了。现在偶尔玩玩游戏,为了加深对网络游戏的了解,便于以后Web与网游的结合。
最近玩过的游戏:
《剑侠情缘网络版叁》封测版
官网:http://jx3.xoyo.com
另推荐一个根据剑网3游戏素材制作的电影──《落花辞》:
《落花辞》是由热心玩家团体“呈递完美游戏电影”以金山软件公司《剑侠情缘网络版叁》封测游戏素材制作的游戏电影,讲述一个寻人的故事以及三段隐约感情。未经世事的纯阳派女弟子沐心,为追随自己的意中人不惜偷出师门。二人浪迹天涯,后来在万花谷避雨时结识了隐居此地的李尧。意中人执意闯荡江湖成就一番事业,坚持将沐心留在李尧处,并承诺功成名就后就回来。结果一去杳如黄鹤,沐心相思成疾,李尧不得不带她外出寻人,结果却……
全片片长20分钟,拍摄和制作一共用了20天。精致的画面构图、考究的镜头剪辑、恰如其分的配乐配音等使得片中那段漫长的寻人之旅耐人寻味,三段若隐若现的爱情刻骨情殇••••••只叹此情可待成追忆,只是当时已惘然。
清晰版下载(122M):http://jx3.update.kingsoft.com/jx3/other/Luohuaci_mv.rar
《反恐行动》 (终极内测,不删档、不限号,永久免费。)
最近玩过的游戏:
《剑侠情缘网络版叁》封测版
官网:http://jx3.xoyo.com
另推荐一个根据剑网3游戏素材制作的电影──《落花辞》:
《落花辞》是由热心玩家团体“呈递完美游戏电影”以金山软件公司《剑侠情缘网络版叁》封测游戏素材制作的游戏电影,讲述一个寻人的故事以及三段隐约感情。未经世事的纯阳派女弟子沐心,为追随自己的意中人不惜偷出师门。二人浪迹天涯,后来在万花谷避雨时结识了隐居此地的李尧。意中人执意闯荡江湖成就一番事业,坚持将沐心留在李尧处,并承诺功成名就后就回来。结果一去杳如黄鹤,沐心相思成疾,李尧不得不带她外出寻人,结果却……
全片片长20分钟,拍摄和制作一共用了20天。精致的画面构图、考究的镜头剪辑、恰如其分的配乐配音等使得片中那段漫长的寻人之旅耐人寻味,三段若隐若现的爱情刻骨情殇••••••只叹此情可待成追忆,只是当时已惘然。
Flash Video Player文件
清晰版下载(122M):http://jx3.update.kingsoft.com/jx3/other/Luohuaci_mv.rar
《反恐行动》 (终极内测,不删档、不限号,永久免费。)
支持MSNP15协议与离线消息的PHP MSN Class,可实现MSN机器人
[ 2008-12-30 00:05 | by 张宴 ]
[文章作者:张宴 本文版本:v1.0 最后修改:2008.12.30 转载请注明原文链接:http://blog.zyan.cc/post/390/]
我之前的一篇文章《Linux服务器系统监控框架与MSN、E-mail、手机短信报警的实现》中提到MSN报警,当时使用的sendMsg类采用的是MSNP9协议,不支持离线消息。最近找到一个PHP MSN Class(http://code.google.com/p/phpmsnclass/),支持MSNP9 (MSN 6.2)和最新的MSNP15 (WLM 8.1)协议(MSNP15协议支持离线消息),可以作为MSN机器人使用,或者给MSN、雅虎通发消息。
示例代码:必须确保发送人、接收人的MSN互相加为好友。
我之前的一篇文章《Linux服务器系统监控框架与MSN、E-mail、手机短信报警的实现》中提到MSN报警,当时使用的sendMsg类采用的是MSNP9协议,不支持离线消息。最近找到一个PHP MSN Class(http://code.google.com/p/phpmsnclass/),支持MSNP9 (MSN 6.2)和最新的MSNP15 (WLM 8.1)协议(MSNP15协议支持离线消息),可以作为MSN机器人使用,或者给MSN、雅虎通发消息。
示例代码:必须确保发送人、接收人的MSN互相加为好友。
同一域名对应多个IP时,PHP获取远程网页内容的函数[原创]
[ 2008-12-15 00:01 | by 张宴 ]
[文章作者:张宴 本文版本:v1.0 最后修改:2008.12.15 转载请注明原文链接:http://blog.zyan.cc/post/389/]
PHP获取远程网页内容有多种方式,例如用自带的file_get_contents、fopen等函数。
但是,在DNS轮询等负载均衡中,同一域名,可能对应多台服务器,多个IP。假设blog.zyan.cc被DNS解析到72.249.146.213、72.249.146.214、72.249.146.215三个IP,用户每次访问blog.zyan.cc,系统会根据负载均衡的相应算法访问其中的一台服务器。
上周做一个视频项目时,就碰到这样一类需求:需要依次访问每台服务器上的一个PHP接口程序(假设为abc.php),查询这台服务器的传输状态。
这时就不能直接用file_get_contents访问http://blog.zyan.cc/abc.php了,因为它可能一直重复访问某一台服务器。
而采用依次访问http://72.249.146.213/abc.php、http://72.249.146.214/abc.php、http://72.249.146.215/abc.php的方法,在这三台服务器上的Web Server配有多个虚拟主机时,也是不行的。
通过设置本地hosts也不行,因为hosts不能设置多个IP对应同一个域名。
那就只有通过PHP和HTTP协议来实现:访问abc.php时,在header头中加上blog.zyan.cc域名。于是,我写了下面这个PHP函数:
PHP获取远程网页内容有多种方式,例如用自带的file_get_contents、fopen等函数。
引用
但是,在DNS轮询等负载均衡中,同一域名,可能对应多台服务器,多个IP。假设blog.zyan.cc被DNS解析到72.249.146.213、72.249.146.214、72.249.146.215三个IP,用户每次访问blog.zyan.cc,系统会根据负载均衡的相应算法访问其中的一台服务器。
上周做一个视频项目时,就碰到这样一类需求:需要依次访问每台服务器上的一个PHP接口程序(假设为abc.php),查询这台服务器的传输状态。
这时就不能直接用file_get_contents访问http://blog.zyan.cc/abc.php了,因为它可能一直重复访问某一台服务器。
而采用依次访问http://72.249.146.213/abc.php、http://72.249.146.214/abc.php、http://72.249.146.215/abc.php的方法,在这三台服务器上的Web Server配有多个虚拟主机时,也是不行的。
通过设置本地hosts也不行,因为hosts不能设置多个IP对应同一个域名。
那就只有通过PHP和HTTP协议来实现:访问abc.php时,在header头中加上blog.zyan.cc域名。于是,我写了下面这个PHP函数: