猫的新窝

止心,少语,莫愁

正在浏览标签为 zT 的文章

继续阅读

设计Qt风格的C++API

作者Matthias Ettrich,译者Googol Lee,原文地址在这里

在奇趣(Trolltech),为了改进Qt的开发体验,我们做了大量的研究。这篇文章里,我打算分享一些我们的发现,以及一些我们在设计Qt4时用到的原则,并且展示如何把这些原则应用到你的代码里。

设计应用程序接口,API,是很难的。这是一门和设计语言同样难的艺术。这里可以选择太多的原则,甚至有很多原则和其他原则有矛盾。

现在,计算机科学教育把很大的力气放在算法和数据结构上,而很少关注设计语言和框架背后的原则。这让应用程序员完全没有准备去面对越来越重要的任务:创造可重用的组件。

在面向对象语言普及之前,可重用的通用代码大部分是由库提供者写的,而不是应用程序员。在Qt的世界里,这种状况有了明显的改善。在任何时候,用Qt编程 就是写新的组件。一个典型的Qt应用程序至少都会有几个在程序中反复使用的自定义组件。一般来说,同样的组件会成为其他应用程序的一部分。KDE,K桌面 环境,走得更远,用许多追加的库来扩展Qt,实现了数百个附加类。(一般来说,一个类就是一个可重用组件,原文这里没有写清楚。)

但是,一个好的,高效的C++ API是由什么组成的呢?是好还是坏,取决于很多因素——比如,手头的工作和特定的目标群体。好的API有很多特性,一些特性是大家都想要的,而另一些则是针对特定问题域的。

好的API的六个特性

API是面向程序员的,用来描述提供给最终用户的GUI是什么样子。API中的P带表程序员(Programmer),而不是程序(Program),用来强调API是给程序员用的,给人类的程序员用的。

我们坚信API应该是最小化且完整的,拥有清晰且简单的语义,直觉化,容易记忆,并且引导人写出易读的代码。

  • 最小化:最小化的API是指一个类尽可能只拥有最少的公开成员且尽可能只拥有最少的类。这个原则可以让API更简单易懂,更好记,更容易除错,且更容易改变。
  • 完整的:完整的API是指要提供所有期望的功能。这个可能与最小化原则相冲突。另外,如果一个成员函数属于一个不应该属于的类,很多潜在的使用者都会找不到这个函数。
  • 拥有清晰且简单的语义:就像其他设计工作一样,你必须遵守最小惊奇原则(the principle of least surprise)。让常见的任务简单易行。不常见的工作可行,但不会让用户过分关注。解决特殊问题时,不要让解决方案没有必要的过度通用。(比如,Qt3中的QMimeSourceFactory可以通过调用QImageLoader来实现不同的API。)
  • 直觉化:就 像电脑上的其他东西一样,API必须是直觉化的。不同的经验和背景会导致在判断什么是直觉而什么不是时不同的感觉。如果 一个中级用户不读文档就可以使用(a semi-experienced user gets away without reading the documentation,没懂这里的get away该怎么翻译),并且一个程序员不懂API就可以理解缩写的代码,这种API就是直觉化的。
  • 易于记忆:让API易于记忆,使用统一且精确的命名方法。使用可识别的模式和概念,并且避免缩写。
  • 引导易读的代码(Lead to readable code):代码一经写就,会读(并且除错和修改)多次。易读的代码可能会花点时间来写,但是可以节省产品周期中的其他时间。

最后,记住,不同类型的用户会用到API的不同部分。虽然简单的实例化一个Qt类是非常直觉化的,让资深专家在试图子类化之前读一遍文档,是很合理的。
继续阅读

