2
Feb

我的2011-持续积累



我的2011-持续积累,在年初的时候就想给自己这一年的发展提出一个主题,在继续前年学习敏捷开发、持续集成之后,我想到了持续积累,所以给2011年的主题定为了:辛卯之年,持续积累.
过完年了也想梳理一下2011我到底是怎么过的。也想数数这一年我到底积累了什么,对我今后的生活和工作有什么启示,我今后的路该如何走,走什么样的方向。人生总需要这样,不断的去回头看看,看看是否因为走的太远了而偏离了原来那简单的方向。
2011,怎么说呢,总的来说还是不错的,首先在人生里程上我完成了人生的大事;其次在自己的技术和思想的锤炼上也感觉有了很多提示,再次在公司干的也还不错,得到了同事和lead的信任和认可。
2011的一月份在网友Tony Bailcut的基础上整理完善了一下c单元测试框架,主要修改正了原来框架中的一些bug,增加了测试判断种类,规范了测试结果的输出方式,在测试的种类上还可以扩展。
2011的2月份去了大浦,小丁同学了老家,看望了她家里人,也好好第一次在异地过了一次春节。感受了广东人过春节的浓重气氛,不过我去也就是吃吃喝喝的。
2011的5月份,和小丁同学请了一个小假期,回了我的甘肃老家,也想着儿子在奔三之前要带个女娃给老爹老爸爷爷奶奶看看。就这么着把女娃算是忽悠回去了。给自己的人生来了一个定格。
也是2011的5月份第一次踏出了国土,去了异国它乡,体验了一把异国风光和异国风情。体验了这些异国情调和人俗,我的想法有了些变化,说不清道不明,让它慢慢梳理。
同样2011的5月份,我在工作上开始了新的分支,开始做联盟相关的开发工作,这也是我11年工作的重点,11年我在这个方向上学习颇多,开拓了原先对互联网开发的认识,对于互联网的认知也更深了一层,但感觉还待继续好好深入学习和认知。
2011的6月份,出差到北京跟公司内部的牛人们学习,收获颇多,在php上见识了牛人的编码和系统设计。
2011的8月份,终于完成了自己一直以来想做的linux下的音乐播放器xdmusic,在“完美之道,不在无可增加,而在无可删减”这样的思想下开发完成,简单,简洁对我来说很实用。在用我的本本的时候,我就用我的这个音乐播放器欣赏音乐。
2011的9月,我和小丁同学订婚了。一切都像在看电影过画似的,时间就在我们的指尖一点点流失。时间就像一只受惊狂奔的野驴,不顾你死活的拖拽着你向前奔。
2011的10月,和小丁一家去了大浦,在那里见识了这边人对十一的重视,见识了客家人好客之情,也见识了真实的南国乡村生活。
2011的11月,借着公司嘉年华活动的集体婚礼和亲戚朋友们的祝福,和小丁同学算是在正式的结婚了。就这样步入了围城。老师给我发邮件说:守住围城,

轻装上路,不问收获,不求回报,不去回报,轻快的往前走就是。感谢我的老师–为师为母。
2011的12月,匆匆忙忙就到了一年该盘点数数自己的时候了,这一年感觉自己还是走的快了一点。在年末的时候还是在老大那里争取了近一个月的假期回家过年,呵呵,还是比较美的。
总的来看,2011年,在工作和学习上有这样的一些经历:
创建开源项目两个(xcutxdmusic),继续维护支持了以前写的linux串口控制终端(xgcom),xgcom主要接收了网友提供的两个功能增强性补丁。xhttpd这个项目一直想重构一下服务器程序,以提升服务器性能。目前也在缓慢进行中,12年应该可以抽时间重构完毕。2012会继续支持这些软件的开发,而且也想在程序质量管理检测和软件工程管理上做一些探索学习开发。
我读过的书14本(豆瓣统计)(技术类书籍7本,小说3本,哲学和佛学书籍4本),基本上算是每个月一本,感觉还是需要抽多一点时间来多看看书。
博文写了16篇,这个数量还是太少了,尤其对内核学习的少了很多,也说明我在内核学习上的时间有点不够了,12年要多下点功夫,而且12计划应该要至少多一倍。写blog有助自己对知识的记录,整理和消化,更也可能对其他人有所帮助,同时也需要更进一步提升博文的质量。
2012继续加油。。。持续积累。


