2009年12月26日星期六

来来,年终总结

又loser样的混了一年,转眼都年过26,情何以堪。回想本年度,我挑我的拣出该记得的几件事:

行程大事

1:毕业毕业
     占据了上半年6个月的大好时光,论文七拼八凑的出来一篇"the red damping wing of Gunn-Peterson trough in the high redshift GRBs/高红移伽马暴中的Gunn-Peterson槽",发表于Sicence China/Physics and Astronomy/English Version上,之后为毕业论文,答辩,好歹磕磕绊绊的过了。从此退出学术界(或许本来就没有进过),从科学家转为IT民工。

2:失败的川藏之行
     毕业后没有直接去工作,而是把自行车抗到成都,准备从川藏到拉萨一行。可惜在出成都的第二天就开始感冒发烧,硬撑骑到泸定,休息好些天,期间挂水打针吃药无数,怎么也好不了,只好折返成都,并被当成猪流感关进小黑屋。失败之旅。

3:转战苏州
     IT民工之旅始于苏州阳承软件,作为一名perl语言爱好者和linux使用者,在公司里担当系统管理员一职。在十一月初,公司两位老资历管理员先后离职,我居然就这样被推上SA team leader岗位。然而对比前后的工作内容,并没有什么两样,在此公司仍然学不到什么知识。

4:单车被盗
     08年骑去西藏的单车在苏州国检大厦车库被盗,由此失去生活唯一户外兴趣爱好。由于对苏州无好感,决定不在此买车,同时为了不至于过于宅男,决定转行徒步,现在背包睡袋帐篷等装备齐全,就等找到一个户外的大本营。

5:获得园区补助
    本来工资算是少得可怜,但靠着中科院的光环,园区居然把人才补助划给于我,2k对于loser来说不是小数目,于是把这件事情也记录在此。尴尬的是十人上报仅我一人获得,或多或少担心有人拿有色眼镜看我。

生活感情

宅男化严重,朋友依然少,越来越不喜欢深交,不喜欢管人闲事和被管闲事。当多人说我们关系不错而我认为只是泛泛之交时,心惶恐万分。

依然没有mm,不喜欢深交是原因之一,其次是依然搞不清恋爱是何种感觉。年中曾尝试追求一似有好感却不确定的mm,不出意料失败,好在很快结束,两人见面还不至尴尬。前些日子某女苦心婆劝让我挖一墙角,啼笑皆非情何以堪情,遂义正严词予以拒绝。

挨踢技能

Perl水平有长进,除xs外,料已经不需再专门花时间看perl语法。

C水平长进,仍需参考语法书

Linux水平无长进,当前知识足以应付工作所需,心思也不在于此

英语水平略有长进


总结:
能养活自己,钱似乎也够,但不是我想要的生活。

#end

Posted via email from 单行道

2009年12月22日星期二

perlxstut: 从Net::LDAPxs学perl xs

Net::LDAPxs是Pan YU正在开发的一个连接openldap c api的package,根据Devel::NYTProf的测试结果,能够显著提高Net::LDAP的性能。刚刚出到0.04版,是很好的学习ldap和perl xs写法的资料。我从0.03版本开始关注这个包的开发,并给作者提交了几个bug,很欣喜的看到在0.04版中这些bug都得到了修正。但0.04版似乎bug更严重,make test会返回失败,具体原因还有待查看。

昨天晚上阅读illguts-0.18,发现perl5.10内部数据结构的表示较先前版本有了很大的改变,但好在perl开发者们注意了perl5的向后兼容性,在先前版本里面的xs宏基本都能够继续使用,准备花点时间把illguts看完。

Posted via email from 单行道

2009年12月21日星期一

perlxstut: perl内部数据类型

XS variable type Table

Name      variable type   C structure     Perl function
SvNULL   SVt_NULL        None            undef
SvIV        SVt_IV             xpviv           Integer
SvNV       SVt_NV           xpvnv           Floating-point number
SvRV       SVt_RV           xrv             Reference or undef
SvPVIV    SVt_PVIV        xpviv or xpvuv  String and/or number
SvPVNV   SVt_PVNV      xpvnv           Float, string and/or integer
SvPVMG  SVt_PVMG      xpvmg           Magic
SvPVAV   SVt_PVAV      xpvav           Array
SvPVHV   SVt_PVHV      xpvhv           Hash
SvPVGV   SVt_PVGV      xpvgv           Glob


所有的类型都是从SvNULL(也可直接成为SV)继承过来,一个SvNULL结构如下

ANY是指向其他结构的一个指针,从SvNULL继承过来的其他类型主要就是靠这个指针来获得数据。

REFCNT是perl变量的一个重要属性,创建一个变量时,引用计数为1。为这个变量创建一个引用,则计数增加1。当引用计数为0时,perl即认为这个变量可以被释放内存。Devel::Peek可以用来查看一个变量的引用计数。
            perl -MDevel::Peek -e 'my $a="a"; Dump $a;$b=\$a;Dump $a';
        SV = PV(0x863f6ec) at 0x8642964
            REFCNT = 1
            FLAGS = (PADMY,POK,pPOK)
            PV = 0x8652adc "a"\0
            CUR = 1
            LEN = 4
        SV = PV(0x863f6ec) at 0x8642964
            REFCNT = 2
            FLAGS = (PADMY,POK,pPOK)
            PV = 0x8652adc "a"\0
            CUR = 1
            LEN = 4

type字段包含有sv的类型,其值为上表中之一
FLAGS 字段有 24 个标志位,它将说明这个对象的各个字段应该怎样解释,还包含其它状态信息。一些标志只是用于优化,避免解除许多层的指针引用,结果发现信息不在那里,如下所示,具体含义见cpan illguts

给出几个典型的SV类型:
SvRV:

SvPVNV:

SvPVMG:

可以看到perl里面的复杂数据对象都是在SvNull上面添加其他数据结构而来的。继承关系如下:

SvPVMG: 在perl里面,SvPVMG被成为"magic variable",当这个变量被访问时,一些函数会被触发。比如tie变量,%SIG,被bless过的类变量等。

词法变量和包变量:
Perl使用namespace来区分不同包的变量,包变量保存在symbol table hash(stash)里面,默认的namespace是main::,每个namespace都由一个hash组成,hash的键值是变量的名字,而hash的值就是一个GV,其中包含所有共享这个变量名的变量值。
词法变量是生存期与代码块相关的变量。每个CV(code block)包含一个叫做padlist的数组引用,这个数组的第一个entry包含所有词法变量,第二个是其对应的值,还有第三个是为了解决递归代码快所使用的。

更多详尽信息,参见perlguts,perlapi,illguts.

Posted via email from 单行道

2009年12月19日星期六

perlxstut: 用xs创建perl对象

Click here to download:
TObj-0.01.tar.gz (44 KB)

=head1 NAME
 
    使用xs创建perl对象

=head1 AUTHOR

    woosley.xu

=head2  从xs创建类

    void
    new(class)
            char* class
        PREINIT:
            HV* hash;
            SV* obj;
        PPCODE:
            hash = newHV();
            hv_store(hash,"author",6,newSVpv("woosley",0),0);
            obj = newRV_noinc((SV *)hash);
            sv_bless(obj,gv_stashpv("TObj",1));
            XPUSHs(sv_2mortal(obj));

在xs中,创建一个类也和perl中建立类类似,使用相当于bless的sv_bless,其接受的第一个参数是被bless的SV,第二个参数是HV* stash,它可以通过gv_stashpv将一个字符串转化为HV获得。

上面例子中将一个hash bless成名为TObj的类,hash通过newHV创建,并使用hv_store将"author" => "woosley"键值对存入。由于sv_bless需要一个sv,所以将hash通过newRV_noinc转换成为一个RV,在这里noinc意味着不给RV增加引用数,目的是为了防止内存泄漏。

XPUSHs将obj push到perl返回值堆栈,sv_2mortal表明在xs退出后obj会自动清空。

    void
    hello_xs(class)
            HV* class
        PREINIT:
            char* author;
            SV** ve;
        CODE:
            if (ve = hv_fetch(class, "author", 6, FALSE)){
                author = (char *)SvPV_nolen(*ve);
            }
            else {
                Perl_croak(aTHX_"no author found for you");
            }
           
            printf("greet %s: hello from xs\n", author);

这是一个TObj类中的方法,使用$obj->hello_xs传入的第一个参数为$obj,它依然是一个HV,可以从里面使用hv_fetch获得其键值对,使用SvPV_nolen将返回值转化为PV,再强制转化为需要的char*,如果没有author键,则使用Perl_croak打印错误。

=cut

Posted via email from 单行道

2009年12月18日星期五

perlxstut: 从perl给c传递数组参数

Click here to download:
Array-0.01.tar.gz (44 KB)

=head1 NAME

    如何从perl中将数组传入xs

=head1 Prework
   
    h2xs -A -n Array


=head2 从perl给c传递数组

    typedef int intArray;
    int sum(int count, intArray * array); //c原型

    intArray * T_ARRAY  // typemap
   
    int sum_as_list(array, ...)
        intArray * array
      CODE:
        RETVAL = sum(ix_array, array);
      OUTPUT:
        RETVAL
      CLEANUP:
        Safefree(array)

从perl中传递数组给c需要经过perl预定义的T_ARRAY的处理, T_ARRAY定义在perl的标准typemap中。T_ARRAY会生成一个ix_${var}的变量来表示传入参数的个数,比如在上面的例子中,生成ix_array。$var为传入参数和传到c中的参数名

