QT程序自动重启
一行代码就可以了:
// restart application QProcess::startDetached(qApp->applicationFilePath(), QStringList());
一行代码就可以了:
// restart application QProcess::startDetached(qApp->applicationFilePath(), QStringList());
升级到Kubuntu12.04(英文版本)后,感觉很好,系统各方面都很让人满意。 不过有个意外的情况,所有的纯qt程序,例如kconsole, kate等, 按Ctrl+Space无法调出fcitx中文输入法。
在kate中,Ctrl+Space快捷方式被占用了,因此需要修改掉冲突。在kate主界面, 点击菜单“settings / configure shortcuts”, search “ctrl+space”, 然后将其修改为其他值。
完成上述修改后,还是无法在kate中调出fcitx. 需要配置qtconfig。缺省情况下,居然没有安装该软件。
sudo apt-get install qt4-qtconfig
安装后, 运行qtconfig, 在interface中,设置”default input method”为fcitx。
然后重启kate/konsole等qt程序即可。
让人比较奇怪的是, 以前的kubuntu版本中没有遇到这个问题,不知道为什么在12.04中需要做这样的配置。
在Ubuntu环境中,一般可以采用gEdit来编辑php文件。不过gEdit有个很大的不足:无法显示php函数、类列表,毕竟gEdit只是定位在简单的文本编辑功能上。
我们也可以使用Eclipse+PDT模块,不过Eclipse实在是太重型了,不太讨人喜欢。
后来发现Ubuntu软件中心有一款非常轻型的php编辑工具:gPHPEdit。它的界面、配置、操作都与gEdit非常像,重要的是它支持对PHP文件中的函数和类进行列表,大大方便了开发工作。
安装命令如下:
sudo apt-get install gphpedit php5-cli
gPHPEdit使用php5-cli进行PHP语法检查。如果不想要语法检查功能,可以不安装php5-cli。
当前电脑(XP)的登录用户名是wang,而另一台电脑设置(Ubuntu)的共享目录只允许yxh用户登陆。从当前电脑登陆该电脑时,会被直接拒绝。需要修改为以yxh名义登陆。(当然,也可以注销当前用户,换成yxh登陆当前电脑,不过这样就要中断当前正在进行的工作。)
采用net命令进行设置即可,例如目标电脑名是linuxubuntu:
net use \\linuxubuntu /user:yxh
输入yxh的密码后,就可以在当前电脑直接登陆linuxubuntu这台电脑了。
昨天Commit代码时,网络意外中断。今天再次Commit时,RapidSVN提示出错:
Error: Error while performing action: Working copy ‘… …’ locked.
看这描述的意思,是本地文件在上次操作时进行了锁定,由于没有正常退出解锁,导致后续操作无法再继续。
要解决也很容易,将上次的操作clean掉即可,点击菜单 Extras -> Cleanup,清理完成后,重新Commit即可成功。
传统的通信协议通常采用字节序进行定义,与现代的VOIP协议采用文本方式定义截然相反。采用字节序方式的优点是效率高、节省空间,但是也引入了很多的问题,其中最普遍的就是big endian和little endian的问题。
Big Endian
低地址 高地址
—————————————–>
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 12 | 34 | 56 | 78 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Little Endian
低地址 高地址
—————————————–>
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 78 | 56 | 34 | 12 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#else // little endian
uint8_t csrccount:4;
uint8_t extension:1;
uint8_t padding:1;
uint8_t version:2;
uint8_t payloadtype:7;
uint8_t marker:1;
#endif // RTP_BIG_ENDIAN
uint16_t sequencenumber;
uint32_t timestamp;
uint32_t ssrc;
};
其中,sequencenumber,timestamp,ssrc在发送和接收时,需做字节序转换。C语言中,常用函数为:htons,htonl,ntohl,ntohs。
比较简单,参考下面的示例:
compil32 /cc “c:\isetup\sample32\my script.iss”
Python的面向对象和C++颇有一些差异,主要体现在父类和子类的关系、函数重载、虚函数等方面。基本上可以说,在Python的内心,闪烁着C的光芒。
这样说可能太文绉绉了些,看下面这段代码,就能了解到一些基本的概念了:
通常都是用C/C++来扩展Python应用。而在我们程序中是反过来的,核心是C/C++程序,嵌入Python来提供扩展脚本,满足业务开发的需要。
这种模式下,很难应用现有的一些IDE工具来查错和调试。通常我们总是通过输出打印信息来检查python脚本逻辑是否出错。但是对一些语法错误,由于没有IDE工具辅助,反而不易排查,经常阻碍开发进度。后来发现可以应用traceback模块来迅速定位出错的地方,这可真是个很不错的模块。具体实现如下:
def TraceError(self):
exc_type, exc_value, exc_traceback = sys.exc_info()
exc_list = traceback.format_exception(exc_type, exc_value,exc_traceback)
exc_len = len(exc_list)
index = 0