Phonon程序无法播放语音文件的问题

Phonon程序无法播放语音文件的问题

问题基本情况如下:我们开发并发布了一个软终端产品,当然其中采用QT以及Phonon模块。在我们的开发环境中,一切都很美好,能正常地播放音乐。可是安装到客户的计算机上,出现问题了,无法播放提示语音(wav文件录制)。

这个问题的实质是我们没有将Phonon的插件一同打包进安装文件。Phonon实质上只是个前端封装模块,具体工作有赖于后台的解码器。在windows系统中,Phonon缺省采用DirectX作为后台解码器部分,具体实现为一个plugin。如果不安装这个plugin,则phonon无法正常播放语音文件。

假设QT安装在d:\qt\4.8.4目录下,则上述plugin可以在以下目录中找到:D:\Qt\4.8.4\plugins\phonon_backend\phonon_ds94.dll。

注意,不是简单地将这个文件拷贝到程序目录下即可,而是要拷贝到程序目录的phonon_backend子目录下。例如,我们的程序安装在d:\minisipphone目录,则上述dll应当拷贝为:d:\minisipphone\phonon_backend\phonon_ds94.dll。

另外需要注意的是,不同版本的QT要采用各自版本的phonon_ds94.dll,例如qt 4.6.2的程序就不能采用qt 4.8.4的phonon_ds94.dll,否则还是会出现放音错误。

CCTV的诡异逻辑

CCTV的诡异逻辑

好不容易看了次CCTV的新闻报道, 又一次遇到了诡异逻辑.

画面和解说音: 是谁出卖了我们的信息? … 手机里的垃圾信息太多了…太没有安全感了….

主持人评论: … …网络安全, 网络监管…加强….

我评论: 发垃圾短信和网络安全有五毛关系?? 因为有人在网络上叫卖客户信息, 所以我们的网络不安全, 要监管? 那我们是不是可以说有人拿刀砍人, 所以我们要禁止生产刀, 禁止卖刀? 以后是不是大家直接用嘴巴咬就好了? 嘻嘻TV怎么就从来不报道网络曝光了N套房的叔, 曝光了带N个表的叔呢? 就像上次猛在街上问人幸福一样, 整个就一SBTV.

小米的葫芦里究竟卖什么药?

小米的葫芦里究竟卖什么药?

周五据说又是一轮新的购买,不过与以往不同的是,这次号称不是在小米官网卖,换地了。

我猜测应该是在天猫上卖吧?这样有几个好处:

(1)天猫的处理能力比较强,应该不会出现小米官网那种连页面都打不开的情况。

(2)第三方平台的最终销售记录,能让过去的一些怀疑论者都闭嘴。

(3)可能借助天猫的关系,打通物流环节,提高出货量。

明天就知道这葫芦里到底卖什么药了。就个人而言,我非常希望小米能成长起来,毕竟是国内标志性企业。

updated: 谜底揭开了, 原来只是和新浪微博联合搞个噱头, shit.

Xubuntu程序菜单不见了?

Xubuntu程序菜单不见了?

将Xubuntu升级到12.10后,发现一个问题:部分程序的菜单栏不见了。程序功能都正常,就是菜单栏不见了。

原因在于Ubuntu搞了个全局菜单功能,而这个功能显然目前还不完善,尤其对于Xubuntu环境而言,这个功能毫无用处,删除掉之后各项程序就恢复正常了。

使用以下命令卸载该功能:

sudo apt-get remove appmenu-gtk appmenu-gtk3 appmenu-qt
安装Xubuntu与删除Kubuntu

安装Xubuntu与删除Kubuntu

前段时间在移动硬盘上安装了xubuntu系统,一试之下大吃一惊,感觉非常流畅!相比之下,KDE环境确实在速度上差别很大。于是动心想将一台老笔记本上的kubuntu12.04给换掉,安装xubuntu12.04试试。

在网上搜索了一下,安装xubuntu很简单,以下命令即可:

sudo apt-get install xubuntu-desktop

安装过程中,注意选择lightDM即可,因为原有的kdm在后面的步骤中将被删除掉。

删除kubuntu则与网上的说法有些差异,可能网上的资料是基于以前的kubuntu/kde版本,如果是新的kubuntu版本,例如12.04,则建议采用以下步骤或者命令删除:

sudo apt-get autoremove kubuntu-desktop 
sudo apt-get remove kdm
sudo apt-get autoremove kdelibs-bin
mkfifo与select

mkfifo与select

基本上,创建有名管道和平常的文件操作没有太大的差别。在用select对有名管道句柄进行操作时,有些比较奇怪的地方。

例如,我们有两个程序(进程),一个向有名管道写,另一个负责从有名管道读。逻辑很简单,因此我们很自然地在读进程程序中设置read_only,然后用select等待数据。

奇怪的事情发生了,select总是能返回成功,可是read的数据为空。这个问题让我们百思不得其解,结果google后发现,对于只读的有名管道,也需要设置为“读写”模式,否则它对select总是会立刻返回成功。

经过多次测试,对linux下的有名管道,如果采用select判断是否可读,需要设置以下参数:

(1)非阻塞

(2)可读可写

例如以下演示代码:

fd = open(COMMAND_PIPE, O_NONBLOCK | O_RDWR);
... ...
int ret = select(fd+1, &read_set, NULL, NULL, &timeVal);
Kubuntu12.04中apache2配置上的一些变化

Kubuntu12.04中apache2配置上的一些变化

在以前的版本中,如果需要配置HTTPS访问方式, 只需要修改/etc/apache2/sites-available/default-ssl文件即可。

可是在新版本中,如果仅仅是修改这个问题,还是无法以https方式访问apache2. 在apache的error.log中,会出现以下错误提示:

Invalid method in request \x16\x03\x01

需要多做几个配置来解决:

在/etc/apache2/mods-enabled目录下,添加以下链接:

sudo ln -sf /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf
sudo ln -sf /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load

在/etc/apache2/sites-enabled目录下,添加以下链接:

sudo ln -sf /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl

然后重启apache2即可:

sudo service apache2 restart

对比检查Kubuntu10.04以及11.10中的配置,以前的版本中都已经自行创建了上述这些链接,不知道为什么在新版本中没有这么做。

linux系统对比商业操作系统,一个非常大的不足就是兼容性考虑不足,实在是太随意了。兼容性不仅仅是二进制运行程序的兼容性,也包括库,配置,头文件等等。像上面这样的配置上的变化,说大也不大,可是如果是生产环境上的系统进行升级,就不知道有多少这样的“小改动”了。

KB360018

KB360018

360冒充微软给用户安装所谓的微软补丁”KB360018″, 实际上是偷摸着安装了它自己的浏览器软件. 从这个补丁的命名方式推测, 这可能都已经是第18次强奸用户电脑了.

真是狗改不了吃屎! 流氓就是流氓, 再怎么装腔, 还是流氓!

QT程序自动重启

QT程序自动重启

一行代码就可以了:

// restart application
QProcess::startDetached(qApp->applicationFilePath(), QStringList());