摘要: 问题起因 在图片导航文章中,用户点击“上一张”或“下一张”需要等待图片完全移到位后,按钮才可以继续使用,在图片移动过程中,用户不能点击按钮,或点击后无任何效果,这就容易让用户产生挫败感,但如果让用户每次点击均即时响应,又会让坐标或状态出现混乱。 解决思路 考虑到可以使用一个任务队列,用户的每次点击,均予以响应(解决挫败感),并将作为一个任务,由任务队列接收。function movePanel() { var tq=taskQueue(); this.last = function (){ if (!this.getCanLast()) return; tq.addTask(function( 阅读全文
posted @ 2011-04-01 15:42 他山之石_ 阅读(3002) 评论(0) 推荐(0) 编辑
摘要: 定义一个固定尺寸的缓存,当它被填满时,新加入的元素会覆盖第一个(最老的)元素。一般情况我们会选择一个双头队列,可以从任意一头添加或删除数据。或者在运行时,根据缓存有没有满,去改变append函数的指向(方法切换)。但这里借用一下python中的self.__class__可以重新被指向一个新的类的思路(类切换),在javascript中实现一下。function RingBuffer( size_... 阅读全文
posted @ 2011-03-31 11:20 他山之石_ 阅读(475) 评论(0) 推荐(1) 编辑
摘要: 注意1、__init__并不相当于C#中的构造函数,执行它的时候,实例已构造出来了。class A(object): def __init__(self,name): self.name=name def getName(self): return 'A '+self.name当我们执行a=A('hello')时,可以理解为a=object.__new__(A)A.__init__(a,'hello')即__init__作用是初始化已实例化后的对象。注意2、子类可以不重写__init__,实例化子类时,会自动调用超类中已定义的__init__cl 阅读全文
posted @ 2011-03-21 10:11 他山之石_ 阅读(59579) 评论(3) 推荐(7) 编辑
摘要: 上一篇,我们看了C#与javascript中的异步执行时的变量共享以及解决的办法,接下来看一下python中的情况,我们制造一个返回lambda列表,然后再依次执行列表中的lambda:import sysls = [(lambda : sys.stdout.write(str(i))) for i in range(5)]for f in ls:f()可看到输出的是5个4,情况同C#与javas... 阅读全文
posted @ 2011-03-18 11:05 他山之石_ 阅读(968) 评论(0) 推荐(0) 编辑
摘要: C#中创建的委托实例,并且其中使用了方法中的局部变量,有可能会使此变量的生命周期变长(闭包),这一点与javascript是差不多的,但如果这个局部变量是变化中的(比如在循环中),会有一些微妙的不同。 C#的例子:void Process(){ foreach (ITask task in GetTasks()) { ThreadPool.QueueUserWorkItem(new WaitCal... 阅读全文
posted @ 2011-03-16 14:01 他山之石_ 阅读(1073) 评论(0) 推荐(0) 编辑
摘要: 说起页面元素的事件注册,一般我们都会写一个方法做一个包装,类似如下的方法(好像PPK的书中也是这样封装的)function addEvent (eventType,listener,oTarget){ if(oTarget.addEventListener){ oTarget.addEventListener(eventType,listener,false); } else if(oTarget... 阅读全文
posted @ 2011-03-15 17:16 他山之石_ 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 需要实现类似下图的一个效果,达到导航图片的目的。 可以使用jquery去实现,但容易陷入怎么做的思维中,如果自己手写的话,就可以先思考做什么,然后再思考怎么做。(当然这里做什么指原型已确定的) 第一步:做什么[分析]? 我们要做一个图片导航,一屏显示5张图片,用户能点“上一张”/“下一张”按钮,实现移动切换图片,如果往前没有图片了则“上一张”是无效状态,如果往后没有图片了则“下一张”是无效状态。 ... 阅读全文
posted @ 2011-03-14 17:08 他山之石_ 阅读(1100) 评论(1) 推荐(0) 编辑
摘要: 前两天参加了段念所讲有关敏捷测试方面的培训,一部份的内容可以在这里找到,不过培训还是有些其他收益:测试概念方面:1、在敏捷测试中,测试人员同样需要编码能力,与开发人员不同在于,开发人员需要较强设计能力,而测试人员需要更强的分析能力(包括发散思维和更广的知识)2、开发人员是自己要做单元测试的,类似接口测试和UI测试,其实开发人员也可参与进来,此时的测试人员要负责自动化测试框架及环境的搭建,让开发人员减少开发环境与测试环境的切换,开发人员不需要太多精力就可写好测试代码,又能立即见到自己的工作结果的反馈,是利于推动他们参与进来的3、探索性测试是软件检查的一道额外保障,发现的缺陷归纳(成因分析)、演绎 阅读全文
posted @ 2011-01-10 10:46 他山之石_ 阅读(3814) 评论(1) 推荐(1) 编辑
摘要: 有时我们会遇到某个方法其实是一个配置接口,需传入N个bool值,表示某些选项是否有效,很有可能签名是这样的:public void SomeMeth(bool IsCfg1, bool IsCfg2, bool IsCfg3, bool IsCfg4, bool IsCfg5)这样在调用时可得小心翼翼的按位置相关,传入每一个参数cls.SomeMeth(true,false,true,false,false);cls.SomeMeth(false,false,true,false,true);有一种重构手法是将这些配置项统一成一个字典,将字典做为参数传给方法,但今天我们将使用另一种方法进行重构 阅读全文
posted @ 2010-10-28 10:09 他山之石_ 阅读(1717) 评论(4) 推荐(4) 编辑
摘要: 数据结构(严蔚敏P65)中离散事件模拟,将银行业务作为模拟,假设有4个窗口对外接待客户,从早晨银行开门起不断有客户进入银行,每个窗口在某一时刻只能接待一个客户,因此客户人数众多时需要每个窗口前顺序排队,对于刚进入银行的客户,如果某个窗口业务员正空闲,则可上前办理业务;反之,若4个窗口均有客户所占,他便会排在人数最少的队伍后面。现需要编制一个程序以模拟银行这种业务活动并计算一天中客户在银行逗留的平均时间。其中,客户到达时间的间隔在1~5分钟之间,客户的业务办理时间在1~30分钟之间,所有时间使用int型,表示从开始营业始所经历的分钟数。 先将书中所描述的基于事件驱动的思路用C#实现一下: 事件类 阅读全文
posted @ 2010-10-27 13:07 他山之石_ 阅读(2113) 评论(0) 推荐(2) 编辑