Monthly Archives: January 2009

Qt 4.5将以LGPL发布

转帖一个有关Qt的信,绝对天大的好消息,Qt 4.5版本会以LGPL发布。这样大家可以放心用于商业用途,而无需关心版权的问题了。Nokia还是财大气粗呀。

Dear Qt User:
Nokia is pleased to announce that with the release of Qt 4.5 you will
be able to use Qt under the Lesser General Public License (LGPL)
version 2.1 terms. When released in March 2009, Qt will be made
available under three licensing options: Commercial, LGPL and GPL.
Prior versions of Qt are not impacted by this announcement.
Nokia is committed to Qt and its continued development. By offering Qt
under LGPL version 2.1 license terms alongside today’s licensing
options Nokia hopes to:
– facilitate wider adoption of Qt across industries, desktop, web and
embedded platforms.
– establish Qt as a de facto standard for application development.
– receive more valuable feedback and increased user contributions to
ensure that Qt remains the best-in-class, cross-platform framework.
– extend Nokia’s existing platform commitment to the open source
community.
By offering a cost-free LGPL license as well as commercial and GPL
licenses to Qt, you can choose the license model that best fits your
development requirements.
Irrespective of which license model you choose:
– Qt Software is committed to continuing to provide our customers with
the same level of professional support, services and regular releases
you have come to expect of Qt Software.
– We will continue to actively develop Qt, and with a greater degree
of cooperation with the community through a new contribution model, we
hope to make Qt even more valuable to our users.
For more information on the introduction of the LGPL license and what
this means for you, please consult the Frequently Asked Questions
section on www.qtsoftware.com.
Best regards
Tom Miller
Director of Sales
Nokia, Qt Software

初三同学

郑雷先跟我讲的,说正月里初三同学会,问是否能够回去。因为前面已经回的太多,不想将老板惹火,所以肯定是不回去。郑雷索去了联系方式,估计是要放到通讯录里。某天接到一个email,从QQ邮件里发来的,也是同学会的事,我以为是郑雷。结果对方说是旭芬,另一个初中的同学。说实话,我都已经记不起来人了。旭芬给了一个QQ群号。当我加进去的时候,大为吃惊,里面已经有30多个许久许久没有见面的初三同学,包括后来还有联系,包括记得名字但记不得人,也包括连名字都忘掉的同学。

很是兴奋,一下子找回了初中那时的感觉。大家聊当前的工作,聊其他同学的近况,聊过去的时光,聊以前的老师。同学们多是在全国各地开店办厂,也有小中学老师,也有财会税务从事业,当然也有公务员。不过还留在学术圈里挣扎的只有我一人了,尽管学历高,但拿一点微薄工资过日子,不免为之汗颜,好在大家博士前博士后,来新同学就说我们的博士现在美国,也不感觉被人疏远,没出过国的同学未免感觉了不起。只是自己知道,这些东西不值一提。大家高兴的是十几二十年未见的同学一下子通过网络聚到了一起。

尤其高兴联系上一直甚为挂念的同学,生平care的也就这么几个人,跟联系上当初蒋老师一样(这话我们赵领导看见会说,应该写成“跟当初联系上蒋老师一样”,哈,偏不改),见人就笑呵呵的说,我在网上见着了好多好多初中的同学。别人说,很高兴吧,我点头说4242(哈哈,某人)。

要求几个同学初六聚会的时候一定要照些相片,放到网上跟我共享。

很想将同学扫描上来的初三毕业时的合影放上来,但想想算了,美女帅哥太多,最主要是俺那时太菜了,怕人笑话。哈哈。

QGIS

QGIS 1.0出来了,想拿 visual studio 2008 c++ express 编译一下,结果发现依赖的库太多了,还不是一下子能搞定的事。想将这个用起来,刚提交的863任务书将原 arcengine改成 qgis,将swat模型改成 noah,还是尽量的使用开源吧。研究性的东西不应该全用闭源或者商业的东西,不利于成果的推广。

开心网争车位自动工具 v1.0.2

一些bug的修正。下面是Readme的内容。

开心网(kaixin001.com)争车位自动停泊车工具
Zhuotong Nan ([email protected])

最新更新 2009年1月3日(美国东部时间)

如何运行
开始菜单,运行,键入cmd打开命令窗口,cd进入到此工具所在的目录,键入kaixinCarWar运行。
也可以直接在资源浏览器里双击运行。
第一次运行时,会要求输入登录开心网的用户名和密码。
目前没有图形界面。

如何退出

在命令窗口里键入q退出此程序。

配置

使用任何文本编辑器,打开.config文件,进行参数的配置。只有当你明确每个参数是什么意思时,才可以修改。否则请联系作者。
用户名和密码信息存储在另外的配置文件里。
在xp下,是在C:Documents and Settings<USER>Local SettingsApplication DataZhuotong_NanKaixinCarWar.exe_<…>这个目录下。
进入此目录,删除全部文件,再运行KaixinCarWar.exe,会重新提示输入用户名和密码。
在vista下,位置是在C:Users<USER>AppDataLocalZhuotong_NanKaixinCarWar.exe_<…>这个目录下。

平台支持

支持.net 2.0的任何平台(安装了.net 2.0的xp,vista等)

版本历史

ver. 1.0.2 (3/1/2009)
* 修正了车名中带空格的车辆无法取回的问题
* 翻译了README的一些中文说明

ver. 1.0.1 (12/3/2008)
* make it work with the friendlist pattern that has changed recently.

ver. 1.0 (10/28/2008)
+ optimized parking algorithm
+ whitelist support
+ neighbor support
+ add a console passworld input class which will be enabled at the first time you run it.
+ simple exception handling
* fix possible WebException due to network timeout
* bugs fixed
+ now support automatically parking

ver. 0.2 (10/23/2008)
* change the cash pattern to make it capture correctly.

ver. 0.1 (10/21/2008)
+ Initial release
+ Monitor the parking lot and automatically claim their profits by setting a claim level.
+ Use a configuration file to set up the program.

图例
lengend
+ add
– remove
# enhance
* fix

KaixinCarWar.exe.v1.02.zip

P.s,

如果运行提示,应用程序正常初始化失败,说明没安装.net 2.0
安装.net framework 2.0运行包,点这里下载.net 3.5 sp1即可。Vista本身已经安装。

Qt编程最佳实践21项(一)

C. Probst, Oct 2008

来自ICSNetwork视频,Zhuotong Nan([email protected]) 整理。原视频地址:http://www.ics.com/learning/icsnetwork_webinar/flash/8

最佳实践1,动手写代码前

实现一个任务前,先翻一下例子程序,Qt solutions(Qt提供的一些解决方案库,有商用也有开源的),Trolltech(Qt的开发商,现在被Nokia收购)及其合作伙伴提供的解决方案,以及开源项目等。

可能有一些与你的需求类似的项目已经存在,另外Qt提供的例子程序值得一看,一般例子程序都演示了比较好的实现方式。在使用这些已有代码前,请检查许可条件,比如是不是GPL,还是商用的,要与你的项目保持一致。

最佳实践2,调查Qt提供的其它模块和框架

除了GUI(图形用户界面)编程支持,Qt还提供了支持一些关键技术的独立于平台的其它API,比如多线程、网络、XML、图形、OpenGL、SQL等。

你需要实现的功能已经可能包括在这些模块里,仔细阅读文档,Qt有很好的文档,从中可以得到你关心的信息。

最佳实践3,了解qmake

qmake可以极大简化编译过程。使用qmake -project也可以产生很多项目文件。它可以生成makefile,nMake makefile等。同时也支持生成visual c++, vs .net, MacOS Xcode项目文件。

但同时也需要认识到qmake在操作大而复杂的项目(比如涉及不同的编译器,相互连接)时可能会有一些限制,这时可以试试比如cmake等。

最佳实践4,用new创建QObject并且指定一个父指针

除非你明确你创建的对像的生命周期只限制在这个生成对像的方法中,否则都用new对创建一个从QObject派生出来的对像,并且指定一个父指针。这样不至于代码在离开这个方法时,就销毁了这个对像,而这往往不是你期望的。

指定一个父对像指针,当这个父对像被销毁时,这个对像也自动被销毁。

保证全部的QObject对像都有一个父对像,这样确保全部的QObject对像最终都可以被销毁。

一个例子,

QLabel aLabel(this);
aLabel.setText(“this is really important”);
aLabel.show(); //当离开这些代码在的函数时,这个Label对像就消失了

QLabel* aLabel =new QLabel(this);
aLabel->setText(“this is really important”);
aLabel->show(); //这个标签对像只有当父对像(this)被销毁时,才会被销毁

最佳实践5,不要多重继承QObject

不要从QObject或其子类上多重继承,Qt不支持这种方式。

最佳实践6,了解QDialog::exec()和QWidget::show()的区别

刚学习Qt时可能会混淆这两者,两者有类似的作用,但也有显著的区别。QWidget::show()将widget(QDialog是QWidget的子类)和它的子对像显示出来;QDialog::exec()是一种有模显示方式,也是将其和子类显示出来,但这时用户除非关闭这个对话框,不能与其它窗体交互。

QWidget类是用户界面类的子类;QDialog也是从QWidget上派生出来的,用于获取用户输入的数据。

最佳实践7,在写定制的图形控件时,确保没有现成的已经存在

Qt里的全部GUI对像,事实上都是定制的控件,与用户自己写的没啥区别。Qt已经提供了很多有用的控件,比如QCalendar、QTooltip、QTabWidgets、QDateEdit、QTimeEdit等。如果已经有现成的,尽量用它们,毕竟它们经过了完整的测试。

写一个定制的控件时,需要重实现QPaintEvent,以及使用QPainter类。

当然,如果你需要的控件是独一无比,除了自已写就别无选择了。不过需要注意写控件是不容易的,需要小心的设计和大量的努力。

(待续)

tray里的network icon提示不通,事实上无线是通的

新买的thinkpad x200是安装的vista,感觉程序运行的还流畅(更多是因为机器性能提高了,自然会流畅一些,但vista那个系统是真叫大,占了我10G的空间,再加个系统还原占的15%,合计40多G就没了),但各种问题也不少。前面已经bluescreen了一次,这两天又注意到网络图标的问题。尽管不影响使用,但就是不知道是怎么回事,也许是vista的bug?

thinkpad x200自带的access connections来管理无线。使用住所的无线,那个网络图标上面有个小蓝球,鼠标移到上面,提示说“未连接,您目前没有连接到任何网络”,但事实上是通的。到学校的办公室,那图标干脆就是红叉,同样的提示说不通,事实上是通的。

google了一些帖子,大家也没有啥发的解决方法。大家都推测是不是vista的一个bug。

每次重启机器,Window Live Messenger总是提示安装

每次重启我的Vista 机器,总会出来一个安装的窗口,自动安装Window Live Messenger。即便卸载了WLM,重装,问题仍然存在。

具体原因不明,在网上看到一个帖子,说是可能因为MS installer此前的安装出问题导致,该帖子介绍了一个叫 ms installer clean up utility。可以从微软的网站上下到,地址是:

http://support.microsoft.com/kb/290301

安装后,运行,将Live messenger给清理掉。然后跑到安装/卸载程序里,将Live登录助理、Live installer也给卸掉。再重装安装WLM,发现前面的问题已经不再出现。

移去“我的共享文件夹”

安装成Windows Live Messenger,Vista系统的“计算机”下多了一个“我的共享文件夹”,这主要是用于Messenger共享,其实没多大用。所以想将之移去。直接删是删不了的。

可以通过编辑注册表来达到目的。

在运行里键入regedit,打开注册表编辑器,到

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionexplorerMyComputerNameSpace{FC9FB64A-1EB2-4CCF-AF5E-1A497A9B5C2D}

这个注册表项下可以看到这是Messenger Sharing Folders。

将{xxx}整个项移去。为安全起见,你可以先备份这个项,方法是右键,导出。

移去后,再回到浏览器看,已经没有这个文件夹了。

遭遇vista蓝屏

不知道执行了什么操作,vista蓝屏,重启后,recover了不知时间,终于进入了,发现几个service不能用,包括 dhcp, network list, network location awareness, firewall, diagnostic policy等都不能用。手工启动提示说 access denied,估计是local service帐户的权限出问题了。

在网上找了好久,在ms knowledge base里找到一个相关的,需要配置一些register key的权限,照着配置,发现还是不能用。网上很多人也是类似的情况,没有好的解决方案。

于是想到是否可以用system restoration。xp下的这个东西比较好用。在vista下发现执行出现 unspecified error,导致系统还原无法进行。后来跑到 safe mode(启动时按f8)下执行,才搞定。进入一个几天前的还原点,还原之。

再进入vista发现这回可以用了。好在这些天系统程序没啥安装,所以还原回来基本是一样的,最近只是安装了几个update。

终于又可以上网了。

vista总的感觉用户友好性还比不上xp,一些功能都被藏起来了,要用的时候找出来都要费好大的劲。常用的功能倒是组织的不错。象一位同事感叹的,不知道下版本的windows会怎么样。