Alex's Web Develop Blog Asiainfo前端高级UE工程师

10Aug/100

你的代码写的很烂-<转自it外刊>

由于自己是设计出身所以看到这篇东西,感觉受益很深,怎么去编代码,怎么合理的去编代码是个棘手的问题。
我有一个很熟的朋友,他现在忙的不可开交。他手上有一大堆没有完成的合同,而且一个跟他一起开发的助手也离他而去。于是,在三个大客户的催命鬼时的督促下,他已经连续好几个星期没休息了。

其中有个客户跟他讨论他给这个客户做的iPad应用程序,客户告诉他“我们花钱雇了另外一个程序员来审查你的代码,他说你的代码写的很烂。”

当他告诉我这个故事时,我只是微微一笑,想起了我以前是怎么唾弃别人的代码的。当我刚开始编程时,我看到过一段程序,我认为那是毋庸置疑的写的很烂的,我删掉了那段代码,用自己认为更好的方面重新写了一遍。当我变成的成熟后,我回头再看,发现我所删掉的那段代码其实是用了一个很好的设计模式,而我重写的确是丑陋无比。

我就这样被上了一课。

之后的日子里,我经常会遇到我认为是丑的不能再丑的代码。尽管如此,我也不通篇否定它们了,我只会在其中找一些特别的无法容忍的部分重新编写。可10次中有9次,当我快要完成时,我发现了一个问题使我不得不对自己说“哦,怪不得他们要写成这样了”,然后把代码恢复成原样,或也使用同样“丑的不能再丑”方式完成它。

现在我变的更成熟了,我可以充满自信的告诉你,我再也不会看着别人编的代码说“哦,这代码很烂”了。我知道,在没有了解整个程序的解决方案之前,你不可能就那么轻易的判断代码的好和坏。真的,有时候它看起来很傻,或完成的不好,或没有文档标注(我的意思是自我注释),然而,你根本就不可能知道程序员在写这段代码时脑袋里是怎么思考的。更多的情况是,他们要选择这样做是有一定的理由的,除非去深入的研究它们,你不可能再有其他简单快速的方法来理解程序的上下文环境。

所以,每当听到有人看着别人的代码说很烂时,我只会微微一笑,让我想起我当年的天真和盲目自信。的确,我以前坚信自己是个出色的开发人员,坚信知道每种算法的最优设计。我很想念当时的自大,但是我很高兴现在学到的这些理念,我知道,我唯一能鄙视的代码只能是我自己的代码,鄙视的原因就是我不能使它变的更好。

5Aug/100

svn文件不能上传的处理方案

最近做4A的管理平台与认证平台的项目,出现了一些关于版本管控工具svn的使用问题,由于之前svn用的不熟,所以对svn的掌握运用是必修课,svn的添加删除更新等基本已经能够做到,现在针对出现严重问题需要调整整个文件的时候的处理方法!

1).把不能上传的文件夹A-1从新命名A-1-1,返回这个文件夹的父级A,update下这个父级文件夹

2).这个时候A 文件夹下的A-1文件夹被Update下来,将A-1-1文件夹下的.SVN的所有文件搜索删除掉,然后把这个文件的所有文件全部copy下

3).然后覆盖A-1文件夹下的所有文件,然后将A-1这个文件里的内容Add进服务器,最后commit下,收工齐活!

1Aug/100

怎样跑步才科学

国际著名的德国医学专家赫尔曼教授指出:“慢跑是保持健康的最好手段,关键是运动中它能有效提高供氧,慢跑时的供氧能力比静坐时多8至12倍。”近几年的科学研究已证明,跑步能够增加血液流动,提高血液对氧气的输送能力;跑步可使肺功能增强,从而提高肺活量和吸入氧气的能力;跑步可以改善心脏功能,防止心脏病的发生,使心肌变得强壮有力,改善心肌血液供应;跑步可以增加骨密度,防止骨质疏松。