在c中当然需要有一个保存传入参数的数组,T_ARRAY假设存在一个叫做$ntype(这里为intAarryPtr)的函数,这个函数返回一个指向内存的指针,T_ARRAY使用这个指针来保存参数列表,自然的,这个指针需要在c函数返回后被释放,不然便会造成内存泄漏。这就是上面例子中CLEANUP的作用。当然我们也可以自己定义,在$ntype中添加释放内存的操作。比如

!!!! 改正,perl不会给我们自动提供实现提供内存的函数,这些还得我们自己定义.
  
    //这是默认实现
    intArray * intArrayPtr(int num){
        intArray * array;
        New(0,array, num, intArray);
        return array
    }

    //无须cleanup的实现版本
    void * intArrayPtr(int num){
        SV * mortal;
        mortal = sv_2mortal(NEWSV(0,num * sizeof(intArray)));
        return SvPVX(mortal);
    }
   

c里面是如何决定array的类型的?答案是从$ntype中猜测,perl把ntype中的array和ptr字段去除,剩下的字段就是数组的类型。在这里,把intArrayPtr去掉便成了int

标准的T_ARRAY typemap可以在/usr/lib/perl5/5.10/ExtUtils/typemap中找到


=head2 给c传递数组引用

    int
    sum_as_ref(avref)
            AV * avref
        PREINIT:
            int len;
            int i;
            SV ** elem;
            intArray * array;
        CODE:
            len = av_len(avref) + 1;
            array = intArrayPtr(len);
            for(i = 0; i<len; i++){
                elem = av_fetch(avref, i, 0);
                if(elem == NULL){
                    array[i] = 0;
                }
                else{
                    array[i] = SvIV(*elem);
                }
            }
            RETVAL = sum(len, array);
        OUTPUT:
            RETVAL

在这里av_fetch返回的是一个指向sv的引用的引用,其第三个参数是bool lvalue,当这个参数被设置时,如果数组不够大,perl会自动根据第二个参数index扩充数组。


=head2 使用pack给c传递参数

    int
    sum_as_packed(packed)
            SV * packed
        PREINIT:
            int len;
            intArray * array;
        CODE:
            array = (intArray *) SvPV_nolen(packed);
            len = SvCUR(packed)/sizeof(intArray);
            RETVAL = sum(len, array);
        OUTPUT:
            RETVAL
   
    int
    sum_as_packed2(len, packed)
            int len
            char * packed
        CODE:
            RETVAL = sum(len,(intArray *)packed);
        OUTPUT:
            RETVAL

SvPV无非是从SV返回一个PV,而SvCUR返回的是Sv的大小。

=cut

Posted via email from 单行道

2009年12月17日星期四

阿里巴巴送别曲

To somebody that may mean something to me.

阿里巴巴是个快乐的青年
阿里巴巴是个快乐的青年

阿里巴巴从来都是快乐的青年,他大碗喝酒,大块吃肉,和乡亲们扯淡,光着膀子在大山里吆喝,不管胯下是马是牛还是猪,他都能找到骑士般的快乐。阿里巴巴觉得生活就应该简简单单,做想做的事而不被一切羁绊,所以他永远都在英雄气短里面徜徉,“嘿,臭小子,今天掰腕子居然输给你了,明天再来!“
阿里巴巴偶尔也会无聊,特别在夜深人静的时候,于是突然间他用清高的目光看着这周围的一切,人们在觥筹交错间称兄道弟面红脖子粗,那是凡夫俗子才会散发的霉气,凡夫俗子们每天都做着吃喝拉撒这些无聊的事情。所以他用二进制来思考,觉得如果写一个算法,编一个程序,这些行动后面的下一步他都能知道得一清二楚,那些简单的生活下面,是空洞的深渊,是被冻僵后刀砍火烧都毫无感觉的麻木不仁。阿里巴巴开始不相信交流,在他每天扯淡的笑面下面,是对人与人关系的严重不信任,他把心藏的严严实实的,开始麻木不仁的过这日子,他也会感觉到痛苦,需要的矛和不相信而逃避的盾冲突的痛苦 。
阿里巴巴用折磨自己的精神来剔除这些思想的痛苦,他沉浸于自己的黑暗而罪恶的世界里,幻想天使被烧焦了羽翼,流着脓水的恶魔,尸骨碎块拼凑起来的恶魔占领这整个天堂,平凡的人们在绝望的惨叫。
日子久了,阿里巴巴已经接受了自己的麻木不仁,他离开了家乡,他离开了城市,他离开了形形色色的人群,在他流落过的地方,你几乎看不到他来过的痕迹,他总是把自己的身后打扫得干干净净,把痕迹交给陌生人保管。渐渐的,阿里巴巴忘了是逃避让自己麻木,还是麻木让自己不需要再逃避。来来往往,皆是过客,阿里巴巴对自己说。
阿里巴巴也没有相信过,他的坚硬的壳也有被打开的一刻。这书还是这平凡的书,这猪还是只平凡的猪,但在这叽叽喳喳的吵闹声中,他居然发现这小麻雀很是可爱。阿里巴巴觉得自己好久没有这么开心的扯淡过了,他回想刚刚扯淡的一幕,嘴角还会漾出一丝笑意。有时候他和那只小麻雀互相干瞪眼,心理倒抽一口凉气,完了这小麻雀看起来有点意思,于是阿里巴巴最后只好仰天大笑哈哈而过,因为他觉得很惶恐,我阿里巴巴不再麻木不仁了么,十年坚冰,可不能就这么一刻倾破。
然而麻雀也需要去南方过冬,阿里巴巴有时淡淡难过,有时心里紧缩如石,他在想多少年没有这种感觉了?于是阿里巴巴歪着头想了想,在笔记本上写了这么几句话:

冬天深了
云雀自然南飞
掠过秋实后的村庄
衔一支饱满的稻穗
和天边的夕阳对话

庄稼汉说
过冬去吧
稻穗尽管带走
我不差钱
该得到的业已得到
该丧失的早已丧失


不要惊醒
那些田埂上的往事
扔泥巴的日子
就这么一去不复返了

抽一杆旱烟
在老槐树下坐定吧
任风霜雨露打湿肩头
看尽起的西风
将飞过的痕迹
慢慢抚平

Posted via email from 单行道

2009年12月5日星期六

那些耳熟人详的人和事

李开复: 李开复怎么能积攒上他现在这一身光环的,我百思不得其解。从面相以及气质来看,尖尖的脸和软塌塌的笑,这个人都给人一种极其娘们的感觉。如果说他有本事,那也只有在他新书里吹嘘的:4年获得某某大学博士学位而一般人要六年了。如果作为一个计算机科学的工作者,前期的他尚有资本在大千世界里面炫耀一番,然而说他作为打工皇帝在业绩上的成效,鲜有听闻。首先不知道替微软做了什么,在google的这几年,也被baidu海揍得鼻青脸肿,其经营水平也就比那种“不求有功但求无过”的典型差一点点,把一个稍微有点智商的人放到这职位上,都不会比他差。我们看到的,大部分是此人借着高职位的平台,大量利用着媒体,凭着三寸不烂之舌,左演讲右出书,忽悠着千万青年。在聚光灯下翻手为云覆手为雨,这倒是他的本事,和李敖那斯有颇多相似之处,但这并不值得让人把他当为偶像。最近听说开了个创新工厂,瞟了一眼那个宣传海报,伊完美的维持了他在我心中的贱人形象。

张朝阳/马云/丁磊/任中非
这些搞it和互联网的,似乎看起来都差不多,但华为老总应该比其他人高了不止一点点。可以说,华为是中国唯一一个有气质的企业,而任正非在华为改革过程中表现出来的魄力和眼光都让人佩服不已。马云是一个纯粹的机会主义商人,而丁磊和张朝阳都在门户网上干得不错。

韩寒
n多年前韩寒刚出道的时候,仗着能写几个字就口出狂言,到现在,这小子狂性收敛了,酸辣劲却是上来不少,在博客上针砭时弊,有人说他即将成为下一个鲁迅。我从没去他blog上看过,反正水木上一直会转贴他的文章。还早,真的。韩寒的文章批评是上去了,但深度却不见得有,很多时候他只是以尖刻的口吻配以纯熟的文字讽刺社会而已,罗列事实陈述观点的水平的确很高,我不能同意得更多,但仅此而已,因为即使不看他的文章,这些观点就已经存在于我的脑海中了。

linux vs windows
从来不是GNU/linux fan,从来不是。所以如果某些人从free的角度来说linux比windows好,我倒认为Copyright是相当重要的,辛辛苦苦的劳动成果理应获得回报。当然我一直怀着感激之心在用linux,这么多工具都能免费发布,赞,不容易。大牛们业余时间能写出来的东西免费发布,我们这种底层阶级饭都吃不饱,还提什么copyleft?
windows比linux易用么?绝对的,把两个操作系统放在从没学过电脑的人的面前,直接点图标的必然比先要调个命令行出来的容易多了。这不仅仅是所谓由于我们先用windows而形成的习惯问题。windows在使用上和*nix相比,垃圾的权限管理系统造成病毒泛滥或许是最大的缺点了。最近linus给windows7竖大拇指了,*nixer无厘头的攻击windows的事情,实在让人感觉哑然失笑。

Posted via email from 单行道

2009年12月4日星期五

回归费城

妈呀,天下掉下了石头,辛好没砸头上

