Rockins' Blog - 静云谷 - 静看云卷云舒...

为天地立心,为生民立命,为往圣继绝学,为万世开太平

DormForce Blog Home Contact Syndicate this Site (RSS 2.0) Syndicate this Site (Atom) 登陆
  247 Posts :: 0 Stories :: 831 Comments :: 0 Trackbacks

档案

随笔分类

相册分类

rockins' links


2008年8月15日 #

最近似乎blog搬家比较盛行,我也来赶个热闹。从2008年8月15日起,在下的blog将迁移到以下两个地址上:

http://blog.rockins.cn/
http://rockins.cn/

欢迎大家访问。在dormforce的日志应该也会同步更新,不过维护的重点将转移过去。

-Rockins Chen   2008年8月15日
posted @ 17:34 | Feedback (0)

2008年8月4日 #

Here is the introduction of tinypy:

tinypy is a minimalist implementation of python in 64k of code

tinypy includes a whole heap of features:

    * parser and bytecode compiler written in tinypy
    * fully bootstrapped
    * luaesque virtual machine with garbage collection written in C
      it's "stackless" sans any "stackless" features
    * cross-platform :) it runs under windows / linux / macosx
    * a fairly decent subset of python
          o classes and single inheritance
          o functions with variable or keyword arguments
          o strings, lists, dicts, numbers
          o modules, list comprehensions
          o exceptions with full traceback
          o some builtins
    * batteries not included -- yet
   
Who sponsored tinypy?

