在 Ubuntu 中禁止自动隐藏程序菜单

阅读更多关于《在 Ubuntu 中禁止自动隐藏程序菜单》

找了很多地方,最终的解决方案: 继续阅读

wordpress 速度很慢的问题解决了

阅读更多关于《wordpress 速度很慢的问题解决了》

因为 googleapis.com 被墙奸了,把 wordpress 目录下面所有文件中的 googleapi 全部替换成 useso 就 OK 了

李德刚刚来到部队,提出…希望有个中国女战士陪他睡觉

阅读更多关于《李德刚刚来到部队,提出…希望有个中国女战士陪他睡觉》

《一生紧随毛:回忆我的父亲…陈士榘》里记载,“李德刚刚来到部队,提出…希望有个中国女战士陪他睡觉。”
康…说:“当时女同志都不愿意嫁给一个不会说中国话的外国人,所以一直找不到合适的对象。”后来找到个“大个子,长得不错的前童养媳。”萧月华1910年8月出生于广东大埔县一个农民家庭。
继续阅读

How do I disable video thumbnails in Windows 7?

阅读更多关于《How do I disable video thumbnails in Windows 7?》

How do I disable video thumbnails in Windows 7!

禁用 视频 缩略图 windows 7 继续阅读

忽悠,也是一种学问

阅读更多关于《忽悠,也是一种学问》

我看了一下我最近几个月的博客浏览记录,发现这篇的访问量最高。然而这篇文章里面提到的东西虽然有我这么多年编程生涯中的一些总结,但总体上没有太多实在的东西,缺乏可操作性继续阅读

莫比乌斯带

阅读更多关于《莫比乌斯带》

在学校里,我学到的第一门编程语言,是 Mathematica,严格讲 Mathematica 也许不算是一门编程语言,但它的确很有趣。那个时候(1998年),Mathematica 还只是 1.2 (或者1.4,具体记不清了)了。学校机房的电脑也很慢,但是从那开始,我开始可以将自己的一些想象变成视觉,莫比乌斯带的方程式就是这样想象出来的: 继续阅读

文章简介最多240个字符

阅读更多关于《文章简介最多240个字符》

忽然以前文章中有个笔误, 打算修改一下, 修改好了, 提交, 结果被提示:

文章简介最多240个字符, 你已经有输入了247个!

可我无论如何找不到 "文章简介" 的输入框! 难道是 IE Only 的?

Great Windows 7

阅读更多关于《Great Windows 7》

Windows 7,打开“下载”文件夹,里面也就几十个文件……

它非常“友好”地在地址栏部分显示一个进度条,等到进度条100%,右边文件夹内容部分变成非空白——文件显示出来,我可以去拉泡屎,再回来也不迟,我没有拉肚子,我便秘! 继续阅读

terminal 的显示编码为 utf8 时用 vim 打开 gb2312/gbk/gb18030 编码的文件

阅读更多关于《terminal 的显示编码为 utf8 时用 vim 打开 gb2312/gbk/gb18030 编码的文件》

vim "+e ++enc=gbk filename"

vim "+e ++enc=cp936 filename"

 

 

怎么减少错误的发生

阅读更多关于《怎么减少错误的发生》

错误,我们暂且仅对软件开发而言。

 

错误的类别,暂且仅考虑接口错误实现错误

 

  • 接口错误
    • 一般可以分为误解失配
    • 误解

比如在一段公路入口有巨大的标识牌,上面写着:前方道路,靠左行,红灯行,绿灯停。这个大家可能觉得很荒谬,然而类似的事情在软件开发里面却层出不穷,生产方认为自己已经在文档中清楚地说明了用法和用途,然而他却没有意识到这与使用方的常识和惯例背道而驰。举个简单的例子,C 标准库里面的两个函数:

我不知道有多少人用过这两个函数,但是,大体上,应该是用 fwrite 的人多,而用 qsort 的人少。而用 fwrite 的人,大多数情况下,传递的 size 都等于 1,并且,一般情况下,size 和 count 搞反了也不会有啥大问题,除非判断了返回值。然而,一旦用多了 fwrite,并且吧 ObjectSize, ObjectCount 这个顺序当成了一个常识,再使用 qsort 的时候,就悲剧了!

还有一个例子:stl 的 range,一般表示为前闭后开的 [begin, end) 区间,如果你要搞一个前开后闭的 (begin, end] 区间,大家都会疯掉不可。我确实曾经被这样的 (begin, end] 疯掉过。

  •  
    • 失配

一般情况下,发生在版本兼容问题上。我仅举一个简单例子:在Bash3.x中,[[]] 中的正则表达式会按Bash的quoting removal 规则进行处理,也就是说对于一般的正则表达式,加单引号,双引号,和不加引号,都没有区别,然而到了Bash4.x,如果加了引号,就悲剧了!Bash4.x会把引号当成正则表达式的一部分!

 

  •  
    • 另一种接口错误

最近我在挤地铁时发现了另一类错误,看上去似乎不属于这两种:人很挤的时候,在地铁楼梯上,经常发现,人们走的是左边,而不是右边,稍微用心一下,就会发现这是什么原因——人们总是按贪心算法走最短路径,刚下地铁的人,会走挨地铁(车厢)的楼梯一侧,而这一侧正好是左边,上面往下走的人,却是走右边。在人流量不大的时候,这不是什么问题,然而,当人流汹涌时,造成的拥堵让大家都很郁闷。

怎么解决这个问题呢?——那就是在设计地铁站时,让贪心算法的最短路径是右边,而不是左边。再General一点,就是:设计要遵守人们的思维习惯。

在程序设计上,如果我们设计的接口符合人的思维习惯,可以大大减少错误的发生。在 C 里面,至少有两处设计违反人的直觉,不过还好,这两处早被 deprecate 了:

  1.  
    1.  
      1.  函数的默认返回值为 int,而非 void  
      2.  f() 表示可接受任意个参数,返回值为 int 的函数。 
  • 实现错误

一般情况下,就是指我们程序的逻辑错误