跳到内容

文章类别:编程

IT男青年应该拒绝文艺女青年的十大理由

阅读更多 »

IT男青年应该献身文艺女青年的十大理由

阅读更多 »

订票助手开发者:我只想用自己的方式来让世界公平一点

By:倪超

作者博客上的订票助手页面:12306订票助手

从头到尾,我都是本着帮人的原则、用科技带来便利的原则来的,没有一点利益色彩,和各方的合作也都是完全免费的,没有利益的瓜葛。然而这种想为人带来便利、节约操作和时间,被称为不公平。其实我很想问,那这个世界的公平,到底在哪里?让所有人一起在那里点查询刷新吗?那为什么有些人一顿饭吃掉上三五万,你蹲在路边吸溜吸溜吃泡面的时候没有感觉不公平?

 

关于订票助手的,写点什么纪念吧

关于订票助手,说点什么吧,怎么说也坚持这么久了。

订票助手最初的出现是为了挤上网站。因为最初上12306是个体力活,需要输入用户名密码验证码,然后系统告诉你人多,然后你再输入用户名密码验证码,如此反复。这样的好处是,当你最终挤上去的时候,你也为成功地锻炼了自己手指的灵活性,对于一个还要忙工作混饭吃的人,这很明显是个让人崩溃的事情。而现代科技的发展就是要解决这类问题。所以助手出现了。

在登录问题不再那么拥挤、提交不再那么让人崩溃之后,我开始考虑让功能更加完善,如能按自己的意愿过滤查询结果,自动挑选符合你要求的车次和席别。

然后才是一点自动化,比如自动帮你点预定,自动帮你提交等等。自动刷新则完全是为了刷票量身打造,因为等待放票,或没抢到票时,你需要去反复地点,难道让所有人都这样反复点就公平了?那你为啥不让所有人都走路回家?那样更公平。 阅读更多 »

程序的对焦点夺取体现开发商的人文关怀

关于什么是焦点,请看后面的解释.

大家有没有经常遇到这样的情况:

自己在输入一段文字,但是后台又运行有其他程序,

当文字输入到一半,这时后台程序来了一个弹窗或者突然置顶,

在输入法里剩下的半截拼音直接录进去了,

再或者,输密码的时候,输到一半,弹窗或者置顶,

自己输到哪了不知道,只好全删了重新输,这个最恼火了.

个人认为这样随意夺取屏幕焦点的行为,

跟那什么”一个艰难的决定”是一个性质,

当然什么时候应该夺取,什么时候应该保留是非常难以判断的,

这有可能涉及到用户的使用习惯,

一个简单的处理方法就是交给用户自己决定,

目测现在很多软件都是打开默认拥有焦点,覆盖之前的,

而不是默默地打开等待用户使用,

这里要说明的是,

焦点窗口和前景窗口,活动窗口并不是一个概念,

指的是能获得键盘输入的窗口,

大家难道不觉得,在没有任何提示的情况下,

夺取焦点,打断用户的输入,是一种非常野蛮的行为吗?

 

PS:

焦点究竟是什么呢?

简单的说,焦点决定了由哪个窗口或者控件接收键盘输入信息,因此,它又被称作输入焦点.对于用户来说,最直观的感觉是,有光标闪动的窗口或者被高亮的控件就有焦点.

很多初级应用程序员或者Windows用户有这样一个误解,认为凡是鼠标点击的窗口就是焦点窗口.当出现有的窗口或者控件点击后没有反应的现象时,就认为是焦点出现了问题.事实上,焦点仅仅控制着键盘的输入,而鼠标输入与焦点没有直接关系.

用户之所以有这样的误解是由于另一个概念,系统的焦点模式(focusmode).焦点模式决定了鼠标如何使一个窗口获得焦点.一般来说,焦点模式被分为三种:

click-tofocus:

这种模式就是指鼠标点击的窗口就可获得焦点.这是Windows用户最常见的一种模式.鼠标点击的窗口会被激活,被置于所有窗口的最前面,并接收键盘输入.

focus-follow-mouse:

有的地方也称这种模式为pointerfocus.它是指鼠标下的窗口可以获取焦点.当鼠标移到一个可以获得焦点的窗口的范围内,用户不需要点击窗口的某个地方就可以激活这个窗口,接收键盘输入.但是,这个窗口不一定会被置于所有窗口的最前面.当鼠标移出这个窗口的范围时,这个窗口也会随之失去焦点.

sloppy-focus:

这种模式与focus-follow-mouse一样,当鼠标移至某窗口的范围内的时候,该窗口会获得焦点.与focus-follow-mouse不同的是,当鼠标移出这个窗口范围时,焦点也不会随之改变.只有当鼠标移动到别的可以接收焦点的窗口时,系统焦点才改变.不同的系统对焦点模式的支持不同,所使用的焦点模型也有很大的区别.

关于汇编的DA指令

如果随意对一个累加器A中的二进制数据进行“二进制转十进制”调整是没有任何实际意义的!

DA调整的对象是ADD或ADDC以后的结果,而且是BCD码相加以后才能够加以调整,否则没有实际意义!

比如,现在我想执行12D+39D也就是两个十进制数相加这样一个加法(有时候程序处理的需要,数据在单片机中是以BCD码的形式存储的,也就是12H和39H(十六进制),但我们可以人为将它们看为12D和39D(十进制),而且还希望相加以后的结果为51H,也就是说符合十进制运算规则12+39=51,而不是4BH的结果),但这样的十进制加法运算在单片机中是不能够直接实现的。因为单片机只能够执行二进制加法指令,也就是所有的运算都按照二进制中的规则进行!

于是就出现了DA调整指令!

现在12H+39H,将12H放于A中,执行 ADD A,#39H指令,则结果为4BH,这不是我们希望的51H的数据形式!!这时执行DA A 指令后,就会将A中的数据调整为51H(具体调整过程和原理你可以详细看书,如果单片机书中讲的不详细,那么微机原理中一定说的非常详细),而我们按照BCD码规则就将其看为51D,符合我们的要求!

也就是说加数和被加数都是BCD码的形式,最大也只可能是99H,也就是我们十进制数中的99,只有这样才会有实际的意义!所以楼主所说的当A=# 9AH的时候的情况是不会存在的,严格的说是没有意义的!

而且DA A指令只用于十进制BCD码加法指令以后,否则是没有实际意义的!

原文链接