Phil Hassey(http://www.philhassey.com/blog/)

My contribution to tinypy:

I have committed two modules to tinypy repositoy: math and random. An example application borrowed from xscreensaver will be committed in soon. plus, I'm planning to add re module to tinypy for regular expression supporting.

Where can you get info about tinypy?

The form website of tinypy is http://www.tinypy.org/
You can get released tinypy and source code from googlecode: http://tinypy.googlecode.com/
The doc of tinypy is organised in wiki: http://code.google.com/p/tinypy/wiki/Index?tm=6
The mailing list of tinypy is powered by google group: http://groups.google.com/group/tinypy
Some miscellaneous doc page: http://groups.google.com/group/tinypy/web

Tinpy's aim:

Lean, but meaning!
posted @ 11:26 | Feedback (1)

2008年7月31日 #

I've ported an xscreensaver - vines to pygame. The snapshot and source code are attached in this post. PS, you are required to install pygame and python.



import math
import random
import pygame
if '.' in str(1.0): # python
    import pygame.locals

SCR_WIDTH = 800
SCR_HEIGHT = 600

class VineStruct(object):
    a = 0
    x1 = 0
    y1 = 0
    x2 = 0
    y2 = 0
    i = 0
    length = 0
    iterations = 0
    constant = 0
    ang = 0
    centerx = 0
    centery = 0

class Vines(object):
    def __init__(self):
        if '.' in str(1.0): # python
            self.fp = VineStruct()
        else: # tinypy
            self.fp = {
                                'a' : 0,
                                'x1' : 0,
                                'y1' : 0,
                                'x2' : 0,
                                'y2' : 0,
                                'i' : 0,
                                'length' : 0,
                                'iterations' : 0,
                                'constant' : 0,
                                'ang' : 0,
                                'centerx' : 0,
                                'centery' : 0,
                              }
        self.fp.i = 0
        self.fp.length = 0
        self.fp.iterations = 30 + random.randint(0, 100)
        
        pygame.init()
        self.screen = pygame.display.set_mode((SCR_WIDTH, SCR_HEIGHT))
        
    def __drawLine__(self, x1, y1, x2, y2, color):
        
        # validate the bounds
        if x1 < 0: x1 = 0
        if x1 > SCR_WIDTH: x1 = SCR_WIDTH
        if x2 < 0: x2 = 0
        if x2 > SCR_WIDTH: x2 = SCR_WIDTH
        if y1 < 0: y1 = 0
        if y1 > SCR_HEIGHT: y1 = SCR_HEIGHT
        if y2 < 0: y2 = 0
        if y2 > SCR_HEIGHT: y2 = SCR_HEIGHT
        
        if x1 <= x2:
            sx, sy = x1, y1
            dx, dy = x2, y2
        else:
            sx, sy = x2, y2
            dx, dy = x1, y1
        
        if (abs(x1 - x2) < 1e-4):
            x = sx
            if sy > dy:
                sy, dy = dy, sy
            y = sy
            while (y < dy):
                self.screen.set_at((x, y), color)
                y += 1
        else:
            k = (dy - sy) / (dx - sx)
            x = sx
            while (x < dx):
                y = sy + k * (x - sx)
                self.screen.set_at((x, y), color)
                x += 1
        
        pygame.display.flip()
        
    def draw(self):
        red = random.randint(0, 255)
        green = random.randint(0, 255)
        blue = random.randint(0, 255)
        if (self.fp.i >= self.fp.length):
            self.fp.iterations -= 1
            if (self.fp.iterations == 0):
                self.__init__(self)
            self.fp.centerx = random.randint(0, SCR_WIDTH);
            self.fp.centery = random.randint(0, SCR_HEIGHT);
            
            self.fp.ang = 60 + random.randint(0, 720);
            self.fp.length = 100 + random.randint(0, 3000);
            self.fp.constant= self.fp.length * (10 + random.randint(0, 10))
            
            self.fp.i = 0;
            self.fp.a = 0;
            self.fp.x1 = 0;
            self.fp.y1 = 0;
            self.fp.x2 = 1;
            self.fp.y2 = 0;
        
        count = self.fp.i + random.randint(10, 100)
        if (count > self.fp.length):
            count = self.fp.length
        
        while (self.fp.i < count):
            x1 = self.fp.centerx + (self.fp.x1 / self.fp.constant)
            y1 = self.fp.centery - (self.fp.y1 / self.fp.constant)
            x2 = self.fp.centerx + (self.fp.x2 / self.fp.constant)
            y2 = self.fp.centery - (self.fp.y2 / self.fp.constant)
            
            color = (red, green, blue)
            self.__drawLine__(x1, y1, x2, y2, color)
            
            self.fp.a += (self.fp.ang * self.fp.i)
            self.fp.x1 = self.fp.x2
            self.fp.y1 = self.fp.y2
            
            self.fp.x2 += int((self.fp.i * (math.cos(self.fp.a) * 360.0)) / (2.0 * math.pi))
            self.fp.y2 += int((self.fp.i * (math.sin(self.fp.a) * 360.0)) / (2.0 * math.pi))
            self.fp.i += 1

def main():
    myVine = Vines()
    _quit = False
    while not _quit:
        for e in pygame.event.get():
            if e.type in (pygame.locals.QUIT,pygame.locals.KEYDOWN):
                _quit = True
        myVine.draw()

if __name__ == '__main__':
    main()
    print("#OK")

 
posted @ 10:41 | Feedback (0)

2008年7月30日 #

这是在http://www.gowrikumar.com/c/index.html上看到的一个问题。下面这段小程序的本意是打印出数组中的所有成员:

#include<stdio.h>

#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
int array[] = {23,34,12,17,204,99,16};

int main()
{
  int d;

  for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
      printf("%d\n",array[d+1]);
      
  return 0;
}


但 是实际的运行结果却不是这么回事。如果编译并运行这段程序的话,你看不到任何输出。这是为何?问题的根源其实在于C语言的类型转换。sizeof()运算 符返回的值是unsigned int型的,因此,int型的d将被自动被转换为unsigned int型,但是这个转换将导致问题。因为d的初值是-1,int型的-1转换为unsigned int型后是一个非常大的数字。因此,for循环的第一次判断就会失败,于是for循环一次都得不到执行,自然也就看不到任何输出了。
那么,应该如何解决这个问题呢?很简单,将sizeof()的运算结果显式转换为int即可。如下所示:

for(d=-1;d <= (int)(TOTAL_ELEMENTS-2);d++)


这样就能得到正确的结果了。 
posted @ 18:10 | Feedback (0)

2008年7月17日 #

临时课堂

临时课堂大概是25号还是26号的时候搞起来的。在此之前,和尚带着我到清泉村队部和镇上都跑过,父母官们口头上给的答复都堂皇而响亮,具体到实际的支持上却完全没有,来回几天都没有结果。最后,我们决定直接找块空地开始,管它有没有帐篷。空地是在五大队的汪家院子找的,考虑到下午的时候太阳大,找的是一块周围都有大树的空地。这原本是人家的一个院子,房子塌了以后,这家人住到镇上的帐篷里面去了。院子本身是很大的,可是坍塌下来的砖木土石占据了一大片地方,于是我们可以使用的空间就只有大概十来个平米左右了。

在征得房屋主人的同意之后,我把场地简单地清理了一下,院子里的老乡们也来帮着我清理。出于安全考虑,他们后来把旁边的一口水井盖上了,还给我们安了一顶小小的遮阳伞。当天上午,我走访了附近的几个院子,登记了几个愿意来临时课堂的学生的名字。如果我没有记错的话,当天统计的人数是八个。那些孩子都非常愿意来,而且他们还准备多找些伙伴来,我没同意。我告诉他们,现在场地很小,我们先少一点人试试看,如果可以的话,以后再扩充。我跟他们约定的时间是下午五点,如果不下雨的话,准时在汪家院子开始。

我回到营地不久,俊子带着几个人来了,其中有一个女生。俊子跟我都是十四号晚上过来的第一批队员。从十四号到现在,陆续地不断有老队员离开,有新队员到来。现在还留在队伍里的第一批队员,已经不多,所以能够有新队员加入,其实是一件好事。但是我一开始对俊子带过来的这几个人,其实是很不以为然的,我以为他们也会和以前的一些新队员一样,待不了两天就会离开,而两天时间,能够做的事情其实是很有限的,可能刚刚只够用来熟悉当地的环境。不过,我不得不说,对他们后来的表现,我刮目相看。简单的介绍之后,我知道他们都是俊子的同学。他们的名字依次是:黄利军(大家后来都叫他军哥),董鹏锟(锟哥),曹毅(大家都叫他曹操),王国(后来我们都叫他“国王”),刘义(义哥),那个一同来的女孩子名叫蒋艳(后来,那帮小孩跟她打成了一片,都亲热地叫她“艳姐”)。

下午,和尚分配任务。曹操和国王负责看守营地,清点库房;俊子带着鹏锟他们几个前往吉祥寺方向支援王姐;蒋艳和我去汪家院子给孩子们上课。

当天太阳很大,天气非常热。但是,下午四点过的时候,天上下了一点雨,我都以为可能第一堂课就要流产的时候,雨又停了,于是赶紧开拔,往汪家院子赶。还在半路的时候,早上我走访过的学生们就给我打电话了,说他们已经在等了——这时离我跟他们约定的时间还有整整一刻钟呢。

到了之后,我一看,比我早上登记的人多了几个,可能有十二三个的样子,再一问,都是听说了之后直接跑来的,于是一一登记。然后把包里的本子和笔拿出来发给他们。这些纸和笔是另外一支志愿者队伍(5.12突击队)给的。发完了之后,开始上课。我打算让他们先做做自我介绍。因为没有课本,所以我原来的如意算盘是准备给他们上上英语课,因此自我介绍就是用英文啦。我和蒋艳先做了示范,然后轮到他们。一开始,他们都有点不好意思。不过,在不断的鼓励之后,终于有人肯开口了。意想不到的是,他们一开口,就把我们吓了一大跳——因为他们的英语水平比我们预想的要好很多。后来问他们才知道,他们现在是从小学三年级开始就教英语。

在让最后一个女孩子做自我介绍的时候,出了一点小乱子,如果不是有蒋艳在场的话,我肯定得手忙脚乱不知所措了。本来,我一直小心翼翼避免触动地震所带给他们的伤痛。一开始,我想,做做自我介绍应该是没问题的吧。但是我错了。那个女孩子叫陈永佳,当问她以后想做什么工作的时候,她支支吾吾半天不肯说,后来终于说想做一个煤矿上的安全员。说完就开始哭,课堂上的气氛一下子就沉重起来了。我赶紧让蒋艳过去安慰安慰她。在陈永佳断断续续的抽泣声中,我们才知道:她的姑父在清平乡的矿上工作,地震发生后,生不见人死不见尸。她说她的姑父最疼她了,每次回来都会给她买吃的,有时甚至只给她买,连她表姐(也就是她姑父的女儿)都没有……陈永佳说的这些话,又勾起了很多人对于伤痛的回忆,很多人都眼圈红红的。我猜想,他们也许也想起来那些失去生命的亲人和朋友。

过了好久,蒋艳才把陈永佳劝平静下来。在见识了蒋艳的亲和力之后,我就主动把上课的重任交给她负责了。我发现,在这种时候其实上什么都是不合适的,最好的做法就是带着他们做做游戏。但是,在这一点上,我似乎跟这些小孩子们有很深的代沟,而蒋艳则明显要比我强很多。比如,她知道飞轮海是谁,而那里的大多数小女孩一提到飞轮海能够喋喋不休地讲上半天,我则可能要花费不少时间才能弄懂所谓飞轮海其实是一只乐队组合;蒋艳也擅长讲各种各样的笑话和故事,从疯人院到鬼故事,信手拈来;还能教他们玩成语接龙、真心话大冒险、杀人游戏等等各种各样稀奇古怪的游戏。

当天的第一堂课在六点十分左右结束。在我宣布放学以后,他们还不停地围着蒋艳叽叽喳喳地问个不停。陈永佳把自己戴的一个手镯还是项链送给了蒋艳,而蒋艳则把自己戴的戒指回赠给了陈永佳……

第二天,仍然按照既定时间上课,军哥也去了,军哥带了一个数码相机。整个上课完全由蒋艳负责,军哥协助,我嘛,已经自动升任“校长”一职了。在上课过程中,应孩子们的强烈要求,军哥甚至即兴在坑坑洼洼的地上给孩子们表演了一段街舞,获得一片叫好声。这一回放学的时候,孩子们好像都是商量好了的,拿出之前发给他们的笔和作业本让我们给他们签名。我说可以等我们离开的时候再给他们签名,但是这个提议被拒绝了,他们说,他们不介意我们走的时候再给他们签一次名,但这一次是必须要的。于是我们被团团围住,像明星似的一个接一个地给他们签名……

后面几天,都是蒋艳给孩子们上课,直到她因为学校有事而临时离开了三天。这三天,由我和和尚代蒋艳授课。这时,这帮“顽劣”的学生们总是抱怨我上课没有他们艳姐上得好。我这才发现,我这个“校长”原来已经被身为“班主任”的蒋艳架空了——不过,我非常乐意被这样“架空”,只要能让这些遭遇大不幸的孩子们开心就行。

531号下午,我决定回一趟成都。因为,第二天就是儿童节,我想把之前募集的一些课本运到九龙镇(这些课本主要是在电子科大附中和附小募集的),作为儿童节的礼物发给我的学生们。另外,军哥和蒋艳他们也将于61号回到九龙镇,届时他们也会带一大堆礼物过来。 

posted @ 16:02 | Feedback (0)

2008年7月1日 #

Here are two scripts, which function as switching network configuration under windows. The first one will configure network interface by dhcp; while the other one will configure network interface statically. They both are run by netsh. The command line looks like: netsh exec net-switch-dhcp.sh.

net-switch-dhcp.sh
==============================
# net-switch-dhcp.sh
# configure network interface by dhcp
# ----------------------------------
# 接口 IP 配置
# ----------------------------------
pushd interface ip


# "本地连接" 的接口 IP  配置

set address name="本地连接" source=dhcp
set dns name="本地连接" source=dhcp register=PRIMARY
set wins name="本地连接" source=dhcp


popd
# 接口 IP 配置结束
==============================


then, net-switch-static.sh
==============================
# net-switch-static.sh
# configure network interface statically
# ----------------------------------
# 接口 IP 配置
# ----------------------------------
pushd interface ip


# "本地连接" 的接口 IP  配置

set address name="本地连接" source=static addr=192.168.1.84 mask=255.255.255.0 gateway=192.168.1.50 gwmetric=1
set dns name="本地连接" source=static addr=192.168.1.50 register=PRIMARY
set wins name="本地连接" source=dhcp


popd
# 接口 IP 配置结束

==============================

That's all.
posted @ 13:46 | Feedback (0)

2008年6月12日 #

第三天

根据前一天的安排,我今天和耗子等几个人一起走九龙镇新龙村方向。耗子是武汉人,年龄长我几岁,有丰富的户外运动经历,对于选择营地、野外扎营、户外生火垒灶等事情非常有经验。我们此行的主要目的是去了解一下情况,不过也带了一些双氧水、碘伏、外伤用药、消毒粉之类的,以便能够处理一下小情况,计划的时间是一个上午。

出九龙镇之后,我们即离开公路,往公路两边的村庄里深入。一开始的情况尚好,食品和水之类的东西都有分到。村民们反映得最多的是需要帐篷,如果没有帐篷的话,能遮雨的塑料布也行。然而很遗憾的是,这些东西我们手上也没有。随着离公路越来越远,情况也变得更差一些。在九龙镇和马尾镇交界的地方,情况最糟糕。马尾镇那边的村民很期盼地请我们也去他们那边看看情况,但是我们现有的物资根本没有办法顾及到九龙镇以外的地方。因此权衡之后,我们还是决定将走访范围局限在九龙镇的行政范围之内。从走访的情况来看,最缺的东西是篷布之类挡雨的东西,因为马上就要进入多雨季节,如果不能发放足够多的篷布和帐篷的话,一遇到下雨,灾民们的生活就会很艰难;油和盐等生活必需品还是比较紧缺;此外,较偏僻的村落和院子因为消息不畅通的原因,往往能领取到的物资比距离公路和九龙镇近的地方少;灾民们指责得更多的情况是,当官的在发放救灾物资的时候,往往根据关系的亲疏来决定数量的多寡,这让灾民们非常愤怒;部队的消毒防疫工作基本上覆盖了九龙镇的全部地区,但是一些偏远的村庄和院落,还是存在死角,对于这一点,我的看法是:由于村与村之间的行政划分是如此的模糊,加之部队并不完全熟悉当地的地理环境,因此出现这种情况是可以理解的。走访了解到的情况中,有些是我们职责范围之外的事情,这些事情我们没有权力干涉;有些我们愿意解决却无力解决,比如帐篷,当我们遇到的所有灾民都需要帐篷的时候,我们根本没有人力和财力解决这类问题。但是有一些事情是我们可以考虑的,比如,我们可以给确实非常缺油和盐的家庭多送一些;对于部队未能到达的消毒死角,我们可以去撒一些消毒粉;对于简单的外伤,我们可以为村民们清理伤口或换药。

将近中午的时候,我们回到了九龙镇,另外一支前往山上的小分队尚未回来。我们把上午走访的情况向和尚做了汇报,至于后面的事情怎么安排,我已经没有办法关心了。由于公司里面我的工作尚未交接完成,我必需回一趟成都。当天下午,我搭乘一辆成都的私家车回到了成都。不过,九龙镇的兄弟们,我会再回来的。

再往九龙

花了几天时间把手上的工作交接出去,522,我再次前往九龙镇。耗子、佟医生、鲍鱼他们都已离开(佟医生据说是去了理县)。和尚、王姐、武昌鱼、大牛等几个老队员还在九龙镇上,另外又加入了几个新来的志愿者。

此时我们的物资较之前充盈了很多,我们有了两个专门存放物资的帐篷:一个存放生活必需品,另外一个存放药品。王姐在联系物资方面做出了非常大的努力,成效卓著。很多网友、个人、慈善团体捐献了物资给我们。北京方面的网友们集资采购了整整一车的物资空运过来,送到之后,水都没有喝上一口就走了;我也看到了猫扑爱心联盟的网友们送过来的物资;在我们给孩子们过六一节的时候,几位来自成都的天涯社区网友给孩子们送来了书包和文具。慈善团体方面,安泽国际救援、香港慈善会等机构都为我们提供了帮助。这里我无法一一列出这些善良的人们以及团体和他们的名字,然而,你们的善举的确令人感佩,也激励着我们力所能及地为灾民们服务。

经过前面一个星期的摸索,和尚已经定下了一套行之有效的工作方法:先逐村逐户走访,不仅要听村民们的叙述,更要实地到他们的帐篷里去观察,掌握到真实情况之后,再以家庭为单位对口地把物资发放下去,不再大规模的发放物资。因为此前的一些经验表明,这种大规模的分发物资极易引起混乱和哄抢,而且,由于我们对当地具体情况不熟悉,也很容易导致物资发放不够公正,没有把物资发放到最急需的人手上。当时,灾区的情况已经基本稳定,各种物资也发放得比较充实了。而我们要做的,就是要“查漏补缺”,把我们有限的物资送给那些最困难、最急需的家庭。我们定的方针是,主要针对老弱病残等弱势群体开展工作,此外也重点关心婴幼儿、孕妇等的营养状况和生活用品。

这一次,我一直待到了531号(我531回成都的原因是打算给那边的小孩子们运送一批课本过去,作为儿童节给他们的礼物)。其间做的事情庞杂而繁多,既有烈日下看守帐篷的经历,也有抢时间给灾民搭帐篷的经历。这里我不打算一一叙述这些琐碎的事情。在这些事情之外,我觉得此行最有意义的事情是建立了一个临时的课堂。虽然,我们建立的这个临时课堂只存在了十天,也没能开展什么文化课;虽然,我们的临时课堂人数最多的时候也只有不到三十人;虽然,我们只能把从幼儿园大班到高二的学生集中在一起上课;虽然,我们只有一块露天的场地;虽然,我们只有小小的一块活动空间;虽然,我们只有简陋的教具;太多的虽然。然而,在灾区服务的日子里,这是我最关心也最让我欣慰的事。我首先要感谢蒋艳和她的同学们,为这个小小的临时课堂付出了如此之多的汗水和努力;也要感谢我们的队长和尚,在完全没有任何外部支持的情况下,对这件事情给予了全面的支持,允准我们把大量的时间和人力花在临时课堂上。是的,感谢的名单再列下去就会显得很俗套,很CCTV,于是我决定就此打住。

 
posted @ 13:01 | Feedback (1)

2008年6月8日 #

第二天

当天夜里我睡在老李的车里。老李是老王的弟弟,同时也是我们在德阳的联系人。据老李后来告诉我,他和老王是亲兄弟,不过他们一个跟着爸爸姓,一个跟着妈妈姓。老王在云南当了十七年兵,退伍回到地方后,供职于贵阳体育局。老李说,平时他们哥儿俩碰到一起就谈不拢,意见总是相左的。不过据我观察,他们到这里之后好像并没有谈不拢过。

夜里的时候,发生了一次余震。我从睡梦中惊醒,也许是神经高度紧张的缘故,我大喊了一声:地震了,快跑!后来,这成了我的把柄,老李动不动就拿这个事儿揶揄我:我们是睡在车里的,你喊我快跑,我们朝哪儿跑嘛。我真是跳进黄河也洗不清了,想当初,8级地震到来的时候我也没有失态的啊。真是晚节不保矣。

天亮以后,简单的吃了早饭。然后分配每个人的工作,我决定今天和上海来的佟医生她们一起到村子里去,一起去的还有上海来的杨子和鲍鱼(鲍鱼是位女士,特此注明)。九龙镇并不大,基本上就是一条主街和一条老街。部队、志愿者、医疗队,加上运送救灾物资过来的司机,人很不少了。但是,镇子外面是什么情况,我并不清楚。我希望看看村庄里面的情况是怎么样的。

我们找了一辆成都过来的越野车,出发了。一开始,我们主要关注有没有需要打破伤风针的灾民。前面说过,废墟上到处都是锈钉子,灾民们在清理废墟的时候,很难保证不会踩到锈钉子。锈钉子的直接后果是破伤风,而破伤风是非常危险的。因此我们就沿着镇外比较荒僻的路一路问过去。

佟医生救治的第一个也是最后一个需要打破伤风针的患者是一个小孩。大概六七岁,看着很可爱的样子。佟医生她们虽然带来了不少药品,但仍然捉襟见肘。连打碎玻璃瓶的镊子都没有,只好用口罩把装注射液的小玻璃瓶包起来,直接把瓶口掰断,才能把注射针头伸进去。给小孩打完针以后,佟医生接着准备给周围的大人打针,有些人踩了锈钉子都两三天了。我看着佟医生针筒里的剂量一下子上去了,忽然想起前一天我打的时候是分了三次才打完的。于是谨慎地问佟医生需不需要先给他们做一下皮试,免得剂量太大出现意外。佟医生想了想,也觉得似乎有点不妥,于是先打了个电话问(我估计佟医生应该是有段时间没有直接在临床一线工作了罢)。问完之后,佟医生也不敢贸然打针了。但是如果做皮试呢,一是没有药品,二是花的时间也比较长。大家讨论的结果是,后面碰到有踩了钉子的,就用车送到镇上的唐山医疗队去,我们只处理简单外伤和发放一些日常用药。

然而,问题接踵而至。我们碰到的下一个老乡,任凭我们说破了嘴皮子也不肯去镇上打破伤风针。佟医生那个急啊,我觉得她就只差没有骂人了。我想,作为一个医生,她一定是不肯看着老乡以后遭受痛苦,才那么着急。所以,我理解她。然而,老乡对我们的“危言耸听”毫不感冒,坚持说:你们看嘛,我一点事都没有,我现在还能挑水,一点都不痛,过两天就没事了。无论我们怎么描述破伤风可能的潜伏期和可能带来的痛苦,老乡只是不听。我们给老乡讲,我们用车送你到镇上去,不会耽误你多长时间,而且也不会要你出钱的,那个老乡只是不肯。最后,实在没办法了,他干脆开始耍赖:谢谢你们的关心,我下午一定去镇上打针,一定去……这场拉据战的结果是,老乡赢了。佟医生气愤愤的,可是根本毫无办法。我只能希望,那个老乡下午会真的去镇上把针打了。

我们就这样一路走下去,每到一个院子就停下来问问有没有伤员,需不需要药品。车上除了药,也带了一些食品和水。有些时候,我们也发放一些食品和水出去。不过,最糟糕的情况出现在九龙镇边缘的一个村子里(后来我们知道那里叫双同村)。我们到那里之后,那里的老乡反映他们院子里有好几个人都在拉肚子,这让佟医生非常紧张。于是佟医生仔细问了他们的情况,结果让我们非常吃惊。据老乡们讲,由于住得比较偏僻,他们每个人每天只能拿到一瓶纯净水,煮饭的水都是用的井水,自地震发生到现在,没有一个当官的来看过他们一眼,吃饭都成问题……佟医生毕竟是女人,心肠软,当一个脸上写满沧桑与悲苦的中年妇女向她哭诉自己的悲惨境遇时,佟医生想都没想就从身上掏出两百块钱塞给了那个中年妇女。那个中年妇女哭着就要往地上跪,我们赶紧拉住了。是的,我们知道,我们所做的事情有限,这样的礼我们受不起。我们把车上剩下的大部分食品和水都给了这个院子。佟医生也把院子里多人拉肚子的情况向镇上的医疗队做了汇报,希望他们能过来核实一下情况。离开那个院子的时候,我们再三叮嘱老乡们最近这段时间尽量不要喝井水。

佟医生给钱的举动无疑是出于同情与善良,然而,离开那个院子之后,我还是告诫了佟医生,以后不能再这样做,九龙镇像这样的家庭成百上千,倘若你都给钱,恐怕最后连回去的路费都没有了。佟医生傻乎乎地说,我还有信用卡。我分特!整个绵竹市到处都是废墟,信用卡在这里有个鸟用。也许那时的我过于冷静,然而我始终觉得,在那样一种情况下,一时的冲动并不能解决任何实际的问题。我不赞同佟医生的另外一个原因是,我们到这里来的目的是帮助这里的老乡,倘若光是给钱就能解决问题的话,我们又何必到这里来呢。我始终认为,作为志愿者,我们力量有限,但是我们的到来可以传递出一个清晰的讯息:灾区的父老乡亲们,在最艰难的时候,我们和你们站在一起。而这一点,我认为,是志愿者最重要的作用。

离开双同村,又往前走了一段,一问,我们已经走出了九龙镇的范围,已经到了东北镇。碰到一个小院子,一大堆人聚在那里,似乎在分发东西。那里一些人的伤口有段时间没有换过药了,于是我们过去帮他们清洗了创口,重新敷上了药,缠上纱布。主要的工作都是佟医生和鲍鱼在做,我就只能在一边打打下手,递递药什么的。不过,在佟医生的指点下,我多少还是学会了怎么清洗伤口,怎么用外伤药。也算是一大收获呐。

回九龙镇的时候,走的是另一条路。老实说,我对后面的这一段路程的印象不是很好。因为,我们先后停下来的两个地方,附近的老乡通常都会一窝蜂围上来,看见我们带有什么药就要什么药,即便没有什么病,更有甚者,直接伸手到车里拿。能有什么办法呢,我们只能向他们解释,我们的药品有限,希望他们有相应病状的人才能拿药,把药品留给那些更需要的人。然而,收效甚微,场面愈加混乱。幸好,我们遇到了一支部队的医疗队过来,做了我们的挡箭牌,我们才得以离开。

回到九龙镇之后,我们决定装上一些物资,送到紧邻九龙镇的重灾区汉旺镇去。去汉旺镇的路是从一个小山岭翻过去的。路上的景象我就不多叙述了,房屋倒塌的程度大致上都差不多,有些地方的路基受到了损坏,也有从山上滚下来的石头落在公路上。汉旺镇的情况我们去之前早有所闻,但是实际见到之后仍然觉得非常震惊。汉旺镇虽然是一个镇级行政单位,但是看起来却如同一个县城一样,根本的原因在于这里有一个中央直属企业——东方汽轮机厂(简称东汽),这是一个非常庞大的工厂,里面的工人以万计。汉旺镇的楼普遍都比较高,大多数看起来并没有倒,可是你仔细观察之后就会骇然,因为你会发现这些楼全都像纸盒一样扭曲变形了,遍布着狰狞的裂缝;在一些地方,你能看到楼梯被硬生生扯断,只有丝丝缕缕的细铁丝将断成两截的楼梯连接着;一些大楼出现了大幅度的倾斜,摇摇欲坠,似乎一阵风就能吹倒;整座整座塌下来的建筑也不少,能看到的只是一片废墟。街道上来来往往的大部分是部队和医护人员,幸存下来的人们都集中到一片广场上去了。我们进入汉旺镇之前都戴上了两三层的口罩,可是只要一下车,就能闻到尸体腐烂的味道,相信我,那绝不是心理作用,那是真的。我们在路边也看到了几个裹尸袋,上面撒着消毒粉,里面装的,也许是几个亡灵的躯体。我们前往设在广场上的临时医疗点询问是否需要药品等物资,得到的答复是药品基本上已经足够,但是食品很需要,于是我们把带来的食品和水留下了。然后驱车返回九龙镇。

再次回到九龙镇时,天色已渐黑。我们搭起了一个简易灶台,煮了一大锅方便面。大家开始吃晚饭。饭后全队开了一个小会,检讨了前两天的工作得失,同时对后续的各项事情做了安排。最重要的事情是,老王因为家中小孩生病,不得不提前返回贵阳,走之前他指定和尚为队长。

posted @ 13:54 | Feedback (0)

2008年5月20日 #

出发
 
2008年5月12日14时28分,一场里氏8.0级大地震突袭四川。一时间,京师震动,举国震惊。
 
屋漏偏逢连夜雨,地震之后,紧接着就是一夜的暴雨。看着电视上、报纸上、网络上关于地震灾区种种悲惨情形的报道,我实在坐不住了,5月14日下午,我终于联系上了成都市红十字会负责接待志愿者的负责人,得知当晚将有一批南京的志愿者到达,便马上决定和这批志愿者一起前往灾区。于是迅速向 公司告假两天,飞奔回屋,席卷起一堆必需物品,前往位于大慈寺的成都市红十字会。在那里,我见到了几个比我早到的志愿者,他们和我一样心急如焚,巴不得立 马到达灾区。但是,南京的志愿者还没有赶到,于是只有等。等了快两个小时,终于等到了南京方面的志愿者,一起来的还有来自贵阳的老王,来自武汉的耗子等其 它几个人。在这支临时组建的队伍中,老王的年纪最大,并且在云南当过十几年的兵,思路清晰,行事果断,于是大家推举老王为队长。之后就是紧张的筹备工作: 购买食品和水、寻找手电、联系车辆……。找手电的时候,跑了很多家店铺都没有找到合适的,一位阿姨在旁边观察了一会之后,主动问我们:是不是需要手电,如 果是,她可以提供一支……后来,又有两个成都电视台的记者要求跟我们一起出发……这支临时组建的队伍人数越来越多了。晚上十点过左右,终于登车出发。此行 的目的地将是绵竹市的九龙镇。
 
晚上十二点过左右,到达德阳,首先向德阳的抗震救灾指挥部报了个到,然后应一个领导的要求,前往一个救灾物资集散点帮助卸了半个小时的货。然后向绵竹出发,路况尚好。
 
过了绵竹之后,就能看到路两边的房屋倒塌情况了,从房屋倒塌的情况来看,地震的破坏是非常严重的。因为是深夜,无法看清楚路两边的地形 状况,依稀只能看出还是属于成都平原。又走了一段时间,看到迎面来了一个小伙子,骑着自行车,也没有带灯,就在黑夜里摸着黑走。于是拦下问路。一问才知 道,他是准备给某个地方送一箱水过去的,可是前面的路断了,只好返回。看见我们继续往前走,小伙子毅然掉转车头,尾随着我们向前进发。小伙子的举动让我们 非常感动。没有到过城市外面的朋友可能不知道乡村里的黑夜有多么的黑,那可是深夜一两点钟啊。
 
凌晨三点,终于到达了绵竹市九龙镇。就着汽车的灯光,我们看到了一片废墟的景象。于是开始安营扎寨。等搭好帐篷,卸完带来的食品和水,已经是凌晨四点过了。大家和着衣服倒头就睡――实在是太困了。
 
第一天
 
5月15日早上七点,我们开始起床干活。虽然深夜的时候已经对整个九龙镇的破坏有了初步的印象,但是眼前的情景还是让我们吃了一惊:整个九龙镇几乎被夷为平地,还挺立着的房屋寥寥无几,不是东倒西歪,就是崩塌裂缝。要找出一座完好的房屋,简直是毫无可能。
 
老王找到了镇上的抗震救灾负责人,要求给我们分配工作。于是我们接到了第一项任务:到废墟中洒漂白粉。我们的装备是口罩和手套。唯一不足的是我们的鞋,震塌的废墟上,到处是锈钉子,一不小心就可能踩到,我穿的是一双双星运动鞋,塑胶的鞋底对锈钉子毫无抵抗能力。大概九点的时候,天上下起了小雨,镇上的人们在废墟之上用震碎的砖块、水泥块垒砌了灶,锅碗瓢盆是从废墟中扒出来的。用先期送到的矿泉水、纯净水小心翼翼的煮着早饭――在这个非常时期里,水井里的水已经不能吃了,先期送到的每一瓶水都是非常珍贵的。死去的人已经死了,可是活着的人还得继续活下去。在镇上,我没有看到眼泪,虽然人们正经受着灾难,可是,在他们眼里,我没有看见悲观,我看到的是坚强。人们在坚强的试着继续活下去。一位有些年纪了的大叔,得知我们是自发来到这里的时候, 很真诚地向我们表示感谢。我告诉他:大叔,你不用谢谢我们,因为我相信,如果有一天我们遇上这样的灾难,你也会这样做的。那位大叔想都没想就用四川方言回答说:那是肯定的噻。是的,受灾的人们,不管你们在哪里,我们都在一起。因为,我们流着同样的血,说着同样的话;因为,我们都是中国人。
 
漂白粉直到中午的时候才洒完。然而,快洒完的时候,我踩到了钉子!第一颗钉子是解手的时候踩到的。废墟上已经找不到厕所,然而人有三急。我左顾右盼了半天,终于找到了一个比较理想的场所。那是一个墙角,墙本身已经塌得只剩半人高了。我走过去,右脚站定,然后解开皮带,左脚习惯性的向前迈了一小步,就是这一小步犯下了错误,一阵剧痛自脚底传来,我几乎痛得向左倒下去,仓促中双手抓住了已经断得只剩半截的墙,才没有倒下去。抬起左脚来一 看,脚底下的一块檩子上,一根锈钉子正放肆地嘲笑着我的大意。脱下鞋和袜子,可以看到脚底一个暗红的创口,不过没有出血。之后就没有什么疼痛感了,于是继续做事。不久,左脚再次踩上钉子,这次是踩在了瓦砾堆上,一颗锈钉子深藏在下面。洒完漂白粉以后,我赶紧到镇政府前面的医疗队去打破伤风针。这支医疗队来自河北唐山,对灾民非常热情,医术也非常专业。破伤风针分三次给我打完,花费了我大概一个小时,因为我皮试的结果好像有点过敏。打针的时候,一个大哥带着 一个四五岁的小孩来到医疗队,小孩的头上有一点外伤,据那个大哥讲,学校垮了之后,他的娃儿是从里面自己爬出来的──好勇敢的小家伙!

打完了针,赶紧回帐篷吃午饭。午饭是泡面,因为我踩了钉子,队员们都让我先吃。必须承认,尽管我们是一支临时组建的“乌合之众”,但整个团队还是很团结的。

午饭之后,我们休整了一会儿。因为没有什么事,我就到灾民们临时搭建的帐篷里“串门”去了。灾民们非常热情,虽然帐篷很简陋,但是都很热情的招呼我坐。我也毫不客气,用不太标准的四川话跟镇上的居民们闲聊起来。交谈中,我大致弄清楚了整个九龙镇的受灾情况。据灾民们讲,九龙镇的伤亡主要出现在学校,地震前, 镇上的小学共有260多小学生,地震中跑出来的加上地震后救出来的总共才四十几个。学校原来有十几个老师,现在只有三个老师还活着,并且都受了伤……镇上 居民的房屋虽然倒塌得很厉害,但是死的人并不多。由于很多青壮年都到外面打工去了,少数一些尸体扒不出来的,只好留在了废墟里……“串门”的过程中,我还 认识了一个小女孩,她的名字叫朱雨婷,在绵竹念初中。地震发生以后,学校停了课,于是她回到了家里。

下午的时候,大批的军车运来了粮食、 水、药品、帐篷等物资。于是我们开始帮着卸货。上午的小雨早已停歇了,太阳当顶,有点热。除了军车,还有接连不断的私家车开来,都是送救灾物资的。到下午 四点多的时候,临时存放物资的空地上,卸下来的矿泉水、纯净水、方便面已经堆起了一座小山。大桶的饮用水也运了进来,镇上的居民开始排队领水。从早上开 始,大型的挖掘机械就在不停地工作。这个时候,一辆挖掘机开始清理镇口的一座三层楼房。这座小楼没有完全坍塌,但是毁损得也相当严重,从断臂残垣间依稀还 能看出这座楼房原来的漂亮模样,很多人注视着。在一阵轰鸣声中,这栋残余的建筑倒下了……朱雨婷当时默默的站在我旁边,抿着嘴唇静静的看着,她告诉我,这 栋房子是她们家的,很多东西都还在里面,但是已经拿不出来了。她的一个小伙伴问她难不难过,她没有说话。我想,看着自己的家被摧毁,那种难过应当是无法用语言形容的罢……

晚上的时候,天上挂着一轮月亮,笼罩在一层薄纱似的氤氲之中。这里是成都平原的边缘,小镇的背后就是隆起的山,不高,然而肃然凝重,小镇前面是广袤的平原。月下的麦田里,一垄垄的麦子已经长到半人高,快可以收割了。然而,在这柔和的月光之下,是一个被地震摧毁得面目全非的小镇,没有电,没有灯光,死气沉沉,瓦楞与房屋的梁柱东倒西歪地立着,诡异而凄惶,似乎在散发着一种死亡和恐怖的味道!

夜里八九点钟的时候,一批从上海过来的志愿者也赶到了。明天,两支队伍将一起开展工作。   
posted @ 9:09 | Feedback (8)

2008年4月29日 #

------------------------------------
StarDict的作者胡正的简历:

胡正,农历1982.12.5,湖南岳阳人,刚毕业,目前在北京工作。

1998年10月25日,我买了台电脑.
1999年4月,学vb.在网吧上网.
5月,用linux.
6月,xiazi1.0编了出来.
暑假,连续10天每天晚上2点,早上6点,学会并编出了xiazi1.2,之后又编了1.5,消去了许多BUG.
10月,用熟了linux.
11月,认识了开游戏厅兼广告设计的缪俊勇,帮我设计了程序界面,lf2.0出来了.
寒假,电脑被封,接触了汇编,linux下gtk+编程.用c++builder编的lf2.2和能订制界面的lf2.3都未完成.
2000年4月,电脑开封,lf2.009编了出来,不想再升级lf了.开始在linux下用gtk+编友情强档.
5月,1号到4号放假4天,与汤浩开始编网站IT蝎队.
之后就是高三了.一年没玩电脑.
高考完后终于自由了,暑假里就学PHP编了这个网站。然后考到了四川大学信息管理与信息系统系2001级。
大一上学期主要是继续编yqpim这个软件,下学期编reciteword,翻译了gtk2 tutorial.
大二上学期完善reciteword,开发了myicq的gaim插件,下学期开发了StarDict,编了LinQ-gtkmm版.
大三上学期完善了StarDict,推出2.4.2版,星际译王成为了一个完整的词典软件,另外写了本《胡正天才哲学》,下学期写了本《终极真理》 :)
大四上学期主要在休养,再就是课程最后积累得很多了,都忙着上课,这样下学期也过了,这一年半里没有做多少开发,不过推出了StarDict2.4.5版。
因为学分不够,延期一年毕业,因此有了大五,上学期在上课之余继续完善StarDict,加了Windows下的屏幕取词等功能,下学期课程少了,就主要开发StarDict,最后毕业时推出2.4.8版,星际译王作为一个本地的词典软件已经很成熟了。
2006.7月终于顺利从四川大学本科毕业,然后到了北京飞漫公司工作。
2007年一月转到了红帽子公司,全球最好的Linux企业 :)