16
Dec

svn 提交出现Password for ‘(null)’ GNOME keyring: 错误



新安装了系统之后一直没有给gcode提交过代码了,前天收到一位网友xgcom的patch,我整理了一下,想提交,不想出了这样的问题:在svn commit 之后出现了以下的信息:

Password for ‘(null)’ GNOME keyring:

以前提交都会提示输入我用户名的密码,这次却提示输出null的gnome keyring,在网上搜索看了之后发现是svn和gnome的一个key冲突了,只要删除就可以了:

rm ~/.gnome2/keyrings/login.keyring

这里写下来记录一下。



13
Dec

Linux 让你的软件支持多国语言



1. 开头

Xgcom一直想做成多国语言的支持,但是之前没有仔细研究怎么做,今天有时间,就研究了一下,感觉也挺简单的,这里先做一个测试demo出来,也刚好记录一下。

如下的程序:xtest.c

#include <stdio.h>

int main(int argc, char* argv[])

{

printf(_(”Hello, GetText!\n”));

return 0;

}

对这个做一个中文的,默认是英文,在没识别出你当前的语言环境或者没有这种语言支持的时候以英文显示。

2. 首先把代码修改如下:xtest.c

#include <stdio.h>

#include <locale.h>

#include <libintl.h>

#define _(string) gettext (string)

#define LOCALEDIR ”./locale/”  //这是语言包的引用路径

#define PACKAGE ”xtest” //包名称,以这个名称去找语言包

int main(int argc, char* argv[])

{

setlocale (LC_ALL, ”");

bindtextdomain (PACKAGE, LOCALEDIR);

textdomain (PACKAGE);

printf(_(”Hello, GetText!\n”));

return 0;

}

3. 制作文本po文件:xtest.po

制作命令:xgettext -a xtest.c -o xtest.po

一般生成的xtest.po会不是很符合我们的需求,要修改或是删除一些不需要的内容。

比如这里修改了一下几个方面:

1.删除不需要替换的msgidmsgstr

2.修改了文件的编码类型为UTF-8

3.默认生成的msgstr是没有内容,这里需要添加,我这里添加的是“你好,GetText!\n

修改后的xtest.po内容如下:xtest.po

# SOME DESCRIPTIVE TITLE.

# Copyright (C) YEAR THE PACKAGE’S COPYRIGHT HOLDER

# This file is distributed under the same license as the PACKAGE package.

# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.

#

#, fuzzy

msgid ”"

msgstr ”"

“Project-Id-Version: PACKAGE VERSION\n”

“Report-Msgid-Bugs-To: \n”

“POT-Creation-Date: 2011-12-14 14:26+0800\n”

“PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n”

“Last-Translator: FULL NAME <EMAIL@ADDRESS>\n”

“Language-Team: LANGUAGE <LL@li.org>\n”

“MIME-Version: 1.0\n”

“Content-Type: text/plain; charset=UTF-8\n”

“Content-Transfer-Encoding: 8bit\n”

#: xtest.c:14

#, c-format

msgid ”Hello, GetText!\n”

msgstr ”你好,GetText!\n

4. 制作mo文件

首先要保证刚才的xtest.po文件的编码是utf-8的,是和xtest.po中所注明的编码格式是一致的。否则在生成xtest.mo的时候会报错。

制作命令:msgfmt xtest.po -o xtest.mo

mo文件是二进制文件,无法用文本编辑器查看。

5. 建立语言包目录并存放语言包

在程序当前目录下再建立这样的目录:

mkdir ./locale/zh_CN/LC_MESSAGES/

用来保存mo文件,把刚才生成的xtest.mo文件拷贝到这个目录

6. 编译程序测试查看

编译程序命令:gcc xtest.c -o xtest

查看当前的语言环境:locale

1) 运行结果1

helightxu@zhwen:/helightxu/testcode/xtextgen> locale

LANG=en_US.UTF-8

LC_CTYPE=”en_US.UTF-8″

LC_NUMERIC=”en_US.UTF-8″