那么,怎样跑步是最科学的?一个安全有效的运动处方应包括四个部分,即准备活动、跑步活动、肌力练习和整理活动。

步骤
1
准备活动:通常需要5至10分钟,可以先慢跑2至4分钟,再做几节全身的柔韧性练习,也可快步走并做些与伸展运动相结合的活动。比较安全有效的柔韧性练习方式是坐在地上或躺在垫子上进行静力伸展活动。
步骤
2
跑步活动:这一部分是核心内容,质和量都必须予以保证。所谓“质”,就是锻炼中的心率要达到“有效心率范围”(即最高心率的60%至85%),简单的计算方法是用参数180(或170)减去自己年龄的余数就是运动中应该达到的心率数。所谓“量”就是每次进行20至30分钟跑步运动(或走跑交替),每周运动最好3至5次。
步骤
3
肌力练习:这主要是针对一些跑步运动中没有得到充分锻炼的肌群,主要是四肢肌肉和腰腹部的肌肉。可做徒手或负重的肌力练习,如俯卧撑、引体向上、仰卧起坐、俯卧挺身及举重等。最后再做几分钟的放松性柔韧练习。
步骤
4
整理活动:经过20至30分钟的耐力运动,不宜突然停止或坐下、躺下,因为肌肉突然停止运动会妨碍血液回流到心脏,而造成大脑缺血,锻炼者就会觉得头晕,甚至失去知觉。正确的做法是放慢速度,继续跑和走3至5分钟,同时做些上肢放松活动,让心率慢慢降下来。
提示和警告
初练者要做好身体检查,最好做一次心电运动试验,以了解自身的心脏情况;
要注意循序渐进,运动量从小开始,逐渐增加运动时间和运动强度;
天气不佳(过热、过冷、雨天路滑)都不宜进行室外跑步,有条件可进行室内原地跑步或在跑步机上运动;
患有心率不齐,心肌梗死、哮喘、血尿及坐骨神经痛等疾病者,应暂停跑步,等病情好转在医生同意后才可进行运动。

31Jul/100

一分钟自我表现术

这本书看过大半年了,用半小时时间翻第二遍,仍然觉得无比强悍。social这件事,理论是累赘,直接操作是王道。

1.如何表现做事积极
*自我介绍开始和结束时各报一次姓名
*起立发言,迅速从椅子上站起来
*早到公司
*挺直腰杆快步走路
*用力握手
*倾身听人说话
*随声附和时可以稍微夸张点
*即使是上司的邀请,大约每五次也应该拒绝一次
*即使是老板有时也应该反驳他,才能确立自主性

2.如何加深别人对能力的肯定
*发表意见前,先说明自己的观点
*每次都能将意见归纳为若干项
*说话或写文章要尽量缩短句子的长度
*任何说话尽量控制在三分钟内完成
*向上司陈述自己意见时,适合用“请教”语气陈述
*事先说明可能发生的最坏结果,即使将来失败了,别人也不会觉得你真的失败
*向别人陈述意见时,以“您说过的某句话使我联想到”的方式表达更好
*叙述数字时最好能将个位数都表达清楚
*回答对方问题时先停一会再开口,让对方感觉到你的仔细考虑
*和人一起吃饭时,不能总是让别人决定吃什么
*想掩饰内心的各种感受,就设法让自己面无表情
*专精于某一件事,可以让人刮目相看
*不说别人预料你会说的话,可以提高对方的信任

3.如何提高别人对你的信赖
*想让人觉得诚实,就该主动透露一些缺点
*爱惜与工作有关的所有工具
*在人前演讲时,速度最好比平时慢一些
*对自己的过失,做出比对方预期更郑重的道歉
*对盛怒中的人,不要立刻反驳
*重复对方的问题,可以表现自己的认真态度

4.如何让人觉得亲近
*主动参与可以让人感受到诚意
*尽量制造身体接触的机会,可以缩短心理上的距离
*见面时间长,不如见面次数多