即使爷们如AI,在回到费城的新闻发布会上也泪流满面。我又何必成天练着粘衣十八跌的功夫,把一米之内的异物弹出十米开外?


Posted via email from 单行道

2009年11月22日星期日

我和子弹

一颗子弹
在我身体里
停留片刻
我活蹦乱跳,烦劳全无

我日出而作
日落而息
日光没有过错
我只请求
在骨头上弹奏的歌曲

日光应该是
埋葬我的坟墓
我却在黑夜里奄奄一息
现在
我活蹦乱跳,烦恼全无
在子弹停留我身体之中
片刻之后

Posted via email from 单行道

2009年11月16日星期一

离歌

有两猪头走猪,深夜十分钟,以纪

我们相互推搡着
走向悬崖的深处
该向前的
你请向前
你的骨头掉落黑鹰的爪上
你的腐肉能长出小花

我只是尘世的苦行僧
途经千万次离去
光秃秃的脚板早已不知荆棘的刺痛
遇见流连的世人
我仅能摊开手掌
送他以幽香的舍利

Posted via email from 单行道

2009年11月9日星期一

PJob on going....

POE is greate, Moose is great
PJob is on going. It will be  a job server and client package which is easy to deploy jobs running on each server. This item has been on my TO-DO-LIST for a long time, not until today I just started to write some simple code. As usual, the source code will be  located at github. Hope I can get enough time  focusing on this module.
I am definitely not very very familiar with this two modules, so any help is very very welcome.

Posted via email from 单行道

2009年11月8日星期日

哈哈哈

哈哈哈
有的人皱着眉头,数着额头上的皱褶,絮絮叨叨的说着似乎天下人都应该关心或care的事情;
有些人左顾右盼,总希望油光铮亮的头发能够吸引至少苍蝇,当苍蝇蜂拥而至的时候却厌恶的将之赶走。

十年前,他们的眉宇间都有锐气,手随心动而一往直前,带着不可一世的骄傲不走前人的路。
在而今,每人都龟缩于蜗牛一样的壳里,把自己包裹得像木乃伊,永远也不会露出真面目。偶尔探头探脑,那也只是附庸风雅的开始。

Posted via email from 单行道

2009年10月20日星期二

阳顶天的故事

 

阳顶天的故事(注定太监)

放假期间无聊之作

 

一代大侠阳顶天,生辰年月不详,于泰武二十五年召开新闻发布会,宣布退隐江湖,从此杳无音讯。无论路边社旧话社等新闻媒体和一众狗仔队们如何刺探江湖消息,阳大侠再也未曾出现于各报纸和新闻的头条。这着实让阳大侠庞大的粉丝团们伤心不以,早已芳心暗许的少女们的自杀殉情事件也时有发生。

江湖里急需一位实力偶像,为江湖外面的芸芸众生提供劲爆的江湖新闻。发行量最大的山寨晚报,最近也陷入了报纸积压的情况,因为实在是找不到足够吸引白领眼球的江湖新闻了。

其实也不是江湖不够努力,看看当前山寨晚报的内容,今年在黑风寨的山门前倒下的青年游侠已经增长到了数十个。但这个一跃成名的机会,没有人愿意放过,所以排队挑战舞阳斋主的小伙子们还是络绎不绝。但又根据山寨晚报的观察,这些所谓的“才俊”能给大众的,恐怕只能是失望了。毕竟,江湖重现于文明社会这数十年间,也就出现了一个像阳顶天这样惊才绝艳的侠客,而且带来一个从贫寒一文不名到备受万众瞩目的奋斗故事。据阳大侠亲口所说,在一举击败黑风寨主舞阳的十年前,他是一个文明社会的街头小混混,因抢人钱财被警察逮到并海扁,遂萌生了不如到江湖中过“刀口讨生活”的想法。虽然危险点,白领和少爷们喜欢跑到这里来过“侠客”瘾,但或许能够拉帮结派成为绿林大盗呢。只是没想到刚到江湖里面的第一遭生意就被已有的地头蛇们来了个黑吃黑,于是阳大侠决定以后当个大侠。他改姓埋名,从武当练到青城,从少林练到天山,融汇贯通近十年,凭借过人天资和勤学苦练,终于在十年后一举击败舞阳寨主,成为江湖十数年间第一个被文明世界所册封的“大侠”。当然这个故事从来没有被证明,武当少林青城天山,所有帮派都不记得有这么个出色的弟子,但又争着说阳顶天在这里呆过,这才出现了有阳顶天的地方,就有争议和话题的山寨晚报。

所谓江湖,不过是文明过度发达后人们穷极无聊的产物罢了。在这个年代,机器帮所有人做了所有的一切,发发指令构成了生活的主要内容,一根筋的人们在极度空虚的情况下,开始互相斗殴发泄原始欲望,然而联邦政府的机器人都没有能够帮人“砍人”的能力,所以各种上古功夫被发掘出来。一时间,“降龙十八掌”,“小李飞刀”,“九阴白骨爪”在口水和鲜血横飞的烟尘中层出不穷,各式龙门客栈,有间客栈,匹马而来绝尘而去的游侠,青山不改,绿水长流的切口流传无比,直让人瞠目结舌,这难道真是泰武世纪么?

话说堵不如疏,联邦政府如此英明,很快做出了一个决定,在广大的中原无人地区建立一个与文明隔离的“江湖”。想怀旧?欢迎进入江湖,然后再也别回来。

经过几十年的发展,江湖却是越来越繁荣了。刚开始进去的还只是一些罪犯阿,流浪汉之类,然而不知是对未知的吸引还是如何,越来越多的联盟公民也开始放弃衣着光鲜的生活而进入江湖,开始仗剑流浪的生活。在阳顶天之前,黑风寨舞阳寨主毫无疑问是最成功的。伊祖上的祖上据说是神秘的铁匠,有个时髦的洋外号叫“杜兰特”。但在这个世纪,舞阳的本事似乎没有用武之地。依仗一生铁布衫横练功夫,舞阳在江湖里面简直也是横着走,要风得风要雨得雨,并成立了江湖实力最为雄厚的黑风寨。更过分的是,他还搞到了和江湖外面的文明世界的联系方式,自封为文明世界常驻江湖外交大使,并放出消息曰文明世界给江湖有每年一个的“大侠”名额,交上报名费,挑战舞阳寨主成功,除了获得“江湖大侠”的称号外,还可获得文明世界过来的大批奖金。而阳大侠,是这十多年来唯一一位挑战成功的人物。

据传当年阳顶天耗时两天,才爬过1999级石梯,气喘吁吁站到黑风寨山寨门口。守山门的小们根本看不起这个看起来文质彬彬,手无缚鸡之力的书生样青年,不让阳顶天过山门。但见阳大侠微微一笑,指着山门旁边的大树悠悠的说:起风了,这棵大树要掉落六片叶子。小  们正要嘲笑,拿来什么疯子之类。一阵清风卷过,树影摇弋中,五片树叶轻轻飘落在小罗咯的脚前。阳大侠又轻抚小罗咯的后脑勺,从他的帽子顶上扫落第六片树叶,直把小罗录们惊得目瞪口呆,六伏天里出了一生冷汗。阳顶天就这样从容的过了山门,径直到养心殿下舞阳寨主座椅前,轻轻地对舞阳说了句:把外人都赶出去,我要挑战你。众手下们在养心殿外守着,此时天外风云也如同变色,直听得殿内似有风雷声起,间或有闪电从虚空劈中屋顶,数小时后,养心殿大门打开,阳顶天如他进门一样,轻松从容的走了出来,脸不红气不喘,后面跟着身上黄袍破烂成一条条,衣不蔽体的舞阳寨主。舞阳第二天随即召开江湖大会,宣布阳顶天为江湖唯一大侠,只要阳顶天在一天,舞阳再也不替文明世界册封大侠称号。

第一代大侠的诞生自然也惊动了文明世界的高层,联盟特派专员和记者进入江湖,联系阳顶天要获得关于他的第一手资料。阳大侠听罢来意后当即颇为不悦,留下一句:“这个八卦的世界,与我无关”,断然拂袖而去。然而仅此短短的一个照面,其音容气度已经深深的折服了采访者。出得江湖,记者在当时的时代周刊上放出了阳大侠的高清无码偷拍照,当时即有众多少女为其忧郁的眼神,稀疏的胡茬而着迷不以,更别提那。。。。。。

Posted via email from 单行道

2009年10月2日星期五

Get your TOR to work

伟大的GFW,它已经无孔不入的渗入我等挨踢民工生活的每一方面.在网页上connect reset/site take too long to respond的每一个字眼后面,你都能感觉到GFW带着泛着寒光的獠牙的阴险的冷笑。

值此天朝六十耳顺之际,为献礼,GFW发功给了我等一惯的翻墙工具tor一沉重打击,中继公共目录几乎全部被封。

好在我们还有网桥

1:给bridge@torproject.org发一封主题和内容都为get bridges的邮件,很快就能收到一封好友网桥列表的回信
2:更改/etc/tor/torrc,添加
    UseBridges 1
    #收到的网桥列表
   bridge 77.18.67.124:443
   ..........

Posted via email from 单行道

2009年9月28日星期一