2001.10.14: 我是一名linuxer,但现在水平还太低,如果有一天能读懂linux内核的源代码,那将是很快乐的事.我的qq: 1706932,不过我很少进windows,就几乎没用了.
2003.12.1: 我的理想是以后成为Linux黑客兼哲学家兼物理学家兼文学家兼.... :)

交友请mailto:huzheng_001@163.com MSN: huzheng_001@hotmail.com Gtalk聊天:huzheng001@gmail.com 手机:13520747434


胡正的个人网站:
http://www.huzheng.org/
StarDict官方网站:
http://stardict.sourceforge.net/cn/index.php
------------------------------------

真的是不得不拜服,强悍哪!景仰!
唐良,胡正……这些家伙都出自川大,莫非川大真占据了巴蜀之地的灵气。反观我自己,怎么能不汗颜呢?每一次当我看到别人的优秀的时候,都不自觉的自叹弗如。但是,仔细想来,我付出了与别人同样的努力吗?没有!所以,我没有权利羡慕别人的优秀。与其临渊羡鱼,不如退而结网。还是踏踏实实地埋下头做好自己的事情罢。
posted @ 10:39 | Feedback (5)

2008年4月23日 #

posted @ 15:10 | Feedback (8)

2008年4月2日 #

1932年洛杉矶奥运会
作为一个即将毕业的大学生
我,刘长春 渴望代表中国远征奥运
在一望无际的大海上
飘荡了21天之后
已经严重脱水虚弱不堪的我
走进了开幕式的现场
面对一个人的国家队
看台上都是陌生的眼神 异样的眼光
比赛的结果可想而知
一家美国报纸发表了一篇评论说
随着一个运动员的失败
整个中国都失败了