5.如何表现开朗的个性
*向对方先打招呼
*把每句话的结尾都说得清楚
*鞋子不干净,会给人留下不清洁的印象

摘录一些句子
*一个人有多大能耐,不但可由他交往的朋友观察,也能由他树立的敌人判断
*做好好先生也会被轻视
*心地过于善良,则会缺乏决断
*成功者面对这个世界时总是从容不迫的

30Jul/102

千鸟的论《误把常识当知识》

通过rss看到千鸟的这篇5月份的文章,文章不短但是道理简单就是设计师,不能“误把常识当知识当真理,以为自己有多高的壁垒”,说白了就是丫不能拿常识把不懂行的人当傻子,拿鸡毛当令箭,忽悠人间,并且观点鲜明的提出,怎么样做就能把常识当知识了?那就是要把常识有序化、结构化、逻辑化、选择性的来学习,然后就是知识了,就有壁垒了,就相当于上了神装希瓦,可以跟不懂行的人pk了。作者强调的是知识的系统化结构化,知识的强逻辑性,的确鸟的观点对于设计师的提高进步是关键的。
下面是鸟的原文:

--------------------------------------------分割线------------------------------------------

作为圈外人士,很容易犯的错误是“误把常识当知识”,以为别人有多高的壁垒,人云亦云、盲目崇拜等。作为圈内人士,很容易犯的错误也是“误把常识当知 识”,以为自己有多高的壁垒,...
5月话题讲到的设计师的个人知识管理涉及面太 广,谈到了太多我反思过无数次的问题,有机会慢慢写。讲到积累时,大家的看法有点分歧。归根结底,还是对“是常识还是知识”问题的看法不一致。我的观点, 常识还是知识完全能够区分,并且结论适用于绝大多数人。
很少人做的专业领域,你只需要了解“常识”就可以混了。因为客户只需要浅层次的尝试开始,随着经济效益的提升,客户有了专业上的需求,对相关从业者 的要求才会从常识上升到知识层次。同时,逐渐有更多从业者参与进来,竞争的压力也是迫使从业者学习更多“知识”的动力。但现实是知识更迭过快,很长时间的 过渡期内,客户根本不需要“知识”。二八原则告诉我,任何专业领域80%都是常识,只有20%才是知识;长尾理论告诉我,任何专业领域的经济效益,都取决 于其“常识”的长尾部分。
同样的观点,在某些人嘴里是常识,在某些人嘴里是知识。因为学到一些专业的“做派”很容易,只要你保证足够的好奇心,和足够的信息获取量。时不时在 blog上冒出来的“专业”观点让别人根本搞不清楚你是真懂还是装懂,看多了我认为区分也很简单——你的“专业”观点是否有序且结构化,这个特质可以在一 篇内容上体现,也可以在一系列内容上体现。
我观察比较好的一篇专业知识网志通常主题都会很小,观点清晰论据充分,标题也能很好的提炼内容。很多人的一篇网志上要罗列N个混乱的观点,搞不清楚 他要表达主题是什么,因此只好概括成类似“XXXX的若干原则、XXXX的几点思考、XXXX的几个看法”等的标题。我在2009年2月指出 Smashing Magazine存在大量信息快餐的问题,包括二八原则、长尾理论这样的观点,我认为凡是能一句话描述都是常识,只不过因为你不在某 个专业领域不知道而已。
在北京,通常会被问到这样的问题“你是混哪个圈子的?”,此时懂行的“圈内人”自然会心一笑,回答“跨圈的。”有圈内人把他的交往原则总结成为十个 字——万花丛中过,不是圈里人。其中的奥妙聪明人一看便知,尽可能多了解各种圈子的常识,多交朋友多条路,江湖都是跑出来的。比如,我用自己掌握的专业互 联网产品设计知识与所熟知的传统行业(如个人兴趣爱好)人士打交道,很快能赢得对方的赏识,并建立信任基础。
作为圈外人士,很容易犯的错误是“误把常识当知识”,以为别人有多高的壁垒,人云亦云、盲目崇拜等。作为圈内人士,很容易犯的错误也是“误把常识当 知识”,以为自己有多高的壁垒,鸟瞰八荒、俯视天下等。总结起来,我认为知识与常识的差异有如下几点:
1. 常识是无序的,而知识有序且结构化。
2. 常识很容易被描述,而知识相对复杂且逻辑性较强。
3. 常识应该多了解,而知识应该选择性研究。
对于互联网产品设计领域,我们现在说“做产品要以用户为中心,好产品一定讲究用户体验”这些都是废话,因为没有可操作性。那么有可操作性的例子,类 似用户阅读内容的习惯是从左到右,用户扫视页面的视线规律成“F”型,白底黑字的对比度具有最佳可读性,等等这些可以随口“借鉴”的结论性公理,在我看来 也全部都是“常识”问题。但是在外行角度,他们会因为你的这些“知识”很新鲜很牛,从而判断你很“专业”。
关于常识还是知识的问题,我只是表达了自己的看法观点,不科学、不严谨。当然话又说回来,其实目前对你来说“是常识还是知识”不重要,关键要懂得积 累。积累多了你自然明白什么是常识,什么是知识。

