博文
梦回周朝思妲姬(2007-07-04 15:23:00)
摘要:梦回周朝思妲姬
紫烟缭绕,梦境回旋。
风若遥远的回音,带着无限的惆怅和期待,寻找记忆里宁静的枫桥、令人陶醉的弦音;
雨似缠绵的情思,夹着悲伤的依恋和怀想,呼唤轮回里尘封的历史、无法忘却的旧事。
多少生命和思想,在岁月中蹉跎成泥塑?
多少期盼和渴望,对着走过汉唐,走过明清的星月,渐次消瘦?
多少欢乐和忧伤,在匆匆时光中悄然流逝?
思念,此时,是宁静的海,是温暖的痛,是绵绵不绝、放声歌唱的夜晚。
穿越清风鸣蝉之夜,一条纯净的月光之链,一杯醉人的释怀之酒,一滴寂寞的哀伤之泪,轻抒:
妲姬,为何出身狐仙却又坠入尘世?
秋娘,为何清风拂面却又郁郁寡欢?
林昭,为何光芒丽彩却又灵魂丧失?
唯有你,明儿,
螓首蛾眉而气似幽兰,手如柔荑而肤如凝脂;海棠春睡而荣曜秋菊,灵巧风流而冰清玉洁。
我沉入原始的渴望,依偎青青的草地,心灵之海异常平静,恋恋之心摇荡无比思念的情怀。
声明: 酒后胡乱写文章,明儿只是朋友,呵呵,酒醒后一看,自己都感觉有点麻。
......
放弃MFC,转学wxWidgets(2007-04-10 20:00:00)
摘要: Julian Smart 1992年在Edinburgh大学的人工智能程序学院开始开发wxWindows。在1995年 Markus Holzem完成了Xt版本的移植。在1997年Windows 和 GTK+ 的移植版整合并放入了 CVS 档案库。2004年更名为wxWidgets。
wxWidgets是用来为普通桌面程序和移动设备程序开发用户界面的工具包。由于它是一个框架(Framework),所以它在提供标准程序行为的同时也消除了程序底层的复杂性。wxWidgets库包括了大量的类和方法供程序员使用,甚至可供程序员定制其中某些类别以满足不同的需求。一个典型的应用程序窗口包括标准的控件,特殊图形的绘制和对来自鼠标键盘等输入设备的响应。同时也与其它进程通信或是驱动其它程序。换句话说,程序员利用wxWidgets开发软件,能实现现代程序能实现的所有功能,并且相对轻松。
尽管wxWidgets通常被成为“用户图形界面开发工具包”,但事实上它所提供的功能决不仅限于此。它的其他特性能够应用与软件开发的各个方面。这个特点很重要,因为所有基于wxWidgets的应用程序都应能移植到不同的平台,而不仅仅是移植界面。wxWidgets提供了各种类库用以支持文件流(files and streams)、多线程、程序设置、进程间通信、在线帮助、数据库访问等等
wxWindows为你隐藏了全部平台相关的代码。它是一个与平台无关的framework,它有如下特点:
它是非常全面的,拥有很多实用的类。It is very complete. There are many utility classes.
它仍然在快速的发展中。It is still heavily developed.
支持很多的编译器与平台: Windows, Linux, Mac, Unix.
拥有大量的文档。There's a lot of documentation.
个人与商业机构都可以自由的使用它。It's free for personal and commercial use.......
千万别学别用Matcom(2007-04-10 19:32:00)
摘要:
千万别学别用Matcom
此文推荐给正希望学习Matcom编程,或者已经涉入其编程一段时间的人看。
Matcom是mathTools公司推出的一个能将M文件转化成相同功能C++代码的工具。使用Matcom实现Matlab和C++的混合编程,是开发数据处理应用软件的一种途径。此种方法的优势主要有: 提供了Matlab中的大量成熟函数 ,程序可脱离Matlab运行环境。
使用Matcom一个星期就可以做一个相当不错的信号处理软件或是简单图象的图形处理软件。优点不言而喻,随便在网上搜一下,就可以看到很多Matcom应用的论文,确实是很方便。本人也是其受益者,也曾利用Matcom和C++混合编程在短期完成内完成过多个小软件。
但我今天要建议大家的是: 千万不要浪费时间来学习和使用Matcom。 大家看了觉得奇怪,这么方便为什么不学呢? 这么好用为什么不用呢? 讲几点原因,
首先,Matcom不提供源代码,大家能够下载到的只是一个链接库和一个matlab.h头文件。曾经有一个网名叫energy的大侠破解了 Matcom4.0和Matcom4.5的安装口令,但这仅仅只让大家能够使用盗版而已。而且大家都知道,要想从这么大的一个库的十六进制文件转化为原始代码几乎是不可能的。所以Matcom永远只是一个类似于能Matlab部分功能的东西。北航刘*也在其书中讲解了如何去掉Matcom中的广告菜单。但是最后编出来的软件都要带上v4501v.dll与ago4501.dll才能使用。这样的软件根本无法卖出去,留着自己用又不如Matlab的效果好。
从长远角度看,对于想成为专业编程人员的学手,初学Matcom容易对其产生依赖心理,而忽略了对很多基础数值计算编程的学习。他们会发现,用Matcom做个插值,或是求个积分如此容易,何必再去花费时间学习那些基础算法呢?长此下去,编程基础会越来越差。而对于非专业的学生,学习Matcom也是有害无益。他们往往在大学或研究生期间做论文时使用Matcom来完成一些计算或图象的处理,结果......
编程如禅——工厂模式的智能化实现(c++)(2)(转帖)(2007-04-05 00:13:00)
摘要:
原文作者:曹骥
接上一帖,消除switch和case语句:
由名字创建对象其实的有挺强的背景,那就是软件工程学中的对象持久性问题。本文讨论的方法也是持久性的一个可能实现。废话少说,看看C++是怎么做的。
动态创建当然要用指针。我们不希望在程序中出现硬编码:
Shape * pShape = new Circle;
那就用函数/对象包装一下。函数包装简单、高效一些。于是有Circle类的成员函数:
Shape *createInstance() {return new Circle;}
我们需要用这个函数去创建Circle对象,同时只有Circle对象创建以后才可以调用createInstance()。这是一对矛盾。解决的办法是将createInstance()写成静态函数。于是Shpae和Circle类长的是这个样子:
class Shape{
public:
virtual void Draw() = 0;
};
class Circle : public Shape{
public:
void Draw() { std::cout << "Drawing a Circle......Done" << std::endl; }
static Shape *createInstance() {return new Circle;}
};
指向createInstance()的函数指针当然要放在工厂类里面,同时要和创建对象的名字关......
编程如禅——工厂模式的智能化实现(c++)(1)(转帖)(2007-04-05 00:12:00)
摘要:
原文作者:曹骥
地球人都知道有个loki库。它的工厂模式应该是经典的。但是我总觉得用loki有点杀鸡用牛刀的感觉。本来工厂模式应该是应用极为广泛的,搞的太复杂有时会适得其反。
撇开别的不说,工厂模式绝对是C++程序员的必用武器。C++的继承和多态使得我们在程序中知围绕基类来编写程序。这样的程序不会因为子类的扩充而反复修改,因而提高了可维护性和可扩展性。但是把子类作为硬编码(hard-coding)写入程序并不是一件好事。因此我们需要在运行时刻动态的生成(创建)子类的对象。总之,作为创建模式的工厂模式大有用武之地。
来个绘图经典的例子吧。基类是Shape,子类是Circle,Triangle等等。肯定有人写过这样的代码:
enum SHAPE_DEFINE
{CIRCLE, TRIANGLE, RECTANGLE };
someFunction()
{
SHAPE_DEFINE shape_variable;
……
Shape * shap;
switch(shape_variable)
{
case CIRCLE:
shape = new Circle;
......
