2008年4月9日

增加新功能的时候不要害怕坏味道

这几天编程的时候体会到一点:往程序增加新功能的时候,可以利用一切手段增加代码,而不要担心代码的坏味道。复制粘帖代码,随时增加新的子类,monkey patch等等,只要能够尽快让新的功能运行起来(也就是说让新的测试能尽快通过)就是胜利。等到重构的时候再考虑去除坏味道。两件事分开作反而效率更高。

我编辑的python wiki


python中的运算符重载
恢复python的repr中的中文字符

我翻译的蟒禅:

优美胜于丑陋,显明胜于隐含。
简单胜于复杂,复杂胜于繁复。
扁平胜于嵌套,稀疏胜于密集。
可读性会起作用。
即使要为了实用性而牺牲纯粹性,
特例也并不特殊到足以破坏常规。
除非你想明白无误地保持沉默,
否则就永远不要悄悄放过错误。
面对模棱两可,
拒绝猜的诱惑。
做任何事情总该有一个,
而且最好只有一个明显的方式,
尽管那种方式起初并不见得明显,
但是谁叫你不是荷兰人[1]。
虽然一直不做经常要好过匆忙去做,
但是现在就做还是要好过一直不做。
如果实现方法很难以解释,那一定是个坏主意;
如果实现方法很容易解释,那也许是个好注意。
名字空间就是一个呱呱叫的好主意。
现在就让我们多多动手体验这些吧。

[1]python发明人Guido van Rossum是荷兰人。

2007年6月8日

The Zen of Python及其中文翻译(转引)

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

优美胜过丑陋
明确胜过含蓄
简单胜过复杂
复杂胜过难懂
扁平胜过嵌套
稀疏胜过密集
易读亦有价
尽管实用会击败纯洁
特例也不能特殊到打破规则
除非明确地使其沉默
错误永远不应默默地溜掉
面对着不确定,要拒绝猜测的诱惑
应该有一个--宁肯只有一个--明显的实现方法
也许这个方法开始不是很明显,除非你是荷兰人
尽管不做通常好过立刻做
但现在做也要胜过不去做
如果实现很难解释,那它就是一个坏想法
如果实现容易解释,那它可能就是一个好想法
名字空间是一个响亮的出色想法--就让我们多用用它们

2007年5月31日

六一儿童节到了

Web Coder QQ群的 冰凌(361070387) 10:59:04:
六一快到了,给自己残留的童心放个假吧。
建议一:在自己的房间开心的裸爬;
建议二:穿着鞋在自己的床上狂蹦;
建议三:披一个床单在身上,在街上欢跑,告诉别人你在飞;
建议四:亲自己心仪mm的嘴嘴,然后在她愤怒时告诉她今天六一,你的童心需要关爱;
建议五:定一份m的儿童乐园餐,并故意把可乐洒的到处都是,把来帮你收拾的服务员mm叫阿姨;
建议六:在床上画个圈,并在晚上把它尿湿;
建议七:假装迷路,或在路边无助的哭泣,当有人来问你时,告诉他/她你找不到妈妈;
建议八:打电话问妈妈,你是怎么来的;
建议九:一边唱《我们的祖国是花园》一边跳舞
建议十:也可以尝试穿开裆裤和随处大小便

2007年5月30日

MVC模式的七十二变

    Model-View-Controller是个著名的模式,自从smalltalk发明以来得到广泛的应用。现在它又进一步在Web设计领域扩大了它的影响。最新的例子是css和html或xhtml的分离。我们可以把html看作是model, css看作是view。现在这种分离还不是特别的彻底。预计下一步的趋势是将控制从html中分离出来:也许会有一个类似于css的级联控制表之类的标准出现,将代码彻底的从html文档中分离出去。

2007年5月28日

格言

不要重新发明轮子,特别是如果有人提供免费的轮子。
把重新发明轮子的时间留给你的方向盘。
-------------------------------------------

网络将会让人人都知道你是一条狗。 In the Internet, everybody know you are a dog. 比尔.盖茨的话: 在网上没人知道你是一条狗。 In the Internet, nobody know you are a dog. ----------------------------------------------------- 历史,有时候是能量,有时候是重量。 忘记任何一面的人都必将得到历史的教训。但是,人们很容易只看到历史的一面而忘记另外一面。 ------------------------------------------------- 封闭源码的人,注定要重复代码。 Those who cannot open the sourse are condemned to repeat it. 下面的话引自 The Art of UNIX Programming UNIX编程艺术 Eric S. Raymond 第二章 历史——双流记 History: A Tale of Two Cultures 忘记过去的人,注定要重蹈覆辙。 Those who cannot remember the past are condemned to repeat it. The Life of Reason) (1905) 《理性生活》 George Santayana

2007年5月27日

关于zope,dhtml的几个技术问题

    注意:style的值是字符串,带上单位比如px,xhtml是大小写敏感的。
    注意js和html中属性名的差别。
    遇到一个莫名其妙的问题:我将zope中的javascript和css脚本移到外部文件中。移了两个文件dropmenu.js和menu.js之后,menu.js怎么也不起作用。后来我又移css,然后menu.js居然自动就好了。极想不通。又一个类似的问题:用link链接样式表,必须同样的写两遍。还有:我把js和css移到meta的前面,样式表部分起作用,字体不起作用。
    我好像找到原因了:中文问题在作怪:我把页面发布编码,管理界面编码,ultraedit保存编码都统一换成utf-8就ok了。
    注意:css的style的值是字符串,必须带上单位比如px,在javascript中必须特别小心。xhtml是大小写敏感的。
    注意javascript和html中属性名的差别。
    发现css中的//能够注释下一行的内容(ie6.0 maxthon)。在css中最好用/**/ 注释。

