安静的等待

茹呲綄鎂
posts - 51, comments - 9, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2007年7月18日

应该很多人都会穿西装打领带吧!但是男士之中会有真正打领带打得好看的呢?我想因该不多吧!今天介绍了一篇教人如何打完美领结的文章,让大家能学习学习。

1.亚伯特王子结
适用於浪漫扣领及尖领系列衬衫
搭配浪漫质料柔软的细款领带
正确打法是在宽边先预留较长的空间
并在绕第二圈时尽量贴合在一起
即可完成此一完美结型

 

2.四手结(单结)
是所有领结中最容易上手的
适用於各种款式的浪漫系列衬衫及领带

3.浪漫结
浪漫是一种完美的结型
故适合用於各种浪漫系列的领口及衬衫
完成後将领结下方之宽边压以绉摺可缩小其结型
窄边亦可将它往左右移动使其小部份出现於宽边领带旁

4.温莎结
此种结形因其宽度较一般结形宽
故十分适合使用在意大利式领口(八字领)
的浪漫系列衬衫上
最适合与浪漫细致的丝质领带相互搭配

5.简式结(马车夫结)
适用於质料较厚的领带
最适合打在标准式及扣式领口之衬衫
将其宽边以180度由上往下翻转
并将折叠处隐藏於後方
待完成後可再调整其领带长度
是最常见的一种结形

6.十字结(半温莎结)
此款结型十分优雅及罕见
其打法亦较复杂
使用细款领带较容易上手
最适合搭配在浪漫的尖领及标准式领口系列衬衫

posted @ 2007-12-18 13:49 ricki 阅读(319) | 评论 (0)编辑 收藏

http://www.shiseido.co.jp/ 日本官方网站
http://www.shiseido.com.tw/ 台湾网站

这是花窝一个叫lakeside的jm花大力气写成的

资生堂是日本最有名的化妆品公司,很多姐妹都很注目和喜爱她。
但是在国内百货店里的专柜,各路神通广大的水货小店,还有超市,都能见到各种资生堂
的产品,外观包装感觉,价格,功能,十分悬殊,让人眼花缭乱,不知该买哪一种才合适
自己。
资生堂产品系列的确繁多到了令人眼花缭乱的程度。我们常见的她家的产品,大都属于资
生堂集团旗下的以下四家公司系统。
第一:Shiseido International  (有的媒体称之为”国际柜”)
第二:Shiseido Cosmetic (有的媒体称之为”东京柜”)
第三: Shiseido  Fitit 
第四: FT Shiseido (第三和第四大概就是有些水货店说的”内销品牌”吧?)

Shiseido International,顾名思义,是面向海外销售,凝聚资生堂百年技术精华,是资
生堂打向海外的大招牌。其中包括The skincare,The makeup,D program ,Naturals、
BOP,Benefiance等系列,系列并不很多,简洁明了。彩妆,护肤,加龄修护,敏感肤质,
一目了然。包装精美典雅,充满高级感。国内大城市,比如北京,上海,高档百货店中的
资生堂柜台中销售的,应该大都是Shiseido International的产品。同时在日本,这一大
系统的产品,也只在高档百货店中销售。

第二,Shiseido Cosmetic,是面向日本国内的产品。系列众多,包括护肤,彩妆,香水
,男士化妆品,化装道具,在日本,销售渠道有高级百货店,药店和超市的专柜,和传统
彩妆店。价格,性能从大众化到高级品都有,一般都会有专柜销售小姐介绍和推荐最合适
顾客的产品。这一大系统的产品,包装也都精美,瓶外都会有精致硬纸盒包装,瓶的正面
一定会有单独的Shiseido八个英文字母。

第三, Shiseido Fitit ,走的则是开架式销售,低价位路线。包装比较简单,瓶外大都
有漂亮的透明塑料盒。瓶的正面一般没有直接的Shiseido八个英文字母,只在瓶子背面的
生产厂家的标识处,才有资生堂的字样。

第四,FT Shiseido是资生堂的生活日用品的专用商标。产品中包括了香波,浴液,卫生用
品,也有很便宜的护肤产品,在药店和超市开架式销售。外包装更为简单,有的是透明塑
料盒包装,有的干脆简单到只是外包一层塑料膜。瓶的正面只有商品名称,一般没有直接
的Shiseido英文字母,在瓶子背后有FT Shiseido的商标标志。

她家总计共有五、六百种商品呢,从头发到身体、从男性到女性,从年轻的去油保湿到老龄
的抗老滋养用品,几乎一应俱全。而且价位非常丰富,无论是富是穷,她都有相应的东西给
你.

我在做这个贴子时,查了很多资料,包括资生堂的日本官方网页,和大量国内网络商店。

发现国内许多网络商店,比如说在推荐比较昂贵的盼丽风姿系列,将一些根本不沾边的很
廉价的产品也说成是盼丽风姿,卖昂贵的价格。还有的网站,干脆把别的日本公司的原本很
便宜的东西,一律都加上资生堂的头衔,说得天花乱坠,卖昧良心的高价。虽然从照片上一眼
便能看出外观风格的不一致,但不了解资生堂的人就非常容易上当,大家一定要小心呢。

现在水货店或者网络商店里卖很多比较便宜的资生堂的产品,100元到200元的那些
产品,大都是资生堂内销日本国内的低价位的产品,原本没有将其想海外销售的想法.而我
们的水货商神通广大,打着资生堂的招牌,写些美丽的广告词,赚大家的钱.那些东西原本真
的很便宜,比如说一个FT Shiseido出的Deluxe的面霜,在日本卖800日元,合人民币大概50
块,想想日本人的月平均数万的工资收入,就能知道着个霜是多么价廉.而我们这里水货店里
把这个dd叫做”贵族系列”,卖六七十块,这么豪华的名字,又是资生堂,很有诱惑力吧?可是
我觉得,买这个,真不如买还不如买 泊莱,买Za,买国内的一些比较好的品牌呢。
资生堂的口碑来自那些凝聚了高科技精华的高级系列,绝非靠廉价商品起家.

下面来介绍市面上能见到资生堂的各个系列。(不包括传统美妆店专用系列,香水,香波
浴液类,化妆道具,男士化妆品,单件彩妆,指甲油,单件护理。)
首先是系列最多的第二大类的 Shiseido Cosmetic:(按商品字母顺序排列)

●Acteaheart  适合50岁以上使用。含有植物萃取物,能起到雌性激素的作用。改善皮
肤干燥、松弛等老化状况。以前不知道这是加龄修护,买过一个护手霜,好贵。然而的确好
用,用过之后,手又润滑又白净,连我自己都吃了一惊呢。

● Anessa 中文名字为安耐晒 高效防晒霜。油腻感少,对皮肤温和。透明度较好
● BX Night N  一款单件高效保湿润滑美容液。可以配合任何系列使用。●Cosmeti
c ●Cosmetic House  在经过仪器检测后,销售小姐对顾客皮肤状况进行细致的分类
,提供最合适的护理系列。有点量身订做的感觉。

●Dignita  30岁以上成熟肌肤专用的综合系列,包括护肤和彩妆。在第二大系统的S
hiseido Cosmetic的所有护理综合系列中,Dignita是最高级的,她充分体现了30岁左右
女性的成熟与美艳。

Eudermine 紅色化粧液、中文美称:红色梦露。被喻为镇店之宝,热销了近一个世纪,

仍然是资生堂的代表产品。高补水,去角质,活肤三合一功效,是Shiseido的第一护肤产
品,于1997年改良后再面世.。

●eau de blanc  化粧水状美白美容液 高丝的雪肌精十几年持续热卖,资生堂于是
推出了这一款单件的美白化妆水。用法和功效都近似于雪肌精。刚发售时很畅销,然而风
头好象始终不敌雪肌精。

●Eau de pure  去老化角質化粧水,可以配合任何系列使用。
●Elixir  30岁左右肌肤专用的综合系列,包括护肤和彩妆。是资生堂面向本国销售
的最主力的大众系列。广告代言人:小泉今日子。

Elserie  20岁以下皮肤护理综合系列。
Evenese Dr  专为敏感性皮肤设计的低刺激性护理系列。

Inoui  颜色?外包装由欧美顶级化妆大师迪克•佩吉设计。提倡自由和个性。是
高级百货店专卖系列,和同为彩妆系列的PN叛逆系列相比,显得更高档。

●lostalot  瘦脸霜。激活促进脸部皮肤新陈代谢。收紧脸部线条。
●Optune 为20岁以上设计。不过分油,不过分水,体现健康皮肤。不过效果好象一般
,用过一次,觉得效果和价格有反差。

PN 叛逆系列彩妆。 97年面世,形象前卫,高感度的时髦,是目前资生堂在日本市
场上最旺销的彩妆产品。尤其是今年新推出的睫毛膏,人气极高。广告代言人:伊东美咲

●Proudia 粉底系列。强调知性,精致,完美。广告代言人:上原多香子。粉质很细,遮
斑也好,而且不容易掉妆,很好用。

●Qiora  配合了令精神放松的香味,实现在护理皮肤的同时舒缓疲劳。
Rivital 40岁以上成熟皮肤护理专用系列。有除皱,亮斑,紧肤高效。专为抗老化而设计

●S系列 为年轻都市女性设计,强调在隔离都市污染等恶劣环境下进行护理和美白。分为
:美白和标准护理两个系列。 兼有彩妆。

●TAPHY  面向25岁以下年轻人群,强调补水保湿,以防止25岁后逐渐开始的老化。
并有TAPHY Mild的副线,给年轻人群中容易过敏的皮肤设计的低刺激性系列

●UVwhite 美白综合护理系列。这个系列我用过三年左右,的确变白了,这是事实。但使
用感一般,虽然分清爽型和滋润型两种,清爽型在夏天用还是觉得油得很。冬天用又觉得
只是油,不够保养。最终还是换了别的牌子。

●whitess  单件美容液,资生堂的美白王牌。 分为彻底护理,除斑,防晒三种

下面是Shiseido International的系列.
Shiseido International旗下的产品,专为海外市场设计,系列简洁明了。为年轻女性设
计的控油平衡的飘尔丽丝系列,基础皮肤护理的活颜悦色系列,在此基础上进一步高效保
养的百优单件系列,加龄修护的盼丽风姿系列。全天然成分的Naturals系列,敏感肌肤专
用的D program。彩妆有都会魅彩系列。

另外,在国内柜台里有都会之玉系列销售,我还没有找到相应的资料,以后再补吧.
●Benefiance  盼丽风姿系列。总体来说是为中年成熟肌肤而设计。适合中型,干性皮
肤。含有特效抗皮肤老化的独特成分,防止干燥角质形成,帮助皮肤细胞保留水份及养分
,改善缺水情况及减少浅改。

●BOP 百优系列。单件全能护理系列。可以配合任何系列使用。 

●D program 专为敏感肌肤设计。包括香波,浴液,防晒霜,去痘霜,脸部护理,身体
护理等全套低刺激产品。

●Pureness  为年轻人群设计,性质柔和,强调彻底清洁,平衡PH值,控油,以防止面
部油光和干燥。价格相对来说不很昂贵,易为年轻人接


●The Make up 都会魅彩系列。资生堂面向海外销售的唯一的彩妆系列。和其他两个面
向日本国内销售的彩妆系列Inoui、PN叛逆系列相比,更加唯美,时尚,欧美化。

●The Skincare  活颜悦色系列。资生堂面向海外销售的基础皮肤护理系列。提倡在滋
润养护的同时,为未来的健康而年轻的皮肤打下延缓老化的基础。

● Cle de peau BEAUTY 肌肤之钥系列。 在资生堂集团旗下产品中,最高级就是这个
系列。可以说她是资生堂在海外的一举大旗.以非凡的效果和昂贵的价格成为爱美一族的神
往。
她游离于资生堂系列之外,以Cle de peau BEAUTY的名字与资生堂各自为政。一瓶最基
础的化妆水免税后的价格也要700元左右。登峰造极的是名为La Creme的晚霜,25克
一瓶卖到3600块人民币。我的超级臭美死党朋友今年以分期付款的形式,咬牙买了一
瓶La Creme,一周只用两次,用过一个月后迫不及待得打电话给我,说“我从31岁回到
了26岁,爱死这个东西了!”这个系列的彩妆,无论从质地、色泽都堪称顶级作品。尤
其是光润粉底,更是蜚声世界市场。

说完了高级的,再来贴资生堂的副线产品.
第三: Shiseido  Fitit 
这个大系列,很经济实惠,销售对象是日本国内的那些经济收入不高的年轻人,学生,不
愿意为化妆品付出太多钞票的家庭主妇。所以说资生堂的销售手段很高明,从超高级系列
到廉价小东西,她都为你提供了,金领蓝领都是她的顾客。
国内网络商店里卖的比较便宜的资生堂,大概都是这个Shiseido  Fitit的产品。在那些
网站里,只要是沾资生堂边的东西,都一律和雅诗蓝黛,和兰蔻放在一起,其实不能算同
一层次,不能同日而语。
● Asplir 中文名为爱泊丽或者艾丝蓓雅。是经济价位的基础护理系列。在日本这个系列
的广告代言人是已经36岁的山口智子,所以我总怀疑这是面向30岁左右成熟肌肤的系
列。实际上我没有用过,不过听说效果还可以,性价比很好。很多网站上推销的AS系列,
就是这个Asplir。
● City veil 防晒和晒后护理专用系列。有防晒兼美白,防晒兼去痘,幼儿防晒等多款

●DeLuxe 中文名为贵族,基础护理系列。
● ff 中文名绯绯,面向学生等年轻女孩的彩妆系列。物美价廉,外形很可爱,颜色也正
,又流行,价格又合适,让人有些爱不释手呢。


● SELFIT 中文名为珊妃。面向成熟女性的彩妆系列。
●Tiss 化妆水系列。面向年轻女孩,提倡通过深入清洁和滋润,实现年轻而健康的皮肤
。使用很方便,分为补水,滋润,去痘三种。


●Whitia  中文名为白媞雅或者海洋堂。面向年轻女孩的美白护理系列。价格很实惠.象
是UV white优白系列的低价版,或者说是年轻女孩的美白入门产品,用起来真的很舒服,
很清爽。


最后是FT Shiseido,这里面的东西就真的很日常,用起来很随意,价格也便宜.

第四类:FT Shiseido
FT Shiseido是是资生堂的卫生日用品的专用商标。Fitit Shiseido的产品中包括了日常
必需的香波,浴液,摩丝,妇女用品,也有很便宜的护肤系列,在超市和药店的开架销售,
供人自选。
其中和皮肤护理有关的产品,共有以下几种,分别是:
●Water in lip  去唇部死皮,润唇霜,用过以后嘴唇显得很水嫩,很饱满。
● MIEL 为50岁以上女性设计的一个价格便宜的日常保养系列。
●Naturgo  天然泥系列。以清洁类产品为主。里面的洗脸泡沫,很喜欢,泡沫细致,而且
没什么味道,洗后非常爽快.
●Neutrogena 给青少年设计的粉刺暗疮护理系列。
● 肌水 天然水,无添加剂,可以随时喷雾补水,用过之后,觉得喷脸并不舒服,发干,
喷头发倒很合适,头发会又顺滑又光泽,可是光喷头发就太可惜了。在日本,这一款最受
高中女生的欢迎。
●另外我在网络商店里看到有Aquair基础系列,好象是蓝色的塑料盒包装,上面有”速感”
字样的汉字,在日本商店里却见不到,官里方网页里也没有,怀疑是已经停止生产?或者是国
外制造?我没有调查,不能乱下结论.....

posted @ 2007-12-18 13:48 ricki 阅读(1011) | 评论 (0)编辑 收藏

BIOTHERM是由两个英文字三个数字组成
例如:CV150第一个字是产地..第二个字是制造那年
S是1997.T是1998.U是1999.V是2000
后三位数表示那一年的第几天
所以CV150就是2000年的第150天制造
保存期限通常是三年..就是到2003年5月
**********************************

另外赫莲娜 HR, LANCOME, VICHY跟BIOTHERM的批号表示法是一样的

“我爱小对对”提供:
碧欧泉生产日期代码印的“XX”这个是摩洛哥的标志,C是法国。
***********************************

ESTEE LAUDER(EL) 大部份都是三码批号:XYZ,X产地,Y表月,Z表年
例如K61是2001年6月制造的
至于月份表示为:1 2 3 4 5 6 7 8 9 A B C共12个月
至于5码, 依序代表 厂 货 月 年 批
***********************************

CLINIQUE倩碧跟EL的批号表示法是一样的
************************************

KOSE批号有四码,如:L902
则第一个数字9代表1999年生产
而英文字母L是字母序列中的第十二个字,
代表十二月制造,所以保存期限至2002年11月
同理,若批号为C821,
则是1998年3月制造,
保存期限到2001年2月,以此类推

H2O, 如9254H53, 第一个9是指1999年,254是指1999年第254天生产的
*************************************

CLARINS, 以批号603129为例, 第一个数字为年号 6---代表1996, 次两位数为月次 03---就是3月, 后面的数字则是输入的货柜号.
*************************************

贝佳斯的出厂日期, 如LEN03C, L代表2000年, "03"是3月,依此类推..如: "J"为1998年 "K"为1999年 "L"为2000年 "M"为2001年

贝佳斯的出厂日期还有分为新旧版两种的
新版-包含四个部份, 依序代表的是年.批.月.日。如J是1998, K是1999, 4月1日则为401
旧版-包含四个部份, 依序代表的是年.批.月.日。如8是1998, 9是1999, 4月1日则为401
***************************************

CHANEL不论是保养品或是彩妆品的保存期限, 一律是三年. 它的批号有四码, 只有前二码与制造日期有关: 例如, 批号是"95xx"表示是1999年11月制造的,"96xx"则是1999年12月, "97xx"是2000年1月.以此类推.
*********************************************

关于日系的化装品JM们好象都总结不出一个结果来呢,因为实在没有规律可循
**********************************************

补充个lancome的
cu99年
cv2000年
cw2001年

**********************************************

ysl的批号有两种:
四码的,例如0123,就是2000年第123日制造。
五码的,例如03261,表示保存期限到2003年第261天。

**********************************************

GUERLAIN的出场日期通常表示为5码 如 DL2BO

第一个字母 D 是年份 D=1999
第二个字母 L 是月份 L=7 后面的三码没有意义

年份代号如下
P=1996, S=1997, V=1998, D=1999, M=2000,
U=2001, Z=2001, J=2003, Y=2004, W=2005
月份代号如下
H=1, E=2, B=3, X=4, T=5, K=6, L=7, N=8, F=9, R=10, A=11, C=12

*******************************************

KANEBO 批号 依A,B,C,D表1,2,3,4,依此类推 (如DD为84年4月,第一个字为年,第二字为月)

