• 软件开发的“偶然”困难和“本质”困难

    No Silver BulletNo Silver Bullet – Essence and Accident in Software Engineering 是著名计算机科学家 Fred Brooks 的一篇著名论文。Fred Brooks 被称为IBM大型机之父,是著名软件工程著作《人月神话》的作者,在1999年获得了图灵奖。《No Silver Bullet》一文发表于1986年,作者认为,由于软件开发本质上的困难,在当时的十年内不会有技术和方法可以让软件生产力有数量级上(也就是十倍...

  • VIM 从入门到进阶

    VIM 的三种模式命令模式(Command mode)vim 打开后就进入这个模式,所有的输入会被当成命令,不能输入字符。命令模式下有3个选择: 使用各种命令对文本进行操作 按下 i a I A 等输入命令中的一个,进入 输入模式 按下 : 进入 底线命令模式输入模式 (Insert mode)这个模式下,可以像个正常编辑器一样,输入字符编辑。按 <ESC> 回到命令模式底线命令模式 (Last line mode)可以执行 Ex Command,包括保存文件,退出 vi...

  • 使用 OpenSSL 发送 IOS 推送通知 Apple Push Notification

    苹果的推送服务的设计非常优秀和巧妙,开发者将消息发送到苹果的APN服务器,APN服务器将消息转发到设备上,设备与APN保持一个长连接即可,即保证了消息的实时性,又节省了系统资源,更省电。相比之下,Android这个粗放管理的耗电大户平台,直到2.2后才添加了类似的推送服务,而且还被墙了。苹果的推送模式如下图所示:iOS应用首先要请求用户允许推送通知,用户允许后,应用会获得一个32字节的token。应用开发者要推送通知到用户的设备时,把消息和token一起发送给APN服务器,APN服务器根据...

  • Windows 下编译 ZooKeeper

    ZooKeeper 号称 Windows 下也可以用 C++ 做开发用。并提供了 zookeeper.sln、zookeeper.vcproj 的工程文件。但是如果你用 VC2008 去打开它的话,就会报错,说工程里已添加了一个工程云云。实际上解决办法很简单,用文本编辑打开 zookeeper.sln 和 zookeeper.vcproj 会发现里面写入了两组工程文件内容,估计是自动生成的。把其中的一组删掉就可以了。

  • Mac 下发布 Qt 应用程序

    Qt编写的应用发布到用户手里,同时也要把 Qt 库一起打包给用户。方法有很多。1. 简单又麻烦的办法,静态编译Qt简单是因为静态编译的Qt库会随着应用一起发布,麻烦是我们必须自己编译静态的Qt。而且,很多情况下我们不仅是要使用Qt,还有很多其它的库,如果每一个都静态编译,我们的执行文件就太巨大了。所以简单的应用,静态编译可能是好的,但是,比较大的项目,这种方法就不推荐了。2. 好又不麻烦的办法,使用FrameworksMac中的GUI应用必须以Bundle的形式运行,所谓Bundle,是一...

  • OpenSSL Cheat Sheet

    OpenSSL 是 SSL 和 TLS 的开源实现,常用于身份验证、数据加密等场景中,本文介绍 OpenSSL 的常用命令。生成证书要使用 OpenSSL 我们必须先要有自己的数字证书。数字证书一般要向专业的认证公司(如VeriSign)申请,并且都是收费的,某些情况下,我们只是想使用加密的数据通信,而不在乎认证,这时就可以自己制作一个证书。自己制作一个证书,有两种方式,一种是自己签发 Self Signed 的证书,另一种也是 Self Signed 的证书,不过先制作一个 CA,然后由...

  • VS2012 + Qt 4.8.3 + OpenSSL

    Qt 应用中,经常有需要用到 SSL 的地方,例如 XMPP 等。Qt SDK 中的 Qt 支持 SSL,而单独下载的 Qt library 则一般不带 SSL,如果需要 SSL 支持则需要我们自己编译。本文主要介绍使用 VS2012 编译 OpenSSl 和 Qt 4.8.3。1.安装Perl首先,无论编译 OpenSSL 还是 Qt,都需要 Perl 的支持,必须先安装 Perl 。Windows 上可以安装这个 http://strawberryperl.com/2. 编译OpenS...