30Jul/100

新的项目如何开展并进行用户研究

应该是局限于web2.0的网站的,只不过在web2.0的圈子里面,大家普遍比较重视用户体验,界面的交互友好性,因此做web2.0的网站推行 用户为中心的设计(User-Centered Design)就容易得多。这些天总有些负责网站界面的设计人员找我咨询,怎么做用户访谈才感觉不像聊天,怎么样让用户参与到设计中来,得到更多的意见而 不是简单的一句还可以或不错之类的评语,原型的改进花费时间总是太长怎么能缩短,设计的时候没什么把握,诸如此类的问题。。我想对此在msn上做的指导大 量重复,需要在这里做一些入门级的解释了。。

Q1:首先,用户为中心的设计环节包括哪些活动?
答案:设计–〉原型–〉测试–〉再改进设计–〉原型–〉测试 –〉。。。看出来了吧,这是个迭代过程。。。你的设计没有把握,那么使用测试来验证,发现问题,再快速改进。。

Q2:这样的迭代,什么时候中止,递交给开发呢?
答案:没有完美的设计的,递交给开发前,保证你的设计 没有一级易用性问题。否则上线的产品用户骂声一片。。但是还有一些小的bug好改的都改掉,不能改的下一版本吧。什么时候中止,那要看口袋里的钱,还剩的 时间和人力等资源限制咯。看得出来吧,这里面肯定有很多的Tradeoff(妥协)的,做UE的和做开发的一定要搞好关系哦,这样,可以多改掉几个bug

Q3: 用户什么时候接触?他们最理想的介入时期是什么时候?
答案:作为UE/UI要记得,永远和用户保持紧密联系。不管项目进展到什么时刻,你都要思考,用户要干嘛,喜欢怎么干,这样的设计他们会不会觉得舒服流畅。要验证答案,那就赶紧去接触他们吧。

Q4:我知道在开发前期的设计工作,要做一些用户研究,问卷调查,用户访谈之类的,到底要研究些什么,出来些什么结果呢?
答案:在设计之前,你要明白的一件事情就是,为谁而设计。围绕这个谁,你需要回答:

1.他们的基本特征,比如年龄段分布,性别特征,家庭,行业,电脑经验,上网经验,收入阶层等等。。

2.你需要找到他们中间最典型的人群,需求最强烈的人群是怎样的一个形象。这个在UCD里面叫做角色提炼(Personas setting)。也许为10万个人设计,你什么都靠猜的,没可能满足10万个人的要求。但是你为这一个或者两个角色来设计吧,他们最典型,他们的需求满 足好了,你就离成功不远了。

