诈尸等等

Posted on 二月 16th, 2010 in 杂碎 | No Comments »

本来打算已经废弃的地方,回来诈下尸。

大约是元旦前两日swdpress.cn这个地址被白名单了,备案又被驳回。由于以前用的feed地址没怎么烧制,也跟着域名死掉了,对订阅的朋友、友链的朋友也无法给出通知,抱歉。今天居然无意google出来这个备用的地址http://ssword0917.host8.meyu.net/,感觉还是冒个泡说明下情况的好。

我不关心政治,但政治可以关心我。国内这一套往往是管什么的不懂什么,管思想的没思想,管文化的没文化。瞎折腾。

已吐槽无力,搬家。当然额外的银子都给了美帝,真傻逼。
http://fleurer-lee.com

德方先生

Posted on 十二月 21st, 2009 in 日记 | 19 Comments »

东校南门的德方书店前后两间,外间有些小说、名著及新书之类,里屋有历史、哲学、淘来的旧书甚至中华书局的古文。前后唯不见教辅书和励志书,买过什么书大家都心知肚明,自然也明白卖什么书赚钱吧。

“看着学生们一窝蜂进来就心烦,我不喜欢那书,大不了关门。”

做生意但求清净。要说这老板是怪人,这一句话就够了。老板大约三十年纪,头发半白,像是随时准备叹气的态势,绝对的寡言。有客人进门仍目不斜视,只管打量自己的书和书架,或拿鸡毛掸子扫扫尘。客人大多也就是环绕一周,就识趣地不声不响出了去,经营惨淡可见一斑。不过即使如此这般,书店也开了好些年头。说实话我挺好奇。

“每个城市里都有一些爱读书的人,一来二去大家也都认识了。他们不时来坐坐,读书也可以认识不少人。”

确实偶尔也有老师模样的中年人进来,对人一样的爱理不理。

“现在的学生,都不读书了。我们那时候,都往图书馆里窃书,管都管不了!….读书人的事能叫偷么。”

然后叹气一般,跟老板打过招呼,两手空空走了。

也正如此,我们也算认识了。只消聊得投机,寡言的人其实都健谈。

“励志,你首先得有‘理想’。没理想励什么志,成什么功?现在的大学生很。《大学》第一句话是什么,‘大学之道在于明德’!”

“现在读书的人少了,大约从八零年往后少的。现在的学生头脑很空,有过一个小女孩问我,有什么书不需要动脑么,我就笑了,不动脑子还叫读书么。不过她倒经常来看书。读书就是个人文的东西,是智慧,它就得动脑。”

“了解中国的文化,去日本那里可能更多。中国这是连根拔。说古代那时候封建、愚昧落后,都是胡诌。中国古代那套体系很完整,从上至下,礼仪,儒教,君臣,都是文化。都是为了维护这个国家,国家就是文化。现在好,中国的文化已经连根拔了,国已不国。明灭的时候朝鲜就自称‘小中华’,明朝的时候来进贡,叫‘朝天’;到了清朝给乾隆祝寿,就成了‘燕行’。有个外国人来中国学了相声,说是学了中国文化,可笑!”

寻常的朋友断不至于跟你这么谈读书,所以从始至终都感觉有点不自然。我等买教辅书奔波于自习室和考场,读励志书维持高昂情绪,或是迷离于各种大潮甚至不读书的人,与他自然是不同的。回来又想,这样的人可是越来越少了吧。不过,苟延残喘的是他们,还是我们呢。

“‘先生’这个词已经让中国人搞绝了。”

哼!”不知这是冷笑还是苦笑。我倒真想称呼他先生。

《了不起的盖茨比》和《傅雷家书》,共15元。

fdoc

Posted on 十二月 20th, 2009 in 杂碎 | 3 Comments »

呃,一直没搞明白txt2tags这gui该怎么玩…

就用ruby写了这东西 http://code.google.com/p/fdoc/
可以把这样的文本
http://code.google.com/p/lyah-cn/source/browse/trunk/txt/2-ready-go.txt
转换成这样的html
http://swdpress.cn/lyah/ready-begin.htm

bug很多啦~不过貌似暂时够用?

愿春哥原谅我们复造轮子者之罪孽,耶门~

eval, class_eval, instance_eval和binding

Posted on 十二月 13th, 2009 in 笔记 | 5 Comments »