第二次是在1936年柏林奥运会
为了筹集比赛的经费
中国代表团不得不在比赛开幕前两个月就提前乘船出发
途径东南亚各国 沿途比赛卖艺
海上颠簸 一路劳顿的中国运动员喘息未定就匆忙参加比赛
结果 只有撑杆跳选手符保卢一个人进入了复赛
可怜的符保卢甚至没有一根属于自己的撑杆
每次比赛都向外国运动员借用
最终 他还是被淘汰了
当时的欧洲甚至刊出了一幅题为 东亚病夫的嘲讽中国人的漫话
画中一群蓄着长辫 身穿长袍马褂 来形容枯槁的中国人
他们站在五环旗下
肩上扛着一个硕大无比的鸭蛋哪
那一刻 我的心哪 碎了
那一刻我终于明白 没有国家的富强 民族的兴旺
何来我们运动员在奥运赛场上的 更高 更快 更强?!
没有世界的认同 全民的参与
就算奖牌挂在了胸前
也难以闪耀奥林匹克梦想的光芒啊

我 憧憬着 期待着 坚信着
总有一天 我们中国人会在五环旗下扬眉吐气 扬眉吐气
总有一天 总有一天


刘长春1909年10月25日-1983年3月25日)是代表中国参加奥林匹克运动会的第一人。1932年,刘长春拒绝代表满洲国,而代表中华民国参加第十届奥运会,这届奥运会在洛杉矶举行。开始因中国国民政府不愿意出钱难以成行,后张学良将军资助8000银圆才成为可能。

