Ant-Veil

Caspar Blog

如何创建 Qt 工程

| Comments

刚才打了一大段字,不小心给其他页面覆盖了……看来 WP 的自动保存功能还是得开启……

最近有心学一下 GUI 编程,在 GTK, wxWidgets 和 QT 之间选择,最后因为 QT Designer 和喜欢 C++的缘故选择了 QT。当然 QT4 Designer 也不是那么傻瓜化的东西,有很多步骤都需要自己来完成。经过一番 Google 上的学习之后,我总算完成了一个简单的 QT 工程的创建,因此以这个工程为例,记录一下创建过程,以供参考。

项目名称:POS
主程序名:main.cpp
主窗口及 SIGNAL/SLOT 处理:POSMainWindow[.h, .cpp]
界面文件:ui_POSMainWindow.h, POSMainWindow.ui Meta Object Compiler文件:moc_POSMainWindow[.h, .cpp]

1. 新建界面配置文件(POSMainWindow.ui)

几个日常技巧——我的滥竽充数

| Comments

因为我在 KDE 下不想装那个 GNOME 依赖关系超多的 tomboy,所以暂时把这些非常过时的日常技巧发上来,众人不要怪我凑日志数哦~

1. MySQL 授权用户:

GRANT ALL PRIVILEGES
ON `DATABASE`.`TABLE`
TO 'USER'@'DOMAIN'
IDENTIFIED BY 'PASSWORD'
WITH GRANT OPTION ;

Mysql 改密码:

mysqladmin -u root -p password 'NEW_PASSWORD'

2. 批量修改文本文件的编码:find . -iname '*.*' -execdir iconv -f GB18030 -t UTF-8 -o {} {} \;

批量缩小图片到 50%: for i in *; do convert $i -resize 50%x50% sm-$i; done

3. HTML 中使用脚本实现网页跳转:< script>window.location="http://url/to/be/redirected"< /script>

4. VIM 中把 TAB 批量转为空格 :retab

VIM 中使用 F3 键关闭粘贴时的缩进:set pastetoggle=< F3>

VIM 中删除含特定字符串的行:g/str/d

Gentoo 新老问题 (Milestone 2)

| Comments

昨天晚上已经用上 2.6.29 的内核了,而且也解决了部分上次提到的问题,写出来,权当折腾 Gentoo 之 Milestone2 吧。

1. Amarok 安装成功:

今天更新了 overlay,发现 svn 版的 amarok 已经把 qtscriptgenerator 给单独分出来做成一个包了,顿时感觉有戏,赶紧 emerge 一把,结果还是出错,不过错误提示和以前不太一样:

/usr/lib/mysql/libmysqld.a(sql_parse.o): In function `mysql_parse(THD*, char const*, unsigned int, char const**)':
(.text+0xaadb): undefined reference to `clock_gettime'
/usr/lib/mysql/libmysqld.a(sql_parse.o): In function `mysql_parse(THD*, char const*, unsigned int, char const**)':
(.text+0xabcc): undefined reference to `clock_gettime'
/usr/lib/mysql/libmysqld.a(sql_prepare.o): In function `mysql_stmt_reset(THD*, char*)':
(.text+0x1dad): undefined reference to `clock_gettime'
/usr/lib/mysql/libmysqld.a(sql_prepare.o): In function `mysql_stmt_reset(THD*, char*)':
(.text+0x1ef6): undefined reference to `clock_gettime'
/usr/lib/mysql/libmysqld.a(sql_prepare.o): In function `mysql_stmt_fetch(THD*, char*, unsigned int)':
(.text+0x20e8): undefined reference to `clock_gettime'
/usr/lib/mysql/libmysqld.a(sql_prepare.o):(.text+0x2273): more undefined references to `clock_gettime' follow
/usr/lib/gcc/i686-pc-linux-gnu/4.3.3/../../../../i686-pc-linux-gnu/bin/ld: warning: creating a DT_TEXTREL in object.
collect2: ld returned 1 exit status
make[2]: *** [lib/libamarok_collection-sqlcollection.so] Error 1
make[1]: *** [src/collection/sqlcollection/CMakeFiles/amarok_collection-sqlcollection.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

折腾 Gentoo (Milestone 1)

| Comments

上次在日志中提到一下当 Ubuntu9.04 正式版出来的时候,我就换 Gentoo,结果自己还是在 Ubuntu Aplha6 出来之前就开始了 Gentoo 折腾之旅。

前一次折腾 Gentoo 还是在暑假,因为挂载和其他一堆莫名其妙的问题导致我直接放弃了 Gentoo。这次是在心理准备充足的情况下开始的,没想到还是很折腾。

桌面管理器从 GNOME 换到 Openbox,然后转成 KDE4,顺便还试用了一下 enlightenment,发现这种轻量级桌面对我来说不是很适应,就没再继续下去了。

感谢 Gentoo 的文档和各种 bugzilla,我解决了大部分问题。

比方说无线的问题,经常出现 SCIOFLAGS: No such device,上网找了半天发现要把/etc/init.d/net.wlan0 给删掉。因为现在网络接口已经移交 wicd 管理了。具体原因尚未知。

当然也碰到了一些莫名其妙的问题,其中大部分是和内核选项有关。

比如声卡,音箱和耳机会同时出声。后来我把和我的声卡沾边的选项统统勾上,重新编译模块,就 OK 了。还有 ext4 分区的问题,系统始终不认 ext4 分区,在水木求助了两天都没解决,后来自己重新编译一次内核,居然就 OK 了。

再次测试 Translate 插件

| Comments

测试发文章……

———————————— 分割线 ————————————

发文成功。我基本上知道是什么原因了。

记得第一次发现不能发文是在那次 Google 很多服务都不能用的时候。当时正打算发个文章上来抱怨一把 google code 不能用了,google calendar 不能用了,google group 不能用了,google translate 不能用了,还打算感叹一下 Google 对我们生活的巨大影响。结果一个文章发了老半天发不出去,只是存到草稿箱里去了。而且里面的内容全没了。

以为是空间商的问题,不过后来还是没去怀疑空间商;后来觉得是自己的 wp 的问题,但是期间我没有改过 wp 的文件啊。

只好郁闷地搁置了两个星期。

现在知道问题在哪了。是因为WP-slug translate这个插件。这个插件会把日志的标题通过 Google Tranlate 翻译成永久链接。

然后这几天 Google Translate 经常 down 掉,所以由于某些原因,我的日志就发布失败了。

sigh...

顺便说一句,KDE4.2.1 真的很不错,KWin 真的很棒~

原来在 CentOS 中配置 VNCServer 很容易

| Comments

发现该学点脚本了,有空可以在服务器上折腾折腾。不过在此之前我还是先得把实验室这台服务器配置好。

服务器是 CentOS5.2,准备开启 VNC 服务。想起当年在 Ubuntu 下配置费了九牛二虎之力,估计着在 CentOS 上也不会容易。

没想到如此简单:

服务器在安装时已经装好了 VNCServer,接下去只要编辑/etc/sysconfig/vncservers文件中的VNCSERVERS字段(确保取消了这行的注释):

VNCSERVERS="1:root 2:user1 3:user2 4:blablabla"

如果只要为单个用户开启 VNC 服务,只需按照 PORT:USERNAME 的格式修改,如果为多个用户开启 VNC 服务,则用空格隔开即可。

如果需要修改分辨率,设置是否允许通过 TCP 登录、是否允许通过 Web 登录以及是否允许不安全 TCP tunel 登录,则修改VNCSERVERARGS[2]字段:

[白鼠六] Ubuntu Jaunty Aplha 5 试用

| Comments

又当了一回小白鼠。在写使用感受前,请允许我废话一句:等 Ubuntu 这个版本过时后,我肯定换 Gentoo!实在受不了这种系统频繁升级和软件版本滞后的折磨了。

从 8.10 升级到 9.04 的原因主要是 8.10 不是很好用,在虚拟机上折腾了几天 Jaunty,感觉还是很不错的,于是升级了。

结果升级完感觉没太大变化……打开 Google Earth 看地图,还是卡得不成样子(不过起码是可以看了,在 8.10 里面是看都看不了)。不是说这个版本的 Ubuntu 上 Intel 用了新驱动了么,还有 Xorg 也升级了呀。难道是我的显卡确实太挫了?

Jaunty 系统装了 3 个 Python 版本,2.5, 2.6, 3.0,默认是 2.6。于是很多原先安装的 Python 程序都要重新安装,比如 Django, Grnotify(值得一提的是 Grnotify 进入 Ubuntu 更新源了,可是依赖的 python-xml 需要 Python2.5 版本,死活装不上,后来用了 Grnotify 源码包才装上的)。

另外一个比较郁闷的是 checkgmail 不能正常工作了,提示 connection failed,后面就是一堆乱码- -b 这个问题谁碰到过,亟待解决啊~

VIM 里的 Twitter: TwitVIM

| Comments

上网的时候发现了这个有意思的 VIM 插件,进 VIM 网站的插件页面后更加惊喜地发现作者还在更新这个插件(最近一次更新是 2009 年 2 月 4 日)。由于 Linux 下图形界面的 Twitter 客户端都不甚让我满意,看了看 TwitVIM 这个插件的介绍,决定下下来玩玩。

点击这里下载插件。

安装步骤很简单,作者打了一个.vba 格式的 Vimball 压缩包,只需要打开这个 vba 文件,并执行一次 source 导入就可以了。

vim twitvim.vba
:source %

插件会自动安装到~/.vim 下。

接下来需要在 vim 配置文件(比如~/.vimrc)里配置用户名,密码,如果是通过代理上网还需要配置代理。

KDE-3 界面字体设置

| Comments

升级到 Ubuntu 8.10 之后,发现 amarok, kile 这些程序的英文字体特别大,用 Qt3 configuration 改字体只能把正文的字体改变,菜单栏、状态栏的字体都变不了。

上网搜了一下发现 kcontrol 这个 kde 的工具可以调整菜单栏字体。但是 Ubuntu 8.10 吧 kcontrol 这个包给去掉了,所以不能轻易设置字体了。继续上网搜,发现可以直接改~/.kde/share/config/kdeglobals这个文件。

在文件中的[General]段添加下列几行:

fixed=WenQuanYi Zen Hei,9,-1,5,50,0,0,0,0,0
font=WenQuanYi Zen Hei,9,-1,5,50,0,0,0,0,0
menuFont=WenQuanYi Zen Hei,9,-1,5,50,0,0,0,0,0
taskbarFont=WenQuanYi Zen Hei,9,5,50,0,0,0,0,0
toolBarFont=WenQuanYi Zen Hei,9,-1,5,50,0,0,0,0,0

这几行的大部分内容大家都看得懂,就不解释了。后面的我也不管是什么意思了……

把你的手机和 Gmail 同步起来!

| Comments

很早以前,在想要是 Gmail 里的列表能和我手机上的联系人同步那该有多好。现在这个想法终于实现了,Google 推出的Google Sync服务,让你的手机联系人轻松与 Gmail 联系人同步。

Google 总是能推出让人兴奋的产品,前几天的Latitude也是这样的产品,不过好多好友就是不确认我的请求,我的 Latitude 上现在还没几个人的信息。不过 Sync 这个产品绝对是值得每个拥有智能手机的人一试的好东西。

我的手机是 N81,按照 Google Sync 页面上的提示,很顺利就完成了同步。不过有点郁闷的是,以前对同一个人在手机上和在 Gmail 里用了不同名称,同步后就出现了两个联系方式,不过这是没办法的事情。对于名字相同的人,会把资料给合并。

另外有个不太好的地方是,由于手机和 Gmail 在栏位处理上的不同,同步后资料会有所偏差。比如我在 Gmail 上对一个人记录了 5 个电子邮件(1 个 home,1 个 work,3 个 other),同步到手机上后,只有栏位不同的三个电子邮件同步到了手机上,其中 Gmail 上 3 个 other 电子邮件中只有最后一个同步到了手机上。估计应该是同步的时候手机对栏位进行判断然后对号入座,对于同栏位不同号码的信息,它不会另外设置一个重复的栏位(事实上我的手机可以设置重复栏位,比如多个“电子邮件(家庭)”),而是在同栏位上进行覆盖。问题也可能出在 Google 那边,获取资料的时候自动覆盖相同栏位也是完全可能的。所以在这里提醒使用 Gmail 记通讯录的童鞋,注意一下 mobile 和 E-mail 的不同类型,防止同步到手机上后丢失重要信息。

使用 Google Sync 的最直接好处就是,丢了手机之后不用再担心通讯录遗失了-_-||。备份方便,同步简单,比 nokia 自带的同步工具还方便,只要有网络,一键同步就搞定了。