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 调整一下,然后基本功能再跑一遍,尽量做的兼容一些,另外为以后客户需求的"折腾"留出空间,这应该必然的