九天雁翎的博客
如果你想在软件业获得成功,就使用你知道的最强大的语言,用它解决你知道的最难的问题,并且等待竞争对手的经理做出自甘平庸的选择。 -- Paul Graham

新装Ubuntu想起的往事

很早以前在读大学的时候就开始使用Linux,刚开始还因为自己水平不行又不舍得买本书研究,自以为是,直接下载刻了盘就装,当时装的是Red Hat 9,开始就闹了个笑话,因为下载和刻的都是源代码盘。。。。。根本装不了,我才知道,应该下二进制文件。。。。

阅读全文....

C++ 中的DOS命令调用(3)——我不提倡大量使用DOS命令

虽然我个人认为DOS命令有它的可取之处,并想了办法将其更好地融入到MFC程序中来,但是我个人并不是太提倡大量的使用DOS命令,因为毕竟很多东西用了DOS命令要改都难,而且DOS版本不一,以及很多Microsoft专属的DOS加强命令都让程序的移植性差了很多,而且,很重要的是,用了太多DOS命令,对于只学了C++而没有经历过DOS时代的人来说那简直就是天书,况且,不是人人都那么想去学习DOS 的,而Windows API大家都会觉得多了解几个没有坏处。另外,绝大部分DOS命令都有相关的Windows编程解决方案,比如微软为你提供的类库或则API中都有方法解决DOS命令可以完成的任务,而DOS命令一开始我就提出了,因为都是使用char *的方式调用,所以很大程度上加大了调试的难度,很多时候只能开个CMD窗口去一次一次尝试,问题是,各种情况有的时候没有办法都考虑到,就有了产生神秘BUG的可能,而微软的类库和API这方面就要好的多。还有一点就是如同我在以前例子中演示的那样,DOS命令很多的命令输出是为了在屏幕上输出信息的,比如DIR等,所以会有很多附加信息,导致你需要得到确实需要的信息需要通过一些转换,在前面的例子中我就是使用了正则表达式来完成这些任务,虽然比一般方法可能容易点,但是还是比较复杂,而类库和API一般都能直接得到需要的信息,这也是他们的优点。

阅读全文....

C++ 中的DOS命令调用(1)——还可以记起什么?从DIR开始

不要搞错了,我是讲怎么在C++中利用DOS命令,不是准备讲DOS编程。以下都以Windows XP中的MS-DOS为例,程序一般也以MFC程序为实例,在VS 2005下编译通过。

很久以前用电脑的时候还属于蛮荒时代,那时候都是黑屏白字的DOS,怎么说都是一种回忆了,现在谁还用那东西啊?呵呵,似乎以前用电脑的经验都是等于废了,记得我前两年考的C二级是最后一届需要考DOS的,虽然那时DOS也只在里面占了几分而已。

难道现在DOS真的没有一点用了吗?其实也不全是,对于个人操作来说,高手会告诉你命令行操作虽然复杂的多,但是永远比GUI操作来的快。在C++中调用DOS命令虽然感觉上可移植性能不是太好,但是有的时候的便利实在是无法言喻,避开了一大堆的API学习,让以前学习的DOS知识发挥余热,何乐而不为呢?

阅读全文....

C++ 中的DOS命令调用(2)——瞒天过海,隐藏DOS调用的命令行窗口

上一节我演示了一下在MFC程序中怎么应用DOS的dir的命令,可是我们遇到了需要解决的问题,首先就是文件dir.txt的残留问题,其实这个问题很简单,我们也可以用dos的del命令在操作后将dir.txt文件删除,这样的结果就是程序会两次弹出窗口,这样更加让人无法接受了,现在我们的问题是,有没有办法隐藏弹出窗口?答案是有的,这点我在网上找了很久,都没有找到解答,最后自己摸索出了一些方法,不知道还有没有更好的方法,因为这些方法都有些缺点,比较恼火。

阅读全文....

正则表达式测试器0.3(Boost Regex Tester 0.3) (老版保留)

主要功能是加入了替换模式,去掉了boost库的结果列表,有需要的可以去下载0.2,另外因为菜单太复杂,所以最后搞的都崩溃了,干脆不要菜单了。而且我发现用对话框作为客户区的程序实在是不太好调整,下一版本还是用普通的view类做客户区算了。