为了给刘长春及时报上名,南开大学校长、东北大学校董会董事、全国体育协进会董事张伯苓先生,打紧急电报给奥运会组委会,好不容易才把名报上了。

1932年7月8日上午十时,刘长春从上海启程乘威尔逊总统号邮船去美国参加奥运会。经过整整25天的海上长途航行,于7月29日下午4时抵达洛杉矶。刘长春到达洛杉矶第二天,7月30日,第十届奥运会正式开幕,在隆重的开幕式上,中国代表队排在第8位入场,代表队是临时拼凑成的。

7月31日, 体育比赛正式开始,刘长春参加了当天的百米预赛,被分在第二小组,有6名运动员参加,取头3名。比赛结果,刘长春在日记中写到:“第一名为星卜森,胜余有 4码,成绩 10秒9,余居第5,当在11秒左右。起码时头五六十米在先,约至80米后,被后来者超过,原因毕业考试一个月,航行劳顿,缺少练习所致。”

刘长春在经过3个星期海上漂浮,体力早已大受影响,因此原来报名3个项目,他只参加100米和200米,400米则因体力不支,没有出场比赛。参加的两个项目,都未能晋级。

8月21日,刘长春起程回国,9月16日返抵上海,受到上海市民的热烈欢迎。

刘长春曾在大连工学院(现大连理工大学)任教。