LC_TIME=”en_US.UTF-8″

LC_COLLATE=”en_US.UTF-8″

LC_MONETARY=”en_US.UTF-8″

LC_MESSAGES=”en_US.UTF-8″

LC_PAPER=”en_US.UTF-8″

LC_NAME=”en_US.UTF-8″

LC_ADDRESS=”en_US.UTF-8″

LC_TELEPHONE=”en_US.UTF-8″

LC_MEASUREMENT=”en_US.UTF-8″

LC_IDENTIFICATION=”en_US.UTF-8″

LC_ALL=

helightxu@zhwen:/helightxu/testcode/xtextgen> ./xtest

Hello, GetText!

2) 运行结果2

helightxu@zhwen:/helightxu/testcode/xtextgen> export LANG=zh_CN

helightxu@zhwen:/helightxu/testcode/xtextgen> locale

LANG=zh_CN

LC_CTYPE=”zh_CN”

LC_NUMERIC=”zh_CN”

LC_TIME=”zh_CN”

LC_COLLATE=”zh_CN”

LC_MONETARY=”zh_CN”

LC_MESSAGES=”zh_CN”

LC_PAPER=”zh_CN”

LC_NAME=”zh_CN”

LC_ADDRESS=”zh_CN”

LC_TELEPHONE=”zh_CN”

LC_MEASUREMENT=”zh_CN”

LC_IDENTIFICATION=”zh_CN”

LC_ALL=

helightxu@zhwen:/helightxu/testcode/xtextgen> ./xtest

你好,GetText!

7. 话尾

总的来看用xgettext msgfmt可以做出支持多国语言的程序,在操作上和后期更新上还是比较方便的。

但是这里介绍的只是一个简单的demo,要真正使用起来还需要配置其它的脚本,如:如何控制根据当前的语言环境安装所需要的语言包等。后面还需要再好好探索学习一下啊。



3
Dec

gnome3下ibus设置



在gnome3下安装了ibus-pinyin后,安装方式如下:

apt-get install ibus ibus-pinyin

并且在~/.bashrc文件中加入了以下内容。

export GTK_IM_MODULE=ibus

export XMODIFIERS=@im=ibus

export QT_IM_MODULE=ibus

发现一个很奇怪的问题,进入gnome3后可以看到ibus启动了,也添加了拼音输入法,鼠标点击ibus图标也可以看到拼音输入法的图标,但是无论你使用快捷键还是鼠标点击切换,它就是没法切换到拼音输入法,在网上看了好久,终于在一些资料中看到ibus-gtk3,才想到可能事这个东西没有安装,再安装了ibus-gtk3.然后重启机器,进入非常慢,但是进入之后发现输入法可以使用了,可以自由的切换了。

最近使用gnome3感觉还可以吧,使用起来有些不是很方便,估计事没有习惯使用,以后习惯了也许会好一点。



24
Nov

上一张我的gnome3的截屏





24
Nov

debian testing+gnome3+ibus+kernel3.08



debian的6.0出来之后,一直就心很痒,又加之之前刚刚从同事那里买了个笔记本,所以老婆把她的本就给我用了,虽然配置是有点底,但是安装debian我想肯定没有问题的,在g+上看到debian的testing中已经加入了gnome3了,所以更想试试了,但是没有想到道路事这么的曲折,我这两周花了好多时间,终于在今晚搞定了。

首先是下载了debian的testing版cd,在虚拟机中测试安装,结果发现testing的cd安装到最后grub没有办法安装完成,无奈只好用稳定版的cd,稳定版的cd安装没有问题,但是稳定版的cd在我刻录成光盘之后却无法从我这个较老的本本上启动,无奈只好,用之前的光盘安装分区,让后使用硬盘安装的方式终于安装好了,稳定版使用起来肯定事没有问题啦,但是我还想使用gnome3,所以在又把源修改为wheezy,让后作了distupgrade,编译了新的kernel3.0.8的内核。

但是问题总是一个又一个,在安装了gnome3之后发现新内核会出现花屏,系统更本没办法使用。而好在一个系统自带的32的内核还可以使用,想应该是软件和驱动不兼容,在32的内核上使用,但也只能使用gnome3的standard模式,这个模式和gonme2差不多,但是更简单,无法体验gnome3的实际效果。之后在网上看到有人说卸载了xserver-xorg-video-all这个所有的组件再从新安装有可能会修复这个问题,我又这样做了一次,先卸载xserver-xorg-video-*的东西,让后autoremove所有不需要的东东,再从新安装xserver-xorg-video-ati,因为我的显卡事ati的显卡,让后安装了firmware-linux相关的固件,从新制作了内核文件系统,重启电脑,心内核,新界面,gnome3居然可以使用了,万分高兴阿。

输入法之前一直使用scim,这次想体验以下ibus,看网上资料说这个输入法已经比较成熟了,再安装了之后,终于都可以了,这就是我定制的自己的debian系统,自己编译的新内核+gnome3+ibus输入法+firefox,哈哈不错不错。

一切还在体验中。。。



27
Oct

debian下触摸板使用



之前在本本上安装了debian,但是发现触摸板的点击功能就是用不了,以为是驱动问题,加之有鼠标,而且回家用本本来写程序的时间也是很少,因为小丁同学要学习,老占用电脑,所以就没有管这个所谓的问题了,但是总是感觉不方便。

今天从公司同事那里又买了一个本本,配置比原来的本本要高,所以就给她专门使用了,我也专用了这个本,而且现在家里就一个鼠标,当然只能小丁同学用,所以有折腾了一下,突然发现是我设置的问题,简单的只要在系统鼠标配置的面板上够选一下就可以了。。。。

下面附上鼠标控制面板图:



2
Sep

自娱自乐写的linux下音乐播放器



前一段时间周末在家没事做,突然之间就想写一个之前一直想写但是也是一直没有写的小程序--写一个自己的音乐播放器,现在终于写好了,可以使用,有基本的音乐播放功能,隐藏和tray按钮控制播放等等。小巧,程序了不多,够我自己平时在家里听音乐使用了。。。。下面是截图。

源代码在这里:http://code.google.com/p/xdmusic/



11
Aug

内核又拒绝挂载fat32的磁盘了,报codepage cp437 not found



前几天从新编译了内核,是应为升级了内核后vbox不能用了,所以又从新编译了内核,并且安装编译了vbox的内核模块,但是也出了问题,在每次shutdown的时候机器总是无法断点,磁盘灯不再亮,说明磁盘也不写了,只是一个锁灯在不断的闪,看了messages总的日志看到这样两句:
bonobo-activation-server (xding-3053): could not associate with desktop session: Failed to connect to socket /tmp/dbus-OWuBY31JHu: Connection refused
cfg80211: Calling CRDA for country: US
在网上看,说有可能是这bonobo高的鬼,才想起内核升级了,但是gnome的这个东西没有升级,从新安装了这个bonobo后,关机终于正常了,不过在配置内核的时候手闲的没事又把几个多余的内核编码支持取消了,编译安装试用没有问题,但是今天才发现,fat的盘没法加载使用了,郁闷阿,看日志又看到这样两行:
FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
FAT: codepage cp437 not found
可谓不顺阿,又得要编译内核了,想编译个为自己定制的内核还真不容易阿。
这个编码支持是在文件系统-》网络文件系统-》的nls中,又多选择了cp437,先编译看看吧。这下应该是没有问题了。



12
Jul

一个json数据格式导致的杯具



今天业务组的同事反馈系统数据入库失败,而且耗时耗力。。。老大说谁上,我主动请缨了。

查查查。。。从操作追到代码(这些代码不是我写的哇),最后日志发现了,是数据请求回来的地方出了问题,呃,会不是是请求的服务挂了呢,再日志了请求结果,发现,没有问题,最后发现问题处在了json_decode()这里,数据经过这家伙处理之后,竟然没有了,难道数据黑洞?

把几百行的数据拉出来单独分析,但是普通的人工分析几百行数据,那这个程序员一定是个白痴。ice老大看了看告诉我一个方法,json的数据,保存成网页文件的js段中,用一般的编辑器打开,json的格式问题立马就可以出来。我用notepad++打开一看,果不其然,黑白彩色的一看就发现了问题是在一个字段中多了双引号,导致了json_decode成了数据黑洞。