
刚刚看完vgod这个大牛的《追求神乎其技的程序设计之道》 ,很有些感想。
《追求神乎其技的程序设计之道》 是一个系列,开始写于2008年7月5日,结束于2009年12月18日,总共十篇博客。讲得是vgod的学习程序设计的过程和感想,他从初中时期开始写程序,由basic入门,进而C、C++、Java、Python、perl,玩转linux、mac OS、unix等,高中时全身心在搞IOI,快毕业时还挂了九门课,其间过程不可谓不疯狂,读来令人心潮澎湃,恨不得再年轻一回,也疯狂一把。
本人从初中接触电脑开始,高中学习Pascal入门,进而C、C++,那个时候也挺疯狂,天天拿本厚砖头在晚自习读,偶尔乘班主任不在溜到电脑室,但也仅仅是晚自习而已,远不及vgod全天候疯狂,到了高三还要收敛身心搞高考,还好底子还在,好歹考了咱们湖南排名最高的大学。到了大学阶段,有点不思进取,以为已窥门径,没什么可学的了,到外面兼职赚钱去了,到了大三时,看了泛型、Boost、元编程,才知道自己是井底之蛙。再看看大牛们都在干什么,才惊觉自己实在浅薄。大学已经进入尾声,已经发觉得有点晚了。到了研究生阶段,除了买大量的书,看大量的书以外,就是写代码,玩linux,看大牛的博客,这才稍微觉得自己赶上了形势。
读完vgod的追求神乎其技系列,觉得要干成一件事情,要有下面几条: Read more…


以前一直使用Eclipse的CDT插件进行开发,构建系统也就使用CDT自带的。最近几日因为要修改EA程序,打算转到vim编辑器,并使用GNU的构建系统。GNU的AutoTools构建系统,包括autoscan、aclocal、autoconf、automake、autoheader、libtool等工具,是一个完整的工具链。其构建步骤如下:
- 先使用autoscan扫描源代码目录,生成configure.scan文件。修改configure.scan文件中的内容,具体修改内容可以参考相关网页,并将其改名为configure.in,作为aclocal的输入。
- 使用aclocal扫描configure.in文件,生成aclocal.m4文件。
- 使用autoconf扫描configure.in和aclocal.m4文件,生成configure脚本文件。
- 创建并编辑Makefile.am,具体修改方法可参考相关网页,使用automake扫描configure.in和Makefile.am文件,生成Makefile.in文件。
- 创建并编辑acconfig.h文件,具体修改方法可参考相关网页,使用autoheader扫描configure.in、aclocal.m4和acconfig.h文件,生成config.h.in文件。
- 执行configure脚本文件,扫描Makefile.in和config.h.in文件,生成Makefile文件。
- 执行make命令,构建可执行程序。
步骤还是蛮多的,不过功能还是非常强大的,能够自动检测环境和依赖关系,生成Makefile文件,用得熟了,有些步骤还可以省略,具体可见网页1和网页2。如果写个脚本,将这些步骤自动化,作为值守进程,就可以自动构建了。但是还是显得比较复杂,要同时面对几种工具和脚本语言,而且这个工具链只能在Unix/Linux系统下使用,在Windows下使用很困难,不具有跨平台移植性。
而CMake,能够为多个操作系统平台多种编译器提供makefile,包括Windows、Linux、Solaris、Unix、Mac OS X、FreeBSD、……等。而且,CMake只需要一个配置文件CMakeLists.txt,编译速度也比autotools快一些,具体优势可见网页3。
由于CMake具有的优势,一些大名鼎鼎的开源软件纷纷投靠了CMake,包括KDE、Boost、MySql、….等,估计未来还会有更多投靠的。KDE的开发者Alexander Neundorf介绍了为什么转移到CMake。当然也有一些autotools的粉丝从另外的观点反驳,autotools每个工具都专注一个任务,具有更大的灵活性,符合UNIX的一贯哲学。其中Luca Barbato和Alexander Neundorf的论战最为精彩。
Read more…

