八月 16, 2007

Sea Above,Sky Below
seaaboveskybelow
» 看精彩的动作片...

看精彩的动作片犹如坐过山车,看不太精彩的动作片则像是看别人坐过山车。

周黎明,《好莱坞现场报道》

» A quick look at Django's new test framework

Django trunk里加入了一个简单的test framework,功能还在完善中。

  • 它是如何工作的

    通过manage.py test (全部安装的app)或者manage.py test yourapp(某个app)来执行测试。manage.py test会调用setting里的TEST_RUNNER来完成测试的搜索和收集,测试环境和测试数据库的创建,销毁等工作。默认的TEST_RUNNER设置是django.test.simple.run_tests。这个test runner支持标准的doctest和unittest。目前还不支持fixture。它搜索model.py和同级目录下的tests.py来 获得test case。

  • 我不喜欢默认的test runner怎么办

    django.test.simple.run_tests在很多场合应该都能工作,但不足也是很明显的。测试文件的匹配模式太过简单了,复杂app的layout可能不会是model.py和tests.py;它每次运行都要创建测试数据库,有时候你并不需要;在我看来,标准库里的unittest framework有点太javaish了,还是nose这样的方式更舒服。好在定制一个test runner并不难,它只是一个接口为test_runner(app_list, verbosity )的函数,可以定制是否需要创建测试数据库,如何收集test case等。

  • 对web application的测试提供了什么支持

    提供了Test Client来对Django的view(而不是render后的template)进行测试。test client可以模拟get和post请求,返回Testing Responses对象,有属性status_code,content(The body of the response),template(Template instance),context(The Context that was used to render the template)可供测试。

» Oct 27th, Dirty Three, live in Beijing

暖场团Goodbye Nao!, 玩的是即兴噪音一类,不过天桥剧场糟糕的音响下只能听见一片刺耳的轰鸣


吉他手Mick Turner,这家伙从头到尾都那么冷静,想不到Dirty Three 的那些神秘瑰丽的唱片封套都是出自他的画笔吧


气势如虹的开场曲是新专辑 Cinder里的


鼓手Jim White


Cinder里的另一首,比录音室版本的震撼多了,Dirty Three大爆炸!


Oh my god, “sue's last ride" is on live! 花了两个钟头横穿北京来看这场演出太值了


Warren背对着观众在拉小提琴


Warren把人声当作琴弓


张悬,"great waves" 里的guest vocal。录音室版本的很好听,可惜现场的音响下,她的声音被巨大的声浪淹没了


nice show, guys!

» firedict: an online dictionary/notebook

元旦节没事,做了这个Ajaxy Django应用firedict。顺便用了newforms,还不错,oldforms的manipulator的功能没有完成,不过form validation和display这块分解得粒度更小,显得更清楚了。
firedict本身非常简单,它就像个在线的笔记本,方便记录一些英语单词。

screenshot:

大图看这里(抱歉,从宽屏的机器上抓的)

» sAsync , sqlalchemy for twisted?

sAsync 看上去是个很有趣的项目。他支持用sqlalchemy来进行对数据库的async操作。下面引自作者

I've put a ton of effort into sAsync,which would cost thousands of dollars at even a fraction of what I charge for "real" work. Why not make use of that? It is GPL'd, but I have one user implementing it in a commercial project now under a special license that he obtained by doing some coding of his own for me. (My thanks to the Twisted developers for making Twisted itself available under a no-strings-attached license, and thus providing me the opportunity for that sort of modest compensation.

我打赌很多人都有过这个想法 :) , 感谢作者实现了它。学习sAsync 在我的TODO列表上了。

» a BeautifulSoup trap while using pickle

当用BeautifulSoup像astr = div.find('a').string这样取得一个链接的正文时,astr完全表现的像string,但当pickle它时,异常出现了。如果没仔细看BeautifulSoup文档,这是非常令人迷惑的,尤其在数据结构复杂时难以定位错误。原因其实很简单,astr不是一个普通的string或unicode string,它是一个BeautifulSoup.NavigableString instance。要想获得一个unicode string,应该这样:astr = div.find('a').string.strip()

» 春节快乐!

:)


» Trimpath javascript template engine: deja vu of the Django template

Trimpath javascript template engine的语法和Django template非常类似,支持for, if的控制结构,有filter(它称为modifier)和tag(它称为macro),并且非常容易扩展。不过它不像Django那样强制简化template的逻辑,在if里允许任意javascript表达式,还可以用var来任意设定context,另外它还支持CDATA Text Sections 和In-line JavaScript。不过这应该不是问题,稍微小心点使用的话,在从server side开发(如果用Django)到client side的平滑过渡和尽量保持二者一致上,它是个不错的选择。下面看个例子:

var animals = ['dog', 'cat', 'fish',null];
var Template = TrimPath.parseTemplate;
var t = Template('{for animal in animals} ${animal|default:"animal"|capitalize} {/for}');
t.render = t.process;
var result = t.render({'animals':animals});

» I do stupidity-driven testing

I don't do test-driven development; 
I do stupidity-driven testing.
Titus Brown, at Pycon'07

» User experience is Queen


Content may be King, but the user experience is Queen.

Andreas Constantinou, on On-Device Portals.

biggo.com.tw

A Django site.