为 blog 添加了回复提醒插件

August 5, 2008 – 6:17 pm

在 blog 上回复的东西经常忘记去看,最后就不了了之了。有些 blog 提供了“订阅回复”的功能,就是接下来的回复会通过邮件发送给你,我觉得很实用,心想 wordpress 肯定已经有这样的插件了。搜索了一下,果然有!就是这个 Subscribe to Comments 插件,看起来还挺强大的样子。

立马装上,自己先测试一下。 :D

Notes: How to make a patch

August 1, 2008 – 1:20 pm

虽然现在各种版本控制工具大行其道,但是有时候还是需要使用相对原始一些的办法提交补丁,制作补丁其实很简单,用 diff 命令,加上 -u 参数生成带有上下文的 unified 格式的 diff 文件,就是一个 patch 了。可是最容易忘记的地方就是后面的参数是先写未修改过的版本呢还是先写修改过的版本。我自己每次都记不住,要去查 man page 。正好今天收到一个 patch ,发现里面的修改都是反过来的,大概也是参数写反了吧。 ^_^ 所以我终于决定把正确的用法记下来:

diff -u original new > original.patch

希望自己能记住,就算记不住也能方便地在此查到。 :)

Read the rest >>>

The weekly status report of Schemepy: final evaluation approaching

July 31, 2008 – 7:19 pm

Another week quickly passed, I was working hard on the macro system for skime last week. It is a little tough, but now I finally managed to finish it. I wrote a summary[Chinese] on the implementation of the hygienic macro system of skime.

skime should be a fairly feature-complete pure-Python Scheme fallback for Schemepy after that. I’ve moved the source to the Schemepy repository. And now the backend wrapper (yes, pure-Python fallback still need backend wrapper) is also finished and most of the existing test cases have passed on that.

Read the rest >>>

导读:What’s wrong with CS research

July 31, 2008 – 4:55 pm

hrm.jpg其实我也不会写什么“导读”,只是今天在 newsmth 的 FuncProgram 版看到这篇文章的链接,读了一下,有种强烈地想要推荐给别人读一下的冲动。

文章的标题是:What’s wrong with CS research ,说了 CS 本不是 science 却如何被硬套上这个名号煞有介事地做 research 的。Mencius Moldbug (文章的作者)说 CS researchers 分为三种:

  • creative programmers
  • mathematicians
  • bureaucrats

Read the rest >>>

OSCON 2008 花名册

July 30, 2008 – 2:52 pm

gregg 为 O’Reilly 举办的 OSCON (Open Source CONvention) 2008 的与会成员录制了每人 30 秒钟的视频,用于介绍自己和自己要讲的东西。牛人云集,一定要看看!

其实转载这个视频的主要原因是这几天看到在学校论坛的 Linux 板块看到一些转载自 cnBeta 的搞笑新闻,我觉得比起“腾讯版的 QQ for Linux”来说,大家还是应该更多地关注一下这些东西。当然,这是我个人意见。 :)

The Implementation of Scheme Hygienic macro

July 26, 2008 – 10:43 pm

我在很早的时候曾经写过一篇叫做“Play with macro”的文章,介绍了 Common Lisp 式的 macro ,那是一个很基本但又很强大的工具,比较容易理解。相比之下,Scheme 的 macro 就不一样了,虽然我很早就知道 Scheme 的 macro 是一种叫做 Hygienic macro 的东西,但是直到最近才明白它是怎么一回事,因为我要实现这样一个系统。

Common Lisp 的 macro 其实就是一段 Common Lisp 代码——一段操控代码的代码。因为在 Lisp 里程序的结构本身就是以一种类似于语法树的形式存在的,很好处理,所以宏的存在和广泛应用也理所当然了,而在 C/C++ 甚至于 Ruby、Python 这种语法复杂的语言里做这样的事情就很麻烦。C 提供了一个基于文本替换的宏,能完成不少事情。相比之下,Scheme 的那种基于模式匹配的宏反而更像 C 语言的预处理宏一些。然而 hygienic 并不是表示模式匹配的意思,而是指“保证宏展开的时候不与现有的符号冲突”,只是碰巧 Scheme 采用了模式匹配的方式罢了。

Read the rest >>>

换回 Google 原来的 favicon

July 26, 2008 – 2:04 pm

在不久前(其实大约都有一两个月了吧?) Google 换了它的 favicon,以前是这个样子:google_old.jpg ,而现在变成了这样:google_new.jpg ,我倒是不关心两个哪个寓意更深一些,既然各个人的品味不同,我也一定想坚持一下我觉得前者更好看的观点。

其实本来是件小事,但是 Google 实际上是天天都要用的,到今天终于忍不住了,Google 了一下,发现可以在 HTML DOM 树里创建一个 link 节点来强制指定 favicon :

Read the rest >>>

Another pitfall in Python: == and !=

July 24, 2008 – 1:33 pm

Besides the False == 0 problem, I encountered another problem that surprised me. Consider the following Python code:

1
2
3
4
5
6
7
8
9
10
11
class Foo(object):
    def __eq__(self, other):
        if isinstance(other, Foo):
            return True
        return False
 
f1 = Foo()
f2 = Foo()
 
f1 == f2  # => True or False ?
f1 != f2  # => True or False ?

What do you expect the result to be in the last two lines?

Read the rest >>>

妈妈的新书:《家园》

July 23, 2008 – 11:52 am

记得妈妈很久以前给我说过她有一项伟大的计划。今天得知,就是这部叫做《家园》的新作啊:

home.jpg

于是趁机也帮妈妈宣传一下。太文学的东西我其实看不懂,而且我也还没拿到书呢,只好引用了一下当当上的内容简介:

安沙的黎明是从水上的一片乳白色开始的。那是河岚,是河水向太阳发出的第一声问候。安沙的河岚不像别的河岚那么单薄那么气短,它是气壮山河的。开始,它们是一寸厚,平平整整,如水上的一层冰。慢慢的,它们开始往上升。脚并不离开水面,只是把身体往高处长。等长到河谷的半山腰的时候,它们才袅袅的牵牵扯扯的上天去……

娃娃们在喊童谣:“猫爱鱼啊,野猪爱菜,我们爱太阳天天晒。”

我也一直非常敬佩像妈妈这样有梦想并为之奋斗的人啊! :D

The Schemepy weekly status report: the new fallback

July 20, 2008 – 12:16 am

I committed almost nothing to the Thousand Parsec repository this week. That’s because I’m mainly working on skime — a pure-Python VM for Scheme. After one-week hard working, the basic shape of the VM is already there.

Although there are still many work (e.g. the macro system) to do before it can be a really useful VM, I decide to write a simple layer to fit the Schemepy API and run the benchmarks to see whether the time spent on a new fallback is worth.

Read the rest >>>