在windows下使用Eclipse的CDT(c++ develop)插件比较麻烦。首先需要安装JDK,让Eclipse能够运行起来。
接着需要安装MinGW和cygwin为CDT提供GCC和linux命令行环境。接着下载CDT插件解压缩,拷入Eclipse安装目录的Plugin目录中。启动Eclipse,新建一个C++工程,然后编译运行,测试一下是否安装正确。
在CDT中使用Boost类库则非常麻烦。有些Boost的子库需要链接库文件才能编译成功,有些直接包含源代码即可。而需要链接库文件的Boost子库,网络上没找到适合CDT环境的链接库,只能自己编译链接库。下面是编译使用Boost类库的步骤:
Read more…
部分内容来源:快乐老鼠
1.安装
步骤0:安装前的准备事项
服务器端:
需要卸载以前安装的一些试用版软件如SQL Server2005 CTP ,ASP.net 2.0 beta之类的,否则不能安装。
因为Internet访问是通过Web Service实现的,所以安装前要先配置安装好IIS。
安装VSS2005好像可以自动安装.Net Framework 2.0,不过,我是事先安装好.Net Framework 2.0并启用Asp.Net 2.0的。
客户端:
只有Visual Studio 2005默认支持VSS的Internet访问,所以客户端还要安装VS2005。
步骤1:安装VSS2005
安装VSS2005一路Next就OK了。服务器和客户端都要安装。
2.添加数据库
步骤2:创建VSS数据库,并启用Internet访问
Read more…
二 流程分析
按我的习惯,分析源代码,从main函数开始。按执行顺序一步一步地看下来,如果主函数看懂了的话,剩下的都是各个部分的细节问题,各个击破,就大功告成了。
闲话少说,让我们进入mplayer的源码世界。
Mplayer的源代码包解压出来,可以看到许多子文件夹。


一 缘起
近日,因正在实现一个视频流的应用,所以四处搜集资料,希望能有所启发。为找到一点思路,慕名找来linux下的著名播放器mplayer,打算利用一下前辈们的智慧.本来想从网上找到现成的mplayer源码分析文章看看,于是google了一下,未发现相关的现成资料,真是一穷二白阿。没办法,万丈高楼平地起,自己先来打打地基,为各位兄弟姐妹们铺路(会不会成为革命先烈?^_^ )。
Mplayer的源码可以google一下,满世界都是,目前最新的版本是1.0pre7。
2006年8月19日
建立CTPlayer,CTCapture两个类,写出代码,并测试。
2006年8月20日
建立CFilterGraph基类,封装对Graph的操作。
2006年8月21日
Read more…
2006年8月5日
今日卸载原来的摄像头驱动,装上新的驱动,测试连接capture filter和smart Tee filter,成功。证明昨天所遇到的问题,是驱动程序不兼容。局域网内测试视频流传输,成功,反应较快。
2006年8月6日
今日编写代码,测试传输并播放AVI文件。使用renderfile函数,直接形成播放AVI文件的Graph,然后找到VideoRenderer filter和AudioRender filter,将它们移除,换成H263Encode,RTPSPH for H261/263,RTP Render,连接好后,运行Graph即可将视频流发送出去,接收端的设置跟Capture的一样。
2006年8月7日
Read more…
2006年4月12日
检查使用graphedit测试代码出现的ASSERT错误提示对话框Excutable: graphedit.exe Pid bc0 Tid640 . Module dump.dll,4 objects left active! At line 316 of dllentry.cpp错误,未有头绪,明天继续。难度已超出预料,希望后面的错误少一点,前期就解决潜在的问题。
2006年4月13日
今日有其他事情。
2006年4月14日
Read more…
2006 年4月3日
看开发directshow filter的相关文档[14]。
2006年4月4日
继续看directshow filter 相关文档[14]。
2006年4月5日
继续看directshow filter 相关文档[14]。
Read more…
最新评论