﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-上善若水-文章分类-Web2.0</title><link>http://www.blogjava.net/bourn/category/25423.html</link><description> 反者道之动，弱者道之用。
 天下万物生于有，有生于无。</description><language>zh-cn</language><lastBuildDate>Fri, 21 Sep 2007 11:11:48 GMT</lastBuildDate><pubDate>Fri, 21 Sep 2007 11:11:48 GMT</pubDate><ttl>60</ttl><item><title>交互设计精髓</title><link>http://www.blogjava.net/bourn/articles/146350.html</link><dc:creator>段氏</dc:creator><author>段氏</author><pubDate>Wed, 19 Sep 2007 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/bourn/articles/146350.html</guid><wfw:comment>http://www.blogjava.net/bourn/comments/146350.html</wfw:comment><comments>http://www.blogjava.net/bourn/articles/146350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bourn/comments/commentRss/146350.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bourn/services/trackbacks/146350.html</trackback:ping><description><![CDATA[转自http://www.ui123.com/blog/?p=4<br />
<br />
<p>12月 22nd, 2006 by  奇遇 </p>
<div>
<p><span style="color: Maroon;">书名原文： About Face 2.0: The Essentials of Interaction Design<br />
作者：     [ 美 ]Alan Cooper ， Robert M. Reimann 译者：詹剑锋、张知非<br />
</span></p>
<p><strong>推荐语</strong><br />
本书是一本由一位在交互设计前沿有着10年设计咨询经验及25年计算机工业界经验的卓越权威撰写的设计数字化产品行为的启蒙书。它探索了一个独特的设计领
域，即复杂系统行为的设计——特别是软件激活技术。本书论述一种具有革命意义的设计观念——人类驱动设计过程。
本书是一本难得的大师经典之作，应该是一本产品规划师、界面设计师以及可用性工程职业人员或者程序员都想得到的书。</p>
<p><strong>封面</strong></p>
<p><a href="http://www.ui123.com/blog/uploads/200612/22_135419_aboutface2.jpg" target="_blank"><img src="http://www.ui123.com/blog/uploads/200612/22_135419_aboutface2.jpg" alt="uploads/200612/22_135419_aboutface2.jpg" onload="javascript:DrawImage(this,520);" class="img_normal" /></a><br />
<br />
序<br />
本书旨在为您提供一些有效而实用的工具来设计用户界面（ user interface ）。这些工具很明显分为截然不同的两类：战术性工具
(tactical) 和策略性 (strategic) 工具。战术性工具是使用和创建用户界面的习惯用法 (user interface
idioms) ——如对话框 (dialog box) 和下压按钮 (push button) ——的提示（ hint ）和技巧 (tip)
。而策略性工具是思考用户界面习惯用法的方式，换言之，即用户与用户界面习惯用法的交互方式。<br />
虽然已经有了一些介绍策略性或者战术性准则的书，我们的目标在于写一本能将两者融为一体的书。在帮助您设计更有吸引力、更有效的对话框的同时，本书还将帮助您理解用户如何了解您的软件，以及与之交互的方式。<br />
设计有效的用户交互和界面之关键在于将策略性和战术性的方法合二为一。例如，客观上不存在好的对话框——对话框的品质取决于具体的应用情形：用户是
谁，他们的背景和目标是什么。仅仅应用一系列的战术性说明（ tactical dictum
），会使创建用户界面变得更容易，但这并不能使最终结果更好。同样，对于用户应该如何与您的系统交互的深层次思考也不能改善软件本身。真正奏效的是：在策
略上对用户与特定软件的交互方式保持敏感的同时，拥有一个可以在任意情况下应用的在你掌握之中的战术工具盒 （ tactical toolbox ）
。本书既会加深您对用户的理解，又将教您如何把这些理解转变为设计理念。<br />
谁应该读这本书<br />
在 1995 年 8 月，软件观念革命（ About Face ）这本书第一次出版时， 界面设计 (interface design)
还是个未开垦的新领域。少数人在软件工程的影子下，勇敢地以用户界面设计师的头衔工作，正如机敏的小哺乳动物在粗暴的巨龙阴影下爬行。正如在软件观念革命
第一版中所指出的，软件设计被人们错误地理解和评价。过去是怎么做的，程序员就就是怎么做的。很多处境不佳的文档工程师 (documenters)
、培训者、技术支持人员，以及处于增长趋势的 可用性工程职业人员（ usability practitioners ）
都意识到：某些事情应该改变。<br />
Web 令人吃惊的、似乎是一夜之间的发展和流行，驱动了这种改变。突然间，易用性（ ease Of use) 成了挂在每个人嘴边的术语。在
20 世纪 90 年代初期，即多媒体短暂流行的期间，涉足数字产品设计的传统设计师纷纷转向 Web
。表面上，新的设计师头衔像杂草一样涌现：信息设计师 (information designer) 、信息架构师 (information
architect) 、用户体验策略师 (user experience strategist) ，以及交互设计师 (interaction
designer) 。 C 级公司的首席职务（首席用户体验官， user experience officer
）一开始就存在，他的工作核心是创建以用户为中心的产品。很多重点大学都争先恐后地开展这些理论的培训。与此同时，可用性工程和人性因素（ human
factor ）职业人员的地位也在提升，现在被承认是推动更好产品设计的领导者。<br />
虽然 Web 使得界面技术倒退了不止十年，但它无可争议地将用户需求永久地置于公司的雷达之上。作者坚信： .COM
的衰败只能使得用户及其需求的可见性，以及对它们的关注在将来变得更加明显。人们一般对新技术感到厌倦。消费者传达了明确的信息，他们所需要的好技术是容
易使用的，并且能满足他们需求的技术。<br />
因此，作者很高兴地说，新版本的读者群会大大地增大：任何对用户与数字产品的交互感兴趣的人都会在读这本书的过程中获得独特的能力洞察力。程序员、与
数字产品相关的设计者、可用性工程职业人员、项目经理都会从此书中受益匪浅。读过《软件观念革命》（ About Face ）
第一版或《软件创新之路》（ The Inmates are running the Asylum ）
第一版的读者会在此发现更新颖且更详细的有关设计方法和原理的详细信息。<br />
为什么要做交互设计<br />
《软件观念革命》的第一版描述了一门被称为软件设计的学科，同时也可称为用户界面设计。在这两个术语中，用户界面设计有更强的生命力。在本书里，我们仍会使用它，而且大多数是合适的。<br />
然而，笔者很清楚，本书所讨论的内容要远比用户界面设计的范围广。界面这个词意指表面，本书所阐述的大多数设计问题要远远比 CRT 屏幕的表面问题深奥，它直接触及了&#8220;数字产品是什么&#8221;，以及&#8220;数字产品要做什么&#8221;等核心问题。<br />
近些年来，对于这类设计，人们已经提出了许许多多的术语。在 2000 年左右，公司对 Web 的兴趣达到顶点时，被称为信息架构（
information architecture ， IA ）的学科似乎最终包含了此处这里讨论的这类设计。但是正如 Web
在经济方面的前景已经暗淡一样， IA 基本上也保留了它以 Web 为中心的狭隘视图：如何组织和浏览页面上的内容。随着新经济的明显下滑， IA
产业的好运也逐渐消失。<br />
另一个近年来流行的术语是 体验设计（ experience design ） 。美国图形艺术研究所 (American Institute
of Graphic Artists ， AIGA)
特别提倡使用这个术语来概括用于开发数字产品和系统的不同设计与可用性工程学科。这个想法很有吸引力，但它仍然回避了一个问题——什么样的设计才是交互式
系统设计的真正核心，交互式系统设计是一种明显不同于已有设计的崭新设计。<br />
体验设计这种想法也有一定的问题。在笔者看来，体验是人与人工制品（或者其他生物）交互的结果。体验出现在一定的上下文场景 (context) 中，进一步由内部、心理的个人环境所调节，这种个人环境由动机、过去经验、气质和多种认知因素形成。<br />
作为设计者，我们不能声称能够设计一种人工制品或者系统的用户体验，但我们能够设计与人工制品交互的机制，以改善用户体验。因为，我们相信体验发生在
人和人工制品交互的过程中，我们已经选择了&#8220;交互设计&#8221;这个术语来表示本书描述的这类设计，该术语由 Bill Moggridge 和 Bill
Verplank 在 20 世纪 80 年代首创。你不能设计体验本身，但你能设计调节和引导体验的交互行为。<br />
交互设计的定义<br />
简单地说，交互设计是 人工制品 (artifact) 、环境和系统的行为，以及传达这种行为的 外形元素 (formal element)
的设计与定义。不像传统的设计学科主要关注 形式 (form) ，最近则是关注 内容和内涵 (content and meaning)
，而交互设计首先旨在规划和描述事物的行为方式，然后描述传达这种行为的最有效形式（参见图 1 ）。<br />
交互设计借鉴了传统设计、可用性工程及工程学科的理论和技术，它是一个具有独特方法和实践的综合体，而不只是部分的叠加。它也是一门工程学科，具有不同于其他科学和工程学科的方法。<br />
交互设计是一门特别关注以下内容的学科：<br />
? 定义与产品的行为和使用密切相关的产品形式<br />
? 预测产品的使用如何影响产品与用户的关系，以及用户对产品的理解。<br />
? 探索产品、人和 上下文 (context) （物质、文化和历史）之间的对话 (Riemann 和 Forlizzi,2001)<br />
? 交互设计从目标导向 (goal-directed) 的角度解决产品设计：<br />
? 要形成对人们希望的产品使用方式，以及人们为什么想用这种产品等问题的见解。<br />
? 尊重用户及其期望目标。<br />
? 对于产品特征与使用属性，要有一个完全的形态，而不能太简单。<br />
? 要看到产品最终成品的样子，它们目前的样子并不重要。<br />
设计的三维<br />
交互设计着重于传统设计较少探索的领域：行为设计。<br />
所有的设计影响人类行为：结构关于人们使用空间的方式，与形式和光线有关。如果没人对张贴画所表达的信息有所反应，那张贴画又有什么意义呢？<br />
引入交互技术——计算机的礼节——来设计人工制品的行为，以及这种行为如何影响和支持人的目标和期望？已经成为一门值得关注的学科。<br />
理解交互设计和传统设计关注点的不同方法之一是借助历史透镜。在 20
世纪的上半叶，设计者主要关注形式。后来设计者逐渐关注内涵，例如，产品设计师和结构师在 20 世纪 70
年代引入了本土和怀旧形式。直到今天，这种趋势仍在继续，诸如 PT Cruiser
的怀旧风格的汽车。今天，信息设计师继续关注内涵，包括可用内容的设计。<br />
在最近 15 年以来，越来越多的设计师开始谈论行为：软件激活技术 (software-enabled) 的产品（或复杂的机械）直接与用户交互的动态方式。<br />
这些关注（形式、内涵及行为）并不是相互排斥的。交互产品必须多少包含各部分；软件应用关注更多的是行为和形式，而对内容的需求较少； Web 站点和公用信息亭关注更多的是内容和形式，而较少关注复杂的行为。<br />
因为，复杂系统的行为通常不是一个审美学 (aesthetics) 的问题，而是认知因素 (cognitive factor) 和逻辑过程 (logical processes) 的结合，交互设计应该采用系统化方法，且能从这种方法中受益匪浅。<br />
交互设计师应该，也是首先要做的，理解使用他们设计的人们的目标、动机和期望（心智模型 ， mental model ）。这些最好能被理解为&#8220;叙述&#8221; (narrative) ——时间轴上的逻辑（或者情感）进展。<br />
与这些&#8220;叙述&#8221;相适应，所设计的人工制品必须具有它们自己的行为叙述，且这些行为必须成功地与用户的期望吻合。不像大多数机械制品，只有简单的行为，
观察之下一切都一目了然，软件和其他数字产品因为其行为潜在的复杂性，所以它们需要交互设计。软件对于观察者是不透明的，然而它所表现出来的可能行为几乎
是无限的。<br />
一些设计者，以设计的传统形式，如视觉 (visual) 、声音（ audible ）、触觉 (tactile themes) ，模式
(patterns) 、风格 (style) ，以及习惯用法 (idioms) 为论据，认为交互元素应被视为随着时间变化的感觉数据（
sense data ）流，类似于动画 (motion picture)
，因此完全可以通过传统设计方法来描述。然而，这种论点有严重的缺陷：尽管交互设计面向形式的方面非常重要，但是，除非它们是通过有效和合适的行为组织
的，否则几乎没用。如果没有一个逻辑结构或流来帮助解决用户的实际问题，那么面向形式的交互设计（ form-oriented
interactive design ）本身只是隔靴搔痒，价值值得怀疑。<br />
换句话说，如果没有条理化的&#8220;叙述&#8221;，感觉数据本身毫无意义。电影不能光有特效，叙述也很必不可少。这一点，对与数字产品的交互而言，更有效，因为对
话不在第三方可观察到的虚幻境界中发生。相反，它是在人和设计的人工制品之间的交流， Bill Buxton （ 1990
）称之为&#8220;非文字的自然语言&#8221;。这种对话（也就是行为）的期望和设计是交互设计的实质。<br />
本书的内涵和外延<br />
本书是一本有关交互设计（交互系统复杂且以用户为中心的行为设计）的原理和方法的参考书。本书的第一篇强调 设计过程 (design process) ，以及对用户的系统理解；第 2 篇提供了策略原理和工具；第 3 篇更深地钻研战术性的问题。<br />
本书不打算以 指南 （ guide ）的姿态出现，或者提供一些界面标准。实际上，你会在第 19
章了解到为什么那些工具的使用是有限制的，而仅仅与特定环境相关。也就是说，在本书中描述的过程和原理是与你选择的风格指南相兼容的，它也是解决任意这类
问题的一本极好的配套书。 指南 擅长于回答做什么，但无法回答为什么这样做。本书打算解决交互系统设计中未解决的问题。<br />
设计交互系统有 4 个步骤：研究问题域（ researching the domain ），理解用户 (understanding
with user) 及其需求；定义解决问题的框架 (defining the framework of a solution)
；完善设计细节 (filling in the design details) 。<br />
很多业内人士会加上第 5 个步骤：确认（ validation ）——让用户测试方案的有效性。他们这么做，不会错。最后一步是众所周知称为可用性学科的一部分。<br />
可用性工程方面的重要文献在持续增长，但有关交互设计的资料却相对很少。本书专门关注交互设计的过程和原理，设计方案的测试方法则留给出版的相关学术著作。本书可以与可用性工程方法和实践的文献配套使用。通过和谐地结合这两个学科，你会获得最好的设计成果。<br />
译者注 作者定义的术语，见第 2 章。<br />
译者注 作者定义的术语，见第 6 章。</p>
<p>名家推荐<br />
ALAN COOPER 作者推荐<br />
当我们被联系为 该 写中文版的序言时，我们非常兴奋，因为我们有机会接触一批新的而为数众多的读者，包括学生，设计人员，开发人员，以及人性因素专家等。<br />
在最近几年，中国不仅成为基于软件的数字产品 —— 从计算机、蜂窝电话到家庭和个人娱乐系统 ——
的主要制造者，也成为这些产品的日益重要的消费者。这就意味着在中国数以百万的新用户正在使用软件和数字产品，其中不乏初学者。由此可见，对于用户界面口
和交互设计师来说，这是一个独一无二的机会，他们的工作可以极大地改进这些数字产品的质量和合意性，并最终影响数以百万计的人们的生活。<br />
和西方一样，中国的开发者和制造商经过了一段时间才理解，用户界面和用户交互对于使得数字产品更有用和更成方面所具有的极端重要性。除了改善用户的生
活质量以外，容易使用和理解，并且能够更好地满足用户需求的产品有额外的潜力，为生产商增加利润和市场份额。我们希望本书将会为市场引领一条通向更好的数
字产品的道路，也可以为本书的读者，不论学生，设计人员，开发人员还是制造商，带来更多的机遇。<br />
交互设计是设计中的一个新领域，在这里是行为，而非形式成为最为关键的因素。形式必须支持行为，但是当用户和一个复杂的数字产品交互时，用户所能感受
到的产品质量和从中获得的亲身体验均来自于产品的行为。不是基于软件的产品不会有复杂的行为：锤子只有单一而简单的行为，除了样式以外不需要别的设计。然
而，蜂窝电话、掌上电脑或者数码相机有很多复杂的行为，而这些行为需要仔细而专门的设计方法。
本书试图描述行为和交互式设计这一崭新而又令人兴奋的领域的基本原则，我们预测这一领域将会成为 21 世纪设计学中的一个主要领域。<br />
本书的大部分例子来源于桌面计算机应用和 WWW 。尽管如此，书中几乎所有的内容也适用于别的数字设备。<br />
本书并不致力于阐述所有可能的设计方法，它也不包括用户界面标准的风格指南。事实上，本书提供了一个独特的过程和框架，借助它可以设计产品和产品的行为，而这些行为真正地解决了用户最核心的需求和意愿。<br />
书的第一篇描述了这一系统的过程 —— 我们称之为目标导向设计 —— 这一部分有一个前提，就是：如果你对产品的用户有深入了解，也了解他们使用该产品的动机（他们的目的），那么你可以为最重要的用户需求开发界面。<br />
本书第二篇和第三篇提供了高层次和细节的设计原则，主要涉及如何选择产品行为，既可以满足用户需求，又可以为用户消障碍，这无疑会提高用户的满意度和
生产率。在过去的 13 年里，我们在全世界使用了上面所说的方法为小到刚起步，大到有上百亿美金的公司的数百种数字设备，软件产品以及基于 Web
的服务做了设计。<br />
自从该书 2003 年在美国出版以来， 在美国和欧洲本书已被许多大学的计算机科学和设计专业选为教材 。尤其是人物角色的使用（在第一篇所描述的刻画用户的一个强有力的工具），几乎已经成为普遍采纳的设计和人性因素的最优方法。<br />
无论在中国还是西方，交互式设计的未来都是光明的。我们希望本书能激发出中国新一代数字产品和服务中的杰出设计！</p>
<p>Robert Reimann<br />
Brookline , Massachusetts , USA<br />
Alan Cooper<br />
Menlo Park, California, USA<br />
2005 。 1</p>
<p>叶展 人机交互分析师</p>
<p>　　读经典著作如同饮醇酒，回味隽永。而给经典著作写序，则如推销醇酒与人，在别人的沉醉中分享快乐。<br />
摆在我面前的就是一本经典著作，一本计算机领域的经典著作。众所周知，计算机领域多的是应景之作，比如某某软件版本 X.0
的使用指南之类，而少能经得起时间考验的经典著作。其原因一方面是计算机领域发展迅猛，知识更新代谢极快；另一方面，则是计算机领域应用重于理论，所以有
思想深度的著作比较少。<br />
一本书要成为经典，起码要两个条件。其一是著者是拥有深邃的思想，且文笔流畅。大师级人物，往往单从文字上的修养就看得出。比如经济界的
George Stigler （诺贝尔奖获得者，被誉为经济学界一支笔）和软件工程方面的 Frederick Brooks
（《神秘的人月》著者），他们的著作拿起来阅读几段，你马上就可以在行文中感到那种大家的雍容风度。而更重要的是，大师们在书中所讲述的往往不是细枝末节
的技巧和技术，而是一种深邃的思想方法，可以给人以深层次的启发。那种风度和深度，是难于模仿的。<br />
要成为经典的第二个条件是作者的思想要经得起时间的考验。对计算机书籍来说，起码要能经过 10 年的考验。这个标准比之其他领域已经是很宽松的了，但在这个标准下大部分计算机书籍会落马。<br />
以笔者来看，本书基本上符合前面的两个条件，是一本计算机领域的经典之作。<br />
本书的作者 Alan Cooper ，是计算机业界一位成名高手。除了早期在 Visual Basic 方面的工作外（他被誉为 Visual
Basic 之父），更重要的是他曾站到了一个新领域的前沿，参与并影响了软件开发领域一次深刻的变革。而这个新领域，就是人机交互（
Human-Computer Interaction ）。这个变革，是软件开发领域的第三次革命。<br />
在软件开发领域出现过三次革命—— 50
年代高级语言的出现，使得软件开发从机器硬件（机器语言）的束缚中解脱出来，程序员能够从（抽象＋结构）层次来进行思考。此为第一次革命。 70
年代软件工程兴起，使得软件开发的注意力由语言和编译器技术拓展到软件开发的过程（ software process
）。人们意识到：要提高一个软件产品最终的静态质量，必须提高这个产品产生过程的动态质量。此为第二次革命。而 90
年代以来，随着计算机软件和商业行为的联系越来越紧密，特别是互联网的兴起，人们进一步认识到：软件不是孤立的，软件的质量并不是仅由其本身就能决定的，
而是由（软件＋用户）这个大系统来决定的。软件的成功，在于是否它能够成功嵌入到用户的商业活动中。对人的因素的重视，使得一门新的领域崛起。这就是人机
交互。经过十几年发展，人机交互理论已经全面改观了一般商用软件设计开发的流程和方式，成为业界的标准。是为第三次革命。<br />
每次革命或变革，都会有豪杰之士涌现，为改变旧的思想和宣传一种新的思想而摇旗呐喊，成为领导变革的预言家和代言人。在 90
年代，一批人物涌现，一批著作发表，为人机交互理论在业界的应用打开了局面。 Donald Norman 在 1990 年出版了《 The
Design of Everyday Things 》， Jakob Nielsen 在 1994 年出版了《 Usability
Engineering 》，本书作者在 1995 年出版了本书的第一版。这些人的著作，都是经受了 10
年考验的，现在都成了经典。他们当时的思想，现在已经成为业界的主流。他们也自然而然地成为了人机交互领域举足轻重的领导者。<br />
阅读本书，最重要的是了解作者所阐述的关于软件设计开发的高层次理念和指导思想。因为作者是最新一次软件开发思想变革的积极参与者，他亲自现身说法写
的书当是记录这个思想变革的宝贵的第一手资料。正因为如此，笔者窃以为本书的第一部分最是重要，乃为全书的灵魂。这部分从了解用户，了解用户需求讲起，到
构建用户模型，到设计 scenario
来描述软件系统现在和未来的行为模式，到如何把对用户的理解和行为模式转换为设计方案。作者不仅把软件设计的整个过程流畅清晰地描述出来，而且真知灼见不
断涌现于其中。下面随便列举一二：<br />
? 软件的设计和开发，不要囫囵吞在一块，最好要分成两个单独的过程——设计过程和开发过程：
传统的软件工程理论，是对整个软件设计开发的过程化研究，而更侧重编程测试和项目规划部分，并且把设计和开发混在一起。而现在人机交互理论，实际上是把软
件设计这部分提出来，是对软件设计的过程化分析，还借用了认知心理学和其他领域的成果。目前业界普遍认为：对商用软件来说，这两个阶段分开，有助于软件质
量的提高。<br />
? 应当以用户为中心去设计软件，而不是以某项新技术或者技术人员为中心去开发软件：
这一点是软件走出象牙塔，渗入人类生活和商业领域的必然后果。作者虽然是程序员出身，但对以程序员（技术的代表）为核心的软件开发的局限性有清醒的认识，
并指出这种方法再也不能适应开发软件产品的需要。基于用户的设计（ User-Centered Design ）是 90
年代以后被&#8220;炒&#8221;的最火的一个词。它实际上是说在软件设计过程中要围绕用户和商业活动来进行，是不是围绕技术和程序员来运行。<br />
? 决定软件成功与否的，不是一个软件有多少个功能，而是这些功能是否有用和好用。<br />
? 设计软件，重要的是设计用户行为： 作者所极力鼓吹的一个新的名词——交互设计（ Interaction Design ）的含义就是软件设计师设计的不是死的软件，不是静止的界面，而是活的行为，是用户和软件硬件环境之间的动态交互，并寻求动态的最优。<br />
需要指出的是：以上思想，在 1995
年本书初版时乃为革命，与今则为业界常识——起码是美国商用软件开发领域人所共奉的常识。现今但凡大一点的和软件开发有关的公司，其软件设计开发过程都按
作者所提出的思路改进过。从另一个角度讲，这更体现了 90 年代这场变革的影响之深远。<br />
在本书的第二部分， Alan Cooper 介绍了一大把新概念和新名词（众所周知， Alan Cooper
在业界有卖弄新名词的&#8220;不良&#8221;嗜好。业内人最爱开的玩笑之一就是传说在什么什么会议上 Alan Cooper
又发明了一个新的英文词。当然能够在计算机业内成为这种玩笑的对象本身就说明这个人很有影响力。）这些新名词，由于是独此一家，别无分号，读者读来需要一
定的辨别力。需要记住的是：虽然这些名词比较新奇，但其含义和基本思路应该是容易接受的。<br />
与前两部分比，本书的第三部分就完全是实用性的了，有诸多实际的设计案例和讨论，而且主要是基于现有图形用户界面的格局。<br />
由于本书的这种结构——由抽象理念入手，到具体的设计方法和案例，使得它适合各类读者阅读。软件公司的领导者可以通过前两部分了解软件行业的最新思
潮，并以此为指导思想来改进自己公司内部的软件开发流程。软件开发人员，可以学习书中介绍的具体的方法，更可以从更实际的案例讨论中获得启发。对学生来
说，除了学习编程等&#8220;硬&#8221;技术外，通过读书了解一下软件行业&#8220;软&#8221;的思想，拓展眼界，受益将会不浅。<br />
国内软件行业经过多年发展已经初具规模，当然在发展的过程中也遇到诸多问题。目前的一个共识是中国软件业和外国比，最大的劣势并不是在具体某项技术或
者编程方面。中国的勤奋而又有天分的程序员，可以获得美国业界的编程大奖。由此可见单打独斗中国人是可以的。但项目一大起来，中国软件业的固有劣势就显现
出来了。中国的传统弱项主要是在软件工程和软件过程等方面。而现在西方软件行业又进了一步，在软件工程的基础上搞出了人机交互理论，又引发了一次革命。我
们目前对这场革命的了解还是很肤浅，人机交互领域在国内的科研、教学和应用都还在起步阶段。这就很有些旧的差距没有弥补上，新的差距又产生了的危险。这本
书现在被介绍到国内来，将有助于我们填补这方面的差距。此其时也！</p>
<p>叶展<br />
人机交互分析师<br />
2005 年 7 月于美国芝加哥</p>
<p>　　叶展，清华大学自动化系本科毕业，后赴美留学，先后取得伊州理工学院（ Illinois Institute of
Technology）的计算机硕士学位和卡内基美隆大学（Carnegie Mellon
University）的人机交互（Human-Computer
Interaction）硕士学位，现在美国BCS管理和IT咨询顾问公司任职。叶展目前主要的研究和工作领域是人机交互理论在游戏设计中的应用、人机界
面设计与评测、以及软件开发流程设计和管理。是这些领域有一定影响的专家，并应邀在包括CHI等一系列重要国际会议上发表了论文和演讲。</p>
<p>译 者 序<br />
今天，人类不仅在认识世界，也在创造着新世界。软件作为人类所创造的最复杂的人工制品（ artifact ）之一 ，
已不仅仅是人类智慧和工具的延伸，而在某种程度上作为虚拟世界新法则的执行者和实施者统治着我们。诺贝尔物理学奖获得者费曼曾经以这种方式描述过人类创造
新事物的过程：我们创造新事物，而被创造的新事物按照某种规则又创造新的事物，突然某一瞬间，不同于人类灵魂的事物出现了：它与人类灵魂迥然不同，或许还
有着恶意，威胁着人类。一个智者以这种玄想的方式展现了对人类创造物的恐惧。<br />
今天的软件人工制品会以这种方式工作吗？是否会威胁到我们的人类？作为软件业的一名从业人员，译者深知以 0 或者 1
为工作基础的计算机所有智慧来自于设计师和程序员的智慧，本身不具有恶意。然而，现实的情况是 &#8220;
受不正确的设计观念影响开发的软件已经开始威胁到大众用户 &#8221; ，技术派论者甚至以 &#8220; 计算机盲 &#8221; 通常称这些和计算机工作者一样富有智慧的人们。<br />
请尊重你的用户！ Alan Cooper
，这位在图形用户界面领域驰骋数十年的大师给出了如此的忠告。大师的忠告是中肯而辛辣的，技术不能高高在上，而应该植根于土壤，软件工人们不能脱离为人民
服务的宗旨，否则就要被革命了。新技术经济的沉沦也许指示着新的机遇：为大众用户服务，采取全新的目标导向设计方法。<br />
这种方法关注用户的目标；认真地研究实际用户和潜在用户，定义具体的原型用户 ( 人物角色 ， persona) ；使用人物角色作为脚本提纲 (scenarios) 的主要人物；人物角色作为定义交互产品功能、行为和形式的主要工具；遵循行为设计的原理。<br />
在系统模型方面，作者精彩地辨析了程序员的实现模型和用户的心智模型之间的差异，指出程序员通常为了容易实现的私利牺牲用户利益，用实现模型取代用户
的心智模型，从而产生了认知方面的鸿沟，因此在交互设计领域有必要区分设计和编程的责任。在用户分析方面，将用户分为新手用户、中间用户和专家用户三类
， 提出了没有用户愿意永远做新手用户，只有少数用户才会成为专家用户，因此大多数用户都是永久的中间用户，设计应该为中间用户优化的精辟论解。<br />
在行为和形式设计方面，作者深刻地揭示了一些现象背后隐藏的本质。首先从行为立场出发，定义了软件姿态的概念，将软件分为独占、暂时、精灵和辅助四种
姿态。不同姿态的软件对应不同的用户类型，如独占式应用的用户是永久的中间用户，应该在使用整个屏幕的情况下优化独占姿态的应用；而暂时姿态应用应该简
单、清晰而切中要点，保持在一个窗口和视图内。在用户心理层次，作者深刻地揭示了流状态 ：&#8220; 深深的完全沉思状态 &#8221; ，经常产生 &#8220; 轻微的欢娱
&#8221;
，能够让你忘记时间的流逝。因此，软件交互应该促进和加强流状态，而不是打断或者干扰流状态。为了创建高效的软件，作者提出了附加工作的概念，分析了附加
工作产生的原因，指出只有消除附加工作，用户才会效率更高。在这种背景下，作者也详细地分析了图形用户界面的导航问题，以及如何消除导航中出现的附加工
作。另外，作者指出要想开发效能高和用户使用起来会愉悦的软件，软件必须能够体贴和足够聪明。也正是从这个角度出发，作者详细地讨论了如何改善数据检索和
数据输入，使其体贴和足够聪明。<br />
在讨论如何为不同用户设计时，作者指出有两个概念在根据不同的经验水平将用户的需求进行分类方面特别有用：命令向量和工作集。命令向量是允许用户向程
序发起指令的特殊技术：下拉菜单、弹出菜单和工具条控件都是命令向量的例子。好的用户界面提供多种命令向量，这种冗余性让不同技能水平的用户和不同偏好的
用户根据自己的意愿和能力向程序发起命令。因为每个用户都在无意识地记忆经常使用的命令，持久的中间用户记住了命令和功能的适度子集：工作集。虽然严格的
说没有一个标准的工作集可以覆盖所有用户的需求，但是用户和使用模式的研究和建模可以产生一个较小的功能子集。这个最小工作集可以通过目标导向的设计方法
确定：利用脚本提纲来发现你的人物角色所需求的功能。这些需求直接转化成最小工作集的内容。<br />
作者也详细地阐述了视觉界面设计的一些基本原理，并在具体的背景下讨论了这些视觉界面设计原理的应用。如视觉界面必须：<br />
? 避免视觉噪音 (visual noise) 和杂乱 (clutter) ；<br />
? 使用对比 (contrast) ，相似性（ similarity ）与分层 (layering) 来区分和组织元素；<br />
? 在每一个组织层次提供视觉结构和流；<br />
? 使用紧凑、一致而场景合适的图像；<br />
? 全面而有目的地结合风格和功能。<br />
在对主流的三类界面范例：实现为中心（ implementation-centric ）、隐喻 (metaphoric) 和习惯用法
(idiomatic) 分析的基础上，作者独特而精辟地指出隐喻的限制，强调了习惯用法的力量，深刻地指出 &#8220;
所有的习惯用法都需要学习，而好的习惯用法只需要学一次 &#8221; 。<br />
另外，作者凭借渊博的知识和丰富的产业界经验，深刻全面地揭示和阐述了各种交互细节的本质、演化和蕴含的发展机遇，如直接操作 (direct
manipulation) 、选择、拖放 (drag and drop)
。在图形用户界面发展的历史背景下，作者高屋建瓴地详细讨论了各种控件和它们的行为。<br />
在译者学习和翻译这本书的过程中，深深地感受和体会到作者的大师风范，以及卓尔不群的见解和深刻的思想，并且在具体的科研实践中受益。相信任何一个读者只要用心读这本书，都会有同样的感受，并有丰富的收获。<br />
译者要感谢参与本书出版过程中的朱沭红编辑、孙学瑛编辑、 蒋芳 女士，感谢她们的耐心、信任和协作。</p>
<p>詹剑锋 ( jfzhan@ncic.ac.cn ) 、张知非<br />
2005 年 3 月 1 日</p>
<p>第一篇 了解你的用户<br />
第一部分 弥合差距<br />
1 目标导向设计<br />
2 实现模型和心智模型<br />
3 新手、专家和中间用户<br />
4 理解用户：定性研究<br />
5 用户建模：人物角色和目标<br />
6 脚本提纲：将目标转换为设计<br />
7 综合好的设计：原理和模式<br />
第二篇 设计行为和形式<br />
第二部分<br />
8 软件姿态<br />
9 和谐与流<br />
10 消除附加工作<br />
11 导航和调整<br />
12 理解撤销<br />
13 重新思考&#8220; Files &#8221;和&#8220; Save &#8221;<br />
第三部分 提供高效能和愉悦<br />
14 设计体贴的软件<br />
15 设计智能的软件<br />
16 改进数据检索<br />
17 改进数据输入<br />
18 为不同的需要进行设计<br />
第四部分 应用视觉设计原理<br />
19 外观设计<br />
20 隐喻、习惯用法和启示<br />
第三篇 交互细节<br />
第五部分 鼠标和操作<br />
21 直接操作和定点设备<br />
22 选 择 327<br />
23 拖 放 336<br />
24 操作控件、对象和连接<br />
第六部分 控件及其行为<br />
25 窗口行为<br />
26 使用控件<br />
27 菜单：教学向量<br />
28 使用菜单<br />
29 使用工具条和工具提示<br />
30 使用对话框<br />
31 对话框礼节<br />
32 创建更好的控件<br />
第七部分 与用户的交流<br />
33 消除错误<br />
34 通知和确认<br />
35 与用户的其他交流方式<br />
36 安装过程<br />
第八部分 超越桌面的设计<br />
37 Web 设计<br />
38 嵌入式系统的设计</p>
</div>
<img src ="http://www.blogjava.net/bourn/aggbug/146350.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bourn/" target="_blank">段氏</a> 2007-09-19 09:57 <a href="http://www.blogjava.net/bourn/articles/146350.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实际项目中的Ajax</title><link>http://www.blogjava.net/bourn/articles/141683.html</link><dc:creator>段氏</dc:creator><author>段氏</author><pubDate>Fri, 31 Aug 2007 04:12:00 GMT</pubDate><guid>http://www.blogjava.net/bourn/articles/141683.html</guid><wfw:comment>http://www.blogjava.net/bourn/comments/141683.html</wfw:comment><comments>http://www.blogjava.net/bourn/articles/141683.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bourn/comments/commentRss/141683.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bourn/services/trackbacks/141683.html</trackback:ping><description><![CDATA[<p><span style="font-family: 宋体;"><br />
</span></p>
<p><span style="font-family: 宋体;">上一个项目使用的是</span><span>spring
MVC</span><span style="font-family: 宋体;">；</span> <span style="font-family: 宋体;">客户需要做</span>Ajax<span style="font-family: 宋体;">应用；所以就找了一些资料研究了一下，比如</span>DWR<span style="font-family: 宋体;">，</span>dojo<span style="font-family: 宋体;">，</span> prototype<span style="font-family: 宋体;">，</span>JSON-RPC, trimpath <span style="font-family: 宋体;">等等，发现很多不适合我们，比如</span>DWR<span style="font-family: 宋体;">要生成客户端</span>js<span style="font-family: 宋体;">，服务器端还要部署，麻烦；</span>dojo<span style="font-family: 宋体;">又太慢了；经过一轮淘汰剩下了</span>prototype<span style="font-family: 宋体;">和</span>trimpath<span style="font-family: 宋体;">；所以最终就选这</span>2<span style="font-family: 宋体;">个了；</span></p>
<p>Prototype<span style="font-family: 宋体;">在书写普通的</span>js<span style="font-family: 宋体;">时候，有很多好处，比如简单，实用的很多函数；比如</span>$()<span style="font-family: 宋体;">系列；</span></p>
<p>Trimpath<span style="font-family: 宋体;">提供一个客户端的</span>js<span style="font-family: 宋体;">模板，如果从服务器回来的数据很复杂，要动态改变</span>Html<span style="font-family: 宋体;">元素是比较费力的事情；用</span>trimpath<span style="font-family: 宋体;">就方便许多；</span></p>
<p><span style="font-family: 宋体;">在模板语言的世界里，总有</span>2<span style="font-family: 宋体;">个东西：模板和模板中的数据；</span>trimpath<span style="font-family: 宋体;">的模板接受的数据是</span>javascript object<span style="font-family: 宋体;">，模板则定义在一个不显示的</span>textarea<span style="font-family: 宋体;">里面；</span></p>
<p><span style="font-family: 宋体;">所以有个问题就是：怎么让</span>ajax<span style="font-family: 宋体;">调用返回一个</span>javascript<span style="font-family: 宋体;">对象？</span></p>
<p><span style="font-family: 宋体;">后来，我终于发现了（想起了刘若英）</span>JSON<span style="font-family: 宋体;">；发现</span>json<span style="font-family: 宋体;">是个好东东；比</span>xml<span style="font-family: 宋体;">轻量级，又可以很容易的转换为</span>javascript<span style="font-family: 宋体;">对象，而且还有</span>java api<span style="font-family: 宋体;">；唉，开源的世界多美妙；</span></p>
<p><span style="font-family: 宋体;">所以解决方案就是，在</span>springmvc<span style="font-family: 宋体;">框架中，用</span>response<span style="font-family: 宋体;">返回</span>json string<span style="font-family: 宋体;">，给</span>ajax <span style="font-family: 宋体;">客户端，然后生成</span>javascript<span style="font-family: 宋体;">对象，然后，调用</span>trimpath<span style="font-family: 宋体;">模板，然后，动态修改页面。</span></p>
<p><span style="font-family: 宋体;">代码片段：</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;
</span>public ModelAndView getClient(HttpServletRequest request,
HttpServletResponse response) throws Exception {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>JSONObject jsonObject = new JSONObject();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Client
client=clientMgr.getClientByPk(Long.parseLong(request.getParameter("clientId")));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>jsonObject.add("client", client);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>return ajaxResponse(jsonObject, response);</span></p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p><span><span>&nbsp;&nbsp;&nbsp;
</span>protected ModelAndView ajaxResponse(JSONObject jsonObject,
HttpServletResponse response) throws Exception {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>response.setContentType("application/x-json;charset=UTF-8");</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>response.getWriter().print(jsonObject);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>return null;</span></p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<img src ="http://www.blogjava.net/bourn/aggbug/141683.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bourn/" target="_blank">段氏</a> 2007-08-31 12:12 <a href="http://www.blogjava.net/bourn/articles/141683.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>做网站最难的是什么？</title><link>http://www.blogjava.net/bourn/articles/141551.html</link><dc:creator>段氏</dc:creator><author>段氏</author><pubDate>Thu, 30 Aug 2007 15:08:00 GMT</pubDate><guid>http://www.blogjava.net/bourn/articles/141551.html</guid><wfw:comment>http://www.blogjava.net/bourn/comments/141551.html</wfw:comment><comments>http://www.blogjava.net/bourn/articles/141551.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bourn/comments/commentRss/141551.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bourn/services/trackbacks/141551.html</trackback:ping><description><![CDATA[<p><br></p>
<p>做网站最难的是定位。 </p>
<p>当定好位，剩下的事情再苦再难对站长来说也是快乐。 </p>
<p>当一个人有做事的信心和能力，却不知道要做什么时是最痛苦的。 </p>
<p>当一个剑客找不到人PK的时候是最孤独的。 </p>
<p>当一个站长无法确定一个网站定位的时候是最彷徨的。 </p>
<p>站长失败的两大原因： 1 定位错误 &nbsp;2 缺乏坚持
</p>
<p>有一个经常被引用的故事： </p>
<p>一个人挖井，10年先后挖了10眼井，没有一眼挖出水来。有好多眼井，在快要挖出水的时候，他动摇了，放弃了，他认为里永远不会挖出水，于是又去开挖一眼新井，就这样10年过去了... <br>
另一个人，一眼井坚持挖了10年，终于挖出了如泉水般的、清冽甘甜的井水， <br>
他成功了！ </p>
<p>上面的故事被很多成功者引用，以证明坚持的重要性。 </p>
<p>但问题是，如果这个地方真的挖不出水呢？或者你根本不可能坚持到挖出水的那天，你为什么不去寻找一个地下蕴涵着丰富水资源的地方呢？ </p>
<p>还有，当你终于选择了一个水位非常高、水质非常好的地方，但别人，那些更具实力的挖井大户也看中了这个地方，在你的旁边以比你更快的速度打了一眼深井，你怎么办？ <br>
所以刚刚起步的网络创业者，你第一要定好位。第二要确定这是大网站顾及不到的地方。你要确定你不仅能率先在这里打出水，而且能牢牢占据这个地方！ </p>
<p>你看好在线点播、看好B2B、C2B、B2C，但你看到排成长队、腰缠万贯、虎视耽耽的那些人了吗？你冷静的想一下你能挤进去吗？以为有千八百万很了不起吗，但有人可以上亿烧钱，你和他玩，玩的起吗？强者和强者最后的竞争是实力的竞争、是资本的较量。 <br>
我们要玩的是弱者和强者的游戏，是用弱者之强对强者之弱。强中有弱，弱中有强，这是颠仆不破的真理！强能转为弱，弱能化为强，这是永恒的运动规律！这些暂且不提，再回到网站的定位上。 </p>
<p>网络创业者的定位是否正确，基本上就决定了他的事业能否得到长远发展。 </p>
<p>网络创业的机会还非常非常多，关键是有没有抓住这些机会的眼光！ </p>
<p>还是用打井做比喻，你可以聘请专业的勘探队伍帮你寻找最佳位置。你还可以接着别人半途而废的井继续挖，但关键还是眼光要好，眼光好则定位准确，定位准确，网站发展会形成良性循环，所有的努力都将促进网站的快速发展。定位不准确，则事倍功半，最后徒劳无功。 </p>
<p>一开始的定位很小，小可以变成大， </p>
<p>一开始的定位很大，大可能变成小。 </p>
<p>所以我觉得特色很重要，而且不易模仿的特色其实才能算是真正的特色，因为在中国很多好东西，从一开始就是在模仿；模仿就是在学习别人的定位，而非自己的，只有自己设立的目标或特色，在长时间的努力坚持后，才形成自己真正的特色；才是网站长久发展的根本；</p>
<br> <img src ="http://www.blogjava.net/bourn/aggbug/141551.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bourn/" target="_blank">段氏</a> 2007-08-30 23:08 <a href="http://www.blogjava.net/bourn/articles/141551.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于ajax开发技术</title><link>http://www.blogjava.net/bourn/articles/141547.html</link><dc:creator>段氏</dc:creator><author>段氏</author><pubDate>Thu, 30 Aug 2007 15:05:00 GMT</pubDate><guid>http://www.blogjava.net/bourn/articles/141547.html</guid><wfw:comment>http://www.blogjava.net/bourn/comments/141547.html</wfw:comment><comments>http://www.blogjava.net/bourn/articles/141547.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bourn/comments/commentRss/141547.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bourn/services/trackbacks/141547.html</trackback:ping><description><![CDATA[<p>我们项目中用到的ajax技术，主要包括prototype.js, <br>
trimpath JST，JSON，java
reflection等； <br>
&nbsp; [trimpath JST： <br>
<a href="http://trimpath.com/project/wiki/JavaScriptTemplates" target="_blank">http://trimpath.com/project/wiki/JavaScriptTemplates</a>]
<br>
&nbsp; [JSON： <a href="http://www.json.org/js.html" target="_blank">http://www.json.org/js.html</a>] </p>
<p>通常的处理流程：用prototype.js发出ajax请求，并注册一个用于处理返回结果的回调函数，请求被spring的controller捕获，
<br>
&nbsp; controller处理请求并将结果转成JSON <br>
Object(而非ModelAndView),并用response对象返回； </p>
<p>回调函数，将拿到返回的对象并把它转成javascript对象，然后用Trimpath <br>
JST模版技术将返回的对象和模版合并，得到合并后的 </p>
<p>html代码，然后将html代码赋值给一个div来显示；结束； <br>
&nbsp; java reflection技术用于将java bean转成JSON对象； </p>
<p>&nbsp;</p>
<br>  <img src ="http://www.blogjava.net/bourn/aggbug/141547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bourn/" target="_blank">段氏</a> 2007-08-30 23:05 <a href="http://www.blogjava.net/bourn/articles/141547.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于根据ip地址确定用户所在地区</title><link>http://www.blogjava.net/bourn/articles/141544.html</link><dc:creator>段氏</dc:creator><author>段氏</author><pubDate>Thu, 30 Aug 2007 15:01:00 GMT</pubDate><guid>http://www.blogjava.net/bourn/articles/141544.html</guid><wfw:comment>http://www.blogjava.net/bourn/comments/141544.html</wfw:comment><comments>http://www.blogjava.net/bourn/articles/141544.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bourn/comments/commentRss/141544.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bourn/services/trackbacks/141544.html</trackback:ping><description><![CDATA[<p>关于根据ip地址确定用户所在地区</p>
<p>方案是利用一个ip数据库，如果用户的ip落在一个地址区间内，则说明用户是该地区的，我已经和立国建立了一张表'ip_list'
<br>
, <br>
大家可以从svn上拿到；（wiczone\trunk\design\database\2006-11\wiczone2） <br>
相应的数据我已经导出成脚本了； <br>
在使用的时候，用mysql的内置函数 ：inet_aton(ipAddr) <br>
可以将ip转换为数字，这样我们就可以用sql直接比较：inet_aton（start_at）&lt;= <br>
&nbsp;inet_aton（user_ip）&amp;&amp; &nbsp;inet_aton（end_at）&gt;= <br>
inet_aton（user_ip）; <br>
这样，根据以上条件，我们就可以获得用户所在的城市信息；&nbsp;&nbsp;&nbsp; </p>
<br> <img src ="http://www.blogjava.net/bourn/aggbug/141544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bourn/" target="_blank">段氏</a> 2007-08-30 23:01 <a href="http://www.blogjava.net/bourn/articles/141544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>