Jump to Navigation

博客

kde 4.5 beta2安装中的几个小问题

昨天kde 4.5 beta2发布,在gentoo上开始安装该更新版本,虽然大多数包都顺利安装,但也遇到几个小问题。

首先,kttsd模块已经改名了,现在叫jovie。所以在从以前的版本升级时,总是无法找到kttsd模块的源代码。解决方法,emerge -Ca kttsd卸载旧的版本,将kttsd-4.4.85.ebuild改名为jovie-4.4.85.ebuild, 放在新创建的jovie目录,使用ebuild jovie-4.4.85.ebuild digest 生成签名文件Manifest。现在emerge jovie 安装即可。不过,虽然这样安装上了,但jovie现在无法正常注册服务,经常提示:找不到服务 kttsd未启动。

另外一个出现问题的是kdepim-runtime,这个包kde官方没有提供包,需要在trunk中svn://anonsvn.kde.org/home/kde/trunk/KDE/kdepim/runtime/获取代码,打包为kdepim-runtime-4.4.85.tar.bz2,重新给kdepim-runtime-4.4.85.ebuild更新签名文件Manifest。

Taxonomy upgrade extras:

nullfxp原生64位windows 7支持的问题

现在64位硬件非常普遍,操作系统对64位硬件的支持也不断改进。现在的64位windows7已经运行的相当稳定,兼容性也不错。这种情况下,64位系统是现在的趋势,所以考虑nullfxp原生支持64位操作系统,而不是32位应用程序运行在64位操作系统上。

现在的情况是,编译的32位nullfxp既能运行于32位操作系统,又可运行于64位系统,并且运行状态良好,没有什么差别。但是,编译的64位nullfxp却无法在64位系统上正常运行,程序崩溃比较频繁,所有功能几乎无法使用。
在linux系统,32位和64位系统上都运行良好。

为了能让64位编译的nullfxp正常运行于64位操作系统中,需要对现有的代码做些修改,目前出问题的地方还没有找到,这个移植的工作量还未知,需要进一步深入的测试,找到问题所在才能确定,甚至有可能重写整个程序。现在代码量粗略统计已经超过3万行,重写的工作量相当大。

专门为windows 64位版本的nullfxp创建新的分支,在这再找一问题出在什么地方。

A1, 今天在测试中发现,即使Qt自带的一些示例,使用64位编译,运行时也会出现崩溃的问题。这么说qt 在64位windows上运行也有些问题,现在在windows 64位上使用64位qt还不成熟。

Taxonomy upgrade extras:

nullfxp 新功能:文件管理器导航栏

最近有时间,为nullfxp添加了许多新功能,界面上的上主要改变是,添加一个与文件管理器类似的管理功能,如地址栏,前进,后退,向上导航按钮。
另一个是目录视图模式设置功能,可以修改目录视图的大小,适应不同环境应用。

技术总结,为显示不同视图模式,使用Qt中的MVC架构,不同视图模式下共享model数据,共享QSelectionModel相关知识。

nullfxp最新界面抓图,

Taxonomy upgrade extras:

在Qt4中使用QPersistentModelIndex传递QModelIndex

在Qt4的model/view架构中,用的非常多的是QModelIndex,但这个类是动态的,可以说不可以传递的,因为随着view的变化,相同结点的QModelIndex也可能不同,非常容易失效,甚至造成读写数据错误的问题。
Qt4中还提供一个QPersistentModelIndex类,说明中这个类可以存储作为结点记录,并且不会因为model的变化而变化,应该也可以当作参数传递。
测试其中nullfxp中试用是否可以。

假如在一个View中的点击事件,点击之后异步更新当前点击的结点,
那么就需要在更新返回的时候正确查找到这个结点。
如果把这个结点的普通QModelIndex传递给异步更新处理器,则返回的时候程序行为 无法预料,
因为model中其他数据可能发生变化,而这个QModelIndex已经失效了,找不到原来的结点,或者找到的结点根本就不是原来结点。