3.用户在使用你的网站到底舒服不,流畅不,主要是看他的操作习惯,行为方式和网站设计的是不是很匹配。你要研究什么,根本就是典型用户的操作习 惯,行为方式,最后获得一个用户模型(User Model)。网站要创造出的用户体验,不是用户对你说,我要怎么样怎么样的,也不是设计者自己在那里想,嗯,这么设计比较容易,两步就能完成,一定很 好。。两步就一定好么,你的用户很可能就习惯了走某固定的三步来完成,你的两步,很可能让他们满腹狐疑,忧心忡忡了。。

ok,现在你知道了,出来的结果是什么,用户群特点,典型用户的形象即角色(Persona),然后就是用户模型。。

Q5:知道研究什么呢,该怎么开展研究呢?
答案:用户研究的方法可以很灵活的,常常见到类似聊天一样的,一个问,一个来答,叫用户访谈。还有一些方法,比如问卷调查,焦点小组,数据分析等等。。根据不用的研究内容,还有时间,技术,成本来决定。。
至于怎么研究,一个前提就是,目的性明确。不管你做访谈也好,问卷也好,漫无目的,只会让你对这些形式的有效性产生怀疑。。比如问卷,设计多少个问题,设计哪些问题,你要规划好了。。问卷设计哪几个纬度,每个纬度需要几个问题可以得到结果,什么样的量表合适。。

Q6:项目已经进入开发了,做用户研究来不及了啊。
答案:嗬嗬,来得及来得及,只是要让你的第一批用户多多忍耐了。UCD是迭代过程嘛,已经开发了,你就研究着,准备对第一版本的产品进行测试评估和改进吧。。慢慢来,一个一个的改。

Q7:你所在的team(UI)是怎样跟一个团队(产品策划,程序员等)沟通合作的,又怎样更好的融入到产品的整个过程中的呢?
答: 经历过很多种不同的Team,他们处在不同的位置上,常常承担的责任也不一样,因此作事情的方式也完全不一样了。UE在整个产品开发过程中的位置把握准 确,相当的重要。关于位置怎么最合适,日后我再专门阐述。目前接触到较理想的工作方式,如何沟通合作,是和产品设计决策者一起工作,将你获得的研究或者评 估结果,直接变成设计或建议,传递给产品设计决策者,判断问题的重要性,有哪几种可行的方案,如何改最合适,你们一起探讨。常常,在研究方案是否可行时, 你需要跟程序员沟通,提出你的想法,询问是否能实现,实现难度,大致的时间。这样能够保证你方案的可快速执行。这存在很多的沟通技巧。最好的情况就是你, UE人员,要把以用户为中心的思想灌输给他,让他进入你设定的情景,站在你的立场去考虑问题,这样程序员会增加工作的责任感,他甚至可能发挥主观能动性, 帮你想到更好的实现方法。。。这样的一种氛围中,整个的团队就像一根绳子往一个方向使劲,都全力想让产品做好,想想,那样的工作多让人充满激情吧。

这只是其中一部分,在你和产品决策者沟通时,甚至还有市场部门的同事参与,一方面,你要代表用户的利益,另一方面,你要试图了解公司希望创造的商业 价值,从中找到一个平衡点。这种设计才最容易获得上层的支持,以最快的速度推行下去。可以看看偶翻译的用户体验设计师的职责那片文章。

Q8:界面(原型+设计),交互(包括js),测试等都由一个人做吗?如果不是的话,那么对用户体验的研究又怎样能证明自己的作用?
答:这些工作我都做过,一个人做这种情况其实非常的常见。但是一个人,并不理想,最好,还是培养一个团队。而且有些工作,一个人做不了,必须有协助。这主要看公司的不同状况了。如果是一个人,评估用户体验研究的效果,就可以对你的成绩进行评判了。
如何是一个Team,是好几个人协作完成,如何证明每一部份的工作成效?iceshow是问这个吧。
老实说,我对这个问题没有把握。因为UE的日常工作就是设计-原型-测试评估,是完整的流程,对工作的评估,只能考核整个流程下来的结果。单独一部份工作做得如何,我还没有研究过。。