2007年5月25日

尽量使用单行注释

    尽量使用单行注释//, 这样在调试时可以方便使用/**/块注释可疑代码。

编程提示

  发现一个容易犯的错误:单引号或者双引号字符串是不能换行的,我把js里面的一个document.write的一个单引号字符串换行,导致脚本不再运行,调试了近一个小时,方才发现这个错误。   如果要换行,可以利用字符串并置的技术:两个字符串相邻,不需加运算符或标点,自然形成一个字符串。但是,在javascript中应该使用+号。

2007年5月23日

学javascript的最好的书

    JavaScript: The Definitive Guide, 5th Edition
    这本书写的太好了,内容丰富,叙述清楚。对其他领域相关内容介绍的详略有致,特别适合于我。看关于CSS的这一章时这种感慨尤深,讲清楚了理论,也讲清楚了应用。

2007年5月13日

MOTHER

QQ python群 @弋孤秋(296920191) 22:09:40:
明天是母亲节,愿天下母亲快乐!
M (many)妈妈给了我很多很多
O (old)妈妈为我操心,白发已爬上了您的头
T (tears)您为我流过不少泪
H (heart)您有一颗慈祥温暖的心
E (eyes)您注视我的目光总是充满着爱
R (right)您从不欺骗我们,教导我们去做正确的事情

Zope中文问题

    昨天为了在zope中用中文折腾了一天,按照网上高手们的指点也试过,怎么也不行,最后我试着把root的management_page_charset property设成utf-16, 结果不幸的把整个ZMI的界面都弄成了乱码,最后ZMI也无法打开了。 千万不要使用utf-16作为 zope 的root的management_page_charset property的值。 。
    今天我重装了一下plone, 还是只设了management_page_charset到utf-8,然后在浏览器中选择编码为utf-8,竟然管理页面和浏览页面都能显示汉字了。谢天谢地。再试试gb2312,同样也成功了。为什么昨天就不行呢?纳闷。
    感谢肥肥世家的指点,management_page_charset property是管用的。

2007年5月11日

抱怨google之一

    如果google所有的服务只要登录一次,就可以通行无阻,该有多好。
    采用gmail邮箱名作为账户名也是一个让人很不方便的做法,比如,我在进入bloger的时候,登录名还必须带上gmail.com,岂不是很奇怪吗?
    当然,我知道,这些要求都是历史造成的。但是,我也希望这些要求早日成为历史的一部分。

2007年5月10日

Zoplone? zopone?

    一个新词,代表Zope和plone。漂亮的组合。
    或者zopone,听起来更响亮。

2007年5月9日

学习Zope和Plone

    花一个月时间学习网站和网页设计技术。前几天已经基本熟悉了css和html,并且对一些Web Framework做了考察。决定选用强大和易用的Zope/Plone。现在进入了学习阶段。今天初步有了一些感觉。

2007年5月6日

重新打开保存到本地的网页后的不同效果

    网页保存到本地后,有的可以在浏览器中打开,而且,无论在是否上网的情况下,和远程打开原来网页的效果完全一样有的。有的如果有上网,则可以和原网页完全一样,没有上网,则可能不能显示部分链接,或者页面格式完全不同。也有的无论有无上网,打开后网页都有变化。有的则根本无法在本地打开。造成这些现象的原因很多,可能是因为有的网页不能被完整的下载,有的网页带有指向远程资源的链接,有的是包含的css文件在远程服务器上。有的是因为包含的脚本在本地变得无法正常运行。

获得网页代码的几种方法

    学习网页和web应用设计最直接的方法是通过现有的无数Internet网站。为此获得欣赏的网页的代码是必不可少的。主要有如下方法可以做到这一点:
    1.  通过主菜单"查看   查看源文件"或者右键菜单"查看源文件"。可以将源代码显示在记事本中,随之可以保存到html文件
    2.  通过主菜单"文件保存html","文件另存为", "文件快速保存"", "文件自动保存"等项。这里有的选项是针对Mathon而言的。
    3.  将地址栏复制下来,利用迅雷之类的工具进行下载。
   对不同的网页,这三种方法可能有的起作用,有的不起作用。有的网站设计了代码阻止查看源文件,有的地址是不可下载的,有的网页可能无法完整保存。不同方法得到的结果可能相同,也可能不同。第二种方法一般会产生一个网页文件和一个同名相连目录,目录中带有相关的图片等文件。
    以上是三种最简单直接的方法,应该还有更高级的技术手段可以实现保存网页的目标。

2007年5月5日

跑步进入google

    把google的功能全面体验了一把。igoogle, 搜索历史,blogger, 日历,picasa, 图片,Google拼音,gmail。

google 拼音棒极了。

    刚刚体验了一下google拼音输入法,感觉棒极了。
    可以直接搜索,可以输入网址,这是google的看家本领,也应该是这一款软件的用意所在吧。用起来也确实方便。
    有两个地方,我感觉可以改进一下:在工具条上增加一个全拼双拼的切换,象紫光那样。现在呢,只好让我老婆使用设成全拼的紫光,我使用谷歌拼音啦。
    翻页时工具条的长度不要变。

全面体验google

全面体验google : gmail, 日历, talk, picasa, blogger,