1983年2月底,刘长春因身体不适而住进医院。3月25日,刘长春去世。

刘长春儿子回忆父亲说:“当1981年中国女排夺得世界冠军时,父亲泪流满面,彻夜难眠。父亲的愿望有两个:一是中国人能在奥运会上夺得金奖,让中国的国旗、国歌通过奥林匹克的运动场传向全世界;二是中国有朝一日能举办奥运会。”

而刘长春的两项遗愿,在1984年奥运会,及2001年时确定2008年奥运会北京主办时,分别获得实现。中国第一面奥运金牌的获得地,就是他当年参加奥运的地方—洛杉矶。

http://hi.baidu.com/daniel_ma0615/blog/item/8b9fcb1bc29e801d8718bf06.html
 
posted @ 14:26 | Feedback (3)

Get eth0's IP address in Python

Here's my ifconfig output:
--------------------------
eth0      Link encap:Ethernet  HWaddr 00:10:18:19:8F:51
          inet addr:10.140.2.84  Bcast:10.140.3.255  Mask:255.255.254.0
          inet6 addr: fe80::210:18ff:fe19:8f51/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:146174 errors:0 dropped:0 overruns:0 frame:0
          TX packets:31530 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:65616180 (62.5 MiB)  TX bytes:5045392 (4.8 MiB)
          Interrupt:169