*********************************************

ELIZABERTH ARDEN 批号 如:4PB,第1个数字表示94年制造,后面的英文字表生产地


***************************************************

娇兰和CD的生产日期的最新识别法:
娇兰今年起生产日期和批号改了,和cd的一样。(它们都是LVMN集团的)
如3B02,3是表示2003年,B表示2月份。(12个月依次为从A至L)

posted @ 2007-12-18 13:40 ricki 阅读(416) | 评论 (0)编辑 收藏

Part1: 护肤品类
1 最佳抗老化晚霜:Lancome 金纯再颜晚霜
这款针对熟龄肌肤研发的晚霜价格不菲(1600元),不过功效十分强大。它的植物性
荷尔蒙配方能激发皮肤自身的活力,最诱人的是它可以不光用于面部,还可以用于颈
部和胸部,紧致和拉升这两个部位的线条。

2 最佳抗老化精华素:Dior Capture R60/80 逆时空活肤驻颜精华现代女性总是希望产品见效越快越好,这款产品正是如此。它拥有多项专利技术,除了远期的抗老化功效十分优秀外,在短时间也能看见明显的效果。质地很顺滑,一般在涂抹后1个小时左右,就可以感觉到皱纹减少了许多,而且光泽感明显增加。

3 最佳抗老化面霜: Shiseido 莉薇润肤霜
也是针对成熟肌肤研制,质地非常滋润柔软,吸收很快,能迅速缓解衰老肌肤粗糙
干燥感觉。它的配方针对成熟肌肤出现的皱纹、松弛、色素沉着三大现象进行改进,
尤其是去色斑功效很切合亚洲人的皮肤特点。

4 最佳防老化眼霜: HR 胶原蛋白眼霜
对于去除眼部细纹非常有效的一款眼霜!涂抹时感觉很柔滑,而且细纹立刻就能淡化
不明显,由于能增加眼部胶原蛋白,所以持续使用一段时间后感觉细纹减少了很多,
眼部肌肤紧实度明显增加。

5 最佳防老化日霜:Guerlain 快乐美肤日霜
也可以说拥有“最佳产品概念”,它首次将护肤与人的快乐情绪结合起来。漂亮的苹果
型包装令人愉悦,而粉红色的霜状质地香气宜人,丰润柔滑,让你每次涂抹之时,都
仿佛正在接受“快乐美肤治疗”。

6 最佳密集保养精华素:Sisley 抗皱活肤精华
这款产品属于“精华中的精华”,相当于为成熟肌肤打了一剂“强心针”。一小瓶为一
周的用量,用后皮肤立刻年轻了很多,各种肌肤问题明显得到改善。3000元的价格也许
有点天文数字,但毕竟一年用1-2小瓶就够了。

7 最佳活肤精华素: Biotherm 温泉水元素精华
之所以叫这款产品为“活肤”精华素,是因为它对于皮肤来说有全面焕发活力的
功效。它的包装小巧色泽清润,而乳状啫喱的质地对于任何肤质来说都够舒适。浓缩
的矿物温泉精华保湿效果,柔软肌肤效果,净化肌肤效果都很不错。

8 最佳滋润乳液: SK-II 晶致活肤乳液
许久未有新品的SK-II在2003年秋冬到来时推出了这款产品,其清爽滋润的效
果非常令人满意。比较特殊的是此款产品可以刺激肌肤胶原蛋白的生成,因此它
的保湿效果更深层化,还能预防衰老。

9 最佳保湿精华素: Clarins 平衡保湿精华液
保湿精华液是今年不少品牌推出的一类产品,此款精华液外观非常有卖点,有上层1/5油性质地,下层4/5水性质地的双层液体组成。涂抹时非常滋润又不失清爽。而在缓解皮肤干燥、迅速提升含水量方面表现亦不俗。

10 最佳滋润爽肤水: Clinique 保湿洁肤水
除了美白产品外,完全为亚洲女性度身定制的护肤品还不多,Clinique这款产品就是根据亚洲女性的皮肤特点研制,保湿效果非常优秀,在秋冬使用尤其舒适。清理皮层
的功能是这款产品的特色,能保证每天的老化死皮细胞及时被清理掉。

11 最佳保湿眼霜: H2O+ 水凝紧致眼霜
将强力补水和紧致肌肤的功能组合在一起,对因环境污染和缺水引起的眼部细纹、干
纹能起到即时的缓解作用。清润的质地吸收起来特别快速,而且眼部马上滋润水嫩。
补充骨胶原的功能可以让眼部逐渐紧实起来。

12 最佳美白眼霜: Estee Lauder 超凡晶澈美白眼霜 SPF15
美白眼霜今年开始备受人关注,这是一款使用感受和使用效果都比较优秀的美白眼
霜,虽然质地非常清爽,但滋润效果和柔化眼部肌肤效果都很突出,还能让眼部的瑕
疵不那么明显。SPF15的防晒为眼部提供了周全的保护。

13 最佳美白面膜: Chanel 净白面膜
光是看产品的包装就能打动很多消费者!小小的真空泵包装不光有趣,而且杜绝了产
品被污染的可能。使用后面部肤色能明显均匀一些,而且由于里面含有金缕梅成分,
还有净化并收缩毛孔的效果。

14 最佳活肤美容液: 雅资活肤调理精华
雅资推出的这款美容液虽然包装简洁,但使用感觉和使用效果都相当不错。液状粉质
配方涂抹起来非常柔滑,仿佛在肌肤上形成一层滋润的薄膜。使用一段时间后会感觉皮肤细嫩有光泽,对于灰暗缺水的肌肤改善尤为明显。

15 最佳美白美容液: Kose 雪肌精
这款产品早已是大家公认的汉方植物美白精品,它质地滋润,吸收迅速,可以保持肌
肤的持久滋润。使用一段时间皮肤变得透亮起来,肤色均匀有光泽,而且对于油性皮
肤来说还可以改善毛孔粗大,肤色暗沉的现象。

16 最佳中档抗老化精华素: Olay 玉兰油新生修护精华
即刻效果和远期效果结合得很好的一款中档抗老化精华素,涂抹后肌肤会立刻呈
现一种亚光的效果,衰老痕迹明显减弱。由于核心成分是当红的氨基酸肽,使用一
段时间后皮肤会显著年轻化,肤色均匀且更有光泽。

17 最佳中档抗老化面霜: Avon 新活无痕精华霜
同样是主打“无需手术,去除皱纹”的概念,从皮肤细胞内部入手改善皱纹、松弛等现
象。质地滋润柔软,吸收迅速,使用一段时间后脸部感觉紧实度、弹性都有改善。

18 最佳中档美白面膜: L'oreal 雪颜活性美白面膜
一次性的小包装让里面的美白成分能保持最大的活性,而此款面膜的最大亮点
是里面含有橙色的磨砂微粒,不光看上去清新可爱,而且配合适当的按摩可以
帮助去老化角质,促进面部血液循环,水洗后会发现皮肤明显光滑亮泽了不少。

19 最佳中档活颜面霜: Vichy 亮颜活力面霜
国内首个主打“激活微循环,改善气色”的产品,产品诉求于面色苍白的都市女性。除
了持续使用可以调节不健康的肤色外,该产品的保湿效果也很突出。凝霜(干性肌肤)、凝露(中性和混合性皮肤)的分开设计非常贴心。

20 最佳中档保湿面霜: Aupres 均衡保湿面霜
Aupres的保湿系列一直很有口碑,今年推出的均衡保湿系列效果更加理想。而且日系> 护肤品向来以心思细腻著称,在平衡保湿系列中光是面霜这个步骤就有霜、乳液、液三种选择,任何肌肤都能拥有适合的产品。

21 最佳中档保湿面膜: Laneige 锁水啫喱面膜
这款面膜具有卓越的补水功能,清爽的啫喱易于涂抹,不用水洗的配方让此款面膜可
以随时随地使用。睡觉前使用,让面膜保留一整夜,方便且效果优秀。对于经常坐长
途飞机的女性来说更是应该随身携带。

22 最佳中档眼霜: Hercyna 时光焕彩明眸精华
应用了为肌肤补充“氧气”的概念,是一款功效比较综合的眼霜。对于黑眼圈、小细纹都有明显的

改善作用。霜体非常顺滑,每次只要用米粒大一滴就足够两只眼用量。

 

Part 2:彩妆类

23 最佳时尚睫毛膏: Lancome 魔法睛彩睫毛膏
这款睫毛膏理所当然要成为2003年彩妆界一大亮点,一是由于色彩特别艳丽,从
玫瑰紫到孔雀蓝,每一个色彩都很有个性;二是温水可以完全卸妆,卸下来的睫毛膏
呈蜡丝状,不会沾染眼部皮肤。另外这款睫毛膏不会有糊妆的现象发生。

24 最佳时尚粉底: Dior 凝脂粉底液
从它的名字“Dior Skin”就可以看出这款粉底旨在创造第二层肌肤。它的使用感觉非
常卓越,很容易抹匀而且于肌肤能迅速地贴合在一起,涂抹后脸部很滋润而且很透
气,带妆一整天也能保持舒适。

25 最佳时尚眼影: Estee Lauder 纯色晶亮眼影
光看包装就让人爱不释手,而且一眼能识别出里面眼影的色彩。所有眼影的色泽都是
柔和带有微微闪光的,比较独特的是画的层数越多,颜色越鲜艳。平滑的质感很容易
抹匀,而且带妆时间也比较长。

26 最佳时尚指甲油: Guerlain 亮彩指甲油
今年秋冬流行色彩浓烈的丝光甲油,所以对于指甲油的顺滑性和持久性要求更高。这
款指甲油非常容易涂抹均匀,而且颜色很正,薄薄的一层就显得非常饱和。另外一个
优点就是不那么容易剥落。

27 最佳功能性睫毛膏: HR 无限浓密睫毛膏
记得我把这款睫毛膏拿给一个同事使用后,她惊讶地说:“你怎么给我一款晚上Party
使用的睫毛膏?”因为这款睫毛膏的效果确实太明显了,使用后睫毛真的会像假睫毛一
样又浓又密!

28 最佳时尚唇膏: YSL 我的口红
YSL今年一整年的彩妆都很有时尚创意,年底推出的这款口红强调“随个人变化”的效
果:每种颜色都会因为不同使用着而呈现微妙的色泽变化,而且艳丽度可以随口红涂层的增加而增加。

29 最佳中档粉底: Aupres 美肌活现乳粉 SPF15
这款粉底无论是包装还是品质都物超所值!它结合了一定的保湿功效,因此质地是比较偏水质,涂抹起来非常柔滑,而且很容易推匀。瓶上附有挑棒的设计非常贴心,避免了用手去挑粉底造成的污染。

30 最佳中档唇彩: L'oreal 液体唇膏
将唇膏的高显色度和唇彩的高亮度、高滋润度合而为一,从而让这款唇彩拥有了很好的市场反响。无论是哪种颜色,涂抹后都让双唇艳丽而且亮泽无比,而且长期带妆也不会有干燥的感觉31 最佳中档口红: 羽西流光溢彩唇膏
羽西的产品向来主打“专为亚洲人皮肤设计”,这款唇膏也不例外。里面的独特成分是
由中国传统的多种中草药植物精华及多重维他命融合形成中草药滋养膜,所以涂抹后
双唇很滋润舒适,带妆一天后仍然不会有干燥的感觉。22种颜色有很大的选择空间。

32 最佳年轻粉底: Maybelline 净柔粉底
说是年轻粉底,因为它是针对年轻人爱出油的肌肤设计,低廉的价格也让每个年轻人都消费得起。虽然价格不高,但使用感觉相当不错。啫喱状的质地容易抹匀,而且真的能让肌肤长久感觉清爽无油光。

Part 3:美体及美发
33 最佳时尚纤体产品: Dior Bikini 纤体系列
这个系列在国外早已获好评,运用的是“化妆品界的节食疗法”,通过调节脂肪细胞的食欲来轻松减脂。三款产品分别针对橘皮组织、浮肿、皱纹三大问题定造解决方案,坚持使用一段时间后会有明显效果。

34 最佳中档纤体产品: Vichy 轻盈纤体精华露
这是专门为桔皮皮肤设计的一款纤体产品。其中含有两种控脂成份有效阻止葡萄糖在脂肪细胞中的囤积,去脂成份咖啡因可有效去脂瘦身。每天将产品结合适当按摩使用,难看的桔皮组织会慢慢消减。。

35 最佳身体滋润产品: Chanel Allure 魅力香氛润体露


结合了Allure(魅力香水)香味,而且滋润度非常高。粉红色的霜体丰润柔滑,涂抹后肌肤真的会感觉“丝般柔滑”,而且持久散发出浓浓的香味,秋冬使用效果最好。

36 最佳中档身体滋润产品: L'oreal 凝养抗干燥紧致美体乳
这款产品有点“贪心”,将滋养和紧致的两种功能同时搜罗旗下。保湿的效果应该说是可以即刻看见的,丰润的膏体渗透很快,皮肤涂抹后立刻感觉非常光滑柔软。

37 最佳专业洗护发产品: L'oreal 专家洗护系列染后维他命洗发水/护发露这个系列的洗产品使用感觉非常优秀,洗后的头发明显丰盈滋润有弹性,即使是受损的发质也很容易梳开。而且染发后如果用此系列洗护,头发的颜色明显更加持久艳丽。

38 最佳时尚洗护发产品: 卡诗头皮舒缓系列
污染的空气、巨大的压力让都市女性身心俱惫,所以很多产品都开始针对减压这个理念而设计。作为最高档的专业洗护发品牌,卡诗推出的头皮舒缓系列从香气、使用感受和配方都非常有效,洗后的头发非常滋润,紧张的头皮也放松了许多。

39 最佳大众洗护发产品:沙宣深层水养洗发露和润发精华素
沙宣在这个系列中添加了以往专业产品中使用的PPT多肽水养分子,这种成分最大的优点就是锁水效果明显。洗完后头发可以持久保持在8成干的状态,也就是最容易造型的状态。

40 最佳大众沐浴产品: Olay 多效呵护沐浴乳净白型
这款产品的广告可能给大家留下了深刻印象——28天就让肌肤白回来,当然必须清楚的
是这款产品也只能针对晒黑的皮肤发挥作用。它的泡沫很丰富,使用后肌肤非常滋润,即使在冬天也不会觉得紧绷。


posted @ 2007-12-18 13:39 ricki 阅读(500) | 评论 (0)编辑 收藏

工欲善其事,必先利其器。要学习Silverlight我们需要准备好运行环境和相关的开发工具。下面这篇文章详细的讲述了开始Silverlight学习之旅的五个步骤。点击查看

Quickstarts

Silverlight 1.0 RC1 英文版
Blend Quickstart 英文版
Silverlight 1.1 Alpha refresh 英文版

posted @ 2007-08-29 17:03 ricki 阅读(454) | 评论 (0)编辑 收藏

Download Silverlight 1.0 Beta for Windows

 

系统需求

  • 支持系统: Windows Vista and Windows XP Service Pack 2
  • 支持浏览器: Microsoft Internet Explorer 6, Windows Internet Explorer 7, Mozilla Firefox 1.5.0.8, and Firefox 2.0.x.

 

推荐最低硬件配置: Intel Pentium III 450-megahertz (MHz) or faster, equivalent processor 128 megabytes (MB) of RAM

安装说明

  1. 验证系统需求
    确认你正在运行的是Silverlight所支持的Windows系统和浏览器.
  2. 下载
    点击上面的Silverlight 1.0 Beta For Windows的下载链接(接受许可协议即可)
    对于 Microsoft Internet Explorer 用户:
    浏览器会提示您运行或保存安装文件(Silverlight.1.0beta.exe)。点击运行就开始下载。当您完成下载后浏览器会再次提示您是否运行安装程序。点击运行就开始安装。注意安装Silverlight必须有足够的管理权限
    对于 Mozilla Firefox 用户:
    保存 Silverlight.1.0beta.exe 到您的硬盘. 一旦下载完成点击打开就可以开始安装.
  3. 安装 Silverlight
    • Silverlight 1.0 Beta 安装程序会自动安装.
    • 如果您使用的是Windows Vista系统,在提示您需要安全许可的时候请确认运行
    • 安装程序会继续安装过程,当在IE中完成安装以后,IE浏览器页面会自动更新,而在FireFox中,你需要重新启动浏览器
    • 您可以开始使用Silverlight了
  4. 体验一下Silverlight以确认安装成功.
    访问 Microsoft Silverlight site 以确认安装成功并开始体验Silverlight内容.

posted @ 2007-08-29 16:58 ricki 阅读(269) | 评论 (0)编辑 收藏

什么是 Silverlight?

Silverlight 是一种新的 Web 呈现技术,能在各种平台上运行。借助该技术,您将拥有内容丰富、视觉效果绚丽的交互式体验,而且,无论是在浏览器内、在多个设备上还是在桌面操作系统(如 Apple Macintosh)中,您都可以获得这种体验。Microsoft .NET Framework 3.0(Windows 编程基础结构)中的呈现技术 XAML(可扩展应用程序标记语言)遵循 WPF (Windows Presentation Foundation),它是 Silverlight 呈现功能的基础。

本白皮书将逐步引导您了解 Silverlight 的基本情况,以及如何使用 Microsoft 的众多工具(包括 Microsoft Expression Blend、Microsoft Visual Studio 2005 和 XAML)来构建内容丰富的图形站点。首先,让我们了解一下 Silverlight 发展历程的相关背景信息,以及它在开发领域所处的位置。

构建一个简单的 Silverlight 应用程序

我们先来看一看 Microsoft Expression Blend,使用该工具创建一个 XAML 格式的非常简单的应用程序,以供 Silverlight 使用。要在 Blend 中创建 Silverlight 应用程序,请选择 File(文件)->New project(新建项目),此时会打开“New Project”(新建项目)对话框。请参见图 1。

.

图 1. 使用 Expression Blend 创建新的 Silverlight 项目

选择 OK(确定),即会创建一个新项目。该项目将包含一个默认 HTML 页面、该页面的一些 JavaScript 源代码、一篇 XAML 文档和该 XAML 文档的 JavaScript 源代码及 Silverlight.js。

Silverlight.js 包含用于下载和实例化 Silverlight 控件的代码。它作为 Silverlight SDK 的一部分提供给用户。

Default.html 是标准的 HTML 网页。该网页包含三个 JavaScript 脚本引用,分别指向 Silverlight.js、Default.html.js(其中包含特定于应用程序的用于安装 Silverlight 的代码)和 Scene.xaml.js(其中包含在 XAML 中定义的应用程序事件的事件处理程序)。

