Browsed by
Category: 杂文

随便记点什么

Xubuntu10.10真不错

Xubuntu10.10真不错

前段时间将家里的一台老电脑从XP改成了Ubuntu,使用了一段时间,感觉很不错。有点缺陷的是,我其实不太喜欢Ubuntu10.04缺省的界面,感觉有点暗暗的、红红的,看上去不太舒服,同时我也很不习惯将窗口的系统按钮放在左边的方式。另外系统比较慢,据说是Gnome的原因。

因此卸载掉了原有的ubuntu desktop,从软件中心里安装xfce desktop,即转成了Xubuntu。启动和关闭比原来要快一些,重要的是整个窗口系统比较接近以前XP的体验(我个人觉得那个收/放窗体的按钮有些多余)。不过Xubuntu10.04的整体颜色便暗蓝色,感觉也不太舒服,我还是比较喜欢明快一点的感觉。

修改了更新管理器的配置,将系统自动升级到10.10,感觉好多了,整体颜色偏浅蓝色,窗体和系统任务栏区分很明显(Ubuntu几乎粘在一起,颜色没怎么区分),基本上满意了。

这段时间没事研究了一下各大linux发行版本,感觉大家好像不太待见KDE。从Archinux和MEPIS等的截图看,其实KDE的界面很华丽、用起来很爽啊,可能主要是低配置计算机运行KDE比较费劲? 个人认为,如果是新机,完全可以选择KDE版本。

就目前的使用体验来说,linux的GUI使用体验,基本上达到了XP的水平,唯一的问题是不太清楚稳定性如何。如果稳定性也能达到XP的水平,那完全可以把我们的windows服务器程序移植到linux平台上来。最近开发的MSC Lite已经完全可以跨平台使用了。linux还真是让人期待啊!

MySQL 5.5.8安装过程中的小问题

MySQL 5.5.8安装过程中的小问题

德国的一个客户反馈callingCard业务有点问题,查了半天,没找到原因。在我们的环境上一切都很正常,而在他的环境上,很容易就失败了。我们推测是不是MySQL数据库不匹配?因此决定也安装最新的MySQL 5.5.8版本测试一下。

按照以往的惯例,我们在安装时指定允许root从远端接入数据库。可是在最后的配置过程中,总是提示失败,是某个field没有default value。

这确实很奇怪啊,以往从来没有遇到这样的问题。我们重新卸载、安装,此时不再允许root从远端接入数据库,则配置过程一切正常。

5.5.8版本和以前有另外一个不一样的地方,在windows的程序启动菜单中,没有了命令行窗口的快捷方式了。需要手工打开dos窗口,然后进入MySQL安装目录下的bin子目录,运行mysql -u root -p来登录MySQL数据库。

号称5.5.8比前任版本在各方面有极大的飞跃,这个我们不得而知。不过,在我们的环境中,切换到5.5.8环境后,结果仍然是正常,开起来客户的问题可能是其他方面的啊。

小红伞怎么了?

小红伞怎么了?

最近软件开发过程中,遇到一些莫名其妙的问题,例如,在VC2008 Expess环境中,一运行程序就弹出以下信息并结束调试:

the application failed to initialize properly (0xc0000235)

其他一些程序即使是运行起来了,也会有其他一些问题,例如打开对话框崩溃等等。

而在这期间,我们的代码没有任何改动,以前是好好的。

这个问题严重困扰了我们,不同程序出错的位置还不一样,有些甚至连main都没有执行到!我们为了排查,做了以下工作:

(1)重建所有工程,删除所有obj文件,重新编译。结果仍然异常。

(2)接下来只好重装VC2008 Express,重复第一步的操作,结果还是异常。

(3)重新安装QT,并尝试不同的版本,其间包括了对4.6.2, 4.6.3, 4.7的源代码重新编译(每次编译都耗费了3~4小时)!结果还是异常。