使用方法上可以参考boost的在线文档,因为程序完全利用boost库制作,这个版本甚至取消了一些设置选项。

从这个角度来说,0.2在匹配上功能还要更强一些,但是替换的作用还是有的。

还是去http://groups.google.com/group/jiutianfile/files 下载程序及源代码

我本来想做的菜单如下:

程序截图如下:

阅读全文....

正则表达式测试器0.2(Boost Regex Tester 0.2)(老版保留)

昨晚痛苦的写了一个0.2版的程序,为什么痛苦?其实处理一些字符串,完成一些简单的菜单功能,让匹配的规则可以定义都不是什么难事。痛苦的是CEdit中用SetSel选择了文本以后MFC不会自动的为本文加亮,需要手动完成,我完成的想自杀,最后终于算是能够处理一排文本了,不过要处理多行文本还有待再努力,估计其中又会想自杀n次。没有想通这么我想都没有想到,很自然的问题,微软竟然不管,我发现这个问题都用了半天,总以为自己的SetSel索引搞错,哎。。。。难怪人都说MFC复杂。有高手知道怎么简单的处理SetSel文本加亮问题的请指教。最好自己先试试,网上这个问题我看了很多,用CtlColor函数响应反射消息的方法也试过,不过好像没有办法处理一段特定的文本。最后只能用最最原始的方法手动完成。痛苦。痛苦。

不过0.2版的程序倒是感觉还比较满意,大家试试,一般的正则表达式学习和验证估计都够了,而且在用Boost编程之前用这个先试一下可以节省很多编译的时间,我当时就是为这个而编的这个程序。

编译好的文件和源代码都在老地方http://groups.google.com/group/jiutianfile/files有下,因为是MFC程序,比较大,我一般不列出来了。来个程序截图。

阅读全文....

正则表达式测试程序(Boost Regex Tester)0.1(老版保留)

在昨天我编写了一个制作图书检索的小程序后,真的发现人们说的话太正确了。程序员主要处理的就是两件事,数据库,字符串。在那么一个小程序里,我已经用上了STL的很多特征,而且基本操作起码都在string级别以上,但是还是繁复的要命。所以终于下定决心要学习一下极为有用却堪称天书的正则表达式。在学习的过程中用VS .NET IDE中的搜索实践了一下,发现还是不太方便,而且微软的东西好像不是很保险(主要指规范性上)。并且在C++中要用到正则表达式好像只能用boost库,那么我当然最好是熟悉boost库中的正则表达式的法则啦,干脆,做了一个利用boost实现的测试程序得了。

阅读全文....

图书索引创建器

国外的C++图书很多有索引,这样使得这些书在看完后还有很大的参考价值,像《TC++PL》,《C++ Primer》等经典著作无一不是,像《The C++ Standard Library》一书更是因为书中交叉索引丰富而出名,也使得其成为经典之一。而国内的大部分书,国外一些经典著作都没有索引,这样在看完后要回过头来找一些资料不是很方便,这点在我看《Programming Windows with MFC》中感受最深,所以我决定写一个这样可以自己方便创造出索引的程序,对于网上很多看图形类电子书的查找更不方便的朋友,这个程序的作用应该会更大吧。这个程序特意用了wstring来表达字符串,以方便中文的处理,虽然个人感觉很多时候用string的确也可以处理中文。很简单的一个创建图书索引工具,用户只需要注意用以结束的’!’必须是英文标点,其次就是确保读入的文件的确是由此程序创建或者负责其创建的格式,不然运行结果得不到保证。假如每个人都为自己的书创建索引未免麻烦,但是假如大家愿意共享大家创建后的结果,那么人人都可以用,就像共享资源一样。另外,希望假如有人对其修改的话保证原有索引的可用性,即向下兼容。假如程序本身有更好的处理方法,起码提供一个可以转换原有文件的程序。谢谢使用。你可以在http://groups.google.com/group/jiutianfile/files找到编译好的文件下载。

阅读全文....

C++学习之道

学习C++有一段时间了,其中走了不少弯路,也的确了解了很多学习的方法,今天回过头来回顾一下,以示后来者。

阅读全文....