这时候借助QPersistentModelIndex实现该功能,把当前的QModelIndex转换为QPersistentModelIndex:
QPersistentModelINdex *persisIndex = new QPersistentModelIndex(index);

Taxonomy upgrade extras:

儿子幼儿园两天体验

前几日听说上奥有一幼儿园,可以先上两天体验课再决定要不要入园。于是,我决定把儿子送去试入园两天看看他的状态,如果他还比较能适应的话,就把他送幼儿园,我也可以工作了。

跟朋友商量好后,我们一起把俩孩子送去,幼儿园老师把儿子抱进去的时候,他还哇哇哭着叫妈妈,我跟他笑笑招招手说,没关、系,去玩吧。待老师把儿子抱进教室后,没多久就没再听见他的哭声了。我对儿子的适应能力是有信心的,因为他平时,就算我没在他身边,他也可以玩得挺好的,反而是如果我呆在他身边的话,他就总是会找我跟他一起玩。

不一会儿,就见老师出来跟我说我儿子现在没哭了,在玩积木,玩得挺好的,我跟老师交待了下翰林现在生活自理程度的状况。待朋友把她的儿子也放进幼儿园后,我们俩在外面呆了一会儿就去逛街了。

Taxonomy upgrade extras:

nullfxp 中一个顽固的bug

自从本机上的Qt升级到 4.7.9999,这个bug显示出来,具体表现为,连接到ssh主机后列目录时挂掉,gdb的backtrace显示与QSortFilterProxyModel有关,出现mapToSource时异常。

调试了几天也没有找到问题关键,应该是原来的基础代码写的太乱了,如果再找不到考虑重新写下基础的RemoteDirModel这个类。

系统上装的非release版本软件太多,是不是这些问题也不得而知
gcc 4.5.0
qt-4.7.0-beta
glibc-2.11.1

AA:
几经调试,终于发现,还是原来的代码基础问题,没有严格按照Qt 4 的view/model架构修改model数据,导致数据更新后,打破有序执行序列,导致程序崩溃。
现在重写了代码,严格按照要求修改model中的数据,没有问题了。
改动比较大,nullfxp程序功能还没有完全恢复原有功能。

Taxonomy upgrade extras:

w500 安装 gentoo相关优化

由于笔记本温度过高,经常达到70、80度,任务重的时候到90度。
查找发现与开源ati显卡驱动有一部分关系,现在将xorg-server降到1.7.7,并安装ati官方闭源驱动,感觉温度有所降低,大概总体降10度。glxgear值达到5000左右。

目前升级到KDE 4.5 RC, 不开特效,不打其他程序,仅系统,CPU温度在55度,风扇转速3000左右。

风扇控制还没有处理好。

记一个opera的问题,opera 10.60 开16个标签,CPU占用一直在20%,应该还有问题。发现www.google.com让opera多用了15%的CPU,还有其他一些网页占到%5的CPU就不正常。

播放器及virtualbox声音方案全设置为pulseaudio, 都有声音了。

virtualbox虚拟机 winxp,由于把系统设置中“非Unicode语言”设置为“英语(美国)", ppstream显示中文乱码,安装microsoft applocale util,使用这个选择ppstream,可正常显示中文。

Taxonomy upgrade extras:

人脸识别相关软件及库

opencv
libface
eViacam: 用脑袋来移动鼠标

Qt库商用问题

Nokia收购Trolltech后,将其Qt 4.5版本及以后版本开发库开源协议转换为LGPL,这个协议对Qt商用限制很宽松,在不修改Qt库源代码的基础上,允许开发中使用Qt开发库,允许调用Qt发布的动态库,允许商用程序发布时一起发布未经过修改的Qt动态库。

另外,自己编译的Qt动态库(不修改代码)应该也可以随商用程序一起发布吧。有一个商业程序XWin的,Qt的动态库文件名就不是在qt 网站下载的默认的名字,也是可以发布的。
静态编译qt库进程序中是否可以呢。

页面

订阅 RSS - 博客


Main menu 2

by Dr. Radut