Recently......

 1:昨天老爸打电话,姐生了个胖小子,剖腹产,联想前些日子一个同事也成功晋级成为妈妈,女人们对生孩子这事情果然乐此不疲,完全觉得为了这辈子以后遭罪,无比痛苦的从自己身上摘下一大团肉是一个很享受的过程。不过无论如何,我要为他们高兴,因为他们都很高兴。
 2:今天去理发了,十五块是我这辈子理发用钱最多的。理发师在我头上拿个刀子挥舞一阵后,我感觉镜子里面的人实在有点惨不忍睹,于是让他给我推成一个和尚头,这下至少三个月不用进理发店。
 3:上周和某些人去户外露营了一把,徽杭古道+清凉峰,感觉强度在可接受的范围内,以后可能会多玩这一方面,丢掉自行车?不至于。

Posted via email from 单行道

2009年9月11日星期五

诗两首

《过程》

   林白

 
一月你还没有出现

 二月你睡在隔壁

 三月下起了大雨

 四月里遍地蔷薇

 五月我们对面坐着,犹如梦中,就这样六月到了

 六月里青草盛开,处处芬芳

 七月,悲喜交加,麦浪翻滚如同草地,直到天涯

 八月就是八月

 八月我守口如瓶,八月里我是瓶中的水,你是青天的云

 九月和十月,是两只眼睛,装满了大海,你在海上,我在海下

 十一月尚未到来

 透过它的窗口,我望见了十二月,十二月大雪弥漫

  《爱之后的爱》

 
〔圣卢西亚〕德瑞克・沃尔科特


总有那么一天,

你会满心欢喜地

在你自己的门前,

自己的镜中,欢迎你的到来,

彼此微笑致意,

并且说:这儿请坐;请吃。

 

你会重新爱上这个曾经是你的陌生人。

给他酒喝,给他饭吃。把你的心

还给它自己,还给这个爱了你一生,

被你因别人而忽视

却一直用心记着你的陌生人。

 

把你的情书从架上拿下来,

还有那些照片、绝望的小纸条,

从镜中揭下你自己的影子。

坐下来。享用你的一生。

(阿九 译)

Posted via email from 单行道

2009年8月27日星期四

无自虐,不生活-----一天@西山

1:我的确很赞成“无自虐不生活”。
2:自行车长途很适合自虐,当你定下目标,在半路上发现这趟旅程实在太过自虐的时候,回头不但丢人,而且已经晚了。

今天便是这种情况,我定下目标到西山一游,早九点出发,30多公里后发现天气实在太热,一路上骑行中风吹过来如热浪,停下来便汗出如浆,整个人就像刚从水中捞出来一样。在小商店买水后打开地图一看,到太湖边上仅十多公里,于是决定继续前行。从湖边去西山的也有十几公里,这一段路,包括在西山里面,极度不爽的是完全没有任何树荫,也就几乎没有任何可以停下来歇脚的地方。我从西山门口往里5,6,7,8公里,也找不到有什么好看的东西,都是光秃秃的大马路,一点让人停车下马欣赏风景的欲望都没有,所以我也没有像计划中的一样环岛一周,随便转转就往回走了。没有拍照,实在停下来在太阳下面太热。
到家5点多,码表显示109.61km,没上110让人很郁闷。这一趟下来最大的收获就是暴晒在太阳下的手臂又黑了不少,那条黑白分界线愈加明显,同时原来腿上没有的分界线也出现了,恩,现在我叫“黑白无常”。不过鉴于自己看着自己的手也觉得恶心,我决定以后减少太阳下出行的次数。

耗水手记:
自带一壶
出门买可乐一
30公里出买水一瓶,红牛一罐
西山前方买脉动一瓶
西山里面买红茶一瓶
湖边买哇哈哈啥啥啥一瓶
回程路上买可乐一瓶
再回程买水一瓶
看起来也不多?

回来的好消息是关门的小饭馆重新开业了,哈哈哈,救了我等不会做饭人的命阿

Posted via email from 单行道

2009年8月21日星期五

我不知道的,你不知道的

为何你总是惊奇的发问?
小麦的肌肤在哪里
河流把我们冲向何处?
我不知道的
一束青花
伶仃般的脚踝
被河流冲向何处

曾经
我独自打扫天空的灰尘
扫落六月的梅雨
和七月悠扬的琴声

如今
我站在明镜般的天阶下
你不知道的
看流星带着惊奇划过
一如你昨日的眼睛

Posted via email from 单行道

2009年8月16日星期日

苏州的生活伊始

      我不得不说的是果然有人对我的车有爱。我把车放在小区楼下的车库里,上了个钢筋锁,每次上楼还把坐管取下,剩下光秃秃的钢管目的就是为了打消某些人心中不和谐的小恶念。然而今天下楼去调后拨和给链条上油,却蓦然发现后轮已经被拆了,但这个三把手看来懂得快拆而不懂得如何放开刹车,以至于V刹将钢圈卡住车轮无法取出,所以我还有幸能看到这辆快两年了的破车。
      说到调后拨,以前在南京的时候都是图方便偷懒直接扔给车行的人去调整,但现在到了苏州,人生地不熟,去车行调车也可能要交银子。于是在网上查了点资料,发现很简单的几步就可以把后拨调好了,具体方法在此不表。
      终于把车调好,天气不热却也一身汗,看看表都下午三点,赶紧出门逛逛。
      上个周末是出门往北走,途中经过火车站虎丘寒山室木渎古镇,不得不说,其失望为何如。在几个所谓景点的外面观望了一下,无非是一个塔一些建筑而已,实在兴趣了了。木渎更别提了,有条巷子有些居民楼就配叫做古镇?苏州老城外围的工地风格也让人感到极不舒服。
      于是我一路向南,渐到吴中小镇,随着感觉骑行,直到眼前出现了东吴南路。这确实是吓我一跳,因为前几天一个喜欢走路的同事说他走了这条路,我看了地图是南北走向的,我自认一路向南居然方向感会差到向北了都不知道。再抬头一看东山木渎的牌子出现在了眼前,地图上有环湖大道,应该是个不错的去处。于是我就骑阿骑,顺着一条老长的吴中大道。这条路路况极好,宽大平整而且车不多,有意思的是我去的时候感觉是一路小下坡,但回程的时候居然还是感觉一路小下坡。大约在4点半的时候,到了太湖的边上。
       在自然环境里的感觉比在人工景点的要好太多了,我在太湖边上找了块草坪,躺下休息,晒着太阳,凉风也不错,惬意无比,懒洋洋的,而且能放松一路骑行下来的疲惫,于是我就睡着了,一直到5点半。之后又在湖边骑行了一段距离,有图为证,我很无耻的把车挂到了人家的碉堡上面(见下)。六点多,一路飚车回家,到家8点,途中差点迷路。
       在我写这段文字的时候,中国男篮正在被伊朗cdth中,十多年了,没了爷们姚明,这崩溃还是躲不过,虽然我爱这土地,但我不得不说,这真是一个神奇的国度(当然是这样那样的事情连接起来的结论)。
       这段骑行算是把我对苏州的差印象冲淡了一点。园区给我的印象是及其不好的,见过的最乱的交通,见过的居民设施配套最不完整的小区,在这里工作生活真是不那么happy。另外要说的是,尽管我才工作不过一个月,朝九晚五(虽然我们工作时间不是这样)乏味的生活节奏和工作内容让我非常想念长途骑行了,或许某一天,我真会突然辞职,背包或骑车消失在人海中。


See and download the full gallery on posterous

Posted via email from 单行道

2009年8月11日星期二

To the first Shock of my life

Mind is leaving
Body is breaking
Arms are at Party
I'm on the lotty's

Blood evaporating
Smile vanishing
Cat is singing
Fire earthworm dancing

What I wanna say is that They Don't really CAre about Us.

Posted via email from redicaps's posterous

Dist::Zilla::Plugin::CopyTo

      Well, two days before I decided to rewirte Perl-Net-Douban, tried to use Moose and XML::Atom instead of Class::Accessor and XML::LibXML
When I started to use Dist::Zilla to build the module, I found it is a little inconvenient to use 'dzil build' for build and update my own code repository(It is a git repository).
       So I spent a long time in digging into Dist::Zilla trying to write a plugin for it, finally it came out with Dist::Zilla::Plugin::CopyTo.  I have just uploaded it to CPAN, so it will be shown on search.cpan.org soon.

Posted via email from redicaps's posterous

2009年8月7日星期五

texlive 中文how-to(zhspacing version)

1:  texlive2008 installation
      ignore
2:   install zhspacing
      i,  go to zhspacing google code page Download the latest package
      ii, extra the content of the package to /usr/local/texlive/texmf-local/tex/xelatex/zhspacing
3:   zhspacing config
      under the directory zhspacing,  there are two files: zhfont.sty/zhspacing.sty need to be taken care of.
              

\newfontfamilywithslant\zhrmfont{SimSun}
\newfontfamilywithslant\zhsffont{SimHei}
\newfontfamilywithslant\zhttfont{FangSong_GB2312}
\else
\newfontfamilywithslantandbold\zhrmfont{SimSun}{SimHei}
\newfontfamilywithslant\zhsffont{SimHei}
\newfontfamilywithslantandbold\zhttfont{FangSong_GB2312}{KaiTi_GB2312}
 
   You should change SimSun to whatever Chinese font you have in the computer(use 'fc-list' to check what you have). Personally, I found WenQuanYi Mico Hei Light is such a good look fonts, strongly recommend it.

3: using zhspacing