前不久,好朋友钟文将一篇谈Braid艺术风格的文章打印出来,给我看,我从那时起便多 方收集Braid的资料。直到最近,才在Xbox360上玩了它的试玩版,作者(Jonathan Blow对待这部作品的态度更像是一位作家,而不是游戏开发者)和画家David Hellman的完美配合更令我深深感动。也许不久后会有机会在PC或360上玩到这款出类拔萃的个人作品的完整版,不过,我迫不及待的要将这篇出自 David Hellman的文章介绍给你,希望你能喜欢这款作品。由于译者并不从事美术相关工作,有错漏之处,还请行家不吝指出。

Who has seen the wind?
Neither you nor I.
But when the trees bow down their heads,
The wind is passing by.

谁见到过风?
你没有,我也没有。
但当树儿低下头,
便是风儿经过的时候。


继续阅读

题目大了点,其实也不是我第一个发现的。。(来自这里)

比较简单的一句话:
popcap的小游戏在运行时会释放一个popcapgame1.exe的主程序,而这个程序是真正入口的主程序,似乎外层也没做什么特殊的初始化,所以直接试用该exe进行游戏就已经是正式版了。。。
继续阅读

windows下修改mac地址,原来我一直借助于使用mac修改软件的帮助,最近想想,还是要能手动修改比较好一些,毕竟有的时候在别人电脑上没有现成工具的

在本地连接里
点击相应网卡的旁边的配置按钮,在高级标签页下,左边选择Network Address,右边填入MAC地址既可
禁用本地连接后再启动既可生效,或者重启电脑

window的MAC信息是保存在注册表中的,如果需要编程修改的话,可以用读写注册表值来实现,难点估计在于如何不需要重启生效的问题

具体在注册表的位置,可以自己修改后,通过注册表查找特定的字符串来定位 ^_^

卸载TCP/IP协议,这个是在被病毒破坏了TCP/IP协议后需要善后的动作

1、开始——运行——regedit.exe,打开注册表编辑器,删除以下两个键:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2

2、用记事本打开%winroot%\inf\nettcpip.inf文件,找到:
[MS_TCPIP.PrimaryInstall]
Characteristics = 0xa0 <——把此处的0Xa0改为0×80 保存退出

3、打开本地连接的TCP/IP属性—添加协议——从磁盘——浏览找到刚刚保存的nettcpip.inf(%winroot%\inf\nettcpip.inf)文件,然后选择“TCP/IP协议”(不是选择那个TCP/IP 版本6)。
经过这一步之后,又返回网络连接的窗口,但这个时候,那个“卸载”按钮已经是可用的了。点这个“卸载”按钮来把TCP/IP协议删除,然后重启一次机器。

4、重启后再照着第3步,重新安装一次TCP/IP协议便可。

5、再重启一次,这时应该可以了,可以照着需要,设置一下IP地址。

文章转载自这里

如果你经常使用计算机,就不可能不知道PDF格式。

它是公认的分享文档的最佳格式。但是,这种格式的文件,必须用专门的阅读器打开,而且不能编辑,所以对使用者来说,会遇到很多问题。

下面是一个外国作者总结的常见问题清单,基本上涵盖了普通用户的大多数问题,而且解决方法全部都是免费的。我觉得对我很有用,所以将它翻译了出来,也供大家参考。需要说明的是,里面的解决方法,完全都是针对英语文档的,我没有试验过它们是否支持中文文档。
继续阅读

原文转自这里
继续阅读

从命令行也可以运行 WinRAR 命令,常规的命令行语法描述如下:

WinRAR  <命令> -<开关1> -<开关N> <压缩文件> <文件…> <@列表文件…> <解压路径\>

命令        要 WinRAR 运行的字符组合代表功能
开关        切换操作指定类型,压缩强度,压缩文件类型,等等的定义。
压缩文件          要处理的压缩文件名。
文件                  要处理的文件名。
列表文件           列表文件是包含要处理文件名称的纯文本。文件名应该在第一卷启动。可以在列表文件中使用//字符后添加注释
继续阅读

Bat简单脚本

抢板凳

比起Linux的sh之类的脚本,windows下的bat明显弱很多,但是适当使用还是可以提高工作效率的,至少,不需要经常输入那么多命令

继续阅读