白鸦在blog里面特意的提到我这个系列,标题的web2.0,应该改掉。我倒不想,出于UE知识的普及,这样的标题适合目标用户群– web2.0用户体验实践者,可以抓住他们的眼球。这一群能人帮助只是迅速传播普及。另外在用户体验设计方面,之前3篇完全适用web2.0..

今天说说web2.0和1.0在用户体验方面的不同之处,但是,这只是我浅薄的理解,希望可以得到各位资深的实践者们的提点。其实以我的积累,应该是远远不够的。

用户体验包括四个因素:品牌,功能,usability和内容。现在大家常常误认为:用户体验=易用性(或者可用性/usability)。其实不然。

web2.0最不缺的是功能,每一个创业者都是认为自己发现了用户的某一种需求,而市场上没有任何产品可以去满足,因此觉得自己可以开发出具备某些 功能的2.0产品。。这方面,不多说什么,只是说一点,细分用户群,必定会成为竞争趋势。。仔细研究了用户群,深入挖掘他们的特点和需求,在最开始就做到 高的粘着力,是否更好了?

在品牌上,很多人对这一点的忽略,导致了用户体验的整个盲目。现在我问你,sina,sohu和网易,有什么差别?普通用户可不清楚,都是门户网 站。。好像网易开发游戏,sohu还开发了搜索,sina,好像经常做赞助活动。。这就是品牌么?现在问你Nokia和Moto有什么差别?你能回答 吧。。品牌和用户体验的关系,是互相影响的。。你用Nokia,发现它简单朴实,好用,还抗摔。就是样子有点。。那么nokia的品牌形象排除了价格因素 后就是这样,简单朴实好用机身抗摔,样子一般了点。。现在如果有人推荐你,某个品牌,它是如何的有趣个性时尚,然后你一使用,发现:切,哪点特别的,跟 Nokia差不多,还不如买Nokia。。失败了吧,因为品牌没有独特的个性,带来的用户体验期望值和现实落差,将会让你的目标用户转头而去。。网易相册 和其他的相册,有什么差别。。和flikr反正是大大的不同。。

在内容上面。虽然说,web2.0是用户参与,很多网站的内容都是用户来建设。。但是在用户参与之前,你要想,用户为什么要参与。。只因为我没有日 记本,你给我一个日记本,我就一定要用你给的这个来写么?用户是否参与,参与程度多少,这些都取决于你现在的内容。。你现在是空的。。鬼知道你这个网站是 不是快黄了,我干吗要在这写啊。。你现在很多,但是都是转载的,没几个用户在写。。骗我么?我写了根本就没有几个人看。。好,现在你的内容很多,用户也开 始很多了。。但是,天啦,这些内容也未免太广告性了吧。。。或者,用户想,我写了你会不会到处转载啊。。你们这的用户素质怎么样啊。。。而且,形式上,你 的品牌,说一点关联性,品牌你标语说时尚个性,网站样子看上去土拉吧唧的,马上用户的信任度就降低了。。

Usability,网站当然要好用了,很迅速的完成内容提交,或者找到目标内容,这是当然的。。但是不是随便一个你觉得交互方式很流畅的网站,都 可以完全拷贝复制。幸亏世界如此丰富,不然我们做交互设计的,就跟做数学公式一样了,多没意思,一个套路。。不同的用户,习惯不同的交互方式,他们喜欢什 么样子的,这便是用户研究里面要做的一部分工作。。这样的研究结果,帮助你的交互设计具备了自己的个性。。usability测试的结果,是要知道你的目 标用户群的看法,发现的问题,而不是科学研究,三步如何变成两步。

6Jul/100

SMC-菜单不能遮住flash的chart的展示图标的问题解决方案

今天开发那边提出了,swf文件展示层级比html标签高的问题,具体在页面中的问题是,flash遮挡住网页元素的展示,研究了网页中插入swf文件的属性你会发现其实这个问题非常德简单就是在,标签上设值该文件为"透明",具体的代码如下: