11/18/2009

破墙发帖

如今在blogger发文比较麻烦,再加有了twitter,想说的就立即发到推特上了,把这里荒废了啊。

今年的天气很不寻常啊,南方破天荒下大雪,北方也提前下雪,诡异的一年。。。

7/23/2009

xfce desktop 起不来

最近升级系统之后桌面没了,发现 xfdesktop 没有起来,于是手动运行,但报以下错误:
xfdesktop[5225]: starting up
process 5225: arguments to dbus_connection_send_with_reply_and_block() were incorrect, assertion "(error) == NULL || !dbus_error_is_set ((error))" failed in file dbus-connection.c line 3301.
This is normally a bug in some application using the D-Bus library.
  D-Bus not built with -rdynamic so unable to print a backtrace

在网上搜了一圈,发现需要添加 /etc/dbus-1/system.d/nasz-user.conf:

<!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
        <policy user="dev">
            <allow send_destination="org.freedesktop.Hal"
                  send_interface="org.freedesktop.Hal.Device"/>
            <allow send_destination="org.freedesktop.Hal"
                  send_interface="org.freedesktop.Hal.Manager"/>
        </policy>
</busconfig>

其中 dev 改为实际用户名,然后重启 dbus
/etc/init.d/dbus restart

再运行 xfdesktop & 即可。

7/22/2009

eclipse

300年一遇的日全食,在北京只能看到日偏食,更人遗憾的是,北京今天是阴天,天空灰蒙蒙的,根本看不见

北京日偏食,初亏:8:25:09;食甚:9:32:10;复圆:10:44:21

7/13/2009

在 Gmail 中添加 Twitter Gadget

Twitter 现在已经被封锁了,但如果之前在 Gmail 有 Twitter Gadget 好像可以继续使用哦 :-),那么如果在 Gmail 中添加 Twitter Gadget呢?

1) 让 Gmail 支持 Gadget。进入Gmail Lab,找到 "Add any gadget by URL" 并将它 Enable;
2) 点击 Gmail 右上角的 "setting",选择 "Gadget";
3) 将 Twitter Gadget address: http://twittergadget.appspot.com/gadget-gmail.xml(SSL https://twittergadget.appspot.com/gadget-gmail.xml) 拷贝到地址栏中;

7/10/2009

唠叨

twitter, fanfou, blogger... 仍然还处于被"墙"的状态,郁闷。

零玖年,从胡说"不折腾"开始就注定了是不平常的一年,我就不一一列出来了,虽然目前网络状况很差,但还有有办法得到这些信息的。

身处这样一个年代,平凡的我只希望周围的朋友们能快乐、健康的生活着,也希望自己通过更加努力地工作,早日有一个家。

唠叨完了,继续干活 ;-)

6/11/2009

To support QPF font

最近比较忙而且blogspot 仍然被封锁中,因此很久没更新了,手头上的任务比较多阿,比如其中一个活儿就是为公司的一款老设备增加QPF 字体的支持,因为使用QPF,能进一步提高UI 的速度并减小占有的资源,现在已经做的差不多了(不然也没空来写这个了:-))。

那么什么是 QPF 呢,全称 Qt Prerendered Font ,是用于QT/Embedded下的不可缩放的字体,对于QPF 字体以相同格式的存储,所以在字体显示时,Qt只要读取字体,做相应分 析,然后显示就完成了,这样进一步减少了对RAM 资源的浪费,另外QPF字体是基于UNICODE 编码的,因此具有良好的可移植性。

我们定义的字体名称格式为:type-family-style-width-height-charset-encoding1[,encoding2,...]
另外QPF 结构的定义为:
typedef struct _QPFMETRICS
{
    char ascent, descent;
    char leftbearing, rightbearing;
    unsigned char maxwidth;
    char leading;
    unsigned char flags;
    unsigned char underlinepos;
    unsigned char underlinewidth;
    unsigned char reserved3;
} QPFMETRICS;

typedef struct
{  
    char font_name [LEN_UNIDEVFONT_NAME + 1];
    unsigned int height;
    unsigned int width;
       
    unsigned int file_size;
    QPFMETRICS* fm;
   
    GLYPHTREE* tree;
} QPFINFO;

对于 QPF 字体就是围绕该结构体进行一系列的操作了。

6/03/2009

What is the nc(netcat)?

今天偶然在我们的产品中看到 nc 这个命令,就试了一下,还挺好用,呵呵~

最简单的,先在机器A 运行 nc -l -p 4444,再在机器B 运行 nc 192.168.8.112 4444,这样 A 和 B
两台机器就建立的连接,可以进行聊天了,功能虽然简单,但由此扩展的功能就比较强大了,比如:

(A) nc -l -p 3333 > backup.tar.bz2

(B) nc 192.168.8.170 3333 < data.tar.bz2

这样就将 B 上的 data.tar.bz2 拷贝到了 A 中。

再举一例:

(A) nc -l -p 4444 | tar xvf -

(B) tar cf - . | nc 192.168.8.112 4444

这样就把 B 上的当前目录下所有文件上传到了 A 中。

参考:

http://netcat.sourceforge.net/
http://en.wikipedia.org/wiki/Netcat

5/13/2009

libpcap cross compile for ARM

最近在做局域网内的 Discovery,目前已经做的差不多了,支持的协议有 ICMP, ARP, NETBIOS 和 SNMP等。Discovery 的功能主要就是扫描局域网内的存在的主机和服务等,也就是发送上述协议的包,然后对返回的包进行分析,其中 ARP 用到了 libpcap库,这里先说一下 libpcap库的交叉编译,我是这么编译的:

CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar LD=arm-none-linux-gnueabi-ld ac_cv_linux_vers=2 ./configure --host=arm-none-linux-gnu --target=arm-none-linux-gnu --with-pcap=linux

make

至于协议的具体实现以后再细说 :-)

4/21/2009

dBm 与 mW 转换

无线电发射机输出的射频信号,通过电缆输送到天线,由天线以电磁波形式辐射出去。电磁波到达接收地点后,由天线接收下来(仅仅接收很小很小一部分功率),并通过电缆送到无线电接收机。因此在无线网络的工程中,计算发射装置的发射功率与天线的辐射能力非常重要。Tx 是发射( Transmits )的简称。无线电波的发射功率是指在给定频段范围内的能量,通常有两种衡量或测量标准:
1、功率( W ): 相对1 瓦( Watt )的线性水准。例如,WiFi 无线网卡的发射功率通常为0.036W ,或者说36mW 。
2、增益( dBm ):相对1 毫瓦( milliwatt )的比例水准。例如WiFi 无线网卡的发射增益为15.56dBm 。

任意功率P(mW) 与xdBm 换算的公式如下:

x = 10*lg(P/(1 mW))

以及

P =(1 mW) 10^(x/10)

例如,1毫瓦(1 mW)换算成dBm 为 0dBm,1瓦(1 Watt)换算成dBm 则为 30dBm。


在“小功率”系统中(例如无线局域网络设备)每个dB 都非常重要,有一个“3 dB 法则“,就是每增加或降低3 dB ,意味着增加一倍或降低一半的功率:

...
36 dBm 4 W
33 dBm 2 W
30 dBm 1 W = 1000 mW
27 dBm 500 mW
...

具体可参考 Wiki:
http://en.wikipedia.org/wiki/DBm

4/16/2009

通过 EMail 更新 Blog?

早听说可以通过 Emai 或者更新 Blog,一直没试过,今天突然想起来了就试试看,以后Blog 更新的方式就多样化了 :)

这贴发完之后就抓紧干活了,今天把 WiFi 的UI 调整一下,然后基本功能再跑一遍,尽量做的兼容一些,另外为以后客户需求的"折腾"留出空间,这应该必然的

继续做 WiFi 项目

其他的事情忙的差不多了,继续完善WiFi项目,上次是在 x86 上调试的,这次搬到了 Unit 上,目前只有 rt73 的 driver 可以用,不过使用同样的 iwlist 命令在Unit 与x86 上的输出不一样哦,可能交叉编译时某些 Option没打开?或者驱动的问题? 先凑合调试着,毕竟我对现在的UI 还不满意,我自己用起来都觉得有点费劲:P ,希望能做的专业一些。

在网上搜了一些资料,比如在Neo FreeRunner 上面的WiFi 软件,主要有 KnjMokoWifi, Lint-wifi 和 Mofi 等,可以参考一下。其他的请参考下面的链接:

Wireless LAN resources for Linux
http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/

Neo FreeRunner WiFi
http://wiki.openmoko.org/wiki/Neo_FreeRunner_Wifi

3/23/2009

公司搬家

今天是在新的办公室上班,在12层,靠着窗户,比原来好多了,可以呼吸到新鲜空气了,不过窗户打开的话,会比较吵,因为楼下不远处就是一个十字路口,不过还是满意了。
这个月马上就要过去了,太快了,这月基本是在加班中度过的,每天加的都很晚,还有几次通宵,周末也没怎么休息:( 希望早日见到曙光,更希望我们的新产品能大卖,呵呵,这样才不辜负我们的辛勤劳动。
不说了,要继续干活了。。。

3/03/2009

vi 替换操作

最近遇到这样的问题,首先编译出现很多未定义的字符串的错误,于是想到,我可以把这些编译出现的错误重定向到一个文件中,然后把其中的字符串过滤出来,统一定义一下就行了,操作如下:

1) 交叉编译 app 工程,错误输出到 /tmp/k 文件中
make T=arm app > /tmp/k 2>&1

2) vi 打开该文件,用 substitute 替换以 ’ 字符开头到字符串结尾的串
:%s/\’ .\+$//g

3) 剔除重复行
sort -u /tmp/k > /tmp/good

疑问:
使用 sort -u 可以满足我的要求,但是它剔重后的结果已经重新排序了,有时候可能保持原来的顺序,怎么办呢?

2/18/2009

TL-WN322G+

向公司又借了个TP-LINK 的TL-WN321G 无线网卡,以为插到我的PC上就可以使用,却发现没想象的那么简单,首先执行 lsusb:

Bus 003 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0001
Bus 005 Device 003: ID 0ace:1215 ZyDAS WLA-54L WiFi
Bus 005 Device 001: ID 1d6b:0002
Bus 004 Device 001: ID 1d6b:0001
Bus 001 Device 002: ID 04b3:310c IBM Corp.
Bus 001 Device 001: ID 1d6b:0001

原来用了不一样的芯片,看来要重新编译内核了,重新配置内核,选上 ZyDAS ZD1211/ZD1211B USB-wireless support 即可,编译安装之后,还需要安装 zd1211-firmware,如果是 Gentoo 系统的话 emerge d1211-firmware 即可,然后 modprobe zd1211rw,但发现还有问题,报错:RF MAXIM_NEW_RF 0x8 is not supported,搜索一圈,应该是 zd1211 驱动的 BUG 吧,临时解决办法可以打上下面的 patch:

--- linux/drivers/net/wireless/zd1211rw/zd_rf.c 2009-02-18 13:38:12.000000000 +0000
+++ linux-mod/drivers/net/wireless/zd1211rw/zd_rf.c 2009-02-18 13:38:01.000000000 +0000
@@ -87,6 +87,7 @@
r = zd_rf_init_al7230b(rf);
break;
case UW2453_RF:
+ case MAXIM_NEW_RF:
r = zd_rf_init_uw2453(rf);
break;
default:

2/12/2009

Google 怎么了

这两天 Google 怎么了?! Blogger, Groups 要么登录不了,要么就是显示如下的错误:

"
内容编码错误