这不得不让我们怀疑是其他部分的问题了。在Google上搜索了最近一个月类似的问题,发现国外有用户提到了小红伞。恰好我们的环境中也安装了小红伞杀毒,于是我们也尝试卸载小红伞试试,结果果然是小红伞的问题!卸载完了后,一切恢复正常了!

小红伞在最近的升级过程中,究竟干了什么?

“W: GPG签名验证错误”解决办法

“W: GPG签名验证错误”解决办法

最近在升级ubuntu的软件时,系统提示以下信息:

W: GPG签名验证错误: http://ppa.launchpad.net karmic Release: 由于没有公钥,下列签名无法进行验证: NO_PUBKEY FA9C98D5E89713C4

解决办法也挺简单,只要把后八位拷贝一下来,并在[终端]里输入以下命令并加上这八位数字回车即可,例如:

sudo apt-key adv --recv-keys --keyserver keyserver.Ubuntu.com E89713C4

2014-09-12 updated: 使用LinuxMintDebian版本,居然也可以使用上述ubuntu的keyserver。

Linux Mint Debian不错啊

Linux Mint Debian不错啊

前段时间一直在使用Ubuntu,也一直认为apt-get等获取软件的方式是Ubuntu独创的。最近看了些介绍Linux的扫盲性文档,才知道原来是Debian系统创造了一切,Ubuntu只是对它进行了优化。

同时也知道了原来还有个linux mint debian的版本。试着安装了一下,也是相当不错,界面也非常华丽。重要的是,它是原汁原味的Debian软件管理,可以直接使用Debian的源。

不过LMD缺省的源,在国内网络访问时速度不够快。搜索网络并尝试后确认,实际上下面两个软件源从国内访问是最快的:一个是国内的CN99(似乎实际上就是163.com),另外一个是台湾的网站。

修改软件源的方法也很简单,登陆LMD后,进入/etc/apt目录,使用命令:sudo vi sources.list进行修改,将以下内容添加进去就可以了:

#stable sources
deb http://debian.cn99.com/debian stable main contrib non-free
deb-src http://debian.cn99.com/debian stable main contrib non-free
#security update
deb http://debian.cn99.com/debian-security stable/updates main contrib non-free
#testing sources
deb http://debian.cn99.com/debian testing main contrib non-free
deb-src http://debian.cn99.com/debian testing main contrib non-free
#TW sources
#stable sources
deb http://ftp.tw.debian.org/debian stable main non-free contrib
deb-src http://ftp.tw.debian.org/debian stable main non-free contrib
#testing sources
deb http://ftp.tw.debian.org/debian testing main non-free contrib
deb-src http://ftp.tw.debian.org/debian testing main non-free contrib
xxBSD,想说爱你不容易

xxBSD,想说爱你不容易

最近在应用linux时,运到一些问题,比较典型的就是gcc, bfd, core等各个部件之间的版本配合问题。每次linux的升级,包括内核的升级,gcc的升级以及几个关键库的升级,都会给我们造成或多或少的麻烦。相比较之下,在windows平台作开发,我们基本没有遇到过类似的后向兼容问题。

所以当我看到FreeBSD据说是比较稳定,对各种库的依赖关系处理比较好时,怦然心动。于是下载FreeBSD8.1版本,在VMPlayer上安装试试。结果非常失望,安装界面是极其简陋的,基本上就和我还在上大学那会儿的linux安装界面差不多。换句话说,相比linux的安装界面,FreeBSD看上去落后了十年,而且非常不人性化。例如,安装时选择配置网络,居然只能配置固定IP,而不同配置DHCP。费了九牛二虎之力后,发现很多很基本的东西都没有安装或者没有配置,需要自己手工去下载或者配置,实在是很麻烦。最后不得不放弃。

转而下载了一个叫做PCBSD的版本,安装时,界面比FreeBSD好多了,可是不幸的是,在VMPlayer中安装时,频繁出错,最后没能安装成功。