\documentclass[11pt,a4paper]{article}                                                     
\usepackage{fontspec,xltxtra,xunicode}    % 这里使用 xetex 相应的宏包   
\usepackage{zhfont}                       % 这里调用 zhfont.sty                           
\zhspacing                                                                                                        
\setzhmainfont{WenQuanYi Micro Hei Light}%这里设置中文粗体和普通字体
\setmainfont{Verdana}           %这里设置英文衬线字体                                    
\setmonofont{WenQuanYi Micro Hei Light}                     %英文等宽字体    
%\setsansfont{Trebuchet MS}               %英文无衬线字体                            
\begin{document}                                                                                           
Cowards die many times before their deaths.\\                                             
        懦夫在未死之前,已身历多次死亡的恐怖了。                                                 
\end{document}                                                                                              

Here is the pdf output

Posted via email from redicaps's posterous

2009年7月29日星期三

我对南京有爱阿

回一趟南京,就十万分不想回苏州,特别买火车票之后在玄武湖前面发呆,看着波光粼粼倒映城市,就觉得南京是多么的好。
无论如何
该走还得走

See and download the full gallery on posterous

Posted via email from redicaps's posterous

2009年7月18日星期六

毕业-何以成虎?

虎的脚步从山涧走过

这时间来了

惊骇的风没法阻挡

惊骇的风没法阻挡

虎大踏步的走过

 

何以成虎?

彩虹和火山低声怒吼

               ————雷声隆隆

滚烫岩石烧裂了皮肤

              ————太阳光辉

 

何以成虎?

丛林边际是草原入口

那里有奇怪的狗尾草

长长脖子的老学究

和花皮肤的野猫

 

 

Posted via web from redicaps's posterous

2009年7月12日星期日

The End of My Student Life

尽管不情愿,不高兴,不乐意,不希望,但我的学生时代结束了。

Posted via email from redicaps's posterous

2009年7月7日星期二

blog搬家

鉴于blogspot被封,tor发现也运转不正常,决定把blog搬到cyclelifealone.posterous.com。此网站提供autopost到blogspot的功能,所以blogspot还能同步更新,不过如果post有改动的话,会出现重复post的情况,是为不爽。

Posted via web from redicaps's posterous

Ooops, I made a mistake

I never have to request a namespace at pause.cpan.org. Just uploading module source to this site, and this module will automatically shows up at search.cpan.org. So we have Class::Accessor::WithDefault

Posted via web from redicaps's posterous

2009年7月6日星期一

object-oriented coding in perl

Well, even if I don't want to admit, writing object-oriented code in Perl is painful without using any modules. Function "Bless" provides basic object ability, but when it comes to other features just like "inside-out object, private methods, easy-coding accessors", bless is not enough.

That's why there are so many modules on CPAN providing object-oriented feature for Perl. Class::InsideOut, Object::InsideOut,Class::Struct, Class::Methodmaker, Class::Generate etc.. Class::Accessor may be the simplest and easiest module for "easy-coding accessors". However, when I was writing my module"Net::Douban", I found setting default value for the feilds for the package is so important, which Class::Accessor dose not provide. So I spent some time hacking on this module, and wrote a module called "Class::Accessor::WithDefault" which can provide setting default value ability to Class::Accessor. It has some drawbacks because Class::Accessor using "Closure" to build the accessor and mutator but I think it is useful, right now it can be found at github here. Then I submitted this module request to CPA, sadly some days passed and I got no return message from that side.

By the way, after some coding experience with "Net::Douban", I realized that Moose should be the best choice for a Perl Progammer to write object-oriented code.

Posted via email from redicaps's posterous

腰,骑行和不计后果的锻炼

西宁-拉萨 17day,2000km
回宁之后腰痛到现在,近一年时间
爬紫金山都能感觉腰痛而力不从心
原以为是办公室坐姿不正确而造成
link
看来很有可能是青藏线落下的毛病
情何以堪

Posted via web from redicaps's posterous

2009年6月28日星期日

gps初步:ozi/smartcomgps

参考了一下丁丁关于gps的扫盲贴,将一些语焉不详或者需要的心得的地方记下来放在这里。

1:手机导航软件和外置模块
当前我的N78安了一个凯得利的破解导航软件,但功能非常有限,就只能标出你当前位置而已,与smartcomgps相比,少了存储航迹和导入航线等功能,无法做到和网上已有航线共享,它的好处就是内置了一个gps,不需要外部gps模块,但搜索卫星之类的都非常之慢,肯定是要被淘汰的。

smartcomgps在上面那篇文章中有下载链接,是破解版,但还需要一个证书。smartcomgsp应该是需要一个外部的gps模块,用手机测试了下,发现N78自带的gps也能使用。关于gps的硬件模块,丁丁的blog里面有好些文章,总结来说就是芯片分为两种类型:sirf III和mtk II,推荐使用mtk II的模块,淘宝上面几百可以买到。

2:ozi软件
ozi软件可以用来导入手机gps生成的航迹文件,文件后缀名为.plt(point of track)和wpt(waypoint),在ozi explorer的load from file里面可以找到对应的选项。在ozi的save to file里面还有export to google earth的选项,可以导出为google earth 的kml文件。

就写这么多了,等我去整一个gps模块看看对应的效果再说。

Posted via web from redicaps's posterous

2009年6月21日星期日

Net::Douban and XML parse in Perl

If anybody is interested, I am trying to write a Perl module for douban.com. This site has its own API for the user interface, and many people have wrote the client package for this API with languages including Python/Ruby/Java/Php,you can find them at "http://www.douban.com/group/dbapi/" and the API documents at "http://www.douban.com/group/dbapi/".
I have created a repository at github.com, the url is "http://github.com/woosley/Perl-Net-Douban/tree/master". Right now it has a little code pushed to the repository, please feel free to fork and contribute some code.

What I want to say here is I can not find any module suitable for parse Atom and GData format XML at "search.cpan.org". Java/Ruby/Python have Google's GDate package support, but Perl dosen't. Maybe XML::Feed/XML::FeedPP/XMl::TreePP can be used to parse Atom, but the documentation really sucks.

So I spent my day at "search.cpan.org" tring to find some XML module support for XPath. Two choices:
XML::XPath
XML::LibXML

The document for XML::LibXML sucks too. However, it is recommended by most of the Perl hackers because it is more powerful, more efficient and better maintained compared with XML::XPath.

Here is the code I used at first

my $xml = XML::LibXML->new->parse_string( $string);
my @nodeset = $xml->find('//entry');
print Dumper @nodeset;

This dose not work. The story is that you can’t match on the default namespace in XPath. Element names without a prefix always match the null namespace, not the default namespace if it happens to be associated with a URI. So you need another Module:
XML::LibXML::XPathContext;
here is the code:

my $node = XML::LibXML->new->parse_string($string);
my $xml = XML::LibXML::XPathContext->new( $node);
$xml->registerNs('atom','http://www.w3.org/2005/Atom');
my @nodeset = $xml->findnodes('//atom:entry');
print $xml->findvalue('.//atom:id',$nodeset[0]);

2009年6月17日星期三

在路上

太阳啊
我不喜欢你长长的胡须
以及藏在你胡须里面的白昼
于是我用云朵将他们点燃
点燃我的帽子
晚霞便是那些灰烬

在黑夜我总是忧伤
我能看到狮子在哭泣
我行走的心在哭泣
这旅途像黄土高原一样贫瘠?
我试图阅读星辰的思想
却总是得到太阳的嘲笑
或许这黑夜只是掩盖白昼的破碎毛毯

我命令风
告诉我答案
尽头,深渊在何处!

精灵从石头里面跳出
这些纤细的长耳朵的虫子
他们不是藏在太阳的胡须里
那在哪?

风说
前行何其遥远
而堕落却近在咫尺
流星啊
你为何将天空抛弃?
还是天空抛弃了你我

出师未捷身先死/长使英雄泪满襟

南京、成都、泸定

2009年6月1日星期一

list/杂项

南京-成都 中铺 460
和机票价格一样

1.95外胎 2*98 = 196
本来想用1.5的光头胎,被骑行群里面众将劝阻,路太烂,光头胎不靠谱

16扳手 5
卸脚踏用15mm扳手,跑了5个五金店都没有这种型号,言曰此型号少用,遂用16号替代,还能用

骑行裤 99
冲锋裤 80

户外凉鞋 99
还是打折品,户外装备真贵啊

刹车片/补胎片、胶水 14
48块补胎片,看你能爆多少次胎!!

补胎锉刀 修车师傅赞助 感谢ing
车首包 金师兄赞助
货架 陈师兄赞助
驼包 红木木赞助
药物 红木木赞助一部分

今天又称了下行李:12公斤不算重
体重 67.5公斤,看看回来能瘦到何种程度。

上个川藏线海拔图

2009年4月26日星期日

Longgest GRB ever discovered by SWIFT

SWIFT观测到迄今为止最远的伽玛射线暴GRB090423,预测红移高达8.0~8.2,发生于宇宙诞生初期,这也是迄今为止观测到得最远天体。伽玛暴起源于大质量恒星的死亡,之前观测到红移高于6的伽玛暴仅有GRB050904和GRB080913,红移分别为6.3和6.7。


http://heasarc.gsfc.nasa.gov/docs/swift/archive/grb_table/grb_lookup.php?grb_name=090423
http://www.tng.iac.es/news/2009/04/24/grb/
http://en.wikipedia.org/wiki/GRB_090423

南京->镇江->南京