无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。
"

Update 2009-2-13: Blogger 基本正常,除了页面上方显示有问题外,另外 Groups 也可以登录了,但是打开任意一个主题的时候出错

Update 2009-2-16: 我在家没遇到过,难道是我机器上 Firefox 出问题了?

2/11/2009

关于无线局域网(WiFi)

公司的设备上将来要加 WiFi 的功能,这方面的任务交给我来折腾了。
先来熟悉一下 WiFi,但我的台式机没有无线网卡阿,这个好办,有"无线USB网卡"(Wireless USB Adapter),我们公司有一个 TP-LINK TL-WN321G,插在我的电脑上面,执行: lsusb

Bus 005 Device 003: ID 148f:2573 Ralink Technology, Corp.
Bus 005 Device 001: ID 1d6b:0002
Bus 004 Device 001: ID 1d6b:0001
Bus 003 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0001
Bus 001 Device 002: ID 04b3:310c IBM Corp.
Bus 001 Device 001: ID 1d6b:0001

第一个就是它了,是 Ralink 芯片哦,于是再搜索一下就知道型号应该是 rt73 / rt2571。

接下来就要重新编译内核了,在 Networking support 中选上与 Wireless 相关的,另外选上 rt73usb 相关的,路径如下:

Device Drivers --->
Network device support --->
Wireless LAN --->
Ralink driver support --->
Ralink rt2501/rt73 (USB) support

然后使用以上编译的内核,重启机器,再次插上这个 TP-LINK 的 Wireless USB Adapter,运行 dmesg 看一下有无报错

下面安装 wireless-tools 试试看能不能连上,安装过程就不说了,安装之后运行:

~#iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

wmaster0 no wireless extensions.

wlan0 IEEE 802.11bg ESSID:""
Mode:Managed Frequency:2.437 GHz Access Point: Not-Associated
Tx-Power=24 dBm
Retry min limit:7 RTS thr:off Fragment thr=2352 B
Encryption key:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

很明显没有找到合适的AP,于是手动搜搜看:

~#iwlist wlan0 scan
wlan0 Scan completed :
Cell 01 - Address: 00:1C:F0:AB:29:46
ESSID:"dlink"
Mode:Master
Channel:6
Frequency:2.437 GHz (Channel 6)
Quality=66/100 Signal level:-82 dBm
Encryption key:off
IE: Unknown: 0005646C696E6B
IE: Unknown: 010882848B960C121824
IE: Unknown: 030106
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:tsf=00000017aac553a9
Extra: Last beacon: 3080ms ago


下面就可以手动连上这个AP了:

/sbin/iwconfig wlan0 mode managed channel 6 key off essid dlink
/sbin/iwconfig wlan0 ap 00:1C:F0:AB:29:46
dhcpcd -nd wlan0


Good Luck!

PS:中午和同事一起到旁边的书店买了本《IEEE 802.11 无线局域网》,要抽时间好好看看了。

1/12/2009

解决 Pidgin 登录失败的问题(Unable to retrieve MSN Address Book)

今天通过 Pidgin 登录 MSN 死活上不去,一直报错:Unable to retrieve MSN Address Book,以为升级 Pidgin 为最新版本就可以了,于是将 Pidgin 更新到 2.5.3,再次登录时发现问题依旧,于是在网上搜索之后才知道是一个BUG(http://developer.pidgin.im/ticket/8080),很多人反映这一问题了,暂时可以通过如下方法解决:

1)安装 msn-pecan 插件, emerge -av pidgin-msn-pecan

2)重新启动 Pidgin,然后在 Login Options 中将 Protocol 改为 WLM 即可

1/08/2009

要搬家了

马上要过年了,现在很多房子的房租都降了一些,目前我住的房租太贵了,单间1200元,因此打算在年前搬家,房子一堆杂七杂八的东西,正好趁这个机会收拾一下。从今天晚上开始关注租房的信息,希望能找到满意的房子阿。