它被设计为一个独立的页面 (default.html),与实例化逻辑 (default.html.js)、设计 (Scene.xaml) 和事件代码 (Scene.xaml.js) 分开。不过,理论方面的探讨已经够多了,现在我们开始开发一个简单的应用程序。

创建供视频播放器使用的 UI

在项目中添加视频文件。为此,请右键单击屏幕右上方 Project Files(项目文件)窗口中的项目文件,然后选择 Add Existing Item...(添加现有项目)。

选择某个 WMV 文件并将其添加到项目时,项目浏览器中将显示该文件,同时在视图中添加了一个媒体元素。

.

图 2. 在 XAML 视图中添加媒体元素

现在即可运行您的项目,浏览器将启动并播放您的视频!

通过编辑 XAML 可以停止自动播放视频。您会看到 XAML 设计器右侧有两个选项卡:Design(设计)和 XAML。选择“XAML”选项卡,会打开 XAML 编辑器,如图 3 中所示。使用该编辑器为媒体元素编辑 XAML 文本,添加属性 AutoPlay=False。

.

图 3. 在 XAML 编辑器中编辑 XAML

现在,如果您运行该应用程序,会看到 Silverlight 内容虽然呈现了视频的第一帧,但并不播放。

在视频播放器中添加控件

为该应用程序添加两个文本块,文本内容分别为 Play 和 Stop,名称分别为 txtPlay 和 txtStop。完成后,XAML 应如下所示:

<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="640" Height="480"
Background="White"
>
<MediaElement AutoPlay="False" x:Name="Movie_wmv" Width="320" Height="240" Canvas.Left="128" Canvas.Top="56" Source="Movie.wmv" Stretch="Fill"/>
<TextBlock x:Name="txtPlay" Width="72" Height="24" Canvas.Left="136" Canvas.Top="336" Text="Play" TextWrapping="Wrap"/>
<TextBlock x:Name="txtStop" Width="80" Height="24" Canvas.Left="136" Canvas.Top="368" Text="Stop" TextWrapping="Wrap"/>
</Canvas>

接下来,为文本块在 XAML 中添加事件处理程序声明。为此,可以使用 MouseLeftButtonDown 属性声明单击鼠标的处理程序。在 txtPlay 文本块中,添加对 DoPlay 的事件处理程序;在 txtStop 文本块中,添加对 DoStop 的事件处理程序。完成后,XAML 应如下所示:

<TextBlock x:Name="txtPlay" Width="72" Height="24" Canvas.Left="136"
Canvas.Top="336" Text="Play" TextWrapping="Wrap"
MouseLeftButtonDown="javascript:DoPlay"/>
<TextBlock x:Name="txtStop" Width="80" Height="24" Canvas.Left="136"
Canvas.Top="368" Text="Stop" TextWrapping="Wrap"
MouseLeftButtonDown="javascript:DoStop"/>

现在,如果用户单击其中一个文本块,将触发一个事件,您可通过 JavaScript 功能捕获并处理该事件。

在 JavaScript 中处理事件

模板创建的 Scene.xaml.js 可用于在 JavaScript 中捕获并处理用户事件。由于您在 XAML 内指定了 DoPlay 和 DoStop 事件处理程序,因此应在此处付诸实施。相应的代码如下所示:

function DoPlay(sender, eventArgs)
{
var theHost = document.getElementById("SilverlightControl");
var theMedia = theHost.content.findName("Movie_wmv");
theMedia.Play();
}
function DoStop(sender, eventArgs)
{
var theHost = document.getElementById("SilverlightControl");
var theMedia = theHost.content.findName("Movie_wmv");
theMedia.Stop();
}

在本例中,将 Silverlight 控件称为 SilverlightControl,将引用该控件的 JavaScript 变量称为 theHost。稍后查找媒体元素(在本例中称为 Movie_wmv)时,将用到上述名称。在项目中添加电影时,为您创建了此媒体元素,该元素的名称是根据电影名称命名的。因此,如果电影的名称是 Movie.wmv,则此媒体元素就称为 Movie_wmv。如果使用其他电影,则控件也会相应地采用其他名称。

该媒体元素有 Play 和 Stop 两个方法,分别用于启动或停止媒体播放。

由于存在对该媒体元素的引用,因而可以调用上述方法,电影将随之停止或启动,如图 4 中所示。

.

图 4. 运行应用程序

posted @ 2007-08-29 16:54 ricki 阅读(684) | 评论 (2)编辑 收藏

参考微软<Creating 3D Content with WPF>文档翻译。
源文件下载 http://www.wangpangzi.net/uploads/200703/3dlab.zip
本文的目的是在Blend环境中研究Windows Presentation Foundation(WPF)的3D特性,首先我们导入一个已经建立好的3D模型到程序中,使用动画让其旋转。然后,我们会研究如何动态的使用代码生成模型。最后我们会把2D的用户界面映射到3D模型上,用户并可以与其交互。
注意,源文件中的源代码是为每个阶段而设计的,因此你可以从中间开始学习或者做阶段备份之用。每个练习也包含了一份完整的完成后源代码,你可以直接通过它们查看最终结果。

练习一 使用静态3D模型(共4个任务)
在本练习中,你将会导入一个已经建立好的3D模型,并使用Viewport3D对象把它显示出来,然后使用动画让他旋转起来。最后,用户可以使用鼠标旋转这个模型。

任务1 导入3D模型。
虽然我们可以使用XAML直接建立3D模型了,但对于稍微复杂的模型来说,我们最好使用专业工具建立模型,再导出成XAML格式供我们使用。在本练习中,我们将会使用一个用这种方式建立的3D模型,即一个XAML文件。并将其导入Blend中。
1.打开Microsoft Expression Blend.
2.运行File > New Project…建立新程序。
3.在弹出的New Project 窗口中选择Standard Application,在Name中输入Show3DModel, 选择你的保存文件夹,点OK建立新程序。
4.在Source\Exercise1子文件中,你会看到一个叫做Model.xaml的文件,它包含了你将要使用的3D模型。用记事本打开这个文件,你会看到很多代码,这些代码靠手工输入无疑是困难并且枯燥的。而生成这个模型文件的工具就大大简化了工作,并且自动的将代码封装在Viewport3D里并放入Viewbox中。你可以将整个文件放入XamlPad中来预览模型。
5.将Model.xaml中的所有内容贴到应用程序中window.xaml文件里的Grid标签中。
6.按F5编译程序,运行结果如下:
uploads/200703/31_011550_1.jpg


任务2 改变摄像机的位置。
  在本任务中,我们将了解如何改变摄像机的位置。
1.  打开Window1.xaml文件,找到Viewport3D中的Viewport3D.Camera 标签,它包括了一个PerspectiveCamera,即透视摄像机。它的UpDirection 目前是0,1,0,把它改为0.2,1,0,然后按F5运行程序,看看效果的变化。
2.  改变摄像机的Position为0.25,0,2.2339, 然后运行程序,观察摄像机位置发生的变化。
3.  改变Position为3,0,2.2339,同时也改变LookDirection为-3,0,-2.2,然后再运行程序观察变化。
4.  好,现在请随便尝试几个数据组合,请注意如果尝试过大的数据,很容易使摄像机跑到一个较远的地方,因此会什么都看不到。
5.  当你完成实验后,用一下代码使其回到初始的默认位置,以进行后面的任务。
<PerspectiveCamera x:Name="FrontOR9" FarPlaneDistance="10" LookDirection="0,0,-1"
   UpDirection="0,1,0" NearPlaneDistance="1" Position="0,0,2.29339"
   FieldOfView="39.5978" />

任务3 给模型添加动画。
1.打开Window1.xaml文件,找到Viewport3D中的Viewport3D.Camera 标签,在此标签后,添加下面的代码:
<Viewport3D.Triggers>
 <EventTrigger RoutedEvent="Viewport3D.Loaded">
 <EventTrigger.Actions>
 <BeginStoryboard>
 <Storyboard>
 <Rotation3DAnimation Storyboard.TargetName="WpfLogoOR12"
 Storyboard.TargetProperty="(Model3DGroup.Transform).(Transform3DGroup.Children)[2].(RotateTransform3D.Rotation)"
 Duration="0:0:5" AutoReverse="True"
 RepeatBehavior="Forever" AccelerationRatio="0.4" DecelerationRatio="0.4">
 <Rotation3DAnimation.From>
 <AxisAngleRotation3D Axis="2,10,3" Angle="-45" />
 </Rotation3DAnimation.From>
 <Rotation3DAnimation.To>
 <AxisAngleRotation3D Axis="2,10,3" Angle="45" />
 </Rotation3DAnimation.To>
 </Rotation3DAnimation>

 </Storyboard>
 </BeginStoryboard>
 </EventTrigger.Actions>
 </EventTrigger>
</Viewport3D.Triggers>
这段代码使用了Rotation3DAnimation标签给模型添加动画,Storyboard.TargetName和Storyboard.TargetProperty属性指示了模型发生动画的具体部分。(WpfLogoOR12是模型中的一个标签,代表logo模型整体)
2.运行程序,logo模型会自动的发生反复旋转。

任务4 可交互的旋转模型。
在本练习的最后一个任务中,我们将允许使用鼠标旋转模型。你会用到 3D Tools for the Windows Presentation Foundation, 这是一套可以辅助我们在WPF中使用XAML制作3D应用的工具,可以从http://www.codeplex.com/3DTools上下载。当然,我们现在已经不必去下载了,我们要用到的3DTools.dll 库文件在实例的Source\Exercise1文件夹下。
1.给项目中添加3DTools.dll库文件。(在Project面板中,右击References, 选Add Reference…, 然后找到3DTools.dll文件)
2.打开Window1.xaml文件,添加一个XML 命名空间声明,以在这个XAML文件中使用3D tools:
<Window x:Class="Show3DModel.Window1"
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:tools="clr-namespace:_3DTools;assembly=3DTools"
 Title="Show3DModel" Height="300" Width="300"
 >

3.添加<tools:TrackballDecorator>标签,使<Viewport3D></Viewport3D>标签整体包含在添入的标签<tools:TrackballDecorator>... </tools:TrackballDecorator>中。
TrackballDecorator允许使用鼠标左键拖动旋转包含的模型,使用鼠标右键缩小放大。
4.编译运行程序,现在就实现与模型的旋转、缩小放大交互了。

posted @ 2007-08-29 15:36 ricki 阅读(786) | 评论 (0)编辑 收藏

Visual Studio 2008 基于 Microsoft 的智能客户端应用程序设想而提供,它允许开发人员快速创建可提供最高质量和丰富用户体验的已连接应用程序.利用这一新版本,任何规模的组织都能创建更安全、更易于管理并且更可靠的应用程序,这些应用程序将可利用 Windows Vista、2007 Office System 和 Web 的强大功能.通过构建这些新类型的应用程序,组织将会发现捕获和分析信息从未如此简单,从而能够做出有效的业务决策.

CHS
TFS: http://www.microsoft.com/downloads/details.aspx?FamilyId=053E83D0-DEB4-4EBB-B4C8-CBFFE928B4AA&displaylang=zh-cn
VSTS: http://www.microsoft.com/downloads/details.aspx?FamilyId=428C076F-E3EF-4290-9FF4-F6FD8F180B7D&displaylang=zh-cn

CHT
TFS:  http://www.microsoft.com/downloads/details.aspx?FamilyId=053E83D0-DEB4-4EBB-B4C8-CBFFE928B4AA&displaylang=zh-tw
VSTS: http://www.microsoft.com/downloads/details.aspx?FamilyId=428C076F-E3EF-4290-9FF4-F6FD8F180B7D&displaylang=zh-tw
 
KOR
TFS: http://www.microsoft.com/downloads/details.aspx?FamilyId=053E83D0-DEB4-4EBB-B4C8-CBFFE928B4AA&displaylang=ko
VSTS: http://www.microsoft.com/downloads/details.aspx?FamilyId=428C076F-E3EF-4290-9FF4-F6FD8F180B7D&displaylang=ko

posted @ 2007-08-29 14:18 ricki 阅读(254) | 评论 (0)编辑 收藏

http://roxik.com/index.html 用鼠标拖动人物的脸,会有不一样的表情。

http://roxik.com/toy1.html  狂风吹,看你是要救人还是害人了。

http://roxik.com/pictaps/  先画一个你喜欢的人,他就可以开始跳舞了,要是画的不是人,禽兽也可以跳舞~~

很值得借鉴的几个禽兽级别的作品!

PS:对于这样的作品,我们拿禽兽形容是最好不过了!

posted @ 2007-08-28 16:16 ricki 阅读(430) | 评论 (0)编辑 收藏

papervision3d

先看看这个几个网址的东西:

http://www.papervision3d.org/

>http://www.noventaynueve.com/2007/

>http://www.rhythmoflines.co.uk/

>http://carlosulloa.com/

papervision3d
papervision3d

Papervision3D Component v1.5 下载地址:>http://code.google.com/p/papervision3d/downloads/detail?name=PV3DComponents_v1.5.1.mxp&can=2&q=

以前还研究全景视图呢,现在看来,直接用这个就可以解决了,而且速度肯定更快!

官方博客:>http://blog.papervision3d.org/

posted @ 2007-08-28 15:51 ricki 阅读(1317) | 评论 (1)编辑 收藏

今天无意中在群里面看到了微软关于Silverlight的站点:http://silverlight.net/,后来跟着链接找了半天又找到了它的Microsoft站点:http://www.microsoft.com/silverlight/default01.aspx,上面的视频相当不错,应该是Expression的作品,不过在看之前还是要安装Silverlight插件。

作为Flash的竞争者,现在才出现的确有点晚,不过要是以Flex的竞争者,由于Ajax和.net程序员的数量远远超出Flex程序员,这个倒是有点看头。

这个是一个演示网站:http://silverlight.net/fox/

软件需求:Microsoft Silverlight 1.0 Beta - for Mac or for Windows(播放插件),Microsoft Silverlight 1.1 Alpha - for Mac or for Windows(程序开发预览),Microsoft Visual Studio codename “Orcas” Beta 1(微软下一代Visual Studio产品),Microsoft Silverlight Tools Alpha for Visual Studio codename “Orcas” Beta 1(Visual Studio的Silverlight开发包),Expression Blend 2 May Preview (给Silverlight开发用户界面和设计),Expression Media Encoder May Preview (视频开发),Expression Design (设计矢量图形)。

关于后面的图形界面开发的软件,可以看看Expression系列介绍视频,这个是Expression的主站http://www.microsoft.com/expression/

看了一下他制作的过程的视频,感觉有点像是Flash IDE+Flex开发,但是协作的确是相当强悍:Expression Blend可以对图形进行补间动画,而到了Visual Studio可以进行程序代码对图形进行运算操作。

感觉上他在图形图像上的确比Flex有优势,但是和成熟的Flash相比它现在还是Alpha、Beta。看到这里我不得不想到,Flex和Flash在下一个版本的Flash IDE中,肯定是要融合在一起了,就算是不在一起也是要能够很好的相互协作,虽然现在CS3出来了,但是还是没有很好的看到他们的协作,Bridge也只能算一个浏览器。协作方面微软已经抢在前面了,Adobe要加把劲了。

真希望下一次看到Adobe的软件工作方式是:Flash中编辑的矢量图形可以在Illustrator中编辑完成后又放回Flash,PSD图片在Flash中可以直接发送给Photoshop编辑,编辑后可以直接更新Flash中的PSD;AS直接就由Flex(或是Flash)来搞定,AE也一样在一起随意工作,我们只需要轻轻点按钮就可以在不同的软件中做他擅长的事情,最后在Flash(Flex)中输出swf。

posted @ 2007-08-28 15:37 ricki 阅读(280) | 评论 (0)编辑 收藏


http://community.studyez.com/fil ... lop/entry52462.aspx

需要申请一个账号,比较简单。序列号在下面


Expression Studio简体中文正式版,2007/7/2发布,包括Microsoft Expression系列所有产品:
Microsoft Expression Web 网页设计工具
Microsoft Expression Blend 交互设计工具
Microsoft Expression Design 平面图形设计工具
Microsoft Expression Media 多媒体编辑工具

微软Microsoft Expression Studio 官方简体中文正式版!注册码。

Product Key:
Expression Blend:  42XVR-43TCK-QFXGX-TG3P6-HVPYB
Expression Design: B7QRP-P7W7G-QY689-R7DCB-4BGH4
Expression Web:    DDWJC-VFGHJ-7GFK6-9QK3D-PFTHW
Expression Studio: B7QRP-P7W7G-QY689-R7DCB-4BGH4



  网页设计工具-Expression Web

  微软发布了最新开发的网页设计工具Expression Web,它是微软Expression设计套装的一部分。作为网页编辑工具 FrontPage的替代产品,Expression Web在功能以及可扩展性方面都有很大提升,而Frontpage将于今年正式结束它的使命。

  图形设计工具-Expression Design

  微软是这样描述Expression Design的:“它是一款专业图形设计工具,提供丰富的像素描绘功能以及顺畅灵活的矢量图编辑功能,能够快速创建设计工作流程。 借助Expression Design,你可以为屏幕,网页或打印产品创建复杂的设计和图形元素。”   Expression Design的功能类似于大家早已熟悉的Adobe Photoshop,提供许多Windows自带画图工具没有的高级图形编辑功能(如层等)。

  物件管理工具-Expression Media

  新加入到Expression Studio家族的新成员就是Expression Media,它是改变了商标的iView MediaPro,它是一个物件管理工具,包括了一个用于跟踪如图片,字体,音频与视频等数字媒体的可视化目录。

  可视化交互工具-Expression Blend

  Expression Blend 全方位的3D、动画、硬件加速显示引擎 能够将矢量图形、位图、3D内容、视频、音频和富文本合成到一起,三维视图能够自由地混合在其它2D和媒体元素之间,允许在一个设计作品的不同元素之间进行功能强大的可视化交互。 Expression Blend 可以 导入与合并矢量图和位图元素 ,或者绘制与编辑矢量图元素并应用高级渐变、Alpha透明度和笔触设置。

posted @ 2007-08-28 15:34 ricki 阅读(378) | 评论 (0)编辑 收藏

     摘要: 以下写作经典200句背诵完会使你的写作水平突飞猛进,记住一定要烂熟于心,可以使用超循环背诵大表进行背诵,使背诵变得轻松有计划,更重要的是减少遗忘。200句并不多,永远是熟能生巧,你一辈子用的句子无非就是几十句,这200句是精华中的精华,不仅运用于写作,这些精彩的句式可以运用于口语中,使你的表达非凡!希望大家在英文考级中能用得到! 背诵方法:(原则:短时间搞定) 1、分单元背,把200个句子根据你自...  阅读全文

posted @ 2007-08-15 10:44 ricki 阅读(1246) | 评论 (0)编辑 收藏