--------------------------

My task is to extract the IP address(10.140.2.84) in Python script.

I finally decide to use following Python code to carry the work:
--------------------------

import os
def get_eth0_real_ip():
    eth0_ip = os.popen("ifconfig eth0 | \
        awk --re-interval '/([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}/{print $2}' - | \
        awk -F \":\" '//{print $2}' -"
).readline()[:-1]
    return eth0_ip

--------------------------  
posted @ 14:13 | Feedback (5)

/*
 * test ANSI C standard variable arguments feature.
 * Rockins Chen<ybc2084@163.com>
 */

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

/*
 * declaration
 */

int my_error(const char *fmt, ...);

/*
 * definition
 */

int my_error(const char *fmt, ...)
{
    int n;
    va_list va;

    va_start(va, fmt);
    n = vprintf(fmt, va);
    va_end(va);

    return (n);
}

/*
 * test bench
 */

int main(void)
{
    char c = 'c';
    short s = (short)'s';
    int i = (int)'i';
    void *p = NULL;
    float f = 3.14152;
    double d = 2.71828183;

    my_error("c = %c, s = %i, i = %i, p = %p, f = %f, d = %lf\n",
              c, s, i, p, f, d);

    return (0);
}


# gcc test_stdarg.c
# ./a.out
c = c, s = 115, i = 105, p = (nil), f = 3.141520, d = 2.718282
 
posted @ 14:10 | Feedback (0)