礼's profileDev-TechPhotosBlogListsMore Tools Help

Dev-Tech

やるからには、まじめにやれ。

礼 何

Occupation
Location
Photo 1 of 2
感谢访问!
Please wait...
Sorry, the comment you entered is too long. Please shorten it.
You didn't enter anything. Please try again.
Sorry, we can't add your comment right now. Please try again later.
To add a comment, you need permission from your parent. Ask for permission
Your parent has turned off comments.
Sorry, we can't delete your comment right now. Please try again later.
You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
Complete the security check below to finish leaving your comment.
The characters you type in the security check must match the characters in the picture or audio.
February 27

扩增现实与人类的认识

吴立新 (河北北方学院 信息系,河北 张家口 075029)

    扩增现实(Augmented Reality),也被称为AR,是指把虚拟信息添加到使用者感官知觉上,致使使用者所感知的世界为真实世界物体与虚拟物体所组合而成的技术。一般情况下,使用者头上带有一种AR装置,AR装置将图像和文字加入使用者视觉观察到的周围环境所产生的画面上,虚拟信息也可以以听觉、触觉或其他形式出现。AR系统会跟踪使用者头部的位置和方向,以使虚拟信息资料能对应使用者的视觉。例如,通过某种绘图软件可以将一个三维茶杯影像放到一个真实的碟子上,并且当用户在屋内走动时,可以使茶杯的相对位置不变,感觉就像一个真实的茶杯放在那里。扩增现实是从虚拟现实(VR)领域中延伸出来的技术,它和虚拟现实的不同之处在于:VR是通过软件用虚拟世界代替真实世界;AR是在实体对象上加入补充的虚拟信息。利用扩增现实补充的虚拟信息,我们看到街上的餐厅就可以知道餐厅里提供了哪些菜肴及菜肴的价格;看到电影院我们就可以看到哪些电影正在上映以及放映的时间;维修人员在检修设备的故障部位时可看到故障部位的一些说明;消防人员在救火时可看到失火建筑物的结构,以避免无法看到的危险因素;等等,这些都是扩增现实在日常生活中的实际应用。可以这么说,扩增现实补充的虚拟信息可以帮助我们对周围世界的事件作出更为有效地反应。如果从认识论的角度,真实世界的信息加上虚拟信息正是我们人类认识周围世界基本而有效的方式。