昨天不知失心疯还是什么原因,单骑了一趟镇江。上午一路疯骑,花两个半小时,十一点不到就到达目的地。下午回程完全崩溃,身体里面一点能量都没有,不到20公里的时速挨到晚上六点半才回南京,回到宿舍倒头便睡,一个多小时后才有力气爬起来吃晚饭。全程140公里。

蓦然发现码表上五千公里了,有图为证:



镇江古西津街不错--photo

2009年4月7日星期二

2009年4月6日星期一

昨日战果

当日码表数据




2009年4月1日星期三

川藏线前的准备

去年在青藏线上的日子还历历在目,时间一晃大半年过去,又快到去拉萨的好节气了。趁着还没有工作,决定在毕业后再去一次,当然要换条路线,就是川藏了。据说这条路爬坡特厉害,而且还有强盗出没,加上近年西藏局势的不稳定,俄,希望能活着返回中原地区。

鉴于又有大半年没骑车,决定每周登天文台两次以恢复体力,时间定在周二和周四上午,人少温度也不会太高,下山后还可以直接到学校写论文。

给自己打打气

2009年3月26日星期四

符号表和typeglob

终于似乎明白符号表该怎么访问了


#!/usr/bin/perl
use strict;
our $hash="symbol table";
my $name = "hash";
my $globref = ${*::}{$name};
print $globref,"\n";
local *entry = *{$globref};
our $entry;
print $entry,"\n";
print ${*{${*::}{$name}}},"\n"

输出为
*main::hash
symbol table
symbol table

perl中符号表用typeglob来存储perl包变量,它本身也是一个hash,一个typeglob的名字可以通过访问这个hash得到
${*::}{$name}正是获得了$hash对应typeglob的名字,然后把它指向另外一个typeglob,两个typeglob可以用来获得同一个包变量.

2009年3月24日星期二

初审结束


似乎我能混个毕业了

2009年3月23日星期一

XPM图像

X PixMap

X Pixmap (XPM) is an ASCII-text-based image format used by the X Window System.

xpm可以直接用文本表示
vim /usr/share/system-config-network/pixmaps/uk.xpm
static char * uk_xpm[] = {
"21 14 5 1",
" c None",
". c #000080",
"+ c #C0C0C0",
"@ c #FF0000",
"# c #FFFFFF",
"#......#@@@#.....@@++",
"@##....#@@@#...@@##++",
".@@##..#@@@#.@@##..++",
"...@@#.#@@@#@##....++",
"########@@@########++",
"@@@@@@@@@@@@@@@@@@@++",
"@@@@@@@@@@@@@@@@@@@++",
"@@@@@@@@@@@@@@@@@@@++",
"########@@@########++",
"....##@#@@@#.#@@...++",
"..##@@.#@@@#..##@@.++",
"##@@...#@@@#....##@++",
"@@.....#@@@#......#++",
"+++++++++++++++++++++"};

而且是直接表示成c中字符数组的形式,比起其他的图片格式,这种表示方法感觉太简洁强大了。
第一行的意思为:图片宽21为像素,高为14像素,5种颜色,每个数据字母代表一个像素
之后5行为5中颜色的定义,把每种颜色map到一个字母上面
之后便是21×14的像素数据

perl中也可以直接用操作xpm数据。下面是一个gtk2的例子

#!/usr/bin/perl
use strict;
use warnings;
use Gtk2 '-init';
use Glib qw/TRUE FALSE/;

my @question_xpm = (
'32 32 17 1',
' c None',

'. c #030303',
'+ c #1A1A1A',
'@ c #4A4A4A',
'# c #616161',
'$ c #939393',
'% c #AAAAAA',
'& c #D2D2D2',
'* c #DCDCDC',
'= c #E2E2E2',
'- c #E6E6E6',
'; c #EDEDED',
'> c #343434',
', c #AEAEAE',
'x c #7B7B7B',
') c #C5C5C5',
'! c #F3F3F3',
' ',
' ',
' ',
' )&&&&)), ',
' )=*=--=-=;*& ',
' )*-;;!;;!;;;** ',
' )=;!)x@>+>#)!;!* ',
' &*!;#.>x%%x..>&!!& ',
' =;!@.$!!;;!=+.+;;=& ',
' );!%..;!;--;!$..x!;& ',
' *;;#..&!-&*;!&..>!;& ',
' &=;#..x!=&*;!&..>!;& ',
' )*;*@>&;&)=;!$..@!;& ',
' &*;;;;=&=;!!+..,!;* ',
' &--***=;!*@..#!;= ',
' )&)&=;!$..+x!;=& ',
' %&;!#.@%;!!=& ',
' &&;$.x!!;;-* ',
' &-!#.!!;=&) ',
' )-!@@;;*) ',
' )*;x$;-) ',
' &;!!!;;* ',
' &*!&@@);=& ',
' *=;@..@;=) ',
' *-;@..>!;* ',
' )-;)>>&-*& ',
' )=!!;;=) ',
' &=-;=) ',
' )**) ',
' ',
' ',
' ');

my ($vsize,$hsize) = (51,51);
my $file = '/usr/share/pixmaps/gnomine/mine.svg';
my $window = Gtk2::Window->new();
my $hbox = Gtk2::HBox->new();
my $button = Gtk2::Button->new();
my $button2 = Gtk2::Button->new();
$button->set_size_request($vsize,$hsize);
$button2->set_size_request($vsize-5,$hsize-5);

#my $image = Gtk2::Image->new_from_file($file);
my $pixbuf = Gtk2::Gdk::Pixbuf->new_from_file_at_scale($file,$vsize-20,$hsize-20,1);
my $image = Gtk2::Image->new_from_pixbuf($pixbuf);
$button->set_image($image);
my $pixbuf2 = Gtk2::Gdk::Pixbuf->new_from_xpm_data(@question_xpm);
my $image2 = Gtk2::Image->new_from_pixbuf($pixbuf2);
$button2->set_image($image2);
$hbox->pack_start($button,0,0,0);
$hbox->pack_start($button2,0,0,0);
$window->add($hbox);

$window->show_all;
Gtk2->main;

ScreenShot
上面那个奇怪的xpm内容就是这个?号

2009年3月18日星期三

perl6看来遥遥无期了

关于perl6实现的项目
pugs是用haskell写的编译器,07年就基本实现了perl6的语言特性,但当前处于停滞状态,唐凤把这个项目扔下好久了。
http://pugs.blogs.com/pugs/

rakudo:基于parrot虚拟机的perl6项目,最有希望成为perl6的正统,以前由于parrot虚拟机开发的不成熟,开发较为缓慢,自08年以来开发愈加活跃。下面是rakudo的开发状态
http://rakudo.org/
测试越来越多,接近18000,通过测试不过不到8000,看这进度一时半会是出不了稳定版的。

parrot是相当于.net,jvm的虚拟机,这个项目最初是为perl6的开发而生成的,但现在野心巨大,他们希望在parrto虚拟机上能运行所有的动态语言,包括perl,python,ruby等。

Parrot于18号释出了1.0版
http://www.parrot.org/news/2009/Parrot-1.0.0
原以为perl社区会有较大震动,但当日perl社区却基本没人关心这样一件事情。原来parrot这个1.0版本没有任何特殊意义,只是一次普通的释出而已,想让人激动都激动不起来。

PerlMonk上也有一篇帖子,ms还是中国人发的,讨论关于perl6/rakudo和parrot,也是参与人尔尔。
http://perlmonks.org/?node_id=751341

2009年3月15日星期日

有意思的perl单词

perl的文档就像perl里面的关键词一样浩瀚繁多,描述这些文档的关键词也各有特色,简单的列举如下

RFCs:Request For Comments.perl6 Essential这本书里面提到,设计perl6语言是从提交RFCs开始的。任何人都可以提交RFCs,经由perl conference的讨论和修改,才能决定是否接受。
Apocalypses:英语字典里面这样解释apocalypse: a situation in which a lot of people die or suffer, and a lot of damage is done。看样子是天灾人祸的意思,中文解释为天启,但在perl里面意为"revelation(启示)",而不是"end of the world"。perl的apocalypse由larry wall撰写,是对RFCs的系统解释,每一个apocalypse对应Programming Perl的一章。apocalypses也不仅仅是对RFCs的解释,还包括larry wall对各个问题的多种解决途径,以及最后得出的最优方法,同时里面还包括为什么拒绝某些RFCs的提议。
Synopses(概要)是apocalypse的总结
Exegeses(注释)由Domain Conway撰写,是对apocalypses的注释

除了RFCs,所有的文档都可以在这里找到。synopses写了一堆,apocalypses很少,最后的修改时间是2006年3月,而Exegeses更少,最后也是2006年修改。
perl6的RFCs在这里

Format in Perl

下面是一个format的例子
@,^表示替代域,^不同的是可以多行替代
...在域的后部,如果替代域过长则显示...
<,>,|表示左对齐,右对齐和居中显示
##.##表示数字
~~表示重复输出此行
@也占有一个控制位
$~:当前format名字
$^:当前top名字
$=:页面行数
$%:页号

#!/usr/bin/perl
use strict;
use warnings;

my $subject = "The revolution of POE server";
my $name = "woosley";
my $num = 1984.1023;
my $description = "This is a test of the format style in perl, but I
make it have a name The revolution of POE server. added to test";