前些天写html生成器的时候用到了erb,在生成html的时候是这么一句:

html=tpl.result(binding)

binding这个变量(Kernel的一个方法 T_T)有点古怪,就搜了下。它表示了ruby的当前作用域,没有任何对外可见的成员函数,唯一的用途就是传递给eval作第二个参数。因而可以这样:

def test_binding
    magic='brother Chun is PURE MAN'
    return binding
end
eval "puts magic", test_binding

这样就穿越了一个作用域。

有时可以见到这样的构造函数:

a=Baby.new {
    name "Makr"
    father "Mike"
    age 0.2
}
a.cry

好处就是好看。实现起来其实也很容易,用instance_eval:

class Baby
    def initialize(&blc)
        instance_eval(&blc) #here
    end
 
    def name(str=nil)
        @name=str if str
        @name
    end
    def age(num=nil)
        @age=num if num
        @age
    end
    def father(str=nil)
        @father=str if str
        @father
    end
    def cry
        puts "#{name} is only #{age.to_s} year old, he wanna milk! Brother Chun is PURE MAN!"
    end
end

有重复代码?用class_eval缩短之,有点像宏了:

class Baby
    def initialize(&blc)
        instance_eval(&blc)
    end
 
    def Baby.my_attr(*names)
        names.each{|n|
            class_eval %{
                def #{n}(x=nil)
                    @#{n}=x if x
                    @#{n}
                end
            }
        }
    end
 
    my_attr :name, :father, :age
 
    def cry
        puts "#{name} is only #{age.to_s} year old, he wanna milk! Brother Chun is PURE MAN!"
    end
end
 
a=Baby.new {
    name "Makr"
    father "Mike"
    age 0.2
}
a.cry

这里class_eval穿越到了类的作用域,实现了动态添加函数。instance_eval也是,穿越到了实例的作用域,实现修改其内部数据。明白了它们的穿越关系,我们可以实现自己的class_eval和instance_eval——从合适的地方搞到binding就行了。

class Baby
    def my_instance_eval(code)
        eval code, binding
    end
    def Baby.my_class_eval(code='')
        eval code, binding
    end
end

就这么简单。调用的时候就像这样:

class Baby
    def initialize(code)
        my_instance_eval(code)
    end
    my_attr :name, :father, :age
end
a=Baby.new %{
    name "Test"
    father "Orz"
    age 0.2
}

刚才省略了一点,那就是class_eval和instance_eval可以接受block代替字符串。搜了下,貌似没找到eval接受block的方法,所以这顶多算是只能eval字符串的山寨class_eval。

update: 想起来ruby中lambda和proc在作用域上的小区别,也就是binding的不同了。proc直接使用原先的binding,lambda继承原先作用域创建一个新的binding。

Haskell趣学指南!

Posted on 十二月 12th, 2009 in 杂碎, 翻译 | 10 Comments »

译言前几天被杯具了,还好当初嗅到苗头全都抓了来 -v-

新地址见http://swdpress.cn/lyah

用自己写的小工具生成的html,parser的代码不到200行,代码写的非常之perl,不过显然还算够用。
代码高亮用的一个jquery插件Chili,很容易扩展,随便改两个正则就自制了个haskell高亮

顺便校对了下翻译。

  • ChinaUnix上的朋友对“柯里函数”等译法的意见比较大,不过在校对中没有做修改。关于人名构成的术语,例如“Fourier transform”还是“傅立叶变换”,译者认为后者更好看。
  • “Function Application”直译作“函数应用”,在这里译为“函数调用”。相应的“partial application”直译作“部分应用”,在这里译为“不全调用”。
  • “predicate”在这里译为“限制条件”,因为译者认为“断言”这个词有点吓人。
  • 保留了List,Tuple,List Comprehension等名词,不过将Triple之类译为“三元组”,“function with two parameters”译为“二元函数”。
  • 把原先译文中“在处理数字时是非常有用的”类的句式改为“在处理数字时非常有用”,“的”真的是很别扭的。
  • 有一节的标题“Texas Range”译为“德州区间”,因为译者老家在德州…囧

修改的比较仓促,bug依然还有很多。呵呵,欢迎提意见! ^_^

update: 可以svn checkout它的源码:https://lyah-cn.googlecode.com/svn/trunk/