当我们谈论真实世界时,一般来说,这是指人类出现之前已经存在的自然界,或不受人类观察、活动影响的自然界。真实世界以及对真实世界的认识一起构成了人类赖以生存的基础。真实世界并不完全等同于人类认识的世界,人类认识的世界是人与真实世界相互作用的世界,正如恩格斯所指出的:“自然科学与哲学一样,直到今天还完全忽视了人的活动对它的思维的影响;它们一个只知道自然界,另一个又只知道思想。但是,人的思维的最本质和最切近的基础,正是人所引起的自然界的变化,而不单独是自然界本身;人的智力是按照人如何学会改变自然界而发展的。” [1]人类认识的世界不能不考虑人的影响,人类的认识也必然包含人这个因素。现代理论越来越强调在认识过程中人的能动作用。“一个关于人的新概念已经发展起来了:人现在被认为是一个被建造起来或被‘扔进’周围世界中的能动系统。他关于世界的知识,也不再被认为是一个公正的旁观者在看到了进入他眼帘的东西后所产生的认识;人类在他周围环境媒介中的存在方式,是作为他的认识的重要决定因素而出现的。后者是在处理人和环境关系的进程中形成的;并在认识形成后又反过来推动这种过程。” [2]现代心理和神经科学的研究表明,人类认识的世界是真实世界的信息和与人相关的附加信息混合而成的。与人相关的附加信息在人的认识过程中起着必不可少的作用,从人类的基本感知到高级认知都存在着这种附加信息。 
作为一个“能动系统”,人或其它动物可以看成一个“信息处理机”,接受周围世界的信息经过处理后作出反应。为了对周围世界近乎无限的信息作出有效地反应,我们大脑或神经系统采取的一个基本而又有效的策略(当然这是进化的结果)是删除所有感觉信息中的冗余部分,仅将“变化”作为信息传送。也就是说,大脑被告知的只是事物的变化,其余的部分都是大脑重建的。假如你盯着白色背景上的一个黄色圆形看时,视觉器官只将黄白边界的信息传送给大脑,其余重复的信息则由大脑来填充和重建。假使只有反映边界情况的视网膜细胞发送信息,大脑在理论上也应该可以重建整个圆形。心理学家拉马参准(V.S.Ramachandran)利用眼睛的盲点通过实验说明了这一点。他向被试者呈现一个类似油炸面包圈似的黄色环形。被试者必须使眼睛静止不动,并用单眼进行观察。拉马参准将黄色圆环放在被试者的视野内,使它的外沿落在睁开眼的盲区之外,而内侧则落在盲区之内。此时被试者报告说,他看到的不是一个黄色圆环而是一个完全均匀的黄色圆盘。[3]在这里,大脑填充了没有光感受器的盲区,或者说大脑试图用推测填补上盲点处应该有的东西,被试者看到了比真实感觉信息更多的信息。事实上,漫画家的漫画就是利用了人类感知的这个特点,漫画家只勾画几根线条,而我们却看到了一张富于表情的面孔。眼睛所得到的信息就是漫画家勾画的几条线,其余都是由大脑完成的,包括寻找物体并发现它们。心理学家格列高里(R.L.Gregory)认为:“我们不是只根据特定时间能得到的感觉信息来看世界,而是运用这种感觉信息来检验假设,确定面临的事物究竟是什么。实质上,知觉已经演变为假设的产生和检验过程。”[4]大脑根据感觉信息所作的假设或模型可以看作是一种附加信息。如果我们把感觉器官传递的信息看作是真实世界的信息,那么大脑重建的信息就是一种附加信息,每时每刻我们感觉到的是真实世界信息和附加信息的混合信息。大脑的假设或模型来源于我们以往的经验和基因中所体现的远古祖先的经验,它们可以模拟环境的基本情况,模拟那些在世世代代传承中没有变化的东西,通常情况下工作的非常成功。在极少的情况下会出现一些问题,这时我们就会体验到幻象或错觉。内克(Necker)立方体、卡尼莎(Kanisa)三角以及其他一些视错觉的存在恰恰为心理学家提供了某些有用的线索,使我们洞察到人类基本的感觉方式。我们随意地转动我们的眼睛,视网膜上的形象也会跟着发生移动,但我们周围的世界却保持稳定。用大脑在做假设或模型的观点可以这样解释:在大脑发出一个指令让眼肌去移动眼球时,大脑的模型开始考虑正常的眼球运动的影响,对视网膜上形象的移动作出预测并补偿,大脑模型的补偿使我们看到了稳定的世界。如果我们在原地转很多圈,然后站着不动并盯着一个地方看时,我们的感觉是周围的世界仍然在转动。尽管我们知道外面的景观一点都没有动,而且视网膜上的形象也没有动。这种转动的错觉也源于大脑模型的补偿:当我们站着不动时,视网膜上的形象没有任何转动,但耳朵(半规管中液体的流动)传来的信息告诉大脑在转动,于是大脑模型向相反的方向进行补偿转动,正是大脑模型的补偿转动成为我们眼睛中看到的“转动”。[5]可以说这个转动实际上是大脑的附加信息引起的转动。 
这种主要来源于基因中所体现的远古祖先经验的附加信息,往往存在于人或动物基本的感觉方式中。它们虽能满足人或动物基本生存的需要,却常常是呆板且固执的。心理学家海斯(A.Hess)曾做过这样一个试验。给小鸡安装上楔形棱镜,棱镜使映像向左或向右偏移7度。结果发现这些小鸡向米粒的旁边啄去,总是吃不到米,而且后来也一直没能对楔形棱镜引起的映像偏移产生适应。其他各种各样类似的实验也表明,与人类被试相比,动物对映像的偏移或翻转表现出很少的适应,只有猿类和人表现出对这些灾难性变化的知觉适应。通过对小猫所做的一个独到的实验,心理学家海尔得(R.Held)和海因(A.Hein)认为,要对变位映像产生适应,被试必须进行主动的矫正性动作。他们把两只小猫抚养在黑暗环境里,只有做实验时才让小猫见到光。他们在由中心支轴的一个横杆两端挂两只篮子,两只猫分别放在篮子里。篮子可以旋转,横杆也可绕支轴转动。一只猫四肢接触地板,主动地推动横杆转圈;另一只猫被动地装在篮子里,转圈由活动猫带动。这样,两只猫受到同样的视觉刺激,但一只能主动活动,另一只则是被动的。海尔得发现,那只活动的猫能完成视觉任务,而被动的猫实际上一直处于盲的状态。海尔得也用偏棱镜对人类被试进行过实验。他发现,主动的手臂运动(用手指触摸目标)是有效适应的必需条件。[4]瑞士心理学家皮亚杰(J.Piaget)通过对儿童智力的研究进一步指出,主动动作不仅是补偿作用以及最初知觉习得的关键,对于人类,而且是日益灵活的智力结构的基础。“主体以一系列的主动补偿作用来反应外部的干扰,而且主体以一种既是逆向动作的(回路系统或反馈)又是预见性的适应,来构成一个永久性的补偿系统。”[6]这种补偿系统的最终形式就是逻辑数学知识。人类正是把人的主动动作逐步内化为逻辑数学知识,并把逻辑数学知识附加到知觉材料上,逻辑数学知识和知觉材料一同构成了人类的高级认知。皮亚杰将我们认识的概念看作是知觉材料和逻辑数学结构的混合,这是基本感知是真实世界的感觉信息和大脑重建信息混合进一步的发展。知觉材料是指直接作用于客体,以便通过以客体本身为基础得到的信息材料。逻辑数学结构是指作用于客体,但是从人的主动动作本身而不是从客体抽象出来的认识。在这种情况下,逻辑数学结构是从赋予客体一些它们本身并不具备的特性(同时还保留它们原来的性质)开始的,涉及动作施加给客体的那些特性(而不是客体原来的性质)之间的联系。严格的说,逻辑数学结构涉及的是主体的动作而不是客体本身。因此从一个特定的时刻起,逻辑数学结构就不再需要作用于物理客体,并能够内化为可运用符号的运算。换句话说,这就是为什么在某一水平之上存在纯粹的逻辑、数学形式,而经验与其毫不相干的原因。这也就是为什么逻辑数学形式可以无限超越经验的原因,因为他们不受客体物理性质的限制。[7]顺序、类别、数目等特性并不是客体所具有的,而是源于人类主动动作的特性。因此当我们把顺序、类别、数目等特性附加到真实世界物体上时,正像我们把动作施加于物体一样,我们可以附加于任何物体。这就是为什么逻辑数学可应用于其他各门学科的原因。“人类的知觉不是独自起作用的,我们只有在知觉中增加某些东西才能发现客体的性质。而所增加的东西就是整个逻辑数学框架,只有它才能使知觉描述成为可能。”[7]这就是为什么其他各门学科都要用到逻辑数学的原因。正如人类的基本感知,人类的高级认知也是一种合成信息,其中的附加信息就是逻辑数学知识。 
从人类的基本感知到高级认知我们可以看到,人类认识的世界是由两部分信息混合而成的,一部分是来自于真实世界的信息,另一部分是与人相关的我们称之为“附加”的信息。我们利用基本感知的附加信息感知世界,利用高级认知的逻辑数学知识认知世界,其目的都是为了使我们更有效地作用于真实世界,或者说,使人类在与周围世界的相互作用中达到平衡。在人与人交往的人类社会,也存在着类似的附加信息。“源于生活、高于生活”的文学作品就是生活的真实部分附加上作者的虚构部分的混合,而阅读文学作品可以有效地帮助我们处理好人生中遇到的实际问题。正如前面所提到的,绘画也是人们利用附加信息的结果。“我们必须考虑一个具有双重性的现实:图画本身是一个客观的物体,而且我们的眼睛会以其本来面目看到它,就是挂在墙上的一个平面;但是它又能使人看到处于空间中的另外一些事物——人,船,建筑物。艺术家的任务就是表达这第二个现实而使我们抛开第一个现实,这样我们就看到了他所描绘的世界,而不只是在一个平展的表面上画着的彩色斑点。” [4]扩增现实作为人类更加主动地利用附加信息的结果,将逐步深入到我们生活的方方面面。当电脑用户的界面无所不在的时候,这个现实与虚幻的“混血儿”将会成为创造未来的新一代艺术家、设计师和故事大王的主要空间。扩增现实未来的蓬勃发展将是不可避免的,因为这是我们人类一贯采取的方式。 


参考文献 

[1]恩格斯.自然辩证法[M].北京:人民出版社,1971.208-209. 
[2]拉兹洛.系统哲学引论—一种当代思想的新范式[M].北京:商务印书馆,1998.233-234. 
[3]克里克.惊人的假说—灵魂的科学探索[M].长沙:湖南科技出版社,1998.57. 
[4]格列高里.视觉心理学[M]. 北京:北京师范大学出版社, 1986.208,197-198,155. 
[5]道金斯.解析彩虹—科学、虚妄和玄妙的诱惑[M].上海:上海科学技术出版社,2001.318. 
[6]皮亚杰,英海尔德.儿童心理学[M].北京:商务印书馆,1987.118. 
[7]皮亚杰.心理学与认识论—一种关于知识的理论[M].北京:求实出版社,1988.63-64.

January 03

Symbian操作系统

Symbian由摩托罗拉、西门子、诺基亚等几家大型移动通讯设备商共同出资组建的一个合资公司,专门研发手机操作系统。而Symbian操作系统的前身是EPOC,而EPOC是 Electronic Piece of Cheese取第一个字母而来的,其原意为"使用电子产品时可以像吃乳酪一样简单",这就是它在设计时所坚持的理念。

Symbian操作系统在智能移动终端上拥有强大的应用程序以及通信能力,这都要归功于它有一个非常健全的核心-强大的对象导向系统、企业用标准通信传输协议以及完美的sun java语言。Symbian认为无线通讯装置除了要提供声音沟通的功能外,同时也应具有其它种沟通方式,如触笔、键盘等。在硬件设计上,它可以提供许多不同风格的外型,像使用真实或虚拟的键盘,在软件功能上可以容纳许多功能,包括和他人互相分享信息、浏览网页、传输、接收电子信件、传真以及个人生活行程管理等。此外,Symbian操作系统在扩展性方面为制造商预留了多种接口,而且EPOC 操作系统还可以细分成三种类型:Pearl/Quartz/Crystal,分别对应普通手机、智能手机、Hand Held PC场合的应用。

Symbian是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,可以支持GPRS、蓝芽、SyncML、以及3G技术。最重要的是它是一个标准化的开放式平台,任何人都可以为支持Symbian的设备开发软件。与微软产品不同的是,Symbian将移动设备的通用技术,也就是操作系统的内核,与图形用户界面技术分开,能很好的适应不同方式输入的平台,也可以使厂商可以为自己的产品制作更加友好的操作界面,符合个性化的潮流,这也是用户能见到不同样子的symbian系统的主要原因。现在为这个平台开发的java程序已经开始在互联网上盛行。用户可以通过安装这些软件,扩展手机功能。

在Symbian发展阶段,出现了三个分支:分别是Crystal、Pearl和Quarz。前两个主要针对通讯器市场,也是出现在手机上最多的,是今后智能手机操作系统的主力军。第一款基于Symabian系统的手机是2000年上市的某款爱立信手机。而真正较为成熟的同时引起人们注意的则是2001年上市的诺基亚9210,它采用了Crystal分支的系统。而2002年推出的诺基亚7650与3650则是Symbian Pearl分系的机型,其中7650是第一款基于2.5G网的智能手机产品,他们都属于Symbian的6.0版本。索尼爱立信推出的一款机型也使用了Symbian的Pearl分支,版本已经发展到7.0,是专为3G网络而开发的,可以说代表了当今最强大的手机操作系统。此外,Symbian从6.0版本就开始支持外接存储设备,如MMC,CF卡等,这让它强大的扩展能力得以充分发挥,使存放更多的软件以及各种大容量的多媒体文件成为了可能。

Symbian按版本来分,继2005年二月Symbian推出一款新的手机操作系统软件OSv9.0,到目前为止已先后有了6.0、6.1、7.0、7.0s、8.0、9.0几种版本。1999年3月Symbian推出了Symbian5.0操作系统,它的主要内核集合了网络,无线文字,电子邮件,名片薄以及个人信息助理,同时还具有支持标准网络页面的浏览器,配合java语言的支持,使得Symbian可以运行小型的应用程序。不过这个版本采用的机型甚少,基本上与EPOC没有太多的差别。

Symbian 6.0则在5.0的基础上增加了,GPRS、WAP1.2浏览器以及蓝牙技术的支持,用户可以运行第三方基于C++和J2ME开发的程序。而Symbian 6.1则是和Symbian 6.0相比主要增加了对USB的支持。Symbian 6.0的主要特点是: 支持语音通话和数据通信 ,支持Bluetooth和WAP ,配备安全性功能(SSL,HTTPS,WTLS) ,采用16bit Unicode,支持多语言显示 ,采用“PersonalJava 3.0”和“JavaPhone 1.0” 。

Symbian 7.0则支持多模式和3G手机(专区),可以让制造商们可以面向全世界推出可以运行于所有网络之上的Symbian OS手机,而且可以不对代码进行重大改动的情况下就可以重新使用许多目前已有的软件应用。7.0包含一些新的通讯、消息、联网和应用开发技术,并对一些与安全和认证相关的功能进行了改进。Symbian OS 7.0的其他功能包括:支持灵活的用户界面,例如Nokia的Series 60;支持几种音频/图像格式和许多面向游戏开发人员的API;全力的加密和认证管理,基于安全通讯协议(包括HTTPS、WTLS和SSL)及认证的应用安装;和Over-the-air(OTA)SyncML同步支持。

2004年2月,Symbian在授权LG等公司的时候,发布了Symbian8 .0版本。该版本改善了实时系统性能,提高了原有操作系统的兼容能力。此外,Symbian OS 8.0的软件工具改进了远程接入控制系统功能,运用调节装置消除手机用户使用增值服务时会受到的干扰。这个系统包含了绝对现代化的多媒体和Java设备,支持多种标准,其中包括JSR118, CLDC1.1 (JSR139),MobileMedia (JSR135),3D图像数据(JSR184), JTWI 1.0 c(JSR185)。最后,新版OS还支持SDIO。

2005年二月,英国著名手机软件制造商Symbian推出一款新的手机操作系统软件OSv9.0,它支持更高像素数码相机与三维游戏动画。该操作系统软的快速处件对运行环境要求较高,目前运行在由英国芯片开发商ARM提供理器芯片,并且需要相关设计与其它工具的支持来帮助手机生产商在开发其它版本时能够节约时间和降低成本。该软件可以处理200万像素的数字图片,甚至能够向无线耳机传送立体声音乐,更可喜的是,它不需要同步软件就能够从PC上导出MP3文件。

Series60是智能手机中应用最广泛的系统版本。Series60系统还分为6.0 OS、7.0 OS和8.0 OS三个版本。区别Series60的最直观因素在于屏幕的分辨率,Series60支持的分辨率为176*208像素,但以后S60还会支持240*320像素、352*416像素等。S60是拥有最多第三方软件或游戏的界面。

识别Series80界面最简单的办法就是看手机是否支持全键盘,例如诺基亚高端系列的9210、9300甚至9500,都采用全键盘的。识别Series90的最简便方法是:会采用触摸屏幕,分辨率也高达640*320像素。Series90应该是手机游戏、娱乐的最强平台,但因为采用Series90界面的手机型号太少,第三方软件的支持很少,所以S60依旧是玩家首选。

S40或S60是指诺基亚手机的上层平台。S60都是智能手机,所用底层操作系统是Symbian。诺基亚128*128屏幕都是S40 1.0。而128*160是S40 2.0。