open FO,">formate.txt";
format FH =
SUBJECT @<<<<<<<<<<<<<<<<<<<<<<<<<<<@####.##
$subject,$num
Assigned to: @<<<<<<<<<<<< ^<<<<<<<<<<<<<<
$name , $description
^<<<<<<<<<<<<<<~~
$description
.
#Below shows how to write an defined format into a opened filehandler
select(FO);
format TOP =
This is page @<<
$%
-------------------
.
select((
select(FO),
$~= 'FH',
$^ = 'TOP',
$= = 5,
)[0]);
write;


以上高亮代码用perltidy生成
perltidy -html -ss >mystyle.css
perltidy -html -pre test.pl
生成的html中会出现tab为8个空格长度而不能对齐的现象,不知道如何解决
发现perltidy不支持中文字符

2009年3月7日星期六

IO::File::MultiLines与创建可安装模块相关

一个小模块
还顺便用它在cpan上面占了个坐,嘿嘿
使用h2xs -XA -n IO::File::MultiLines生成


package IO::File::MultiLines;
use 5.006;
use strict;
use warnings;
use Carp;
use IO::File;
use base qw/IO::File/;


our $VERSION = '0.02';

sub new{ goto &IO::File::new};

sub get_lines{
croak "Can not run under void context" unless defined wantarray;
my ($fh,$n) = @_;
croak <<EOF unless $n=~/^\d+$/;
invalid parameter for get_lines;
EOF
my @tmp;
foreach(1..$n){
my $line = <$fh>;
last unless defined $line;
push @tmp,$line;
}
return wantarray ? @tmp:\@tmp;
}


1;

__END__
=head1 NAME

IO::File::MultiLines

=head1 DESCRIPTION

Simple interface to read multiple lines into array or scalar

=head1 SYNOPSIS

use IO::File::Log;
my $fh = new IO::File::MultiLines "FILENAME","r";

while( my @a = $fh->get_lines(5)){
print @a;
}

=head1 MEHHODS

B<get_lines>

my @array = $fh->get_lines(5);

Load 5 lines of the file content into an array

=head1 SEE ALSO

L<IO::File>

=head1 AUTHOR

woosley.xu E<lt>F<woosley.xu@gmail.com>E<gt>.

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2009 by woosley.xu

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.10.0 or,
at your option, any later version of Perl 5 you may have available.


=cut


perltidy -html -npod -pre .....

2009年3月5日星期四

几件事

把两个博客合并了,从此perl的帖子也发在这里

前些日子老爸打电话说,外婆中风几年之后前几天去世。我并不感到悲伤,就像大三时候爷爷去世一样,即使我们的感情正如所有祖孙一样的好。我一直认为人老没用了就可以去向马克思报道,不必气若游丝的苟活于世,我认定老了的时候觉得自己没用了我就安眠药送自己上天堂。

今天折腾了一天的WWW::Mechanize,一个错误半天都没有解决,后来发现是fedora编译的rpm不对,用cpan重新装过就好了。发行版包管理的造成混乱实在是一件相当恶心的事情。

2009年2月17日星期二

万恶的生活

老子一直在被这样一个问题困扰,到不到别的公司去,苏州这个地方真没啥吸引力,还不如南京来的实在,而且公司给的薪水,给我农村大叔老爸说他都嫌少,再而且破园区要把我们22%的钱占为己有,我颇为相当很不爽这种赤裸裸的资本主义剥削方式,这些家伙或许连个高中都没有读完,靠本地的关系进了政府,当公务员,然后就nb哄哄了,情何以堪?。然而同时我极度讨厌无谓的折腾,就像讨厌在linux中折腾字体一样,浪费时间,拖泥带水!

所以说真他妈万恶的生活,怎么都不让人好过,我们他们都是被折腾的对象。经常我唯一能做的事情就是对着天空比个中指。

还有一件事是老爸开始赤裸裸的bs我,拿我和某些所谓的朋友的儿相比,言曰多少女人在排队等着做儿媳,而我从头到尾都是loser。看来我要搞点实际行动来捍卫我年轻男人的尊严了,不然好像我真的连一个女人都弄不到手似的。

2009年2月4日星期三

入手两本书

perl testing,程序高手秘籍,200页定价36,真不算便宜,但纸张很有特色,灰色的格子底纹,看着眼睛很舒服。









erlang程序设计,很酷的语言,希望自己以后能够学会

2009年2月1日星期日

08年134句

1.80后的重要任务是制造08后。

2.事实证明,感情经得起风雨,却经不起平淡;友情经得起平淡,却经不起风雨。

3.人家有的是背景,而我有的只是背影~~。

4.是金子总要发光的,但当满地都是金子的时候,我自己也不知道自己是哪颗了。

5.提醒大家要学会修自己的笔记本,这是很重要的!从前有个人,他不会修自己的笔记本
......后来的事情大家都知道了。

6.我不是广场上算卦的,唠不出那么多你爱听的嗑。

7.不是故事的结局不够好,而是我们对故事的要求过多!

8.爱情就像两个拉橡皮筋的人,受伤的总是不愿放手的那个。

9.鲜花往往不属于赏花的人,而属于牛粪。

10.谎言与誓言的区别在于:一个是听的人当真了,一个是说的人当真了。

11.单身并不难,难的是应付那些千方百计想让你结束单身的人。

12.有时候,不是对方不在乎你,而是你把对方看的太重。

13.就算是believe,中间也藏着一个lie。

14.付出真心,才会得到真心,却也可能伤的彻底。保持距离,就能保护自己,却也注定永
远寂寞。

15.真正的好朋友,并不是在一起就有聊不完的话题,而是在一起,就算不说话,也不会觉
得尴尬。

16.没有100分的另一半,只有50分的两个人!

17.冷漠,有时候并不是无情,只是一种逃避被伤害的工具!

18.如果我们之间有1000步的距离,你只要跨出第1步,我就会朝着你的方向走其余的999步


19.通常愿意留下来跟你争吵的人,才是真正爱你的人!

20、人生没有彩排,每天都是直播;不仅收视率低,而且工资不高。

21、能用钱解决的问题都不是问题,可问题是我是穷人。

22、春天到了,小树发芽了,股市也跟着变绿了。

23、唯女人与英雄难过也,唯老婆与工作难找也。

24、不要整天抱怨生活,生活根本就不会知道你是谁,更别说它会听你的抱怨。

25、只知道刚的人,难免会被折断;只有柔的人,到头来终是懦夫。

26、问一同事:“你买了中石油吗?”同事说:“呸!你才买了中石油呢。你们全家都买了
中石油,还买了中石化!”

27、信念这玩意不是说出来的,是做出来的。光荣在于平淡,艰巨在于漫长。

28、人生重要的不是所站的位置,而是所朝的方向。

29.踏遍青楼人未老,请用汇仁肾宝。

30.征婚启事:要求如下,A活的,B女的。

31.给点阳光我就腐烂。

32.要适当吃一点,才有力气减肥。

33.摇啊摇,摇到奈何桥。

34.你快回来,我一人忽悠不来!

35.不要和地球人一般见识~~~

36.不想当厨子的裁缝,不是好司机。

37、爱我的人我不爱他 我爱的人却不爱我 所以我很好奇为什么会有那么多人结婚

38、爱情就像快餐,不在乎什么味道,能填饱生理需要就可以

49、爱 就像打篮球 拼命的抢 拼命的追 当得到以后便毫不犹豫的抛出去

40、为了更好的离婚 我们结婚吧
41、缘分一词本就是个矛盾的个体,缘,分?

42、老虎不发威是给你hello kitty的面子

43、那天看到一位大妈在烧纸,边烧边嘟囔着:收到了千万别买基金啊~

44、如果中了一千万,我就去买30套房子租给别人,每天都去收一次房租。哇咔咔~~充实!

45、凡是在食堂、自习室、教学楼前当众疯狂接吻的——都是开不起房的!!!

46、刚从日企实习完的女同学回来感慨道:“不管多高档的会议、多高档的人参加,那帮人
台上斯文地在跟你开着会,而台下却总有人在摸你大腿!”

47女友和我分居了,其实我们的性生活还是蛮和谐的——我性无能,她性冷淡……

48、现在女孩身上衣服件数越多,反而露得越多;衣服件数越少,反而露得越少!49、人家
文院女生身上莫名元素一大堆,还露着大腿呢;咱们工院女生就外套+裤子,两件就把全身
裹了个严严实实!

50、哄女人像挂Q一样,每天至少两小时,达到一定的天数后就可以太阳了……

51、假如给女孩一个安全的环境,她能Y D得让你流鼻血流到死!

52、朋友的老婆叫“有容”,他真幸福~而我心中的最爱还是“依山尽”……

53、PPMM都是过眼的浮云,永恒的只有那温暖的右手……

54、对女人你要多用心去感受,别拿你的龟*头去思考!

56、就因为你,青岛海域都出现大海怪了!!!

57、我都不好意思抓你了,你怎么还好意思偷呢?

58、你的样子长得不孕不育的!

59、你就是陈佩斯的搭档朱时茂的妹妹猪八戒啊?

60、很高兴,又凑够1块5,终于又能上网了!
61、物价与欧洲接轨,房价与月球接轨,工资与非洲接轨……

62、别和我谈理想,戒了 !

63、妈妈说:人最好不要错过两种东西.最后一班回家的车,和一个深爱你的人.我想坐着最后
一班车到爱我的人身边.

64、宁可高傲的发霉,不去卑微的恋爱!

65、去爱吧,如同没有受过伤一样;歌唱吧,如同没人聆听一样;跳舞吧,如同没人欣赏一
样;工作吧,就当没有工资一样;生活吧,就当今天是未日一样

