Archive for December, 2006

家乡的天空
Sunday, December 31st, 2006

暑假拍的,云很白,天很蓝。


北京这几天下雪,脏得都捏不起来,还是农村环境好点。共有十几张照片,都很清新,白云、蓝天,未经软件处理,请到这里看。

IT民工保重身体
Saturday, December 30th, 2006

大四保完研得了气胸,休息了一段时间。

今天惊闻小强也得了气胸,而且还比我严重,插了管子抽气。想起大一宿舍两人连续得尿路结石了,这病还真巧。

IT民工许多也是贫农出身,需要靠自己拼命打江山,不过努力的时候也别忘了身体是本钱。等有了钱的时候,你还得有那个身体去享受是不是。

医生都说气胸容易复发了,最近熬夜又多了起来,不行,得悔改。要说穷人一定要以身体为代价才能换来成功,那是不对的,许多时候身体的代价花在没有意义甚至有害的事情上去了。

兄弟们都保重。

第一次用Beamer做slide
Saturday, December 30th, 2006

选了个WSN(首先澄清一下是无线传感器网络:smile:)课,最后让读一篇论文,写个心得,做个报告。就是我前几天报怨垃圾的那篇,几篇文章拼起来的好像是,就发到IEEE的杂志上了。

论文垃圾归垃圾(因为根本不知道它想干什么),不过写那篇心得和做报告用的slide要做得专业一点,尽管内容也很垃圾。两个东西都是用LaTeX做的,现在用着越来越爽了,尤其在Emacs里用AucTeX,发现了许多开始不知道的功能,源文件也清晰了,编译出来的文章感觉专业,舒服。

slide是用Beamer做的,它有许多种主题,可以在LaTeX Beamer Themes这里看各个主题的效果。其实并不限于那些,Beamer还有inner/outer/color theme等概念,可以通过选择颜色主题把slide变得更加漂亮。我用的是Copenhagen,由于里面有白底的图片,就没有用什么color theme. pdf文件较大,就懒得发了,reporttex.gz是源文件(WP自动去掉了中间的点),供参考。欣赏外表美,不要看内在。

对了,我用的TeX版本是科大一些人最近做的那个live cd,完美支持UTF8编码,不过CJK的声明上跟以前GBK编码的时候略有不同。另外,中文一定要用CJK*带星号的这个啊,我就是犯了这个错误,把星号忘记了,结果源文件中文换行就插入空格了,后来查Ctex faq才知道加不加星号就是这个区别。还有这个Beamer源文件要用pdflatex命令编译两次才好。

打印浮点数的IEEE 754表示
Saturday, December 30th, 2006

前阵子有门课的作业让写出几个浮点数的IEEE 754 单精度形式,有的数很不规则,23个尾数都得算,于是就写了个程序。先判断正负,小于零则符号位为1,否则为0. 然后对它的绝对值以2为底取对数,再取下整,加上127为8位指数部分的无符号数。最后算23位尾数。程序写出来了:

void ieee754_alg(char* bits, float num)
{
    int exp;
    int i;
    int temp;
    float tail;
    float b = 1;

    if (num >= 0)
        bits[0] = 0;
    else
    {
        bits[0] = 1;
        num = -num;
    }

    exp = floor(log(num)/log(2)) + 127;
    tail = num / pow(2, exp - 127) - 1;
    for (i = 7; i >= 0; i--)
    {
        temp = pow(2, i);
        if (exp >= temp)
        {
            exp = exp - temp;
            bits[8 - i] = 1;
        }
        else
            bits[8 - i] = 0;
    }

    for (i = 1; i <= 23; i++)
    {
        b /= 2;
        if (tail >= b)
        {
            tail = tail - b;
            bits[8 + i] = 1;
        }
        else
            bits[8 + i] = 0;
    }

}

bits是个长度为32的字节数组。再复杂的数,一下就算出来了,很爽。但最近又想了一下,这种办法实在是太傻了,我们一般计算机里面不就是用IEEE 754表示浮点数的吗?把内存里面的位取出来就行了。程序如下,注意要考虑到一般的计算机都是little-endian,高字节在高地址。

void ieee754_mem(char* bits, float num)
{
    char* addr = (char*)&num;
    char byte;
    int i, j, k = 0;
    for (i = 3; i >= 0; i--)
    {
        byte = *(addr+i);
        for (j = 7; j >= 0; j--)
        {
            bits[k++] = (char)((byte >> j) & 0x1);
        }
    }
}

这样就省力多了。

堆了个雪人
Saturday, December 30th, 2006

哈哈哈哈,下午和几个同学一起弄的,雪很脏,堆不起来,头是用脸盆帮助才做好的。眼睛和钮扣是破坏的花草,围巾是一个女生贡献的。现在手真是不耐冻了,记得以前是越玩雪手越暖和的。

还有几张图片,都可以在这个链接看到。

下雪了
Saturday, December 30th, 2006

应该是2006年最后一场雪了吧。雪花不大,不过飞飞扬扬下得挺快的。

看到这雪我好兴奋,已经好几年没见过这样的雪了。在合肥的时候也下雪,不过掉下来就融化了,更有时候温度合适,成为冰水混合物,经夜里一冻,第二天走路就会难受了。

突然想起以前在家跟伙伴们打雪仗的情景来了。高中时上体育课如果赶上下雪就打雪仗,有一次我们把老师打跑了。不过也想起在科大时和同学在宿舍里看到外面白茫茫的雪,还有在食堂看到像鹅毛大的雪片飘下来。我不喜欢南方夏季的炎热,喜欢北方的冬天,喜欢雪,但又喜欢从树上摘荔枝来吃,喜欢南方的发达。

想打雪仗过过瘾:smile:

LaTeX中输入下划线(underscore)
Friday, December 29th, 2006

参考文献里有一个URL,里面含有下划线。我起初也没注意,编译的时候才发现下划线不能直接输入的。

起初就简单的用\_来输入,发现出来的下划线很粗,跟周围的字母不相衬。

到水木TeX版去搜,发现有人这么做:\underline{\hspace{1m}},不过试了一下,和\_的效果差不多,不合适。

继续问,终于有人给出一种好的办法:

\rule[水平高度]{长度}{粗细}

比如:

\rule[-2pt]{1.5cm}{0.5pt}产生的是一个长度为1.5cm,0.5pt粗的一条线, 处于基准线以下2pt

效果可以随意调整,很好。

福特死了
Thursday, December 28th, 2006

美国第38任总统,Gerald R. Ford (1913 - 2006)

希望我能活这么久。。。