另外S40中,3100支持java MIDP 1.0,所以最大支持64KB的java;6230支持java MIDP 2.0,所以最大支持128KB的java40和60,包括90,还有以前的30,都是针对与nokia不同的操作系统而言40,是nokia自行研制的手机操作系统,面对于中低端客户,支持kjava的开发,其处理器效率不高,内存偏低,屏幕大小128*128。

S60,是基于Symbian 操作系统,也就是以前的epoc,其处理器为arm9,处理效率很高,内存颇大,屏幕大小为208*176同时支持kjava和C++的开发90,属于手持式设备,也是Symbian 操作系统但是功能强劲,等同于一个PDA了。

其实技术来上说,S40跟S60是区别在系统平台上,就好像WIN98跟WIN2000,但手机不像PC,屏幕大小的确是个关口,以致于平台不容易做到向下兼容,但有的游戏也同样做出不同版本来的。

当然啦,S40比S60不单单是屏幕上的差距,更大的是性能上的差距,一般来说,S60开发出来的游戏质量都比S40高好多,但可惜,S60比S40的机子又贵上了很多啊. 
在很多网站上,一些对Symbian不是很了解的人们都以为Series 60和Series 80是不同的Symbian操作系统版本。于是就出现了比较混乱的称呼。比如:“Series 60操作系统”和“Symbian 80操作系统”的笑话。

其实,Symbian操作系统是Symbian公司开发的手机操作系统,它是一个独立于手机硬件的操作系统,而且它是一个开放的平台。这一点有点像Linux,市面上常见的有红帽等用户界面,但是它们都是在Linux系统下开发出来的,不过界面有些不同罢了。

所以,很多手机制造厂商在自己公司所生产的手机上做了些界面上的修改,于是就出现了S60,S80等名称。但是它们不是操作系统,而是在以操作系统为基础而开发出来的用户使用界面平台。


目前,Series 60有两个主要版本:第二版(2nd Edition)和第三版(3rd Edition)

Series 60 Platform 2nd Edition 
Series 60 Platform 2nd 2nd Edition最初于2003年发行,首个被实现的终端是诺基亚6600手机。通过扩展,它已经被加入了三个Feature Packs,从而引入了令人激动的新功能,同时却不失平台兼容性。有了这些新的Feature Packs,Series 60 Platform 2ndEdition就向各种智能电话提供了极为出色的性能,从而满足所有主流市场运营商、企业、开发伙伴,以及消费用户的各种各样的功能需求。

用户界面 
Series 60 用户界面是诺基亚投入了最深入研究、进行了最彻底开发的图形化用户界面。作为Series 60 Platform的一部分,它能确保用户在各个厂商的所有基于Series 60 Platform的设备上具有一致的用户界面。Series 60 Platform被设计成能单手操作各种高级的、用户友好的各类数据服务。Series 60用户界面有一个彩色显示屏,支持多种屏幕解析度(176x208、240x320(QVGA)及352x416)。它支持各种各样不同的功能,包括两个功能键、五方向导航键、一个应用与应用切换键,及呼叫和呼叫终止键。该用户界面使用一个标准的12键键盘,包括字母。界面中针对文本输入设置了清除键和编辑键。

 

应用 
Series 60 Platform提供了范围广泛的丰富应用和应用实现器。其中包括如先进的电话应用、统一消息中心(Unified Messaging Center,MMS、SMS、Email)、各种OMA即时消息及精灵(Presence)应用、一个完整的移动互联网浏览器(HTML 4.01、XHTML MP,& WAP CSS)、3GPP兼容的流客户端(RealOne Player)、Java MIDP 2.0 环境、应用管理器、OMA数字版权管理(转发锁定)、SyncML数据同步及设备管理、OMA客户端配置、媒体廊、摄录机应用、图像阅览器、支持多重 PDP场景的连接管理器、移动钱包,以及多种个人信息管理应用。

网络支持 
Series 60 platform中包括对GSM/GPRS/EDGE、CDMA及双模WCDMA-GSM配置的支持。双模WCDMA-GSM向运营商们的各种3G服务提供了全方位的支持, 从而为在各种移动设备上实现视频电话并提供先进的流能力和高级浏览功能铺平了道路。

Series 60 Platform 3rd Edition

 

Series 60 Platform 3rd Edition是新一代全球领先的智能手机软件平台。全新的Series 60 Platform 3rd Edition加入了许多新鲜功能,同时又保持2nd edition的所有功能。新版Series 60 Platform 3rd Edition专注于增强的多媒体及企业应用功能、可持续发展的应用业务支持、 精益求精的客户定制能力,及不断改进的平台结构。 
因为3rd Edition,Series 60 Platform现在更适合高容量的客户市场。Series 60 Platform 3rd Edition中得到改进的结构灵活性使Series 60手机制造商们能创建出既高度细分成本优化的各种终端,以满足用户的不同需求。这种新结构还包括内置的安全特性,从而向用户和开发者提供了更为安全更为信任的环境。

支持企业和多媒体应用 
广大企业将得益于Series 60 Platform 3rd Edition的内置业务特性。诸如日程表、数据同步,及email等特性都得到了改进以适应针对各种各样企业环境的使用方便性。新加入的内置安全特性提供了对业务敏感数据的更多保护。Series 60 Platform 3rd Edition让获授权厂商们能构建更强健更多样化的各种企业级终端。

这一新版本还支持移动多媒体的成长。对OMA DRM 2.0 for music的支持既改善了使用性也改进了受保护内容的安全性。新版音乐播放器使得在线访问音乐内容更为便捷。有了全新的Series 60 Platform 3rd Edition,可以更为方便地在PC和移动终端之间传送将音乐及其他内容,这是因为:基于这个新版本的各种智能电话在功能上能被视为一个普通的USB储存棒。

面向开发伙伴的更多业务 
对开发伙伴来说,Series 60 Platform 3rd Edition提供了更多针对高终端持有量的商业机会。新型安全框架和内置内容保护改善了对开发伙伴投资的保护,但同时又仍然允许自由软件应用的使用。诸如可扩展用户界面这类特性功能发现API将使开发伙伴们能创建更为智能化的应用,同时提供更佳的用户体验。

Series 60 Platform 3rd Edition,以其全新的结构和更好的多媒体及企业应用特性,正在全力走上其发展的康庄大道,以满足各获授权厂商、运营商,及用户的严苛需求。运行于 Symbian OS v9之上的Series 60 Platform 3rd Edition将于2005年中面市。 
 



《大话西游外传》贺岁新作,送豪宅、送你5000元压岁钱
May 30

关于在JSP的EL

