Friday, February 25, 2011
Tuesday, January 18, 2011
和老大的沟通
Thursday, January 06, 2011
尚波沟通
Wednesday, September 01, 2010
老大沟通纪要
Friday, August 13, 2010
客服拖延【转】
上大学以后,我开始有了拖延的毛病。立下目标无数,但时常却动力奇缺,常常在网上浏览着各色的小说和帖子,或是玩很无聊的弱智在线小游戏,却不愿碰专业书本或文献一下,甚至哪怕deadline就在几天之后,只有在deadline之前一点点时间才会因紧迫感而开始着手学习任务。这样下来,学业上总体来说算是马马虎虎,但却离自己的理想越来越远。总之,就是无法完全地上进,又不愿彻底地堕落。
拖延的基础,实际上是对自身很高甚至不切实际的期望。如果说完成任务是走过一块一人宽、十米长的厚木板,那么当它放在地面上时,几乎人人都可以轻松地走过。但对结果的高期望则像是将这块木板架到了两座高楼间十层楼高的地方,于是我们会害怕掉下去,即害怕失败或害怕成功(比如我有时偷偷希望实验不要成功,这样我就可以不用面对之后更大强度的后续实验,其实是害怕失败的一种变体),于是我们甚至不敢向前迈上一步。而deadline则是身后的一团火,当它离我们足够近时,害怕被烧着的恐惧感战胜了对掉下去的恐惧感,于是我们一下子冲了过去,在deadline前赶完了任务,尽管质量很难说。
更可怕的是,很多拖延的人(包括我自己)甚至很享受那种deadline过后突然一下放松的感觉,而且拖延的结果有时反而挺好(比如我本科时写实验报告,如果我拖到最后,我往往可能因为能够和其他人讨论并参考其他人的观点而比我先完成要写得更全面更好)。这种时候,我会在心里表扬自己很有"效率"。同时,长期这样下来,尽管我不愿承认,但我潜意识里确实觉得自己如果花了很多时间成绩却平平,会是一件非常丢脸的事情。于是这一切的一切,都再次强化的拖延―― 即使结果不好,我也可以说,那是因为我没尽全力,如果我真正努力,肯定会结果很好的(心理学上的高自尊人格)。
但我们不能永远靠放火来逼自己走过木板,那样的话,总会有烧着自己的一天;而且,那种压抑的焦虑感和对自己不满意的感觉也并不令人愉快。因此,最好的办法是将木板的高度降低――不要对自己的结果(比如分数)太高的要求,认真完成就好。由于我们的天资和其它能力的限制,也许即使我们竭尽全力也无法像某些出众人物一样做得那么好,但不管怎么样,绝大多数情况下,尽力的结果都会比我们不去努力要来得好得多,不是吗?
对此在豆瓣的那个帖子里有一个非常有趣的方法。那位作者将一篇论文拖了几个月之久都不愿开写,她的心理师让她不要管好坏,以她可以写出的最差的论文为目标写一篇出来作为试验。作者照做了,然后惊讶地发现她写出来的"最差"的文章竟然挺让自己满意的,感觉稍做修改就可以交给导师过目了。当然,有时写出来的初稿和论文要求还是有差距的,比如要求12页但初稿只有5页。这种情况下作者就用了心理师教她的另一个方法:每次工作一个小时,目标是让论文多一页,同样以 "最差"为目标。这个方法实际就是大大降低了拖延者做事的心理成本和负担,相当于把"木板"放到了"地面"上。不妨一试。
人的完美倾向,严重点就是完美主义,在拖延中也起了很大作用。当我想起幼时的远大理想并希望为之努力时,我只要想起我的同学中无处不在的"牛人",便会觉得自己已经浪费了太多时间,而且别人现在不仅比我强得多,更因为他自身的优势而占有了比我更好的资源,所以我现在即使努力估计也赶不上他了,更别提什么远大的理想了,于是就又开始了拖延。
事实上,这就像是一场马拉松,你在开始因为种种原因落后于别人不少,于是你就开始纠结自己到底有没有跑下去的必要,却不努力去跑,于是被拉得更远。这时,你望着遥远的终点,感觉很绝望,都不想跑下去了。这时,如果你不去看不去想重点,也不去想别人,只看着自己的脚下跑――"管它呢,我先跑过这个小土丘再说。"就这样一个小目标一个小目标地跑,最终你一定会跑到终点线,那时你也许会发现,你并不是最慢的,甚至是很不错的。所以,专注于你努力的过程而非最后的结果,为你认真学习了一个下午或认真做了一个实验而不是最后考试的那个A或一个漂亮的实验结果而表扬自己,你会发现完成工作其实不怎么难。
另外,专注于当下对拖延者来说也是很需要注意的一个地方。这里说的专注于当下,不是指专注于你现在脑子里的想法和情绪,而是专注于你现在在做的或选择要做的事情。其实,很多拖延的人恰恰就是太过关注自己一时的情绪,比如觉得自己不开心了,得放松一下,上上网……然后就开始了拖延。其实从心理学角度来说,过于关注自己一时的情绪是不懂得推迟满足感的一种表现,就像小孩子想要一个玩具就非要马上得到不可一样,这样的做法会大大削弱一个人的自制力。而且,心理学实验表明,满足自己一时的情绪需求并非最佳策略,从长期角度上来讲,它会降低一个人的自我满足感和幸福感而非增加,想想因为玩乐休闲而拖延了工作后自己的负罪感和焦虑感就知道了。
在这个方面,我个人认为森田疗法的理念是很适用的。具体而言,就是不去理会那些打搅你的情绪波动(比如对自己说:"你要郁闷就郁闷吧,不管你了。"然后就不理会了),顺其自然,专心做你要做的事情。就像一颗小石子投入湖中,会泛起一圈圈涟漪,你若不理,湖面最终会自己平静下来;倘若你过于注意那颗小石子,试图把它捞出来,反而会激起更大的波澜,使湖面不得平静。豆瓣那个帖子的作者提供了一个方法,我觉得也是很有用的:把你当时因为一时情绪想要做的事情(比如上网、玩游戏、看电影、看小说等等)记下来,告诉自己等你做完工作就去做那些事情,然后就专心工作,等到工作结束再去做记下的事情。
此外,不要为未来过度操心,也是专注当下的一个方面。这点很容易理解,我就不在此赘言了。
同时,对于已经发生的不愉快的事情,或是对自己过去行为的不满,面对和接受好了,不必逃避。但面对和接受不是放任自流,而是不再沉浸于自责、痛苦等负面情绪中,客观地更好地理解当下的状况,进而为以后做打算。这一点可以和前文提到的"马拉松"的例子联系起来,只有真正面对和接受了你落后于别人的事实,你才不会为"我想得第一可是却落后别人那么多"之类的想法而纠结,进而才能以现实为基础,踏踏实实地努力去跑。
另外,在看书的时候(当然也有其它时候),很多人都常有"刚才看了好几页却不知道讲了些什么"的"不自主飞翔"的神游体验。对此,养成发现新事物的习惯,像初生的婴儿一样去看世界,是很有好处的。无论在什么环境中,时刻注意那些熟悉的东西有什么变化,比如看书,就可以注意想想这书里讲的和我以前知道的有什么不同又有什么联系、有什么很有意思的地方等等,慢慢地,就能做到专注于当下而不至于迷失。
战胜拖延,追根究底,还是要改变自己的思维方式。这并不容易,但不是不可能。改变思维方式,尤其是改变潜意识,最重要的是要改变自我对话的方式。下面是一些自我对话的tips(括号里是要丢弃的自我对话方式):
1.我选择/我想要…… (vs.我必须/我一定得……)
2.这个任务我可以每次做一小步 (vs.这个任务太大了
3.我今天要开始做…… (vs.我今天必须完成……)
4.我也可以是平凡人 (vs.我必须完美/出类拔萃)
5.我一定要休息娱乐/休息娱乐是正常生活的一部分 (vs.我没空休息娱乐/休息娱乐就是偷懒)
我想大多数有拖延情况的人也许都还没到严重成"症"的地步,但也或多或少地被它影响了生活,影响了对心中理想的追寻。克服一个问题并不简单,需要自己给自己很多的支持与鼓励,期间也许会有许多的反复,但只要我们的大方向是好的,我们就该肯定自己。
"认识到眼前残酷 (这个词程度太深,但我想不出换什么好)的现实,同时又看到未来的光明与希望。"这是我一直很欣赏的对生活的态度。
Sunday, July 25, 2010
最近所得
Monday, July 05, 2010
我竟然有点想她了
Friday, June 04, 2010
朱少民的一些关键字
朱少民@baidu ,仅仅作为一些记录。
- 流程
- V/W模型
- 一般的时间用于测试?理想的情况?
- 系统设计,考虑硬件等
- MSF
- IBM_RUP
- XP/Scrum
- TPI模型
- V/W模型
- 测试
- 性能测试实验室
- 安全性 ,rt层次
- 测试平台
- 测试件(计划、用例)
- 运行,管理
- 人,进度,缺陷等
- 测试执行
- agent/client
- crontab
- 结果报表,邮件
- web server,记录测试结果
- 管理,沟通
- wiki/mail/blog
- TFS
- 测试件(计划、用例)
- 计划、方案、策略
- 包括目标、范围、需求
- 跟踪、控制机制。
- 计划>方案>策略
- 策略是为了降低风险
- 测试经验的累积
- checklist
- 模块类型划分
- 自动化的整体化
- 人员变动,鲶鱼效应
- 覆盖率
- 未写的代码的覆盖率
- 错误代码的覆盖率
- zhu.kerry@gmail.com
- 质量是构建出来的
- 前段强调效率,尽早发现bug
- 后面强调质量,减少风险
- 发现问题,和产品经理讨论
- 和rd互换角色
- 敏捷
- 测试时间变短
- 回归范围变大、次数变多
- qa地位有降低的可能
- 一页纸的测试计划、用例等
- rdqa比越高,对qa越有优势,因为你看到的更全面
- 结对编程的可实行性
- check in之前,先对local build完成新改动的验证
- 自动化测试
- 一体化
- 系统化
- 自动化、半自动化、手工case的完整结合
- + - 关键字驱动
- 维护方便
- 易于使用
- 测试脚本本身的质量
- + - web测试
- fiindbugs
- checkstyle
- PMD
- link checker pro
- web driver
- sahi/MaxQ(协议)
- badboy/jmeter
- eclipse TPTP
- jtest(安全)
- HP QC,MS VSTS(测试平台)
- + - iphone测试
- 模拟器
- 工具等
- + - 70api,20功能,10UI
- 朱少民:能不做就不做
- 持续努力,全员参与,先苦后甜
Thursday, May 13, 2010
强大的ipython
Wednesday, May 12, 2010
python:标准输出重定向并复原
Sunday, May 09, 2010
测试行业 业界相关
Personal Test Maturity Matrix,描述个体工程师的能力发展,而不是一个组织上的。通过四维角度描述测试工程师的能力:测试技能、领域知识、IT技能、软技能。这个对于我们在确定工程师能力上,有了比较清晰的认识。
领域知识是指测试对象所包含背景知识,比如测试路由器,整个网络协议就是测试路由器的领域知识。也包含测试对象的本身功能,我觉得就是我们平常说的测试对象熟悉程度,对测试对象的了解。
IT技能包括编程能力、系统安装等。
软技能,既沟通能力、推进能力、责任心等等。
下面具体说一下测试技能,其包含探索性测试、黑盒测试设计、白盒测试设计、测试执行、测试报告、自动化测试、搭建测试环境、审核。
具体如下:
同时介绍MPS(激励潜能分数),具体计算如下:
• Skill Variety (V)
– the range of different skills needed
• Task Identity (I)
– the degree of completing a whole job
• Task Significance (S)
– the importance of the job
• Autonomy (A)
– the level of control of their own time
• Feedback (F)
– the degree of supervisory and results-based feedback on performance
MPS=(V+I+S)*A*F/3
2 基于cpn的测试
Cpn是指软件规格说明书(用的比较多的是specification),我们mrd和这个近似。这篇讲的是基于软件规格说明书的测试,以需求规格说明作为结果检查的重要基础,反过来发现规格说明本身的错误,将测试设计活动部分前移到开发之前,提高效率,同时测试用例和系统的实现无关。
那么这其中的重点就是如何从规格说明中产生测试用例,用于描述规格说明的语言包括:自然语言、形式化语言(Z、VDM)、模型(FSM、UML、Petri Net)。我们的mrd都是使用自然语言来描述。
主讲人推荐使用perti net来描述规格说明。提及的好处有可视化、严格的数学定义、可动态仿真、支持状态空间的分析。
主讲人给出一个电梯和一个饮料机的例子来说明petri net。
从实例中,可以看到有2个优势:1 建模之后,可以动态的验证规格是否满足需求,2 自动生成用例。
不足也有2点:1 case生成的庞大,数量众多,2 应用范围限于功能验证并且容易建模。
Thursday, May 06, 2010
graphviz install
Tuesday, May 04, 2010
python中的闭包概念
def addx(x): return lambda y: x + y add8 = addx(8) add9 = addx(9) print add8(100) print add9(100)
Wednesday, April 28, 2010
python debug
利用pdb调试程序,在指定的位置调用起来pdb。
# epdb1.py -- experiment with the Python debugger, pdb import pdb a = "aaa" pdb.set_trace() b = "bbb" c = "ccc" final = a + b + c print final
4. Now run your program from the command line as you usually do, which will probably look something like this:
PROMPT> python epdb1.py
python gui编程
# File: hello2.py from Tkinter import * class App: def __init__(self, master): frame = Frame(master) frame.pack() self.button = Button(frame, text="QUIT", fg="red", command=frame.quit) self.button.pack(side=LEFT) self.hi_there = Button(frame, text="Hello", command=self.say_hi) self.hi_there.pack(side=LEFT) def say_hi(self): print "hi there, everyone!" root = Tk() app = App(root) root.mainloop()
阿里巴巴的零知识证明【转】
战争中你被俘了,敌人拷问你情报。你是这么想的:如果我把情报都告诉他们,他们就会认为我没有价值了,就会杀了我省粮食,但如果我死活不说,他们也会认为我没有价值而杀了我。怎样才能做到既让他们确信我知道情报,但又一丁点情报也不泄露呢?
这的确是一个令人纠结的问题,但阿里巴巴想了一个好办法,当强盗向他拷问打开山洞石门的咒语时,他对强盗说:"你们离我一箭之地,用弓箭指着我,你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我。"
强盗们当然会同意,因为这个方案不仅对他们没有任何损失,而且还能帮助他们搞清楚阿里巴巴到底是否知道咒语这个问题。阿里巴巴也没损失,因为处于一箭之地的强盗听不到他念的咒语,不必担心泄露了秘密,而且他确信自己的咒语有效,也不会发生被射死的杯具。
强盗举起了右手,只见阿里巴巴的嘴动了几下,石门果真打开了,强盗举起了左手,阿里巴巴的嘴动了几下后石门又关上了。强盗还是有点不信,说不准这是巧合呢,他们不断地换着节奏举右手举左手,石门跟着他们的节奏开开关关,最后强盗们想,如果还认为这只是巧合,自己未免是个傻瓜,那还是相信了阿里巴巴吧。
"零知识证明"说的是示证者向验证者表明他知道某种秘密,不仅能使验证者完全确信他的确知道这个秘密,同时还保证一丁点秘密也不泄露给验证者。阿里巴巴的这个方案,就是认证理论"零知识证明"的一个重要协议。
除了被俘后如何靠情报保命这个问题,零知识证明在社会领域中还有着很多应用场合。例如你证明了一个世界级的数学难题,但在发表出来之前,总是要找个泰斗级的数学家审稿吧,于是你将证明过程发给了他,他看懂后却动了歪心思,他把你的稿子压住,把你的证明用自己的名义发表,他名利双收,你郁闷至死,你去告他也没用,因为学术界更相信的是这位泰斗,而不是你这个无名之辈。
这并不是天方夜谭,而是学术界常见的难题,前些年有个博士生告他的泰斗级导师剽窃他的成果,但除了令师生关系恶化外没有任何效果,最后他使出了撒手锏,称他在给导师审阅的论文的关键公式中,故意标错了一个下标,而这会导致整个推导失败。学术委员会一查果真如此,但还是有倾向于泰斗的声音,有人说那是泰斗的笔误,只不过让你发现了而矣,并不能证明那公式就是你推导出来的。
这个博士生故意标错下标,不能说他没有心眼,但他没有把"零知识证明"理论用好,以致于落到这种地步。"零知识证明"早在1986年就被A.Fiat和A.Shamir用数学的方法给出了解决方案,并在同年申请了美国专利,但由于该理论可能被用于军事领域,专利局被军方密令搁置,6个月后,军方命令:"该申请发表后会有害于国家安全……所有美国人的研究未经许可而泄露将会被判刑罚款"。看来军方认为作者肯定是美国人了,但作者实际上是在美国申请专利的以色列人,研究也是在以色列的大学里做的,军方这个命令摆了个大乌龙,虽然两天后撤消了,但已经成为了学术界的笑柄。
这个笑柄也说明了一个问题,即"零知识证明"非常重要。基于数学的推理虽然非常复杂,但思路却很简单,上述的阿里巴巴方案就是其中之一。其它的一些方案,也都是像这样遵循着分割和选择(Cut and Chose)协议的。
例如图论中有个哈米尔顿回路(Hamiltonian Cyclic)问题,说的是多个顶点的全连通图,若有一条通路通过了所有顶点,且每个顶点只通过一次,那这就是哈米尔顿回路。如果顶点较多的话,即使用计算机穷举计算很难找出这条回路,因为通路的可能性真在是太多了。
如果松鼠会贴了一张全连通图(命名为A图)悬赏哈米尔顿回路,而且任命我(奥卡姆剃刀)作为评审官,你幸运的找到了一条,那该怎么办呢,将结果直接发给我吗?千万不要,因为保不齐我会将你的成果让给了我的亲信。那你该怎么办呢?应该这么办:
1、你将A图的顶点搞乱了,并生成一张新图,只是顶点的位置变了,而新图顶点之间的连线关系与A图是完全一致的。这时,新图中每个顶点与A图中每个顶点的对应关系你是清楚的,而且新图中的哈米尔顿回路你也是知道的。
2、你将这张新图发给我,没错,就是仅仅一张新图,上面并没有画着你发现的牛B回路。
3、我收到后,对你提出两个问题中的一个:一是证明新图就是从A图变形过来的,所有顶点和连线的关系完全一致,二是画出新图中的哈米尔顿回路。
4、如果你真的找到了A图的哈米尔顿回路,这两个问题当然都能轻松回答。需要注意的是:你只需要回答第3步的其中一个问题,千万不要两个问题一并回答,否则我就知道你关于A图的哈米尔顿回路了,你就SB了。
5、我还是不相信你,因为有可能你只是将A图变了形,却根本不知道A图的哈米尔顿回路,而我在第3步时恰好要求你证明新图就是从A图变形过来的,你当然能证明。或者有可能你找了个你知道哈米尔顿回路的图,但这张图跟A图一点关系都没有,而我在第3步恰好要求你画出这张图的哈米尔顿回路。
6、我要求你从第1步开始重复这个验证过程,随着次数的增加,第5步那种巧合的可能性就越来越低,如果你多次能回答对第3步中的问题,那我还不相信你已经找到了A图的哈米尔顿回路,那我就是一个傻瓜。
7、为了表明我不是傻瓜,我在松鼠会群博里宣布你找到了A图的哈米尔顿回路,而这时我并没有看到你所画的A图的哈米尔顿回路。
回到你证明了世界级的数学难题的问题,你可以用这种分割和选择协议来进行零知识证明,来保护你的权利。你公开声称你解决了这个数学难题后,验证者会给你出一个其它的题,而能做出这道题的前提条件是已经解决了那个数学难题,否则的话无解,而且这个条件是学术界所公认的,这个题就是所谓的平行问题。不出所料,你靠着已经解开数学难题的基础把这个平行问题做出来了,但验证者还是不信,他又出了一道平行问题,你又做出来了,多次较量后,验证者就确信了你已经解决了那个数学难题,虽然他并没有看到具体的解法。
大家已经看出来了,零知识证明需要示证者和验证者的密切配合,但如果你只是一个数学界的无名之辈,即使你宣称你解决了数学难题,也不会有人跟你配合着玩零知识证明,那你该怎么办呢?
我告诉你一个可以在法庭上都能当作有效证据的招数,你将证明打印好,选择一个最可靠最权威的邮政公司,把它寄给自己,当你收到这个扣着邮戳的包裹后,不要打开,把它放好,然后就可以把证明寄给数学泰斗。如果他用自己的名义发表了,不必着急,等他依靠其影响力把这个证明炒热后再出手,你上法庭控告他,他当然不承认,在法庭上你将那个没开封的包裹拿出来,上面清清楚楚地盖着时间戳,这就证明了你包裹里的证明是发生在那个时间戳之前的,加上之后的你邮给泰斗论文的邮件存根,和泰斗以自己名义发表论文的时间,三者就构成了一个完整的证据链,泰斗灰头土脸名声扫地,而你大获全胜名利双收。
参考文献:《通信网的安全-理论与技术》,王育民等编著,西安电子科技大学出版社,2000.5
web 性能相关的一些工具
Saturday, April 24, 2010
sizeof pointer
sizeof(pinter)返回的是指针本身所占用的空间,也就是一个地址所占用的空间,一般为32bits(位)。
不过:
int a[]={10,9,0,2,3}; //5个元素
printf("length:%d",sizeof(a)/sizeof(int));
bubble_sort(a,5);
这个时候,会打印:
length:5
而在bubble_sort里面同样打印,sizeof(a)/sizeof(int),则结果为2.
所以,sizeof(array),会得到array这个数组的长度,
但是一旦这个array被转化为指针,再进行sizeof就不可靠了,得到的就是一个地址的长度了。