现在中国所有招聘网站都是以人事经理为中心,因为他们是给钱的一方,较少从求职者角度考虑,如果我们从求职者立场或者中立立场来看中国招聘网站的生意模式及运作流程,将这个求职者并不知晓的事情公布出来,你就会更好清醒认识招聘网站,也更好的实际的利用人才网站求职:  
    
  1、   人才网站与企业人事经理的生意模式对求职者影响:  

  人才网站的行规是企业人事经理支付600元,可以在一个月内发布一定的职位让求职者投递简历,可以搜索查看人才网站简历库的简历,还可以下载一定数量的简历主动与求职者联系。而大企业及知名公司一般都是购买1年的招聘服务。问题就出来了:如果这个职位1到2周企业招到人了,但他购买的是1个月的服务,所以企业的职位还是挂在网上,而且人才网站竞争激烈,一般都会赠送1个月服务。所以一般职位至少1个月挂在人才网站是无效的,是浪费求职者查看与投递简历时间的。  
    
  大公司最不可靠,他们用网络、报纸、现场,1年的大大banner永远挂在人才网站上,他们并不需要人,只是为了广告宣传。  
  所以人才网站50%以上的职位都是过期的、无效的、不招人或招满人的,所有求职者抱怨我投了那么多简历为什么反馈率那么低,反馈率低是非常正常的。  
    
  另外51job网站的反馈率是最低的,这也是行业秘密:因为51Job的资源80%是以报纸招聘为主,报纸招聘效率高,但网站上的职位都是在报纸上刊登过后作为免费与补充服务,所以很多HR只会看报纸上来的简历,网站来的简历基本不看,在加上51job简历投递量实在太大,那些懒惰的HR才懒得一封一封的看,只会用搜索关键字来看,如本科+3年工作经验+主管等,其他不符合条件的看都不看一眼。所以你知道为什么一直没有公司找你面试,不是你不行,而是HR都不看你发的简历。下面第二部分告诉你如何被他们搜索到。  
    
  现在你知道网络招聘的反馈率为什么那么低了吧。不信你用自动回复邮件形式发送中国3大招聘网站职位HR的邮箱,看看有多少HR看了你的简历,一个工作论坛的网友说,他试着发了100个HR邮箱简历,可以通过自动回复的反馈率统计,可以看到50%HR不看简历就直接删除,30%根本就不打开邮件,只有20%打开邮箱,还有10%可能已经找到人的。他的分析说即使是中国前3名招聘网站以严格标准来看也只有10%职位是真正要急迫招人的。  
    
  2、既然知道一些潜   规则,那我们也迎合一些这些规则,告诉你一些网络求职的小秘密  

  (1)采用行业招聘网站求职。因为行业招聘网站是按行业发布职位信息的,所以专业和工作经历比较对口。比如你要找物业管理类的工作,你到xx工作网的物业管理招聘频道上去注册简历就比较好,因为那里全部都是物业管理类的企业在招聘;如果你要找外贸的工作,你就可以xx工作网的外贸招聘频道去找,肯定有大量的外贸工作机会。其它的就不在列举。在目前的情况下,几乎每个行业的人才在万行工作网上都能找到自己的频道。  
    
  (2)简历要与大公司沾边  
  当人事经理搜索招聘网站简历库简历时,一般会以关键字“知名企业名称+职位名称”,比如消费品行业可能喜欢可口可乐及宝洁的人,人事经理会这样搜索,例如:“可口可乐+销售经理”,系统会搜索到简历中出现以上关键字的求职者,如果你的简历里出现知名企业名称的字样,就可以被搜索到,例如:“我在xx矿泉水公司工作,成功地令竞争对手——可口可乐旗下的天与地矿泉水在当地的市场份额减少……”:“我在可口可乐的广州白云区经销商工作”等。又提高了人事经理浏览简历的机会!  
    
  (3)   经常刷新简历  
  当人事经理搜索简历库的简历时,符合条件的简历是按刷新的时间顺序排列,而一般只会看前面一两页。很多求职者其实并不知道刷新简历可以获得更多求职机会。因此每次登陆,最好都刷新简历,刷新以后,就能排在前面,更容易被人事经理找到!  
    
  (4)   不要只应聘最近三天的职位  
  一般求职者认为刚刚发布的最新的招聘信息肯定是成功率最大的,其实不然。因为很多企业人事经理没有及时的登陆刷新刊登的职位,所以求职者在搜索职位时刚刷新的职位会排在前面,这些职位应聘的人多,竞争大,相反,一些职位已经是半个月甚至两个月的,应聘的人少,成功率反而高。  
    
  (5)   让你的邮件永远在最前面  
  你要知道每天人事经理看求职者邮箱,他们其实是很懒的,100多页简历邮件他们最多只看前5页!你现在应该知道为什么你的求职简历永远没有回应!  
  所以发邮件到企业指定的邮箱时,怎样才能让你的邮件永远排在最前面,让人事经理每次打开邮箱都首先看到你的邮件?只要在发邮件前,把电脑系统的日期改为一个将来的日期,如2008年,因为大多邮箱都是默认把邮件按日期排序,所以你的邮件起码要到2008年以后才会被排在后面!   (如果你求职成功,要向我请客耶!)  
    
  (6)   新颖的邮件标题  
  人事经理每天收到大量的求职电子邮件,求职者一般会按企业要求把邮件题目写成:应聘xx职位,怎样才能吸引人事经理的眼球,让他先打开自己的邮件?可以在邮件题目上做文章。一天人事经理收到几百封邮件,只有标题新颖的才有机会被打开。  
  例子:我的一个女性朋友发了100多封邮件求职都没有任何反应,因为应聘做文员的太多了,而我这个朋友做过空姐,我将她的邮件标题改为“空姐来广州找工作”,引起绝大部分男人事经理想入非非,结果三天之内有30多个男人事经理通知面试,3个月找不到工作的她而变成3天找到上十份工作。你现在知道邮件标题的重要性了吧。  
    
  (7)   简历最好放靓照  
  对于人事经理来说,每天需要浏览大量简历,如果同等的条件,一般会先通知有照片的求职者来面试,因为通过照片,人事经理对应聘者又多了几分了解。如果是美女,被通知的可能性就更大。我作为人事经理,曾经招聘一个人事主管,收到300多封简历,我找出前30份有相片的前5份,通知了最漂亮相片的2个女孩,就定下了其中的一个。对于一般职位如文职人员之类,中国人的传统还是以貌取人,你即使不漂亮,也照一个艺术照,就增多了面试机会(与其等死,还不如放手一搏),毕竟很现实的是,简历的目的就是有面试的机会,其他就要靠实力与运气了。  
    
  (8)求职信“骂”对方公司往往会带来意想不到的效果  
  一般人认为在求职信中称赞对方公司会引起好感,其实不然。如果先指出这家公司的缺点,往往会引起关注,语不惊人死不休呢,我作为人事经理,我只会对指出我们缺点的求职者有好感,对恭维我们公司的求职者一般会放在一边。即使你不知道对方公司缺点,你随便写一些永远不会错的:“我认为贵司创新不够,市场表现过于常规化;我以消费者心态观察贵司,发现贵司客户服务还有许多待改进的地方;我发现贵司品牌形象还有可能做的更好……”如闻其详,可面谈。可勾引相关公司面试。只要有面试机会,其他再说。(简历有机会面试目的是一切,手段是无所谓的)。  
    
  (9)自己要学会让简历与职位匹配  
  2个观念都是有效的:一是不要太在乎对方职位要求的描述,很多职位描述只是写写,连经理都不知道要招什么样的人,如果你看到对方职位要求本科,你是专科就不敢投递简历,那就失去机会了。如果你看到对方要求有5年经验,你只有3年经验,你也不敢投,那完全没有必要。因为人事经理们对职位的描述只是例行公事随便谢谢而已,你千万不要当真!  
    
  另外一个匹配观念就是他的职位如何描述,你就改变你的简历换一个说法匹配,如他说要求领导能力强,你的简历也说具有领导才能,他要沟通能力一流,你的简历也说我最擅长沟通。你的简历表面匹配度最高,也可以多增加机会。你可将简历改成为他职位描述完全量身定做的简历。  
    
  其实求职者有更多的面试机会,不但可以增加成功求职机会,还可以增加自己的信心,工资越叫越高还可以积累面试经验。很多优秀的求职者网上发了很多简历没有回应,以为自己不行没有竞争力,只好自动降价,实为可惜!   特别是中国最大的招聘网站51job的简历投递反馈率是同行业最低的,因为它主要资源80%投入报纸,报纸招聘完甚至录取完毕后将职位入库,只是将职位作为一个摆设放到网站。  
    
  要知道现在网络求职的成功率一般2个月是发1000份简历,有8份面试,2份成功,一个是你不想去的,可能一个是你相对满意的。所以网络求职的朋友千万不要对自己失去信心。  

posted @ 2007-08-15 10:41 ricki 阅读(313) | 评论 (0)编辑 收藏

    下文是比尔·盖茨今年6月7日在哈佛大学毕业典礼上的演讲的翻译。他在其中谈到了很多事情,包括他的学生时代、他的退学经历、以及他眼中人生最有意义的事情。我觉得内容非常好,完全改变了我对比尔·盖茨的看法,所以花了两个晚上翻译出来,希望让更多的人看到。

    尊敬的Bok校长,Rudenstine前校长,即将上任的Faust校长,哈佛集团的各位成员,监管理事会的各位理事,各位老师,各位家长,各位同学:
有一句话我等了三十年,现在终于可以说了:“老爸,我总是跟你说,我会回来拿到我的学位的!”
        我要感谢哈佛大学在这个时候给我这个荣誉。明年,我就要换工作了(注:指从微软公司退休)……我终于可以在简历上写我有一个本科学位,这真是不错啊。
       我为今天在座的各位同学感到高兴,你们拿到学位可比我简单多了。哈佛的校报称我是“哈佛大学历史上最成功的辍学生”。我想这大概使我有资格代表我这一类学生发言……在所有的失败者里,我做得最好。
        但是,我还要提醒大家,我使得Steve Ballmer(注:微软总经理)也从哈佛商学院退学了。因此,我是个有着恶劣影响力的人。这就是为什么我被邀请来在你们的毕业典礼上演讲。如果我在你们入学欢迎仪式上演讲,那么能够坚持到今天在这里毕业的人也许会少得多吧。
       对我来说,哈佛的求学经历是一段非凡的经历。校园生活很有趣,我常去旁听我没选修的课。哈佛的课外生活也很棒,我在Radcliffe过着逍遥自在 的日子。每天我的寝室里总有很多人一直待到半夜,讨论着各种事情。因为每个人都知道我从不考虑第二天早起。这使得我变成了校园里那些不安分学生的头头,我 们互相粘在一起,做出一种拒绝所有正常学生的姿态。
       Radcliffe是个过日子的好地方。那里的女生比男生多,而且大多数男生都是理工科的。这种状况为我创造了最好的机会,如果你们明白我的意思。可惜的是,我正是在这里学到了人生中悲伤的一课:机会大,并不等于你就会成功。
       我在哈佛最难忘的回忆之一,发生在1975年1月。那时,我从宿舍楼里给位于Albuquerque的一家公司打了一个电话,那家公司已经在着手制造世界上第一台个人电脑。我提出想向他们出售软件。
      我很担心,他们会发觉我是一个住在宿舍的学生,从而挂断电话。但是他们却说:“我们还没准备好,一个月后你再来找我们吧。”这是个好消息,因为那时 软件还根本没有写出来呢。就是从那个时候起,我日以继夜地在这个小小的课外项目上工作,这导致了我学生生活的结束,以及通往微软公司的不平凡的旅程的开 始。
      不管怎样,我对哈佛的回忆主要都与充沛的精力和智力活动有关。哈佛的生活令人愉快,也令人感到有压力,有时甚至会感到泄气,但永远充满了挑战性。生 活在哈佛是一种吸引人的特殊待遇……虽然我离开得比较早,但是我在这里的经历、在这里结识的朋友、在这里发展起来的一些想法,永远地改变了我。
      但是,如果现在严肃地回忆起来,我确实有一个真正的遗憾。
      我离开哈佛的时候,根本没有意识到这个世界是多么的不平等。人类在健康、财富和机遇上的不平等大得可怕,它们使得无数的人们被迫生活在绝望之中。
      我在哈佛学到了很多经济学和政治学的新思想。我也了解了很多科学上的新进展。
      但是,人类最大的进步并不来自于这些发现,而是来自于那些有助于减少人类不平等的发现。不管通过何种手段——民主制度、健全的公共教育体系、高质量的医疗保健、还是广泛的经济机会——减少不平等始终是人类最大的成就。
      我离开校园的时候,根本不知道在这个国家里,有几百万的年轻人无法获得接受教育的机会。我也不知道,发展中国家里有无数的人们生活在无法形容的贫穷和疾病之中。我花了几十年才明白了这些事情。
     在座的各位同学,你们是在与我不同的时代来到哈佛的。你们比以前的学生,更多地了解世界是怎样的不平等。在你们的哈佛求学过程中,我希望你们已经思考过一个问题,那就是在这个新技术加速发展的时代,我们怎样最终应对这种不平等,以及我们怎样来解决这个问题。
      为了讨论的方便,请想象一下,假如你每个星期可以捐献一些时间、每个月可以捐献一些钱——你希望这些时间和金钱,可以用到对拯救生命和改善人类生活有最大作用的地方。你会选择什么地方?
      对Melinda(注:盖茨的妻子)和我来说,这也是我们面临的问题:我们如何能将我们拥有的资源发挥出最大的作用。
      在讨论过程中,Melinda和我读到了一篇文章,里面说在那些贫穷的国家,每年有数百万的儿童死于那些在美国早已不成问题的疾病。麻疹、疟疾、肺 炎、乙型肝炎、黄热病、还有一种以前我从未听说过的轮状病毒,这些疾病每年导致50万儿童死亡,但是在美国一例死亡病例也没有。
      我们被震惊了。我们想,如果几百万儿童正在死亡线上挣扎,而且他们是可以被挽救的,那么世界理应将用药物拯救他们作为头等大事。但是事实并非如此。那些价格还不到一美元的救命的药剂,并没有送到他们的手中。
      如果你相信每个生命都是平等的,那么当你发现某些生命被挽救了,而另一些生命被放弃了,你会感到无法接受。我们对自己说:“事情不可能如此。如果这是真的,那么它理应是我们努力的头等大事。”
      所以,我们用任何人都会想到的方式开始工作。我们问:“这个世界怎么可以眼睁睁看着这些孩子死去?”
      答案很简单,也很令人难堪。在市场经济中,拯救儿童是一项没有利润的工作,政府也不会提供补助。这些儿童之所以会死亡,是因为他们的父母在经济上没有实力,在政治上没有能力发出声音。
       But you and I have both.
       但是,你们和我在经济上有实力,在政治上能够发出声音。
      我们可以让市场更好地为穷人服务,如果我们能够设计出一种更有创新性的资本主义制度——如果我们可以改变市场,让更多的人可以获得利润,或者至少可 以维持生活——那么,这就可以帮到那些正在极端不平等的状况中受苦的人们。我们还可以向全世界的政府施压,要求他们将纳税人的钱,花到更符合纳税人价值观 的地方。
       如果我们能够找到这样一种方法,既可以帮到穷人,又可以为商人带来利润,为政治家带来选票,那么我们就找到了一种减少世界性不平等的可持续的发展道路。这个任务是无限的。它不可能被完全完成,但是任何自觉地解决这个问题的尝试,都将会改变这个世界。
 在这个问题上,我是乐观的。但是,我也遇到过那些感到绝望的怀疑主义者。他们说:“不平等从人类诞生的第一天就存在,到人类灭亡的最后一天也将存在。——因为人类对这个问题根本不在乎。”我完全不能同意这种观点。
      我相信,问题不是我们不在乎,而是我们不知道怎么做。
      此刻在这个院子里的所有人,生命中总有这样或那样的时刻,目睹人类的悲剧,感到万分伤心。但是我们什么也没做,并非我们无动于衷,而是因为我们不知道做什么和怎么做。如果我们知道如何做是有效的,那么我们就会采取行动。
      改变世界的阻碍,并非人类的冷漠,而是世界实在太复杂。
      为了将关心转变为行动,我们需要找到问题,发现解决办法的方法,评估后果。但是世界的复杂性使得所有这些步骤都难于做到。
      即使有了互联网和24小时直播的新闻台,让人们真正发现问题所在,仍然十分困难。当一架飞机坠毁了,官员们会立刻召开新闻发布会,他们承诺进行调查、找到原因、防止将来再次发生类似事故。
      但是如果那些官员敢说真话,他们就会说:“在今天这一天,全世界所有可以避免的死亡之中,只有0.5%的死者来自于这次空难。我们决心尽一切努力,调查这个0.5%的死亡原因。”
       显然,更重要的问题不是这次空难,而是其他几百万可以预防的死亡事件。
       我们并没有很多机会了解那些死亡事件。媒体总是报告新闻,几百万人将要死去并非新闻。如果没有人报道,那么这些事件就很容易被忽视。另一方面,即使 我们确实目睹了事件本身或者看到了相关报道,我们也很难持续关注这些事件。看着他人受苦是令人痛苦的,何况问题又如此复杂,我们根本不知道如何去帮助他 人。所以我们会将脸转过去。就算我们真正发现了问题所在,也不过是迈出了第一步,接着还有第二步:那就是从复杂的事件中找到解决办法。
        如果我们要让关心落到实处,我们就必须找到解决办法。如果我们有一个清晰的和可靠的答案,那么当任何组织和个人发出疑问“如何我能提供帮助”的时 候,我们就能采取行动。我们就能够保证不浪费一丁点全世界人类对他人的关心。但是,世界的复杂性使得很难找到对全世界每一个有爱心的人都有效的行动方法, 因此人类对他人的关心往往很难产生实际效果。
        从这个复杂的世界中找到解决办法,可以分为四个步骤:确定目标,找到最高效的方法,发现适用于这个方法的新技术,同时最聪明地利用现有的技术,不管它是复杂的药物,还是最简单的蚊帐。
       艾滋病就是一个例子。总的目标,毫无疑问是消灭这种疾病。最高效的方法是预防。最理想的技术是发明一种疫苗,只要注射一次,就可以终生免疫。所以, 政府、制药公司、基金会应该资助疫苗研究。但是,这样研究工作很可能十年之内都无法完成。因此,与此同时,我们必须使用现有的技术,目前最有效的预防方法 就是设法让人们避免那些危险的行为。
      要实现这个新的目标,又可以采用新的四步循环。这是一种模式。关键的东西是永远不要停止思考和行动。我们千万不能再犯上个世纪在疟疾和肺结核上犯过的错误,那时我们因为它们太复杂,而放弃了采取行动。
      在发现问题和找到解决方法之后,就是最后一步——评估工作结果,将你的成功经验或者失败经验传播出去,这样其他人就可以从你的努力中有所收获。
      当然,你必须有一些统计数字。你必须让他人知道,你的项目为几百万儿童新接种了疫苗。你也必须让他人知道,儿童死亡人数下降了多少。这些都是很关键的,不仅有利于改善项目效果,也有利于从商界和政府得到更多的帮助。
      但是,这些还不够,如果你想激励其他人参加你的项目,你就必须拿出更多的统计数字;你必须展示你的项目的人性因素,这样其他人就会感到拯救一个生命,对那些处在困境中的家庭到底意味着什么。
      几年前,我去瑞士达沃斯旁听一个全球健康问题论坛,会议的内容有关于如何拯救几百万条生命。天哪,是几百万!想一想吧,拯救一个人的生命已经让人何等激动,现在你要把这种激动再乘上几百万倍……但是,不幸的是,这是我参加过的最最乏味的论坛,乏味到我无法强迫自己听下去。
      那次经历之所以让我难忘,是因为之前我们刚刚发布了一个软件的第13个版本,我们让观众激动得跳了起来,喊出了声。我喜欢人们因为软件而感到激动,那么我们为什么不能够让人们因为能够拯救生命而感到更加激动呢?除非你能够让人们看到或者感受到行动的影响力,否则你无法让人们激动。如何做到这一点,并不是一件简单的事。
     同前面一样,在这个问题上,我依然是乐观的。不错,人类的不平等有史以来一直存在,但是那些能够化繁为简的新工具,却是最近才出现的。这些新工具可以帮助我们,将人类的同情心发挥最大的作用,这就是为什么将来同过去是不一样的。这个时代无时无刻不在涌现出新的革新——生物技术,计算机,互联网——它们给了我们一个从未有过的机会,去终结那些极端的贫穷和非恶性疾病的死亡。
      六十年前,乔治·马歇尔也是在这个地方的毕业典礼上,宣布了一个计划,帮助那些欧洲国家的战后建设。他说:“我认为,困难的一点是这个问题太复杂, 报纸和电台向公众源源不断地提供各种事实,使得大街上的普通人极端难于清晰地判断形势。事实上,经过层层传播,想要真正地把握形势,是根本不可能的。”马歇尔发表这个演讲之后的三十年,我那一届学生毕业,当然我不在其中。那时,新技术刚刚开始萌芽,它们将使得这个世界变得更小、更开放、更容易看到、距离更近。低成本的个人电脑的出现,使得一个强大的互联网有机会诞生,它为学习和交流提供了巨大的机会。
      网络的神奇之处,不仅仅是它缩短了物理距离,使得天涯若比邻。它还极大地增加了怀有共同想法的人们聚集在一起的机会,我们可以为了解决同一个问题,一起共同工作。这就大大加快了革新的进程,发展速度简直快得让人震惊。
       与此同时,世界上有条件上网的人,只是全部人口的六分之一。这意味着,还有许多具有创造性的人们,没有加入到我们的讨论中来。那些有着实际的操作经验和相关经历的聪明人,却没有技术来帮助他们,将他们的天赋或者想法与全世界分享。
  我们需要尽可能地让更多的人有机会使用新技术,因为这些新技术正在引发一场革命,人类将因此可以互相帮助。新技术正在创造一种可能,不仅是政府,还 包括大学、公司、小机构、甚至个人,能够发现问题所在、能够找到解决办法、能够评估他们努力的效果,去改变那些马歇尔六十年前就说到过的问题——饥饿、贫 穷和绝望。
       哈佛是一个大家庭。这个院子里在场的人们,是全世界最有智力的人类群体之一。我们可以做些什么?
       毫无疑问,哈佛的老师、校友、学生和资助者,已经用他们的能力改善了全世界各地人们的生活。但是,我们还能够再做什么呢?有没有可能,哈佛的人们可以将他们的智慧,用来帮助那些甚至从来没有听到过“哈佛”这个名字的人?
      请允许我向各位院长和教授,提出一个请求——你们是哈佛的智力领袖,当你们雇用新的老师、授予终身教职、评估课程、决定学位颁发标准的时候,请问你们自己如下的问题:
       我们最优秀的人才是否在致力于解决我们最大的问题?
       哈佛是否鼓励她的老师去研究解决世界上最严重的不平等?哈佛的学生是否从全球那些极端的贫穷中学到了什么……世界性的饥荒……清洁的水资源的缺乏……无法上学的女童……死于非恶性疾病的儿童……哈佛的学生有没有从中学到东西?
       那些世界上过着最优越生活的人们,有没有从那些最困难的人们身上学到东西?
      这些问题并非语言上的修辞。你必须用自己的行动来回答它们。
      我的母亲在我被哈佛大学录取的那一天,曾经感到非常骄傲。她从没有停止督促我,去为他人做更多的事情。在我结婚的前几天,她主持了一个新娘进我家的 仪式。在这个仪式上,她高声朗读了一封关于婚姻的信,这是她写给Melinda的。那时,我的母亲已经因为癌症病入膏肓,但是她还是认为这是又一个传播她 的信念的机会。在那封信的结尾,她写道:“对于那些接受了许多帮助的人们,他们还在期待更多的帮助。”
      想一想吧,我们在这个院子里的这些人,被给予过什么——天赋、特权、机遇——那么可以这样说,全世界的人们几乎有无限的权力,期待我们做出贡献。
      同这个时代的期望一样,我也要向今天各位毕业的同学提出一个忠告:你们要选择一个问题,一个复杂的问题,一个有关于人类深刻的不平等的问题,然后你 们要变成这个问题的专家。如果你们能够使得这个问题成为你们职业的核心,那么你们就会非常杰出。但是,你们不必一定要去做那些大事。每个星期只用几个小 时,你就可以通过互联网得到信息,找到志同道合的朋友,发现困难所在,找到解决它们的途径。
      不要让这个世界的复杂性阻碍你前进。要成为一个行动主义者。将解决人类的不平等视为己任。它将成为你生命中最重要的经历之一。
      在座的各位毕业的同学,你们所处的时代是一个神奇的时代。当你们离开哈佛的时候,你们拥有的技术,是我们那一届学生所没有的。你们已经了解到了世界 上的不平等,我们那时还不知道这些。有了这样的了解之后,要是你再弃那些你可以帮助的人们于不顾,就将受到良心的谴责,只需一点小小的努力,你就可以改变 那些人们的生活。你们比我们拥有更大的能力;你们必须尽早开始,尽可能长时期坚持下去。
      知道了你们所知道的一切,你们怎么可能不采取行动呢?
     我希望,30年后你们还会再回到哈佛,想起你们用自己的天赋和能力所做出的一切。我希望,在那个时候,你们用来评价自己的标准,不仅仅是你们的专业 成就,而包括你们为改变这个世界深刻的不平等所做出的努力,以及你们如何善待那些远隔千山万水、与你们毫不涉及的人们,你们与他们唯一的共同点就是同为人 类。
     Good luck.最后,祝各位同学好运。(完)

盖茨:我又回来了 30年后终获哈佛学位(组图)

图:哈佛大学代理校长Derek Bok(最右边)介绍毕业典礼主讲人比尔·盖茨出场,一旁观看的则是NBA传奇人物Bill Russell。
Bok校长不忘开玩笑的说,“若你在哈佛能多读完两年才出去,那成就不就更惊人了?”盖茨当年读到大三就退学出去创业,成立了微软。

盖茨:早就说我会回来拿学位的
盖茨:我又回来了 30年后终获哈佛学位(组图)

图:盖茨上台后,也不忘幽默地回应校长的话:“这一刻我等了30年了,阿爸,我早就跟你说过,我一定会回来拿到学位的。”

不过场面话交代完毕,盖茨马上将话题转到对抗贫穷与爱滋,这是盖茨与妻子Melinda通过他们的基金会(Bill&Melinda Gates Foundation)所致力改善的目标之一。
盖茨向哈佛毕业生说,各位有责任改善世界不公平之处。“想想你们目前享受到的,大家就能明白世界对各位的期望是什么。”

盖茨鲍尔默曾经的同窗室友

盖茨:我又回来了 30年后终获哈佛学位(组图)

图:盖茨与微软首席执行官史蒂夫·鲍尔默(1977年哈佛毕业生)向主办单位致意。鲍尔默跟盖茨两人在哈佛一年级时曾经同寝室。

数字鸿沟并非OLPC能解决

盖茨:我又回来了 30年后终获哈佛学位(组图)

图:在会后记者会上,有记者询问盖茨对于Nicholas Negroponte发起“人人电脑”(One Laptop Per Child)计划的看法。盖茨回答说,这方面的工作都十分令人敬佩,但他的基金会希望以特定的方式来进行。

“若以优先性来说,世界上有许多地方发生许多不公的事情,计算机运算并非这些问题的主因之一。”盖茨表示。

盖茨全家福:老爸老妈和老婆

盖茨:我又回来了 30年后终获哈佛学位(组图)

图:比尔·盖茨、太太Melinda、父亲William Henry Gates Sr.,与后母Mimi Gardner Gates拍了一张大学毕业生的传统:全家福照片。

posted @ 2007-08-13 09:24 ricki 阅读(220) | 评论 (0)编辑 收藏

Apache和Tomcat同是Apache基金会下面的两个项目。一个是HTTP WEB服务器,另一个是servlet容器(servlet container),最新的5.5.X系列实现Servlet 2.4/JSP 2.0Spec。在我们生产的环境中,往往需要Apache做前端服务器,Tomcat做后端服务器。此时我们就需要一个连接器,这个连接器的作用就是把 所有Servlet/JSP的请求转给Tomcat来处理。在Apache2.2之前,一般有两个组件可选择。mod_jk和mod_jk2。后来 mod_jk2没更新了,转而更新mod_jk,所以现在一般都使用mod_jk做Apache和Tomcat的连接器。要指出的是mod_jk支持 Apache 1.x和2.X系列。
不过,自从Apache2.2出来后,你又多了种选择,那就是proxy-ajp.大家知道Apache里的proxy模块,可以实现双向代理功能,功能 非常强大。其实从连接器的实现原理上来说,用proxy模块来实现是非常自然的。proxy模块的功能无非就是把相关的请求发给特定的主机再返回结果。那 连接器的功能需求就是要把所有对Servlet/JSP的请求都转给后台的Tomcat。而且所FreeBSD邮件列表上说,使用proxy-ajp要比 mod_jk的效率要高。就我一个外行来看,至少使用Apache自带模块,要比另外编译的来得可靠。


apache2.2和tomcat5.5是一个不错的组合,可以作为开发环境或者是工作服务器。在配置前需要下载以下几个文件:
1.下载JDK
http://192.18.108.228/ECom/EComTicketServlet/BEGIN7CF7E6A4BCB54064E5D90FCCE00D7048/-2147483648/1579524843/1/732086/731822/1579524843/2ts+/westCoastFSEND/jdk-1.5.0_07-oth-JPR/jdk-1.5.0_07-oth-JPR:2/jdk-1_5_0_07-windows-i586-p.exe
2.下载apache2.2
http://mirror.vmmatrix.net/apache/httpd/binaries/win32/apache_2.2.2-win32-x86-no_ssl.msi
3.下载tomcat5.5.17
http://apache.justdn.org/tomcat/tomcat-5/v5.5.17/bin/apache-tomcat-5.5.17.exe


一、安装和配置JDK
下载下来后,直接执行jdk-1.5.0_07-oth-JPR:2/jdk-1_5_0_07-windows-i586-p.exe
实装时建议选择简单的路径,如E:\Web_Server\jdk1.5.0\
安装最后会要求安装jre,继续下一步就行,安装路径E:\Web_Server\jre1.5.0\。

装完后添加或编缉三个系统变量(已经有就编缉,没有就新建):
在PATH变量尾加在";E:\Web_Server\jdk1.5.0\bin\" (注意有个分号)
新建Web_Server_HOME变量,值为 "E:\Web_Server\jdk1.5.0\"
新建CLASSPATH变量,值为 "E:\Web_Server\jdk1.5.0\lib\tools.jar"

二、安装和测试apache
在安装前如已安装了IIS,请先停止IIS服务。因为IIS和apache都默认使用80端口,否则会冲突。
同样直接运行安装apache_2.2.2-win32-x86-no_ssl.msi,建议选择简单的路径,如E:\Web_Server\ apache2.2\。安装时会要求输入一些关于这台服务器的信息,如域名、管理员邮箱,这些信息将会加入到httpd.conf文件中。

安装完配置httpd.conf文件,在E:\Web_Server\apache2.2\conf\下
用文本编缉器打开httpd.conf,在DirectoryIndex index.html后添加index.jsp

测试,在IE中输入
http://localhost/,如果apache工作应该可以看到"It works!"这样的页面。

三、安装和测试tomcat
直接运行安装tomcat,安装路径为E:\Web_Server\tomcat5.5\
安装完,好像步骤一,添加一个系统变量TOMCAT_HOME,变量值为"E:\Web_Server\tomcat5.5\"
最后测试tomcat,因为tomcat默认使用了8080端口,所以在IE输入
http://localhost:8080,正常工作会看见一只小猫的页面。

四。整合apache和tomcat
网上很多是通过mod_jk来整合的,由于apache2.2本身已经支持tomcat了,所以这里用proxy来整合tomcat,先把apache和tomcat都停止了。然后打开httpd.conf文件,把
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
前面的#号去掉,在文件最后添加
ProxyPass /images/ !
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1:8009/
上面几名只是对apache进行简单的优化。

五、最后测试整合后的apache+tomcat
启动apache,再启动tomcat,准备以下代码的jsp文件,以便测试。
<%@ page contentType="text/html;charset=gb2312" %>
<HTML>
<HEAD>
<TITLE>JSP测试页面</TITLE>
</HEAD>
<BODY>
<%out.println("<h1>Hello World! </h1>");%>
</BODY>
</HTML>
保存为test.jsp
在E:\Web_Server\tomcat5.5\webapps\ROOT\下新建一个文件夹myjsp,并把test.jsp放在里面。
在IE中输入
http://localhost:8080/myjsp/test.jsp
再输入
http://localhost/myjsp/test.jsp
如果两次都显示Hello World!说明已经成功整合了。


============================
方法之二:
Windows环境下的tomcat + apache配置(绝对实践操作版)
关键词: tomcat apache

Apache的HTTPD是目前比较受欢迎的网站服务器软件,它不但功能强大,而且完全免费,并且支持市场上流行的各种操作系统(Windows, Linux,Mac os)。同时对于Java Servlet/JSP的支持,通常也会使用同样Apache出品的Tomcat。
Tomcat除了支持Java Servlet/JSP之外,也可以当做网站服务器使用,但是在对于静态的html文件、图片文件等的解析效率上不如Apache HTTPD的执行效率高。应用tomcat的服务器如果网站的访问量较大,系统资源占用会明显升高,近日笔者在项目执行过程中遇到这一问题,便也想到同时 应用tomcat+apache服务。Apache负责静态资源处理,tomcat负责jsp和java servlet等动态资源的处理。在网上看了不少介绍Apache和Tomcat集成的帖子。大多为互相转贴,有几个关键问题没有讲清楚,并且多数文章讲 解中所举的软件版本都已经比较老旧。因而笔者总结自己实际操作的经验,希望对大家有所帮助。

准备工作:
1、 apache 2.0.55
下载地址:
http://apache.justdn.org/httpd/binaries/win32/apache_2.0.55-win32-x86-no_ssl.msi
2、 Tomcat 5.5
下载地址:
http://tomcat.apache.org/download-55.cgi
3、 JRE1.5.0 update6
下载地址:
http://java.sun.com/j2se/1.5.0/download.jsp
你也可以选择安装JDK,JDK不仅包含了运行java应用程序的支持,同时也包含J2SE的开发包。但如果您只是应用的话,我建议您仅下载JRE即可,为什么?因为它小啊:)
4、JK-apache-2.0.55
下载地址:
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.15/mod_jk-apache-2.0.55.so
注意jk的版本一定要与你的apache版本相同。Jk下载可以直接到apache.org官网下载,有多种版本,适用于各种操作系统,地址如下:
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/
windows用户进入win32目录,不同的tomcat对应不同jk文件扩展名不同,有可能是*.dll,或者*.so,根据你的tomcat版本下载合适的jk版本。

安装,软件的安装顺序可以适当调整,但是jre(jdk)一定要在tomcat之前安装:
1、安装JRE(JDK)
此处选择默认安装即可,(旧版本的JDK安装完之后需要设置系统的环境变量,JRE和JDK1.5.0以后版本不设置也没关系。)安装完成之后你可以选择按照下面的示例设置你的系统环境变量:我的电脑->右键属性->常规->高级->环境变量
JAVA_HOME = d:\Java\jre1.5.0_06
CLASSPATH = .;d:\Java\jre1.5.0_06\lib\dt.jar;d:\Java\jre1.5.0_06\lib\tools.jar
PATH = d:\Java\jre1.5.0_06\bin
注意文件路径要改成你实际安装的路径。

2、Apache安装
此处注意,如果你本机已经装了iis并且占用80端口,务必先在服务中将iis停止或禁用。软件默认安装即可。安装过程中设置Network Domain和Server Name为localhost,设置你的email地址,下方会让你选择only for the current user或for all users。默认选择for all users。这样Apache就会占用80端口,并且做为一个系统服务开机自运行。
安装完成之后,你在浏览器中输入
http://localhost, 将会看到Apache的成功页面.Apache的主目录是d:\Apache\Apache2,此时Apache,已经运行,你可以在窗口的托盘看到他的 图标,双击图标,在弹开的窗口选择"Open Apache Monitor",点Stop,停止Apaceh服务,因为下面要安装Tomcat和JK.

3、Tomcat安装
选择安装目录为了d:\Tomcat,其余为默认安装.成功后在浏览器中输入
http://localhost:8080,出现Tomcat页面表示安装成功了。关于tomcat的设置已经有很多非常详细的文章,在此就不再详述了。

4、JK的安装
把mod_jk_2.0.55.so拷贝到d:\Apache\Apache2\modules\下.

以上安装全部完成后,打开cmd命令提示符,运行d:\Apache\Apache2\bin\Apache.exe -t 你将会看到"Syntax OK",表示Apache配置正常.这个命令非常有用,下面在继续配置Apache的时候还会再次用到。

配置服务器:

1、配置Tomcat
查找目录下的conf/workers.properties文件,并对比下方文本内容,如有不同以下方内容为准修改。
workers.tomcat_home=d:\Tomcat #让mod_jk模块知道Tomcat的位置
workers.java_home=d:\Java\jre1.5.0_06 #让mod_jk模块知道jre的位置
ps=\
worker.list=ajp13 #模块版本
worker.ajp13.port=8009 #工作端口,若没占用则不用修改
worker.ajp13.host=localhost #本机,若上面的Apache主机不为localhost,作相应修改
worker.ajp13.type=ajp13 #类型
worker.ajp13.lbfactor=1 #代理数,不用修改

如果文件不存在则创建。并填充上述内容。

2、配置Apache
打开d:\Apache\Apache2\conf下的httpd.conf,在最后加入下面这段代码并保存。
#设置Apache与Tomcat之间的连接,让Apache遇到jsp文件时,在后台将其交由Tomcat去处理
LoadModule jk_module modules/mod_jk_2.0.55.so
#此处mod_jk的文件为你下载的文件
JkWorkersFile "d:/Tomcat/conf/workers.properties"
#指定tomcat监听配置文件地址
JkLogFile "d:/Tomcat/logs/mod_jk2.log"
#指定日志存放位置
JkLogLevel info

#设置虚拟主机

ServerAdmin localhost
DocumentRoot d:/test1
#您的站点项目所在路径,应与tomcat中的目录设置相同
ServerName localhost
DirectoryIndex index.html index.htm index.jsp
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common
JkMount /servlet/* ajp13
#让Apache支持对servlet传送,用以Tomcat解析
JkMount /*.jsp ajp13
#让Apache支持对jsp传送,用以Tomcat解析
JkMount /*.do ajp13
#让Apache支持对.do传送,用以Tomcat解析


#开头的行为注释,可以删除。此处的配置我是以设置虚拟目录,重新指定了serverName,DocumentRoot路径的方式配置站点,实际上, Apache的配置可以非常灵活,你也可以不采用虚拟目录的方式,而直接去修改站点的默认配置,使用任意文本编辑工具,搜索如ServerName, DocumentRoot,ServerAdmin等相关项,然后将该项的配置根据你的实际情况进行修改即可。我建议大家可以多多尝试不同的配置,这是一 种很有乐趣的体验。
所有的修改完成这后,再次执行d:\Apache\Apache2\bin\Apache.exe -t 如果看到"Syntax OK",说明你所有配置无误,双击窗口的托盘中的图标,然后点击Start运行。
在地址栏中分别输入
http://localhost/,与http://localhost:8080/若结果相同,Apache与Tomcat整合成功

posted @ 2007-08-12 11:11 ricki 阅读(383) | 评论 (0)编辑 收藏

一、配置环境

下载和安装 JRE 1.5 最新版 (1.5.06)
下载和安装 Tomcat 最新版 (5.5.12),假定安装目录为 C:\Program Files\Apache Software Foundation\Tomcat 5.5
二、使 Tomcat 集群配置生效

修改 Tomcat 安装目录\conf\server.xml ,把 Server/Service/Engine/Host 下的 Cluster 结点前后的注释符(<!-- 和 -->)删除,并保存
三、配置第二个 Tomcat 实例

在 C:\Program Files\Apache Software Foundation\ 下新建目录 Tomcat 5.5 Instance1
将 C:\Program Files\Apache Software Foundation\Tomcat 5.5 目录下的全部内容复制到 C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1
修改新实例的服务器配置文件 (C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1\conf\server.xml),把其中的 Server/Service/Connector 的端口更改,以避免和第一个冲突(8080 -> 9080,8009 -> 9009,8443 -> 9443)
修改 Cluster/Receiver 结点的 tcpListenPort 端口(此端口用于 Session 复制),以避免和第一个冲突(4001 -> 4002)
注:Tomcat Cluster 默认使用多播来建立成员关系,即两个实例的多播的地址和端口一样,就可以互相认为是同一个 Cluster 的成员。

四、启动验证两个 Tomcat 实例能否正常工作

直接用程序菜单里的 Monitor Tomcat 来启动第一个实例(或在服务器里启动)
第二个实例启动稍微麻烦一些,在 C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1\Bin 下建一个 startup.bat ,用如下 java 命令来启动:
"C:\Program Files\Java\j实re1.5.0_06\bin\java.exe" -jar .\bootstrap.jar -Dcatalina.home="C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1" -Dcatalina.base="C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1" -Djava.endorsed.dirs="C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\endorsed" -Djava.io.tmpdir="C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1\temp" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1\conf\logging.properties" start

看起来挺长,其实主要是第二个实例的安装目录太长的缘故,直接执行此批处理就可以启动第二个实例,如果配置正确,应该可以看到集群管理器启动,并和第一个实例   建立成员关系的信息。

五、写一个简单Web应用,能显示和设置 Session 属性值,以供测试

如果有开发工具,新建一个 Web App ,假设为 TomcatDemo
新增 index.jsp ,加入如下代码:
<%@ page contentType="text/html; charset=UTF-8" import="java.util.*"%>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info: <%out.print(request.getLocalAddr() + " : " + request.getLocalPort());%>
<%
out.println("<br> ID " + session.getId());

// 如果有新的 Session 属性设置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
  String dataValue = request.getParameter("dataValue");
  session.setAttribute(dataName, dataValue);
}

out.print("<b>Session 列表</b>");

Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
  String name = (String)e.nextElement();
  String value = session.getAttribute(name).toString();
  out.println( name + " = " + value);
  }
%>
<form action="index.jsp" method="POST">
  名称:<input type=text size=20 name="dataName">
  <br>
  值:<input type=text size=20 name="dataValue">
  <br>
  <input type=submit>
  </form>
</body>
</html>


以上代码主要是显示服务器信息和 Session 值,并包含一个 Form ,可以随时新建一个 Session 属性值

修改此用应用的 Web.xml ,加入 distributable 属性,表示 Tomcat 要为此 Web 应用复制 Session  
<web-app xmlns="
http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
    <display-name>TomcatDemo</display-name>
    <distributable/>
</web-app>

将应用打包成 WAR 文件,分别上现两个实例的 Tomcat Manager 来部署
(如果没有 Java 开发工具,可以直接建立一个 TomcatDemo 的目录,用 Notepad 将如上的内容复制并保存成 index.jsp,然后在此目录下新建子目录 WEB-INF,再用 Notepad 新建一 Web.xml 文件,将上面的代码复制保存,然后将此目录压缩成 Zip 文件,再把后缀改成 .war ,或利用 jar 命令来创建 .war 文件)

六、测试 Tomcat 集群和 Session 复制的是否工作

在 IE 中打开第一个实例中的 TomcatDemo (
http://localhost:8080/TomcatDemo),在 Form 里随便设置一个 Session 属性,如 MyName = foo
将 IE 地址栏中的地址修改为第二个实例中的 TomcatDemo(
http://localhost:9080/TomcatDemo),刷新,就可以看到注意到 SessionID 不变, MyName 的属性值已有了
同样,如果在第二实例中设置的值,在第一个实例的页面中也能看到
注意:必须在同一个 IE 窗口中进行如上测试,以保证是同一个 Session ,如果是两个窗口,则 Session 可能不同,也互相看不到 Session 复制的结果。

七、其它工作

上述只实现了 Session 复制,而没有实现 Load Balance(负载均衡),这可以利用 Apache 等来实现。

posted @ 2007-08-09 17:23 ricki 阅读(410) | 评论 (0)编辑 收藏

     摘要: 在开始做http://133.newsky.cn之前,我已经明白网站的开发与产品开发没有什么不同。不过在2004年离开微软中国研发中心Office组的时候,我对网站开发仍一无所知,这主要是因为我之前没有任何互联网研发的背景。虽然对传统软件产品的研发管理比较有经验,但从未接触过Internet相关的项目。   从零开始与网站开发亲密接触 去年我接手第一个网站项目http://www....  阅读全文

posted @ 2007-08-09 16:31 ricki 阅读(343) | 评论 (0)编辑 收藏

环境说明

       Apache  :apache_2.0.55     1 个

       Tomcat:  apache-tomcat-5.5.17 (zip版) 2个

       mod_jk:: mod_jk-apache-2.0.55.so  1个

第一部分:负载均衡

    负载均衡,就是apache将客户请求均衡的分给tomcat1,tomcat2....去处理

   1.安装apche,tomcat

   http://httpd.apache.org/ 下载Apache 2.0.55

    http://tomcat.apache.org/download-55.cgi 下载tomcat5.5 zip版本(解压即可,绿色版)

   http://apache.justdn.org/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.15/  下载mod_jk,注意和  apache版本匹配

   按照jdk,我的路径为:E:\ide\apache\Apache2

   解压两份Tomcat, 路径分别为 E:\ide\tomcat1,E:\ide\tomcat2

下载mod_jk

2.gif

2.修改Apache配置文件http.conf

   在apache安装目录下conf目录中找到http.conf

   在文件最后加上下面一句话就可以了

  include "E:\ide\apache\Apache2\conf\mod_jk.conf"

2. http.conf 同目录下新建mod_jk.conf文件,内容如下

#加载mod_jk Module
LoadModule jk_module modules/mod_jk-apache-2.0.55.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /*.jsp controller

3.在http.conf同目录下新建 workers.properties文件,内容如下

worker.list = controller,tomcat1,tomcat2  #server 列表
#========tomcat1========
worker.tomcat1.port=8009         #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1   #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=9009       #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1   #server的加权比重,值越高,分得的请求越多
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2   #指定分担请求的tomcat
worker.controller.sticky_session=1

4.修改tomcat配置文件server.xml

如果你在不同电脑上安装tomcat,tomcat的安装数量为一个,可以不必修改tomcat配置文件
我这里是在同一台电脑上安装两个tomcat,所以需要更改其中一个的设置
打开tomcat2/conf/server.xml文件
        
        
        

5.编写一个测试jsp
建立一个目录test.里面新建一个test.jsp,内容为
<%
   System.out.println("===========================");
%>

把test放到tomcat1,tomcat2的webapps下

6.启动apache,tomcat1,tomcat2,进行测试
通过 http://localhost/test/test.jsp 访问,查看tomcat1的窗口,可以看到打印了一行"=========="
再刷新一次,tomcat2也打印了一条,再刷新,可以看到请求会被tomcat1,tomcat2轮流处理,实现了负载均衡.
        

第二部分,配置集群

   只配置负载均衡还不行,还要session复制,也就是说其中任何一个tomcat的添加的session,是要同步复制到其它tomcat, 集群内的tomcat都有相同的session

1. 修改tomcat1, tomcat2的server.xml,将集群部分配置的在注释符删掉,并将tomcat2的4001端口改为4002,以避免与tomcat冲突,当然,如果是两台电脑,是不用改端口的,去掉注释符即可  
      
      
      
      
2,修改测试项目test

修改test.jsp,内容如下

<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
  out.println("<br> ID " + session.getId()+"<br>");
 // 如果有新的 Session 属性设置
  String dataName = request.getParameter("dataName");
  if (dataName != null && dataName.length() > 0) {
     String dataValue = request.getParameter("dataValue");
     session.setAttribute(dataName, dataValue);
  }
out.print("<b>Session 列表</b>");
Enumeration e = session.getAttributeNames();
  while (e.hasMoreElements()) {
     String name = (String)e.nextElement();
     String value = session.getAttribute(name).toString();
     out.println( name + " = " + value+"<br>");
         System.out.println( name + " = " + value);
   }
%>
  <form action="index.jsp" method="POST">
    名称:<input type=text size=20 name="dataName">
     <br>
    值:<input type=text size=20 name="dataValue">
     <br>
    <input type=submit>
   </form>
</body>
</html>

然后在test 新建WEB-INF目录,WEB-INF下新建web.xml,内容如下
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
       <display-name>TomcatDemo</display-name>
       <distributable/>
</web-app>

注意:在你的应用的web.xml加入  <distributable/> 即可
ok,讲test复制到tomcat1,tomcat2的webapps下,重启apache,tomcat1,tomcat2,输入网址 http://localhost/test/test.jsp  
新建一个 名称为 xiaoluo  ,值为 cdut 的session,提交查询,新开一个ie窗口,再提交查询,如图,可以看到,两个tomcat 是负载均衡,并且session同步的
             

posted @ 2007-08-09 16:14 ricki 阅读(297) | 评论 (0)编辑 收藏

IM的服务器压力测试今天完成了。总的来说,测试结果令人满意。

IM服务器配置如下:
CPU:至强3G双核 x 1
内存:1G
硬盘:140G SISC硬盘
IM服务之外的其余服务:
IM & 客户端 自动更新服务
公司网站web服务
公司邮件服务

测试方式:
3台计算机并发模拟客户登陆及聊天。登陆包括查询与下载好友列表、好友资料、群组列表、群组资料;聊天测试方式为,每个模拟客户端每1秒向好友列表中的一个好友发送一条文本消息。所有好友消息均为服务器转发,因为如果使用P2P方式的话,一旦P2P通道建立,数据便不再经过服务器,对IM服务器的压力不产生影响,因此,便没有测试P2P方式下的压力数据,而选择测试服务器转发方式下的压力数据。

最终的测试结果为:
服务器转发模式下,大约能同时支持3000人登陆,4865人同时聊天(服务器崩溃前最近一次读数)。
光登陆就超过2000,令人非常满意,而且4865人同时聊天,这还是在未进一步优化的情况下获得的数据。接近5000的数据,令人很是高兴。

最后,IM服务器的架构简述:
采用4IOCP。其中一个TCP IOCP用作管理员客户端连接,以及将来的服务器聚合扩展;一个TCP IOCP用于用户客户端登陆登出,以及数据补包;一个UDP IOCP用于心跳、P2P打洞处理、中转聊天的文字消息(包含系统表情);一个UDP IOCP用于中转聊天的非文本数据(比如图像)。4个IOCP间的桥接及系统日志、管理员日志、用户日志、插件日志均采用队列处理。系统所有内存使用均有专门的内存管理器负责管理。至于UDP为什么也要采用IOCP,原因则是,虽然普通的UDP已经很快了,但是,每次发送,接收仍均需要阻塞等待。虽然每次阻塞的时间很短,但积少成多,在大量连接的情况下,仍然会比较可观。而采用IOCP,则就是为了经量减小每次阻塞的时间。
最后,关于系统资源占用:
CPU:4%-9%。即使达到4865用户同时在线聊天,CUP占用率也一直处于4%-9%
内存:IM服务器刚刚启动时,占用内存7M多,当4865用户同时采用服务器中转方式在线聊天时,达到190M。

posted @ 2007-07-27 09:10 ricki 阅读(1143) | 评论 (0)编辑 收藏

生命是一场轮回,有些事注定要发生。有些人注定要离去……

posted @ 2007-07-26 22:17 ricki 阅读(197) | 评论 (0)编辑 收藏

 
  先关闭所有的IE浏览器窗口鼠标右键点击快速启动栏的IE浏览器图标,在出现的快捷菜单中点击“属性”,系统随即弹出“启动Internet Explorer浏览器属性”对话页面,点击“快捷方式”标签,在出现的页面的“运行方式(R)”中单击右侧的下拉条,选择“最大化”。之后按“确定”退出。打开IE浏览器窗口,点击里面的链接,接着关闭先前打开的IE浏览器窗口,只留下这个链接页面,拉动边框将其窗口拉到整个屏幕,然后关闭该页面。从此,您打开IE浏览器窗口直接就是最大化的页面了。如果这方法不灵,那可得改修改您的计算机的注册表了,方法:打开“注册表编辑器”,找到[HKEY_ CURRENT_USER\Software\Microsoft\Internet Explorer\Desktop\Old WorkAreas],然后选中窗口右侧的“OldWorkAreaRects”,将其删除;在“注册表编辑器”中找到[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main],选择窗口右侧的“Window_Placement”,将其删除;退出“注册表编辑器”,重启电脑,然后打开IE,将其窗口最大化,并单击“向下还原”按钮将窗口还原,接着再次单击“最大化”按钮,最后关闭IE窗口。以后重新打开IE时,窗口就正常了!

posted @ 2007-07-26 16:10 ricki 阅读(296) | 评论 (0)编辑 收藏


        如今,软件开发越来越复杂,软件功能也越来越丰富。而几乎所有成熟的商业软件,都是靠一个开发团队齐心协力的血汗结晶。“罗马不是一天建成的!”,当我们震撼于Microsoft Windows的惊世巨著的同时,也道听途说了微软公司软件工程是如何的完善规范。的确,集数百名员工几年的共同努力之大成,软件项目管理的成败是控制开发成本的关键环节。这里面,少不了贯穿其中的重要步骤----软件文档。软件文档可以分为开发文档和产品文档两大类。开发文档包括:《功能要求》、《投标方案》、《需求分析》、《技术分析》、《系统分析》、《数据库文档》、《功能函数文档》、《界面文档》、《编译手册》、《QA文档》、《项目总结》等。产品文档包括:《产品简介》、《产品演示》、《疑问解答》、《功能介绍》、《技术白皮书》、《评测报告》、《安装手册》、《使用手册》、《维护手册》、《用户报告》、《销售培训》等。
 一、开发文档
1. 《功能要求》--来源于客户要求和市场调查,是软件开发中最早期的一个环节。客户提出一个模糊的功能概念,或者要求解决一个实际问题 ,或者照同类软件的一个功能。有软件经验的客户还会提供比较详细的技术规范书,把他们的要求全部列表书写在文档中,必要时加以图表解说。这份文档是需求分析的基础。
2. 《投标方案》--根据用户的功能要求,经过与招标方沟通和确认,技术人员开始书写《投标方案》,方案书一般包括以下几个重要的章节:前言--项目背景、公司背景和业务、技术人员结构、公司的成功案例介绍等。需求分析--项目要求、软件结构、功能列表、功能描述、注意事项等。技术方案--总体要求和指导思想、技术解决方案、软件开发平台、网络结构体系等。项目管理--描述公司的软件开发流程、工程实施服务、组织和人员分工、开发进度控制、软件质量保证、项目验收和人员培训、软件资料文档等。技术支持--公司的技术支持和服务介绍、服务宗旨和目标、服务级别和响应时间、技术服务区域、技术服务期限、授权用户联系人等。系统报价--软、硬件平台报价列表、软件开发费用、系统维护费用等。项目进度--整个项目的进度计划,包括签署合同、项目启动、需求分析、系统分析、程序开发、测试维护、系统集成、用户验收、用户培训等步骤的时间规划。
3. 《需求分析》--包括产品概述、主要概念、操作流程、功能列表和解说、注意事项、系统环境等。以《功能要求》为基础,进行详细的功能分析(包括客户提出的要求和根据开发经验建议的功能),列出本产品是什么,有什么特殊的概念,包括那些功能分类,需要具备什么功能,该功能的操作如何,实现的时候该注意什么细节,客户有什么要求,系统运行环境的要求等。这里的功能描述跟以后的使用手册是一致的。
4. 《技术分析》--包括技术选型、技术比较、开发人员、关键技术问题的解决、技术风险、技术升级方向、技术方案评价,竞争对手技术分析等。以《需求分析》为基础,进行详细的技术分析(产品的性能和实现方法),列出本项目需要使用什么技术方案,为什么,有哪些技术问题要解决,估计开发期间会碰到什么困难,技术方案以后如何升级,对本项目的技术有什么评价等。
 5. 《系统分析》--包括功能实现、模块组成、功能流程图、函数接口、数据字典、软件开发需要考虑的各种问题等。以《需求分析》为基础,进行详细的系统分析(产品的开发和实现方法),估计开发期间需要把什么问题说明白,程序员根据《系统分析》,开始在项目主管的带领下进行编码。
6. 《数据库文档》--包括数据库名称、表名、字段名、字段类型、字段说明、备注、字段数值计算公式等。以《系统分析》为基础,进行详细的数据库设计。必要时可以用图表解说,特别是关系数据库。
7. 《功能函数文档》--包括变量名、变量初植、功能,函数名,参数,如何调用、备注、注意事项等。以《系统分析》为基础,进行详细的说明,列出哪个功能涉及多少个函数,以便以后程序员修改、接手和扩展。
8. 《界面文档》--包括软件外观、界面素材、编辑工具、文件名、菜单、按钮和其它界面部件的要求,这里与软件完成后的运行界面是一致的。
9. 《编译手册》--包括服务器编译环境、操作系统、编译工具、GNU的C++编译器版本信息、目录说明、程序生成、源程序文件列表、Makefile配置及其相关程序的对应关系列表。客户端的编译过程、编译结果、编译示例、编译环境、操作系统、编译工具、源文件列表和制作安装程序的过程。
10. 《QA文档》--包括产品简介、产品原理、产品功能列表、功能描述、功能流程、执行结果、数据库结构、测试要求等,提供给软件测试人员使用。
11. 《项目总结》--包括项目简介、项目参与人员和开发时间

posted @ 2007-07-23 17:03 ricki 阅读(331) | 评论 (0)编辑 收藏

 

CMMI标准名词术语

1 AT Assessment Team 评审小组
2 ATM Assessment Team Member 评审小组成员
3 BA Baseline Assessment 基线评审
4 CAR Causal Analysis and Resolution 原因分析与决策
5 CBA CMM-Based Appraisal 基于CMM的评价
6 CBA-IPI
CMM-Based Appraisal for Internal Process
Improvement
为内部过程改进而进行的基于CMM的评价(通常
称为CMM评审)
7 CC Configuration Controller 配置管理员
8 CF Common Feature 公共特性
9 CFPS Certified Function Point Specialist 注册功能点专家
10 CI Configuration Item 配置项
11 CM Configuration Management 配置管理
12 CMM Capability Maturity Model 能力成熟度模型
13 CMMI Capability Maturity Model Integration 能力成熟度集成模型
14 COTS Commerce off the shelf 商业现货供应
15 DAR Decision Analysis and Resolution 决策分析与制定
16 DBD Database Design 数据库设计
17 DD Detailed Design 详细设计
18 DP Data Provider 数据提供者
19 DR Derived Requirement 派生需求
20 EPG Engineering Process Group 工程过程小组
21 FP Function Point 功能点
22 FPA Function Point Analysis 功能点分析
23 FR Functional Requirement 功能性需求
24 GA Gap Analysis 差距分析
25 ID Interface Design 接口设计
26 IFPUG International Function Point Users Group 国际功能点用户组织
27 IPM Integrated Project Management 集成项目管理
28 IR Interface Requirement 接口需求
29 KPA Key Process Area 关键过程域
30 KR Key Requirements 关键需求
31 LA Lead Assessor 主任评审员
32 MA Measurement and Analysis 测量与分析
33 MAT Metrics Advisory Team 度量咨询组
34 MCA Metrics Coordinator and Analyst 度量专员
35 ML matreraty library 度量数据库
36 NFR Non-functional Requirement 非功能性需求
37 OC Operational Concept 操作概念
38 OID Organizational Innovation and Deployment 组织革新与部署
39 OPD Organizational Process definition 组织过程定义
40 OPF Organizational Process focus 组织过程焦点
41 OPL Organizational Process Assets 组织过程财富
42 OPP Organaizational Process Perormance 组织过程性能
43 OSSP Organization’s Set of Standard Process
组织标准过程集合
44 OT Organizational Training 组织级培训
45 PA Process Areas 过程域
46 PAT Process Action Team 过程行动小组
47 PB Process Assets Library 过程财富库
48 PD Preliminary Design 概要设计
49 PDSP Project Defined Standard Processes 项目定义标准过程
50 PI Produce Integration 产品集成
51 PLC Product Life Cycle 产品生命周期
52 PMC Project Monitoring and Control 项目监控
53 PP Project Planning 项目策划
54 PPQA Process and Product Quality Assurance 过程与产品质量保证
55 PPR Price Performance Ratio 性能价格比
56 QA Software Quality Assurance 软件质量保证
57 QA Quality Assurance 质量保证
58 QAP Software Quality Assurance Plan 质量保证计划
59 QPM Quantitative Project Management 量化项目管理
60 RD Requirements Development 需求开发
61 RM/ReqM Requirements Management 需求管理
62 RSKM Risk Management 风险管理
63 RTM Requirement Traceability Matrix 需求跟踪矩阵
64 SAM Supplier Agreement Management. 供应协议管理
65 SC Steering Committee 指导委员会
66 SCAMPI
Standard CMMI Assessment Method for
Process Improvement 过程改进CMMI标准评审方法
67 SCCB Software Configuration Control Board 软件配置管理控制委员会
68 SCM Software Configuration Management 软件配置管理
69 SDP Software Development Plan 软件开发计划
70 SEI Software Engineering Institute (美国)软件工程学院
71 SEPG Software Engineering Process Group 软件工程过程组
72 SPI Software Process Improvement 软件过程改进
73 SPP Software Project Planning 软件项目策划
74 SPTO Software Project Tracking and Oversight 软件项目跟踪与监控
75 SR System Requirements 系统需求
76 SRS Software Requirement Specification 软件需求规格
77 SSM Software Subcontract Management 软件分包管理
78 SSR Software System Requirement 软件系统需求
79 TS Technical Solution 技术解决方案
80 UC Use Case 用例
81 UID User Interface Design 用户界面设计
82 VAL Validation 确认
83 VER Verification 验证
84 WBS Work Breakdown Structure 工作分解结构
85 WP Work Products 工作产品
86 Pre-assessment 预评审
87 Baseline 基线
88 Quality Attribute 质量属性
89 Scenario 场景

posted @ 2007-07-23 17:01 ricki 阅读(636) | 评论 (0)编辑 收藏

 

鞠强

 

 

         这是一篇关于成长的心得。仁者见仁、智者见智,如果诸位读者能够从此文中看出一点东西来,有所感悟,我就满足了。

         我是数学系毕业的,大二开始捣鼓计算机(94年),最大的兴趣就是写程序。改游戏、改病毒,这些小东西让人很有成就感。工作后的兴趣经历了一个很大的转变(当然,这个时间相对于多数人而言,迟了些),2000年的时候,我突然发现了我写的程序的价值。当我看到我修改了短短的几行代码的时候,给客户带来了很大的效率提升,降低了成本,那种成就感,远非6年前的认识可比了。

         本文并非专门面对计算机入门者,所以内容比较杂。

         此段权作前言,现在进入正题。

知识点要连贯,知识面要广

         国内的大部分软件企业,从来没有像国外那样,在技术上保持连续性。从微软这条路线来看,从最早的DOS->Win16->Win32->OLE->DCOM,到COM+->.NET,我们很难找到能够完整走完这个历程的人。这种现状,导致大部分的技术人员,对于开发技能,有一个很大的断层:知其然,不知其所以然;碰到非source code的错误,就手足无措;或者代码质量低劣,或者性能有很大瓶颈。

         上面的路线演进,可以认为是“工程”方面的,而非我们大学教育中的“科学”。操作系统、数据库、数据结构、离散数学,这些内容非常重要。但是我们要注意的是,你学习了这些,不代表就能写好一个程序,能够解决客户的问题。工程方面的东西,我们多加掌握,熟练应用,配合上述“科学”的内容,才能真正保证程序价值的发挥。

而如何让两者有机的结合起来?我想,不外乎就是兴趣+经验。

         在微软平台上开发,很重要的一个资源就是MSDN(Microsoft Software Development Network),里面有how to,有concepts,有topics,可以让我们更好更快的上手。当我们碰到某个代码错误,想找某种解决方案的时候,MSDN是一个非常好的助手。对于初学者,我们可以看里面的how to,step by step的进行学习。

         还有一个笨办法,我刚工作时候采用的,就是找一个老版本的SDK说明文档(borland开发工具的帮助里面就有,那个短小精悍,没有msdn的那么复杂),从字母A开始,到字母Z,我当时花了一年半的时间,基本把所有的API都试验了一遍。这么做有个好处,能让你快速的对整个开发有一个概览。以后在学习或者工作中碰到了问题,能让你有一个大概的印象,知道应该怎么做,知道应该用哪个API

        对于现在的应用而言,如果是基于.NET的企业级应用开发,我的经验是,Win32 API了解即可(当然,如果对某一方面很熟练的话,还是非常有好处的。如socket、GDI等。);COM/COM+要知道一些,至少要清楚Add/Release Reference的含义;.NET Framework要深入一些。比如可以拿那本《.NET 高级编程》来做练习。这本书1000多页,虽然名之为“高级”,但你可以拿它当字典来用。有兴趣的,可以按照我说的那个笨办法,从第一章开始到最后一章,读一遍之后,自己一个字母一个字母的,把所有的代码写上、调试通过、运行,并反复debug,从中了解语法、语义、一些编程技巧。

       对于高质量的代码而言,仔细研读《Essential .NET》这本书是很有必要的。

        对于企业级应用开发,还有一点很重要,就是数据库知识。数据库本身的语法很简单,关键是我们写出来的sql要成本低,成本低一般就会带来效率的提升(并非绝对如此)。这部分内容,一需要经验,二需要思想意识的转变。什么思想意识呢?就是要有数字化的观点!

         举个例子,客户让你出一份能够适应未来三年需求的存储方案,你该如何考虑?如果没有数字的观点,很可能的结果就是瞎蒙出来的数字。如果有了数字观点,我们很容易提供此方案。

        对于存储空间,我们可以仔细分析客户最近2-3年的数据库结构、内容,加以咨询客户,未来3年的应用变化趋势,最终我们能得到这样一份提纲:

 

帐务管理

发票管理

订单管理

用户个数

50

20

100

高峰时间段

月底3天

每日

每日

每行记录大小(kb)

20

10

200

业务发生笔数(每天)

30

50

50

高峰期业务发生笔数(每天)

100

50

50

 

假设每个月工作日是22天,那么计算每个月的高峰期业务量、平时业务量,得到一个总数,乘以36个月,就能得到一个统计意义上的3年业务量。再考虑到tempdb、日志、索引,以及raid,我们就能很容易的得到存储空间数字。再通过TPC等要求,得到服务器的其他配置要求。

 

         当你写的代码被别人应用的时候,总会有这样、那样的问题。硬件,可能会和程序不兼容;软件,新操作系统你可能不支持;木马可能让你的B/S代码发生莫名其妙的故障;病毒会导致你的.NET runtime频繁重启;BT/emule让你的应用没有带宽用、socket无法连接,等等……

         诸如此类的问题,绝对不是我们在电脑旁边写程序时,就能想到的。那怎么办呢?我们虽然做不到全才,但是要利用好你所处的团队,利用好网络资源。这两点做到了,当你积累了相当的经验,再考虑新的程序的时候,就能有所警觉,让新程序的架构更为合理。(对于架构,牢牢记住这些:伸缩性、扩展性、可靠性,以及安全、性能。)

当你对架构有所了解的时候,你又会发现,细节决定了一切。细节的处理,来自于你的知识面、项目经验,以及大量的思考。无论.NET还是J2EE,无论是C#还是C++,平时多了解一些,总会对你思考整个软件,带来益处的。

 

软件开发是一项事业

         软件是一个非常累的行业,如果想拿高薪、每天八小时工作、周六周日有自己的私人空间,那么在这个行业你几乎找不到合适的切入点。

对于许多新人而言,这个行业充满了诱惑,也有很多挑战。兴趣,也许是选择这个行业的第一前提。当我发现我写的程序能够控制企业的生产设备时,无疑是很兴奋的;当我发现我的代码总是会莫名其妙的crash,无疑又是很沮丧的。很快,我们的兴趣就容易被这些抽风似的问题,磨灭殆尽。

也许可以这么说,兴趣是领我们进门的老师,你能让它跟你越久,你就越能保持前进的动力。如果没有了,这也是一个好事。我在工作后的第三年,突然对所做的一切失去了兴趣。后来想,这说明我已经度过了那个纯粹感性认识的阶段,“可以”朝理性阶段迈进了。

就这个行业本身而言,我们更多的接触客户、更多的接触实际需求,这些带来的冲击,远比一种新技术对我们的影响,要猛烈的多。客户那里有各式各样的硬件环境、网络环境、软件环境,有各种管理模式的应用。接触的久了,我们自然就会思考:

l 我写的代码,该如何改进,才能适应各种环境?

l 应用上采用什么架构,可以满足可预见到的未来的需求?

l 怎么做,能让程序在sqlserver和oracle、db2上都跑的很好?

l 安全上,代码中的sql injection,真是那么容易解决的吗?

l 我的程序能够无缝的在客户那里的.NET Frame1.1/2.0上切换吗?

l 我的程序,如何能在windows 2000上跑的更快?

 

当我们有了这些思考,实际上,兴趣就又回来了。这些问题毫无疑问,都不简单,但都很有意思。我相信,这是一个良性的循环。兴趣、事业,交替引导着我们前行。

 

不要急于为自己定位

         工作了2、3年之后,我们都会有这个困惑:我以后做什么?继续作程序员?作管理?想的再远一些,30岁之后,我们应该做什么?

         这个问题,我曾经问过我的老板,他和我说,你把自己当前的工作做好,好的要做的更好。今后的发展,是和你目前所做的工作、你的视野、你的经验,息息相关的。

         功到自然成。

        

如何看待IT这个行业

         我认为IT行业,现在刚刚是起步阶段,这个阶段也许持续20年或者更长。IT的最终目标,应该是作为一种基础服务,沉淀在经济发展大潮下面。如同水、电、煤气一样,我们日常感受不到它们的存在。一旦停电、停水、停气,我们才会感觉到不便,才会发现,整个经济的运转,都离不开这些基础设施。

         软件方面,最终也会发展到这么一个阶段。黑客帝国二里面,议会老大和NEO在谈论matrix和“真实”世界,透过繁荣,背后是巨大的能量供应基地、星罗棋布的管道,这一切看起来丑陋的东西,被深深地印藏在背后了。

 

         从目前来看,软件还是在尽量的模拟世界,尽量的从数据中发现我们所生存的这个世界的真相。这首先需要我们把所有能发现的现象,都抽象出来,需要庞杂的数学理论支持,需要硬件的革命性地变化支撑。

但这是一个非常困难的工作,也许几代人的时间我们才能做到。我们目前所做的,正是这伟大变革的第一步。

做好选择:进大公司?进小公司?

         每个临近毕业的,致力于搞软件的人都会有这个抉择:进大公司?进小公司?

         大公司门槛高,组织结构复杂,层级很多,待遇也许不会太好,高手众多。Freshman也许要适应几年的时间,才能展露头角。

         小公司门槛低,结构单一,待遇相对会好。新手很容易抓住机会,在项目中成长起来。

 

         众多走过来的人都有这个经验,大公司里面你会学到很多东西,各方面会正规一些;小公司的生存压力比较大,也许你会成为一个多面手,但成为一个高手,会很困难。道理很简单,一个是发展阶段,一个是生存期,这两种状态决定了公司的运营状态,决定了软件研发的思路,决定了市场思路。

 

         我个人的体会是,开始进入大公司,应该是一个不错的抉择。如果进了小公司,就要考虑如何踏实的把工作做好先,如何能够全面、快速的成长。

 

 

 

作者鞠强,10年的企业管理软件开发经验,目前致力于产品性能、安全方面的研究。我的联系方式是:济南市山大路224号,浪潮通软,邮编250103。联系电话:138 5310 1310,MSN是:juqiang1975@msn.com

posted @ 2007-07-20 13:18 ricki 阅读(256) | 评论 (0)编辑 收藏

功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下
  1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。

  2. 相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。

  3. 检查按钮的功能是否正确:如update, cancel, delete, save等功能是否正确。

  4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.

  5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.

  6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.

  7. 中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错.

  8. 检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出.,带出信息和添加的是否一致

  9. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.

  10. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理.

  11. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.

  12. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错.

  13. 重复提交表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。

  14. 检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错.

  15. search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确.如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确.

16. 输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方.

  17. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。

  18. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*

  19. 快捷键检查:是否支持常用快捷键,如Ctrl+C Ctrl+V Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。

  20. 回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错。

 

posted @ 2007-07-18 11:22 ricki 阅读(311) | 评论 (0)编辑 收藏

网上关于Apache + JK + Tomcat的集群配置例子很多,按着例子配置下来,基本都能运行,不过,在一些重要的地方却没有进一步的说明。这次公司一个产品就是采用Apache+JK+Tomcat集群,在整个配置、测试过程中,遇到了许多的问题,经过不断测试、摸索,最后总算是搞定了,性能也达到了预期的目标。针对网上的例子,感觉有必要再详细的介绍一下我的配置过程,对一些要特别注意的地方进行补充。

集群有别于分布式的解决方案,它采用的是每台服务器运行相同应用的策略,由负责平衡的服务器进行分流,这对提高整个系统的并发量及吞吐量是更有效的办法。而集群对请求的处理又有两种不同的方式:负载平衡、状态复制(即集群),状态复制需要在各服务器间复制应用状态,而负载平衡则不用,每台服务器都是独立的。实践证明,在各应用服务器之间不需要状态复制的情况下,负载平衡可以达到性能的线性增长及更高的并发需求。

对于集群的其它基础知识,在此就不再做累赘。以下就这次Apache + JK + Tomcat的负载平衡配置进行总结,重点关注整个配置及注意事项。

准备软件

1、 Tomcat或JBoss(本文档中采用的是JBoss4.0.2);

2、 apache2.0.54是开源的Web服务器,下载地址为: http://www.apache.org/dist/httpd/binaries/

3、 mod_jk-1.2.14-apache-2.0.54.so模块,jk是mod_jserv的替代者,它是Tomcat-Apache插件,为Apache和Tomcat的连接器,处理Tomcat和Apache之间的通信,在集群配置中充当负载均衡器的作用,当前的最新版本为1.2.15,不过不同JK版本与不同的Apache版本之间的搭配有一些差异,有的甚至配不起来。JK2是符合apache2.x系列的新品,但由于其配置太过麻烦,使用的人很少,所以目前已停止开发,所以我们采用了jk连接器,下载地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/

集群与负载平衡

使用mod_jk默认的以轮循方式进行平衡负载,假设有四个服务器节点,有10个请求,则四个节点分别接受请求编号如下:

节点1

节点2

节点3

节点4

1

2

3

4

5

6

7

8

9

10

 

 

而集群方式也是使用这种方法进行平衡。Tomcat中的集群原理是通过组播的方式进行节点的查找并使用TCP连接进行会话的复制。

    集群不同于负载平衡的是,由于集群服务需要在处理请求之间不断地进行会话复制,复制后的会话将会慢慢变得庞大,因此它的资源占用率是非常高的,如果在并发量大的应用中,复制的会话大小会变得相当大,而使用的总内存更是会迅速升高。

    但集群的会话复制,增加了系统的高可用性。由于在每台服务器都保存有用户的Session信息,如果服务器群中某台当机,应用可以自动切换到其它服务器上继续运行,而用户的信息不会丢失,这提高了应用的冗错性。

具体采用负载平衡还是集群,这要看应用的需求了。

安装配置Apache

1、下载Apache的安装程序apache_2.0.54-win32-x86-no_ssl.exe后,安装很简单,一路回车,就此略过。

2、安装完毕后,将下载的mod_jk-1.2.14-apache-2.0.54.so复制到Apache安装目录下的modules子目录中。

3、然后进入Apache安装目录下的conf子目录中,打开httpd.conf配置文件,在最后插入以下一行:

Include conf/mod_jk.conf

4、 在conf子目录下,建立一个新的配置文件:mod_jk.conf,此文件为Apache加载连接器的配置文件,文件名可修改,但要与httpd.conf中Include的文件名一致,内容如下:

# Load mod_jk module. Specify the filename

# of the mod_jk lib you’ve downloaded and

# installed in the previous section

#加载mod_jk模块

LoadModule jk_module modules/mod_jk-1.2.14-apache-2.0.54.so

# Where to find workers.properties

JkWorkersFile conf/workers2.properties

# Where to put jk logs

JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]

JkLogLevel info

# Select the log format

JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format

JkRequestLogFormat "%w %V %T"

# 请求分发配置,可以配置多项

JkMount /* loadbalancer

#关掉主机Lookup,如果为on,很影响性能,可以有10多秒钟的延迟。
HostnameLookups Off

注:蓝色加粗的两行是重点,第一句是Apache加载JK模块用的;第二句为配置哪些URL请求将由负载平衡器来处理。

5、 在conf子目录下,建立一个新的配置文件:workers2.properties,此文件为负载平衡的配置文件,文件名不能修改,这是JK默认的名字,内容如下:

worker.list=loadbalancer

# Define the first node...

worker.server99.port=8009

worker.server99.host=192.168.11.99

worker.server99.type=ajp13

worker.server99.lbfactor=1

worker.server99.local_worker=1

worker.server99.cachesize=1000

worker.server99.cache_timeout=600

worker.server99.socket_keepalive=1

worker.server99.socket_timeout=0

worker.server99.reclycle_timeout=300

worker.server99.retries=3

# Define the second node...

worker.server202.port=8009

worker.server202.host=192.168.11.202

worker.server202.type=ajp13

worker.server202.lbfactor=1

worker.server202.local_worker=1

worker.server202.cachesize=1000

worker.server202.cache_timeout=600

worker.server202.socket_keepalive=1

worker.server202.socket_timeout=0

worker.server202.reclycle_timeout=300

worker.server202.retries=3

# Now we define the load-balancing behaviour

worker.loadbalancer.type=lb

worker.retries=3

worker.loadbalancer.balance_workers=server99 ,server202

worker.loadbalancer.sticky_session=true

worker.loadbalancer.sticky_session_force=true

注:以上定义了两个worker,一个为server99,另一个为server202,定义了一个负载平衡服务器loadbalancer,其中标蓝色的为重点配置项,相关的详细说明可以看官方的网站文档:http://tomcat.apache.org/connectors-doc/,其它节点的定义可以直接Copy,修改一下节点名及IP就好了。
A、worker.list=loadbalancer

设定工作的负载平衡器,各Tomcat节点不能加入此列表。

    B、worker.server99.lbfactor

负载平衡的权重比,如果此权重比越大,则分配到此节点的请求越多,如以上两个节点的权重比为1:1,则为平均分配。

C、worker.loadbalancer.balance_workers=server99,server202

   指定此负载平衡器负责的Tomcat应用节点。

D、worker.loadbalancer.sticky_session=true

   此处指定集群是否需要会话复制,如果设为true,则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台Tomcat后,后继的请求会一直分发到此Tomcat服务器上处理;如果设为false,则表明需求会话复制。

E、worker.loadbalancer.sticky_session_force=true

   如果上面的sticky_session设为true时,建议此处也设为true,此参数表明如果集群中某台Tomcat服务器在多次请求没有响应后,是否将当前的请求,转发到其它Tomcat服务器上处理;此参数在sticky_session=true时,影响比较大,会导致转发到其它Tomcat服务器上的请求,找不到原来的session,所以如果此时请求中有读取session中某些信息的话,就会导致应用的null异常。

6、Apache服务器的配置文件httpd.conf中,默认有三个参数对性能的影响比较大,但根据不同的性能要求,参数的表现又不一样,太小并发提不上去,太大性能反而不好,建议根据项目的需要,实际做个测试,如并发要求800的话,可以设定为:

#一个连接的最大请求数量

MaxKeepAliveRequests 1000(值为0,则不限制数量)

#每个进程的线程数,最大1920。NT只启动父子两个进程,不能设置启动多个进程

ThreadsPerChild    1000(最大为1920)

#每个子进程能够处理的最大请求数

MaxRequestsPerChild   1000(值为0,则不限制数量)

这三个参数要根据不同的需求,不同的服务器进行调整。

安装配置Tomcat或JBoss

1、对于Tomcat或JBoss的安装,这里不做说明,目前我们是采用Apache+JBoss,不过,JBoss也是用的Tomcat,所以这里的配置也是适合Tomcat的;

2、对于JBoss的配置,很简单,只需要改两个地方就可以了:

第一个地方:进入jboss-4.0.2\server\default\deploy\jbossweb-tomcat55.sar,打开server.xml,大约在第32行左右,有,在其中加入一个参数,变为:

第二个地方:进入jboss-4.0.2\server\default\deploy\jbossweb-tomcat55.sar\META-INF目录,打开jboss-service.xml,大约在110行,有false,将其改为:

true

这里有一个需要特别注意的地方,JBoss的Tomcat中,关于AJP连接协议的默认配置,对于大并发量是不够用的,要做一些修改,进入jboss-4.0.2\server\default\deploy\jbossweb-tomcat55.sar,打开server.xml,找到的地方,这里是定义AJP连接器的地方,它的配置中没有maxThreads项,默认为200,我们可以做修改:

         emptySessionPath="true" enableLookups="false" redirectPort="8443"

         protocol="AJP/1.3" maxThreads="3000"/>

maxThreads的值要看你的并发量多大,设置太大也不好。

运行

至此,整个配置全部完成,注意一点是,在各JBoss节点,重启或新增加一个JBoss节点时,需要重新启动Apache,而对于服务器群中某个JBoss节点shutdown,Apache会自动侦测,不用重新启动。

如果在运行过程中,群中的某个JBoss节点shutdown,则已登录到此服务器上的用户的请求将出错,此服务器负责的session将丢失,但Apache会自动侦测到此服务器已shutdown,后继的新请求将不会再引导到此节点。

对于负责请求分发的Apache服务器,需要消耗大量的CPU资源,因此如果在测试过程中出现一些Service Temporarily Unavailable或Server  has shut down the connection prematurely这样的错误,这一般都是服务器配置不够好引起的,或者是Apache、Tomcat、及应用中的某些配置不够使用,这时候就要考虑换更好的机器或优化应用中的配置。

常见问题

一、cannot connect to server:无法连接到服务器。这种情况是服务器的配置有问题,服务器无法承受过多的并发连接了,需要优化服务器的配置:

如操作系统采用更高版本,如windows 2003 server,

优化tomcat配置:maxThreads="500" minSpareThreads="400" maxSpareThreads="450"

但是tomcat 最多支持500个并发访问

优化apache配置:

ThreadsPerChild 1900

MaxRequestsPerChild  10000

二、 Action.c(10): Error -27791: Server  has shut down the connection prematurely

HTTP Status-Code=503 (Service Temporarily Unavailable)
一般都是由于服务器配置不够好引起的,需要优化硬件和调整程序了。

三、无法处理请求:

当我们输入 ***.do 命令后,apache却返回错误信息,而连接tomcat却没有问题。原因是没有把.do命令转发给tomcat处理。解决方法如下:

在apache配置文件中配置如下内容:

JkMount /*.jsp loadbalancer

JkMount /*.do loadbalancer

posted @ 2007-07-18 10:11 ricki 阅读(418) | 评论 (0)编辑 收藏

Web压力测试是目前比较流行的话题,利用Web压力测试可以有效地测试一些Web服务器的运行状态和响应时间等等,对于Web服务器的承受力测试是个非常好的手法。Web 压力测试通常是利用一些工具,例如微软的Web Application Stress、Linux下的siege、功能全面的Web-CT等等,这些都是非常优秀的Web压力测试工具。

虽然这些工具给我们测试服务器承受能力带来方便,但是它们的危害却更是惊人,甚至于利用随便一种比较全面的测试工具就可以对一台小型的 Web服务器发动灾难性的拒绝式攻击。下面我就带大家利用微软的Web Application Stress进行一次Web压力测试,其目的是为了让大家看到它的巨大危害。

一、工具简单介绍

Microsoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的客户端计算机仿真大量用户上线对网站服务所可能造成的影响,在网站实际上线之前先对您所设计的网站进行如同真实环境下的测试,以找出系统潜在的问题,对系统进行进一步的调整、设置工作。就是因为这些特性,才使它具备了D.O.S轰炸的功能。

小提示:D.O.S(拒绝服务攻击)通过使你的服务计算机崩溃或把它压跨来阻止你提供服务。简单来说,就是让你的计算机提供可能多的服务从而使你的计算机陷入崩溃的边缘或崩溃。

二、工具简单设置

打开Web Application Stress Tool,很简洁的一个页面(如图1),上面是工具栏,左下方是功能选项,右下方是详细设置选项。在对目标Web服务器进行压力测试之前,先对它进行一些必要的设置。

图1


1. 在“settings”的功能设置中(如图2),一个是Stress level (threads)这里是指定程序在后台用多少线程进行请求,也就是相当于模拟多少个客户机的连接,更加形象的就是说设置多少轰炸的线程数。一般填写 500~1000,因为这个线程数是根据本机的承受力来设置的,如果你对自己的机器配置有足够信心的话,那么设置的越高,轰炸的效果越好。

图2

2.在“Test Run Time”中来指定一次压力测试需要持续的时间,分为天、小时、分、秒几个单位级别,你根据实际情况来设置吧!

3.其余的选项不太重要,这里就不再浪费笔墨,朋友们可以自己尝试一下设置。

三、压力测试

工具介绍完了,下面来准备条件:这里与一个朋友商量好进行测试,他是单机上网,机器配置是CPU:Athlon XP2500+、内存512MB、硬盘80GB等,机器配置还不错。他在机器上安装了IIS,架设了一台对外的Web服务器,Web服务中的程序是动网 7.0。我就利用压力测试工具对这台服务器进行测试。

步骤1:在工具中点右键,选择Add命令,增加了一个新的测试项目:New script,对它进行设置,在主选项中的server中填写要测试的服务器的IP地址。在下方选择测试的Web连接方式,这里的方式Verb选择 get,path选择要测试的Web页面路径,这里填写/Index.asp,即动网的首页文件(如图3)。

图3

步骤2:在“Settings”的功能设置中将Stress level (threads)线程数设置为1000。完毕后,点工具中的灰色三角按钮即可进行测试(如图4)。测试完毕,等待朋友把任务管理器以及连接查看的截图发过来!

图4

攻击开始后,朋友从任务管理器中可以看到CPU使用率已经达到100%,损耗率达到最大(如图5)。在CMD窗口中使用命令netstat -an,可以看到我的IP地址在朋友服务器上的80端口进行了非常多的连接(如图6)。而且它的Web网站已经打不开了,提示过多用户连接,达到了跟 D.O.S攻击一样的目的。

图5

图6

试想,如果利用多台肉鸡对一台服务器进行Web压力测试,那么对这台服务器来说将是灭顶之灾,所以朋友们在使用它之前一定要慎重考虑。

posted @ 2007-07-18 10:09 ricki 阅读(949) | 评论 (1)编辑 收藏

以创建交易脚本为例,详细的解释一下使用LoadRunner进行压力测试的过程。关于如何定义测试目标及每个步骤详细的操作过程在操作手册中有解释,这里就不说了。

一、 使用VUGen录制脚本

1、根据应用程序架构选择相应的协议。一般象B/S的程序用单一的http协议就可以了。

2、开始录制。根据所选协议的不同,出现的对话框不不同的。选择http协议的话需要录入url地址,在这步录入需要测试的地址如https://www.alipay3.net

3、录制脚本:在一个脚本中,默认有三个动作:vuser_init Action vuser_end。通常把初始化操作放到vuser_init中,具体需要测试的操作放在Action中,vuser_end动作目前来说没有什么用处。在创建交易脚本中,需要测试的操作包括创建支付宝交易、买家付款、卖家发货、买家确认收货。每一个操作都必须首先登陆才能进行。

4、添加事务:为了使录制的脚本更易读,录制过程中要为每一个独立的操作添加事务。比如说登陆、买家付款都放在一个单独的事务中。特别注意,因为本次测试目标是每秒内总的交易数,所以需要分别给每一个测试脚本的Action操作都加上一个统一的事务,名称都叫做“Action”,以便衡量是否可以达到目标。

5、添加验证点:脚本录制好后,在需要的地方加上验证点,来检测脚本是否执行成功。以登陆操作来说,在提交登陆的脚本后面,右击鼠标,选择Insert—NewStep,在出现的对话框中选择Web Checks—Text Check,进行文字验证,查找退出这两个字是否出现。如果出现就说明登陆成功了。

6、根据需要对变量参数化:在登陆操作中需要参数化的值包括:URL,登陆帐号、登陆密码。点击工具栏的Param List按钮可以创建参数。当新建一个参数后,LR会在当前脚本的目录下自动创建一个文件存放参数的值。我们不要这个默认的文件名,把所有参数的文件名都修改为“D:\LrData\Email.dat”[文件路径及名称都是可以手工修改的],这样可以在多个脚本中共享相同的变量。

a)        url、登陆帐号、登陆密码:这几个参数都是手工在LR中输入,然后保存到文件中。

b)        交易号:在查询交易明细脚本中,会随机的选取100个交易查看其明细。这种情况下,交易号直接从数据库中取得比较方便。但是必须在本地安装oracle客户端。如果没有装oralce客户端,可以首先登陆到PL/SQL中,查询100个交易号,选中把查询结果,选择导出到CSV文件中。如下图:

 

导出后,在LR中打开Param List,选中交易号这个参数,点击Edit With NotePad按钮,把csv文件的内容拷贝到这个里面即可。注意拷贝前需要用支持列编辑的文本工具打开csv文件,去掉前后的引号。保存文件成功后,在LR中就可以看到导出的交易号了。

7、在Vuser中运行脚本,确认脚本可以正常运行。

二、            使用Controller设置场景进行测试

1、创建场景:由于我们这次的测试目标是以每秒N个交易,所以选择基于目标的场景。创建场景的同时,加入需要测试的脚本。

2、定义测试目标:

场景创建成功后,单击Edit Scenario Goals定义测试目标。

在这个对话框中新建一个测试目标,类型为:Transactions per Second,事务名称为我们统一定义的“Action”,事务数量根据需要设置。Vuser的数量设置从20到500。

3、设置运行时间:

也是在Edit Scenario Goals中,可以设置达到目标后再运行多少时间。

4、Run-Time Setting:(特别注意)

在VuGen中也有Run-Time Setting,但是在那里设置好的参数不会被带到Controller中,需要重新设置。对每一个脚本都需要设置。

a)        Think Time:这个选为Ignore think time,否则结果中的事务响应时间很大,包含了这个思考时间。

b)        打开验证点检查功能:在Preferences选项中,给Enable Image and text check打勾,否则脚本执行时不会去检查验证点的。

c)        设置Action的迭代次数:在Run Logic中,单独设置脚本中每个动作的执行次数。例如在查询交易明细脚本中,需要模拟一次登陆,查询10次明细的情况,就需要设置Action动作迭代10次。

5、添加需要监控的性能参数

这次我们测试的服务器是Linux,需要得到在各种压力下服务器的负载情况。Linux的性能参数在场景中没有默认被监控,所以需要手动添加。要监控Linux的资源,需要在服务器上运行一个叫做rstatd的进程,这个进程可以从网上下载。在服务器上启动这个进程后,

在测试场景中,手工将Available Graphs的UNIX Resources拖动到右边的视图中,然后右击,选择Add Measurements,添加需要监视的服务器。

 

图中,上面一个Add添加需要监视的服务器,下面的Add是用来添加需要监视的参数,包括Average Load等等。

6、运行场景,保存执行结果

运行时,需要选择运行结果保存的路径及文件。这些结果文件可以在Analysis中查看。

三、            查看运行结果

第二步场景运行结束后,通过菜单Results—Analysis Results打开运行结果。

在Analysis中,默认显示以下类型的结果分析图。

需要手工把Unix资源的图打开,单击上图中的New Graph,出现下面的对话框。

选择System Resources下的UNIX Resources,单击Open Graph,就可以看到在场景中所监视的各个性能指标的曲线图了。

点击保存可以把结果保存为*.lrr的文件,下次可以直接通过Analysis打开。

四、            比较2次或者多次场景运行的结果

测试中,为了提高系统的性能,会修改代码或者更改架构,这时候我们需要对修改前后的场景运行结果进行比较,通过一些性能指标的曲线图比较直观的了解系统的变化。

在Analysis中,通过菜单File—Cross With Result可以合并结果进行比较。

 

通过Add按钮可以添加多个*.lrr文件进行结果的比较,点OK后会出现各个结果的比较图。

posted @ 2007-07-18 10:06 ricki 阅读(8265) | 评论 (0)编辑 收藏