JSP 2.0支持直接在JSP面中使用 EL 表达式。些表达式可以用于面上任何地方的动态文本,就像传统HTML标签或者自定JSP标签动态属性表示的文本一。表达式出就像使用JSTL c:out标签

<p>Hello, ${user.firstName}<br />

<html:text value="${sessionScope.foo.bar[3]}"/>

了使用大的功能,必使用上述两种方法之一使EL有效。假如您的Web用使用的是Servlet 2.4版本,那么EL会通方法开启。可以在用的web.xml文件中明您正在使用2.4版本。文件最开始部分可能和下面有些似:

<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">

如果使用的是2.3或者更早的版本,需要在JSP开始处设置如下指令:

<%@page isELIgnored="false"%>

如果使用的是2.4 DTD不需要直接page指令,因EL法不会被忽略。假如不确定或者存在某些疑,就直接page指令,它不会生任何问题

April 17

谈论 The Joel Test: 软件开发成功 12 法则

 

引用

The Joel Test: 软件开发成功 12 法则
作者: 周思博 (Joel Spolsky)
译: 李国华 Frank Li
编辑: 孙雯辰 Rosemary Sun
2000年8月9日

有没有听说过 SEMA?这可是衡量一个软件开发组好坏的很深奥的系统。别介,等一下!别按那个联接! 给你六年你也搞不清这玩意。所以我自己随便攒了一套衡量系统,信不信由你,这系统,三分钟就可掌握。你可以把省下的时间去读医学院了(译注:美国的医学院可是要读死人的!)。

Joel 衡量法则

  1. 你们用不用源文件管理系统?
  2. 你们可以把整个系统从源码到CD映像文件一步建成吗?
  3. 你们每天白天都把从系统源码到CD映像做一遍吗?
  4. 你们有软件虫管理系统吗?
  5. 你们在写新程序之前总是把现有程序里已知的虫解决吗?
  6. 你们的产品开发日程安排是否反映最新的开发进展情况?
  7. 你们有没有软件开发的详细说明书?
  8. 你们的程序员是否工作在安静的环境里?
  9. 你们是否使用现有市场上能买到的最好的工具?
  10. 你们有没有专职的软件测试人员?
  11. 你们招人面试时是否让写一段程序?
  12. 你们是否随便抓一些人来试用你们的软件?

 

Joel 衡量法则”好就好在你只需照着逐条回答以上问题,然后把所答为“是”的问题算成一分,再加起来就可以了,而不需要去算什么每天写的程序行数或程序虫的平均数等等。但咱丑话说在前面,可别用Joel 衡量法则”去推算你的核电站管理程序是否可靠。

如果你们得了12分,那是最好,得了11分还过得去,但如果只得了10分或低于10分,你们可能就有很严重的问题了。严酷的现实是:大多数的软件开发公司只能得到2到3分。这些公司如果得不到急救可就玄了,因为像微软这样的公司从来就没有低过12分。 

当然,一个公司成功与否不仅仅只取决于以上标准。比如,让一个管理绝佳的软件公司去开发一个没有人要的软件,那开发出来的软件也只能是没有人要。或反过来,一帮软件痞子以上标准一条也达不到,没准照样也能搞出一个改变世界的伟大软件。但我告诉你,如果不考虑别的因素,你只要能达到以上12条准则,你的团队就是一个可以准时交活的纪律严明的好团队。

1. 你们用不用源文件管理系统?
我用过商业化的源文件管理系统,我也用过免费的系统,比如CVS,告诉你吧,CVS挺好用。但如果你根本就没有用源文件管理系统,那你就是累死了也没法让你的程序员出活:他们没法知道别人在改动什么源文件,写错了的源文件也没法恢复。

使用源文件管理系统还有一大好处是,由于每一位程序员都把源文件从源文件管理系统里提出来放到自己的硬盘里,几乎不会发生丢失源文件的事,最起码我还没听说过。

2. 你们可以把整个系统从源码到CD映像文件一步建成吗?
这句话问的问题是:从你们最新的源码开始到建立起能够交出去的最后文件,你们有多少步骤要做? 一个好的团队应该有一个批处理程序一步便可将所有的工作做完,像把源文件提取出来,跟据不同的语言版本要求(英文版,中文版),和各种编译开关(#ifdef)进行编译,联接成可执行文件,标上版本号,打包成CD映像文件或直接送到网站上去,等等等等。

如果这些步骤不是一步做完,就有可能出人为差错。而且当你很接近产品开发尾声的时侯,你可能很急于把最后几个虫解决,然后尽快地交活。如果这时候你需要做20步才能把最终文件制出来,你肯定会急得要命,然后犯一些很不该犯的错误。

正因为这个原因,我工作的前一个公司从用WISE改用InstallShield:我们必需要让我们的批处理程序完全自动化地,在夜里,被NT scheduler起动把最终文件制成,WISE不能被NT scheduler启动而InstallShield可以,我们只能把WISE扔掉。(WISE的那帮家伙向我保证他们的下一代产品一定支持在夜里自动运行.)

3. 你们每天白天都把从系统源码到CD映像做一遍吗?
你们有没有遇到过这样的事情:一个程序员不小心把有毛病的源码放进源文件管理系统,结果造成最终文件没法制成。比如,他建立了一个新源文件但忘了把它放进源文件管理系统,然后他高高兴兴锁机回家了,因为在他的机器上整个编译得很好。可是别人却因为这没法工作下去了,也只好闷闷地回家了。

这种造成最终文件没法制成的情况很糟糕,但却很常见。如果每天在白天就把最终文件制一遍的话,就可以让这种事不造成太大危害。在一个大的团队里,要想保证有毛病的源码及时得到纠正,最好每天下午(比如午餐时)制一下最终文件。午餐前,每个人都尽可能地把改动的源文件放到源文件管理系统里,午餐后,大家回来,如果最终文件已经制成了,好!这时大家再从源文件管理系统里取出最新的源文件接着干活。如果最终文件制作出错,出错者马上修正,而别人还可接着用原有的没问题的源程序干活。

在我以前曾干过的微软Excel开发组里,我们有一条规定:谁造成最终文件制作出错,谁就得被罚去负责监视以后的最终文件制作过程,直到下一位造成最终文件制作出错的人来接任他。这样做不仅可以督促大家少造成最终文件制作出错,而且可以让每个人都有机会去了解最终文件制作过程。

如果想更多了解这个话题,可以读我的另一篇文章 Daily Builds are Your Friend.

4. 你们有软件虫管理系统吗?
不论你有任何借口,只要你写程序,哪怕只是一个人的小组,如果你没有一个系统化的管理软件虫的工具,你写的程序的质量一定高不了。许多程序员觉得自己可以记得自己的软件虫。没门!我从来记不住超过2到3个软件虫。而且第二天早上起床后忙着去买这买那,好不容易记住的软件虫早忘掉了。你绝对需要一个系统来管住你的那些虫。

软件虫管理系统功能有多有少。但最少要管理以下几种信息:

  • 如何重复软件虫的详细步骤
  • 正常情况(无虫)应是怎样
  • 现在情况(有虫)又是怎样
  • 谁来负责杀虫
  • 问题有没有解决

如果你觉得用软件虫管理系统太麻烦,可以简化一下,建立一个有以上5列的表来用就行了。

如果想更多了解这个话题,可以读我的另一篇文章Painless Bug Tracking.

5. 你们在写新程序之前总是把现有程序里已知的虫解决吗?
微软Windows Word的第一版的开发项目曾被认为是“死亡之旅”项目。好象永远也做不完,永远超时。所有人疯狂地工作,可怎么也完成不了任务。整个项目一拖再拖,大家都觉得压力大得受不了。最后终于做完了这个鬼项目,微软把全组送到墨西哥的Cancun去度假,让大家坐下来好好想想。

大家意识到由于项目经理过于强求程序员们按时交活,结果大家只能匆匆地赶活,写出的程序毛病百出。由于项目经理的开发计划并没有考虑杀虫的时间,大家只能把杀虫的任务往后推,结果虫越积越多。有一个程序员负责写计算字体高度的程序,为了图快,居然写一行“return 12;”了事。他指望以后的质检人员发现这段程序有毛病后报告他再改正。项目经理的开发计划事实上已变成一个列写程序功能的清单,而上面列的所谓程序功能迟早都会成为软件虫。在项目总结会上,我们称这种工作方法为“绝对劣质之路”。

为了避免再犯这个错误,微软制定了“零缺陷策略”。许多程序员嘲笑这个策略,觉得经理们似乎在指望靠行政命令来提高产品质量。而事实上“零缺陷策略”的真正含义是:在任何时候,都要把解决现有程序里的问题作为首要问题来抓,然后再去写新程序。

为什么要这样做呢?

一般说来,你越不及时地杀虫,杀虫的代价(时间和金钱)就会越高。比如,你写程序时打错了一个字,编译器马上告诉你,你很容易就把它改正。你刚写好的程序在第一次运行时发现了一个问题,你也很快就能解决它,因为你对你刚写的程序还记忆犹新。如果你运行你的程序时发现了一个问题,可这个程序是几天以前写的,你可能就需要折腾一会儿,还好,你还大致记得,所以不会花太长时间。但如果你在你几个月以前写的程序里发现了问题,就比较难解决了,因为你已经忘了许多细节。这时候,你还没准儿正忙着杀别人程序里的虫呐,因为这家伙到加勒比海阿鲁巴岛度假去了。这时候,解决这一堆问题的难度不亚于从事尖端科学研究。你一定得小心翼翼地,非常系统化地从事,而且你很难知道多长时间你才能把问题解决。还有更糟糕的,你的程序已交到用户手里了,才发现问题,那你就等着套腰包吧。

总结起来,就一条:越早解决问题,越容易解决。

另外还有一个原因,刚写的程序里发现问题,你能够比较容易地估算解决它的时间。举个例子,如果我问你写一段程序去把一个列表排序需要花多长时间,你可以给我一个比较确切的估计。如果你的程序,在Internet Explorer 5.5安装以后,工作不正常。我问你要多长时间把这个问题解决,你恐怕都估计不出来,因为你根本就不知道是什么原因造成了这个问题。你可能要花三天时间才能解决,也有可能只花两分钟。

这个例子告诉我们,如果你的开发过程中有许多虫没有及时解决,那你的开发计划肯定不可靠。反过来,如果你们已经把已知的虫全部解决了,要做的事只是写新的程序,那你的开发计划就会比较准确。

把已知的虫全部解决,这样做还有一个好处:你可以对竞争对手快速反击。有些人把这叫着“让开发中的产品随时处在可以交给用户的状态”。如果你的竞争对手推出一个新的功能想把你的客户抢走,你可以马上在你的产品里加上这个功能,立刻将新产品交付用户,因为你没有一大堆积累下来的问题要解决。

6. 你们的产品开发日程安排是否反映最新的开发进展情况?
为什么我们需要开发日程安排?如果你的程序对公司的业务很重要,那公司就必须知道你的程序何时能写完。满世界的程序员都有一个通病,那就是他们都搞不清自己何时才能写完要写的程序。他们都只会对管理人员嚷嚷:“等我做好了就做好了!”

不幸的是,程序写完了,事远远没完。作为一个公司,在发行产品之前,还有许许多多的事情要做:何时做产品演示?何时参加展览会?何时发广告?等等。所有的这一且都依赖于产品的开发日程安排。

定下产品开发日程安排,还有一个很关键的好处:它逼着你只做叫你做的功能,甩掉那些可要可不要的功能,否则这些可要可不要的东西有可能把你缠住。请看featuritis

定下产品开发日程安排,按照它开发,这并不难做,请看我的另一篇文章 Painless Software Schedules ,这篇文章告诉你一种制订产品开发日程的好方法。

7. 你们有没有软件开发的详细说明书?
写软件开发的详细说明书就像是绣花:人人皆知是好东西,可没谁愿意去做。 

我不知道这是为什么,也许是因为多数程序员天生就不喜欢写文章。其结果是,一个开发组里的程序员们,宁可用程序来沟通,也不愿写文章来表达自己。他们喜欢上来就写程序,而不是写什么详细说明书。

在产品的前期设计过程中,如果你发现了一些问题,你可以轻易地在说明书里该几行字就行了。一旦进入了写程序的阶段,解决问题的代价就要高得多了,不仅仅是时间上的代价,而且也有感情上的代价,因为没人愿意将自己做成的东西扔掉。所以这时候解决问题总有一些阻力。

没有产品开发详细说明书就开始写程序,往往会导致程序写的乱七八糟,而且左拖右拖不能交付使用。我觉得这就是Netscape遇到的问题。前四个版本的程序越写越乱,以至管理人员作出一个愚蠢的决定:把以前的程序统统扔掉,重新写。后来他们在开发Mozilla时又犯了同样的错误。产品越做越乱,完全失控,花了几年的时间才进入内部测试阶段。

我最得意的理论是:如果让程序员们接受一些写文章的训练如an intensive course in writing,他们就可能会改变一下不写说明书的坏习惯,而以上所说的糟糕的例子就有可能少发生。

另一个解决问题的办法是:雇一些能干的项目主任,专职写产品开发详细说明书。

不论采用以上哪种方法,道理只有一个:在没有产品开发详细说明书之前,决不可写程序。

如果想更多了解这个话题,可以读我的四篇文章

8. 你们的程序员是否工作在安静的环境里?
当你让你的智囊们工作在安静,宽敞,不受人打扰的环境里,他们往往能更快地出活,这已是不争的事实。有一本经典的讲软件开发管理的书Peopleware 把这个问题阐述得很清楚。

问题在于,我们都知道最好不要打断这些智囊们的思路,让他们一直处于他们的最佳状态中,这样他们就能全神贯注,废寝忘食地工作,充分发挥他们的作用。作家,程序员,科学家,甚至篮球运动员都有他们的最佳状态。

问题还在于,进入这个最佳状态不容易。我觉得平均起来,需要15分钟才能进入最佳状态,达到最高工作效率。有时侯,当你疲劳了或已经高效率地干了许多工作了,你就很难再进入这个状态,只好干点杂事打发时间,或上网,玩游戏等。

问题更在于,你很容易就被各种各样的事打扰,被拽出你的最佳状态:噪音啦,电话啦,吃午饭啦,喝杯咖啡啦,被同事打扰啦,等等。如果一个同事问你一个问题,只花你一分钟,可你却被拽出你的最佳工作状态,重新回到这个状态需要花半小时。你的工作效率因此而受到很大影响。如果让你在一个嘈杂的大房间里工作(那帮搞网站的家伙还就喜欢这样),边上的推销员在电话里大叫大嚷,你就很难出活,因为你进入不了你的最佳工作状态。

作为程序员,进入最佳工作状态更难。你先要把方方面面的细节装在脑子里, 任何一种干扰都可能让你忘掉其中某些东西。你重新回来工作时,发现好些东西记不起来了(如你刚用的局部变量名,或你刚才的搜索程序写到哪里了等)你只好看看刚写的程序,回忆一下,慢慢地回到你刚才的最佳工作状态。

我们来做一个简单的算数。假设一个程序员被打扰一下,哪怕只有一分钟,他却需要花15分钟才能回到最佳工作状态(统计资料显示如此)。我们有两个程序员:杰夫和愚夫, 坐在一个大办公区里工作。愚夫想不起来用什么函数去进行Unicode 字符串复制。他可以花30秒查一下,或者花15秒问杰夫。由于他坐在杰夫的旁边,他就选择去问杰夫。杰夫被打扰了一下,耽误了他15分钟,节省了愚夫15秒钟。

现在,我们把他们俩用墙和门隔开,让他们俩分坐在不同的办公室里,愚夫又想不起来什么涵数名,自己查一下要花30秒;问杰夫,要花45秒,因为他要站起来走过去问(对这帮程序员来说,这可不是件简单的事,看看他们的体质就知道为什么了)。所以他选择自己去查。愚夫损失了30秒钟,可是杰夫少损失了15分钟。哈哈!

 9. 你们是否使用现有市场上能买到的最好的工具?
用可编译语言写程序恐怕是这世界上为数不多的还不能随便抓一个破计算机就可以做的事。如果你用于编译的时间超过几秒钟,你就应该换一台最新最快的计算机了。因为如果编译时间超过15秒,程序员们就会不耐烦,转而去上网看一些无关的东西比如The Onion,弄不好一看就是好几个小时。

调试图形界面软件时,用只有一个显示器的计算机不仅不方便,有时甚至是不可能。用有两个显示器的计算机,要方便许多。

程序员们经常不可避免地要去画一些图标或工具栏图。多数程序员没有一个好的图形编辑器可用。用微软的“画笔”软件去画图标简直是笑话,可事实上大家还就在这样做。

我的前一个工作,系统管理员成天给我发来自动警告,说我在服务器上使用了超过220兆的空间。我告诉他,按现在硬盘的价钱,超出这点空间的价钱远低于我用的厕纸的价钱。让我花10分钟去清理我的文件绝对是我工作效率的莫大浪费。

一流的开发组绝不折腾它的程序员。工具落后会让人用起来觉得难受,一点点积累起来,会让程序员们成天叫苦,而一个成天叫苦的程序员绝对不会是一个高消率的程序员。

再添一句,要想使你的程序员高兴,最好的办法就是给他们买一些最新最棒的工具软件。用这种方法可以让他们乖乖地为你工作,这可比用高薪吸引他们来得便宜得多。

10. 你们有没有专职的软件测试人员?
如果你的开发组里没有专职的测试人员,或没有足够的测试人员(两到三个程序员就应该配一个测试员),那你的产品就一定是毛病百出,或者你在花100美元一小时的代价去雇你的程序员去做30美元一小时就可以雇到的测试员的工作。想在测试员身上省钱,绝对是打错了算盘。我真不明白为什么这么多人算不过来这笔帐。

我有另一篇文章专门讲这个,请看Top Five (Wrong) Reasons You Don't Have Testers

11. 你们招人面试时是否让写一段程序?
我问你,让你去招一个魔术师,你是否连看都不看一眼他的魔术玩得怎样就要他?当然不会!

你举办婚宴,要请一个厨师,你是不是连嚐也不嚐他做的菜好吃不好吃就要他?我想也不会。

奇怪的是,几乎每天都有这样的事发生:在面试一个程序员时,简历写得漂亮,谈得热火朝天,问几个简单的问题(如CreateDialog()DialogBox()有什么区别?这种问题,查一下帮助文件就知道了),人就招进来了。你真正应该关心的不是这人记不记得这些写程序的边边角角的东西,而是他能否出产品!更糟糕的是,许多问题是知道就知道,不知道,想死也不知道的问题。

不能这样下去了!在面试时,请一定要让写一段程序。在我的这篇文章里Guerrilla Guide to Interviewing,我有许多好建议。

12. 你们是否随便抓一些人来试用你们的软件?
这句话的意思是,让你从走道里走过的人中,随便抓几个人来,让他们试用你的软件。如果你抓五个人来用你的软件,那你就可能把你的程序中95%的不方便使用的地方找出来。

要想让用户去买你的软件,你必须要设计好你的用户界面。这其实并不难。你可以读我的free online book on UI design打打基础。

用户界面设计的关键是,如果你让几个人去用你的软件(五六人可能就够了),你可能很快就找出最大的问题。想知道为什么吗,请读Jakob Nielsen's article。只要你坚持随便抓一些人来试用你的软件,你就能将你的用户界面设计得越来越好。

The Joel Test 软件开发成功12法则的四个实用领域

  1. 用该法则来衡量你的软件开发组,告诉我你得的分数,让我来品头论足。
  2. 如果你是开发组的经理,用该法则来使你的组提高效率。如果你们一上来就能得12分,你就 别再打扰你的程序员了 专心致志别让公司的管理人员来烦你的程序员吧。
  3. 如果你在找一份程序员工作,问问你未来的老板他能得几分,如果分数很低,你一定要确信你进去后有足够的权力来改变这一切,否则,最好躲远点,不然,你在那儿会很难受的。
  4. 如果你是投资者,正在决定是否向一个软件公司投资,或者你的软件公司正在决定是否兼并另一个软件公司,该法则可以帮你做决定。 

本文最先用英文出版,题为 The Joel Test: 12 Steps to Better Code  
November 27

htpasswd

名称
     htpasswd - ユーザ認証ファイルの作成と更新

書式
     htpasswd [ -c ] [ -m | -d | -s | -p ] passwdfile username
     htpasswd -b [ -c ] [ -m | -d | -s | -p ] passwdfile username
     password
     htpasswd -n [ -m | -d | -s | -p ] username
     htpasswd -nb [ -m | -d | -s | -p ] username password

解説
     htpasswd は、HTTP ユーザの基本認証のためユーザ名とパスワードを記録するためのフラットファイルの作成と更新に使用されます。
       htpasswdが出力ファイルに書き込めない、また更新するために読みとることができないなど、ファイルにアクセスすることができない場合、エラーステータスを返し、変更を行いません。

       httpd Apache ウェブサーバは リソースの使用を htpasswd によって作成されるファイルにリストされたユーザだけに制限することができます。このプログラムはフラットファイルに記録されたユーザ名とパスワードの管理のみを行なうことができます。
       とは言っても、他のタイプのデータの記録のために使用してもパスワード情報を暗号化して表示することができます。
       DBM データベースを使用するためには dbmmanage を見てください。

       htpasswd は Apache 用に改造されたバージョンの MD5 かまたはシステムの crypt() ルーチンを使用してパスワードを暗号化します。
       htpasswd で管理されたファイルは両方のタイプのパスワードを含むかもしれません; あるユーザレコードが MD5 で暗号化されたパスワードであるのに対し、同じファイルの他のユーザは crypt() により暗号化されたパスワードであるかもしれません。

       このマニュアルページはコマンドラインの引数を挙げているだけです。
       httpd のユーザ認証設定に必要なディレクティブ の詳細は、Apache 配布物や <URL:http://www.apache.org/> で見つけることができるApache マニュアルを参照してください。


オプション
     -b   バッチモードの使用 すなわち 、プロンプトではなくコマンドラインからパスワードを得ます。パスワードがコマンドライン上で明確に目に見えるので、このオプションは極めて注意して使用されるべきです。

     -c   パスワードファイルを作成します。パスワードファイル がすでにある場合、上書きされて切り捨てられます。 このオプションは-n オプションと組み合わせることができません。

     -n   ファイルを更新するのではなく標準出力に結果を表示します。
          非テキストデータが含まれていて Apache に受け入れられるパスワードレコードを生成するのに有益です。
          このオプションはパスワードファイルの引数(通常は最初のもの)が省略されるので、コマンドラインの文法が切り替わります。
          -c オプションと組み合わせることはできません。

     -m   パスワードに Apache 用に改造された MD5 アルゴリズムを使用します。このアルゴリズムにより暗号化されたパスワードは、Apache 1.3.9 またはそれ以降が動いているあらゆるプラットホーム (Windows, Unix, BeOS, その他) に移植可能です。
          Windows と TPF ではこのフラグがデフォルトです。

     -d   パスワードに crypt() 暗号化を使用します。Windows と TPF以外のすべてのプラットフォームでデフォルトです。
          おそらくすべてのプラットフォームでの htpasswdによりサポートされますが、Windows と TPF の httpdサーバによるサポートはありません。

     -s   パスワードに SHA 暗号化を使用します。LDAP ディレクトリ変換フォーマット (ldif) を使用する Netscape サーバからの/への 移行を容易にします。

     -p   プレーンテキストパスワードを使用します。 htpasswdがすべてのプラットフォームでの作成をサポートしても httpdデーモンは Windows と TPF 上では、プレーンテキストのパスワード のみ受付けるでしょう。

     passwdfile
          ユーザ名とパスワードが含まれているファイル名です。
          もし -c が与えられた場合、ファイルが存在しないならばファイルを作成し、また存在しているなら、上書きされます。

     username
          passwdfile に作成または更新するユーザ名です。
          username が存在しない場合はエントリを追加します。
          存在する場合にはパスワードを変更します。

     password
          ファイルに暗号化されて記録されるプレーンテキストのパスワードです。 -b フラグでのみ使用されます。

終了ステータス
     ユーザ名とパスワードが首尾よく passwdfile に追加または更新された場合、htpasswd はゼロステータス ("真") を返します。
     htpasswd は、ファイルアクセスの問題に遭遇した場合は1、コマンドラインに関する文法の問題があった場合は2、対話式でパスワードを入力した際に確認のエントリがマッチしなかった場合は3、操作が中断された場合は4、(ユーザ名、ファイル名、パスワード、または最後に計算されたレコード) において値が長すぎる場合は5、ユーザ名に不正な文字が含まれている(RESTRICTIONS セクションを見てください) 場合は 6 を返します。


     htpasswd /usr/local/etc/apache/.htpasswd-users jsmith

          ユーザ jsmith のパスワードを追加または修正します。
          ユーザはパスワードの入力を促されます。Windows システム上で実行された場合、パスワードは Apache MD5 アルゴリズムを使用して暗号化されるでしょう。他の場合は、システムの crypt()ルーチンが使用されるでしょう。ファイルが存在しない場合、htpasswd はエラーを返す以外には何もしないでしょう。

     htpasswd -c /home/doe/public_html/.htpasswd jane

          新しいファイルを作成し、ユーザ jane のレコードを記録します。ユーザはパスワードの入力を促されます。ファイルが存在するけれど読めないまたは書き込みができない場合は変更されず、htpasswd はメッセージを表示してエラーステータスを返すでしょう。

     htpasswd -mb /usr/web/.htpasswd-all jones Pwd4Steve

          MD5 アルゴリズムを使ってコマンドラインからのパスワード(Pwd4Steve) を暗号化し、指定されたファイルに記録します。

セキュリティの重要性
       htpasswd によって管理されるようなウェブパスワードファイルはウェブサーバの URI の場所内にあるべきではありません。--すなわち、ウェブブラウザによって呼び出し可能とするべきではありません。

       -b オプションの使用する方法は、暗号化されていないパスワードがコマンドラインに現れたときから抑止されます。

制限
       Windows と MPE プラットフォームで htpasswd で暗号化されたパスワードは 255 文字の長さだけに制限されています。より長いパスワードは 255 文字に切り捨てられるでしょう。

       htpasswd によって使用される MD5 アルゴリズムは Apacheソフトウェアに特有で、それを用いて暗号化されたパスワードは他のウェブサーバでは使用できないでしょう。

       ユーザ名は 255 バイトに制限され、キャラクタ ':' を含まれないかもしれません。

関連項目
       SHA1 サポートの httpd(8) とスクリプトは配布物と共に出来上がります。