66、这辈子,你是来放债的还是来还债的?

67、男人是用来靠的,所以要可靠;女人是用来爱的,所以要可爱。

68、男人喜欢听话的女人,但男人若是喜欢一个女人,就会不知不觉听她的话。

69、你让我滚,我滚了。你让我回来,对不起,滚远了

70、你有什么不开心的事? 说出来让大家开心一下.

71、用iphone的人都有个共同点:就是不好意思说不好用。

72、生子当如孙仲谋,找爹就找金日成。

73、孟姜女哭倒长城干红,白娘子水漫金山词霸。

74、您真是贱人多忘事啊

75、时有风吹裙动,一僧曰风动,一僧曰裙动,吾进曰:是非风动,是非裙动,色者心动!

76、作为一名烟客,必须具备三个条件:烟、打火机、及抽烟时露出的那种无耻神韵!]

77、很黑的深夜,我突然想要学习,可是当我找到蜡烛的时候,天已经亮了……

78、现在的硕士学位,就像脚底的一粒米,不拿不舒服,拿了又不能吃

79、我把一万句誓言装在机枪里向你扫射,你倒在血泊中,浑身镶满了丘比特的子弹!

80、我费劲千辛爬上梯子的顶端,却发现梯子搭错了墙头……

81、孩子死了,你来奶了!

82、现在的导师都不叫导师,也不叫老板,叫科研包工头!

83、扛一面顶风的大旗~~上写两个大字:好人!!

84、人要是无聊啊 鼻涕泡都能拿来玩会

85、逆风的方向,更适合飞翔。我不怕万人阻挡,只怕自己投降.

86、好的爱情是你透过一个男人看到世界,坏的爱情是你为了一个人舍弃世界

87、上班无聊吗?抛硬币玩吧,正面就上网,反面就睡觉,竖起就工作,倾斜就努力工作,
摔粉碎了就申请加班,如果摔出两枚,那就天天摔!

88、同志们:别炒股,风险太大了,还是做豆腐最安全!做硬了是豆腐干,做稀了是豆腐脑
,做薄了是豆腐皮,做没了是豆浆,放臭了是臭豆腐!稳赚不亏呀.

89、我终究没能飙得过那辆宝马,只能眼看着它在夕阳中绝尘而去,不是我的引擎不好,而
是我的车链子掉了.

挂个链子,觉得经典~~~~~~

一妇女拿假钞去买早点,小贩恼了:“大姐,你给假钞也就算了,那起码是张印的,你这张
钞票居然是画的!退一万步说,画的也就算了,你给画一张十块的、五块的都行,你还给画
张七块的! 七块就七块吧,最起码也得画彩色的啊,居然用铅笔,算了,黑白就黑白的好
了,可不能用手纸画啊!手感太差了,就算是手纸你也得用剪子把边剪齐了啊,这个用手撕
的,毛边太夸张了,行,毛边我也忍了,可你也撕个长方型啊,这个三角型就太说不过去了

89以后的呢?还有谁看过呢?嘿嘿——

90、原来,寂寞时是自己的手指数脚指;原来,思念时是连呼吸也会心痛;原来,一个人就
是一辈子...

91、球形也是一种身材!

92、老婆是电视,情人是手机,在家看电视,出门带手机;破产卖电视,发财换手机;偶尔
守电视,整天玩手机;固定的电视,移动的手机;频道免费,手机收费。男人都想拿着手机
看电视。

93、别人的钱财乃我的身外之物。

94、废话是人际关系的第一句。

95、上联:金沙江,嘉陵江,黑龙江,江江可投! 下联:实验楼,教学楼,宿舍楼,楼楼
可跳!

横批:空前绝后

上联:爱国爱家爱师妹! 下联:防火防盗防师兄! 横批:恋爱自由

96、妻子如衣服–流行如此变幻,衣服的开销曰渐昂贵;男人没有一个好东西–但它毕竟是
女人最大的买方市场。

97、大龄未婚男女像是坐巴士坐过了站。有时是因为巴士上的座位太舒适了,简直不愿下车
;有时是因为不认识自己该下的站台。终身不结婚的男女呢?他们是巴士司机。

98、示爱者是动物,被爱者是植物。如果爱被拒绝,离开的当然是动物,因为植物是不会生
出脚来跑路的。

99、有了自己的房子,未婚女子就像是凭空小了几岁,又有耐心慢慢地挑选爱人了。一男向
一女征询意见:我们先租房子住,结了婚攒了钱再买房子吧?女答:那我还不如先租丈夫呢


100、我很丑,可是我很温柔–今天的男人和女人一起改编了赵传的版本:我不完美,可是
我很真实;我不漂亮,可是我很酷;我不富有,可是我很快乐;我不成功,可是我很自信;
我不多情,可是我懂得珍惜。

101、生日是一个舞台,一次考验,一个机会。恋爱时,男人更会利用这一点;结婚后,女
人更会利用这一点。

102、年轻时候,拍下许多照片,一本本摆在客厅给别人看;等到老了,方才明白照片是拍
给自己看的。厚厚的一生的镜头摆在眼前,连写回忆录都省下了。

103、小时候把一次吃上20个包子当作人生理想时,我很幸福;当月收入超过5000之后,我
仍然感觉不到快乐。当事业、爱情、家庭、金钱什么都不缺时,人们经常还缺一样东西–饥
感。保有底线的欲望是幸福的。

104、一未婚女子感叹:为什么成熟的男人、好男人全成了人家的老公,没结婚的男人没一
个像样的?有人提醒她:妻子们培养好丈夫都是自产自销,没有男人能自学成材。

105、男人认为是调情 女人以为是感情

106、多了 人家说走的桥比你走的路多,吃的盐比你吃的饭多,今天屁特多,于是"我放的屁
你的拉的屎有分量"这句话就油然而生了

107、到学校报道后来到寝室,迫不及待打开电脑,结果是学校还没开通网线 于是想到把上
学期遗留下的历史问题给解决了先---脏衣裤,臭袜子

108、如果说他们正朝着那个地方缓慢的行驶,而我和她却是在南辕北辙离它愈来愈远。

109、花坛里有一个一元钱的硬币,可是花坛边的牌子上写着“踏入花坛,罚款三元!”,
真是为难。

110、如果照镜子要上税,恐怕有些女人会破产。

111、为评选出本年度听众最喜爱收听的无线电节目,国家广播电视局采取随机电话访问的
方式,历时三个月,调查了10000个家庭,其中对于“请告诉我您现在正在听什么节目?”
的回答出现惊人的一致,约80%的答案为“正在听老婆唠叨”。

112、男人赚钱后想和老婆离婚,男人赚不到钱老婆想和他离婚。

113、“你还爱我吗”这句话女人会在第一次和男人接吻、第一次被男人抚摸、第一次和男
人上床、男人赚到第一笔钱的时候各问若干次。 “你还爱我吗”这句话男人一般会在第一
次接吻未遂、第一抚摸对方未遂、第一次和对方上床未遂、事业进入低谷时各问若干次。

114、女人攒私房钱是为了将来花在老公身上,男人攒私房钱是为了将来花在其他女人身上


115、男人最傻的时候是第一次穿西装上班的时候,女人最傻的时候是第一次穿吊带裙上街
的时候。

116、女人单位发了一千块钱,她会告诉男人发了一千块钱,告诉自己的朋友发了五百;男
人单位发了一千块钱,他会告诉女人发了五百,告诉自己的朋友发了一千五。

117、成都有一家标明“西北风味”的拉面馆子,没有喝过西北风的同学可以去尝尝

118、武腾兰和康师傅两个陪我过元旦…

119、传说有一种食物,吃了能让人精神振奋,满身大汗! 没错!这就是麻辣烫!

120、所谓按揭,就是ZF、开发商、银行一起把购房者按倒在地,一层层的揭你的皮!

121、家乐福海盗!!!

122、公安分局接到群众举报电话,说在立交桥下有两个大炸弹,民警与排弹专家一起奔赴
现场,在桥梁下发现一个红色布袋,专家与民警小心翼翼的拆开布袋,里面还有几层报纸包
裹,民警一层层拆开,最后发现果然是两个大炸弹:4个2;一对王!!

123、春天我冲一棵树打了次手枪 到了秋天就结了许多许多的——人参娃娃!

124、一个不久前结婚的男同学叫…常在厨房混,那能不切手…

125、吃了瓢儿白,就是长得白,嘿!长得白~吃了藤藤菜,就是长得帅,嘿!长得帅~

126、我小学十年,中学十二年,我被评为全校最熟悉的面孔,新老师来了都跟我打听学校
内幕……

127、一分儿钱一分儿货稀饭吃了不经饿~!

128、我是耶稣他儿子,椰子~!

129、不想变形的金不是好钢。

130、桂花飘香的夏夜,月,似银盘;树,若舞娘;风,如轻裳。我,站在水房。皓齿清波
,膏白胜雪,刷牙。

131、我是一庸人,我盼望着天上能够掉馅饼,掉到我嘴上,可偏偏掉下来的是铁饼,而且
砸在我脸上,天啊!疼啊!

132、不高不矮不胖不瘦不三不四,没前没后没脸没皮没心没肺。

133、等俺有钱了,给老婆买SK-Ⅲ,SK-Ⅱ算个鸟!

134、如果一对双胞胎(男滴),和一对双胞胎(女滴),他们互相结了婚,生下了的小孩
会不会是一样的啊!