这段时间一直在使用linux(包括尝试各种版本,例如Fedora,Centos,Ubuntu,redhat,OpenSUSE等),很明显,linux已经有了长足的进步,尤其是Ubuntu,已经达到大规模工业应用的水平了。但是相比windows,linux仍然还有很长的路要走,还需要更严谨和进行更多的考量。而FreeBSD/PCBSD相比linux,也有很长的路要走,而与windows相比,我想我们中短期之内不会再考虑它们了。

另一个新闻:关于360

另一个新闻:关于360

刚看到新浪科技上的一则新闻,360推出密盘服务。具体信息参考链接:http://tech.sina.com.cn/i/2010-12-09/11134963302.shtml

这则新闻号称有各种先进技术等等,不过我有个疑问:如果流氓说推出可以保一万年的保险业务,你敢用么?没错,ta可能是给装了个铁门,不过ta在门后面干什么可没人知道,更没有人知道ta哪天会作个“艰难的决定”。

这不是个别公司的问题,而是整个中国互联网的问题,甚至是现在社会的问题。在流氓横行的社会里,自己看好自己的东西才靠谱。

微软推出在线office了

微软推出在线office了

简单地试用了一下Word,Excel以及Note,感觉很不错,比Google doc要专业很多。没有Google doc的tag功能,管理文档可能会不太方便,不过貌似提供了搜索功能,还不清楚是不是够强大。

用Chrome上office web会提示不安全,可能是因为需要安装activex插件的原因。以前一直是用chrome,今天因为office web又重新用上了IE!微软还是很强大啊。

希望这么好的产品,不会再被和谐掉。这个世界真奇妙,和谐居然会变成一个这样的动词。

按条件编译版本

按条件编译版本

在我们开发的软件中,需要根据宏定义的不同,区分编译出不同的版本。例如,代码中有如下定义:

#if MSS_USER_VERSION == 1000
… …
#elif MSS_USER_VERSION == 100
… …

比较丑陋的方式,当然可以在代码中先定义好MSS_USER_VERSION ,然后再编译版本。但是我们通常采用自动化脚本编译,上述做法无法自动进行区分,需要人工干预。

我们希望在脚本执行时能通过设置不同的环境变量,从而自动编译出相应的执行文件。

以上述代码为例,我们可以修改qt的pro文件,增加如下定义即可:

DEFINES += MSS_USER_VERSION=$$(MSS_USER_VERSION)

脚本在编译前,先设置好环境变量,编译不同的版本,设置不同的环境变量值即可:

set MSS_USER_VERSION=1000

最后,如果只是单纯编译console程序,需要显示地在pro文件中说明,否则qmake缺省会按照window程序编译,导致在命令行中无法看到输入输出信息。

CONFIG += console

VC 2008 Express编译QT程序时产生MAP文件

VC 2008 Express编译QT程序时产生MAP文件

MAP文件对于定位程序crash问题非常有用,一般情况下,我们总是希望能产生MAP文件以便将来出问题时好进行查找。

在VC 2008 Express中生成MAP文件比较简单,只需要修改工程属性中的link相关项即可。

可是在QT应用中,如何设置呢?这种情况下,是先使用qmake编译pro文件,然后使用VC的命令行方式编译程序,没有相应的VC工程进行设置。

我们可以修改QT在VC2008环境下的全局编译、链接开关。以QT4.6.2为例,假设qt安装在d:/qt/4.6.2目录下。

进入qt安装目录下的子目录: mkspecs\win32-msvc2008

用notepad打开该目录下的qmake.conf文件,找到QMAKE_LFLAGS项,将其修改为:

QMAKE_LFLAGS            = /NOLOGO /MAP /MAPINFO:EXPORTS

注意,全部都是需要大写格式。

修改完成后,重新qmake各pro工程文件并编译,就会在生成exe/dll/lib的同时,生成map文件。

上述方法修改的是QT全局的qmake连接标志,编译任何工程都会产生map文件。在实际应用中,我们可能只是希望部分工程产生map文件,这种情况下可以修改工程的pro文件,单独添加QMAKE_LFLAGS即可:

QMAKE_LFLAGS         += /MAP /MAPINFO:EXPORTS