为四川人民祈祷! www.onefoundation.cn
logo of kjam.org

Pylons的大杂烩

比较过rails和django

从来就没觉得这样的比较很恰当,为什么人们总是把这两样完全不同的东西进行比较。如果说乍看起来很像,那也应该是pylons而不是django,那么稍稍来了解一下pylons吧

Pylons的出现使得python世界之中的另外一个重要的framework TurboGears十分尴尬,Pylons和TurboGears几乎有着完全一致的设计理念,在我的理解中,Pylons实现得更加出色。个人观点:TurboGears可以不用搞了,注意:是个人观点。


Pylons的确是抄袭了很多框架的GoodIdea,在其中我们可以看到很多优秀的设计思想。

TG可能是最初吵着不要重复发明轮子的,于是写了一个脚本把一些它人为不错的东西捆绑了一起。这里面包括CherryPy和SQLAlchemy。Pylons做的更绝,不但绑了,而且绑了很多,比如你可以选择SQLAlchemy也可以选择SQLObject

再来说说和Rails很像的地方,关于Session的处理,它是可以放在各种地方,数据库,文件系统,Rails也是。但是Django不是,全部丢进数据库了,或许将来会有不同的打算。另外URL Dispatch方面Pylons使用的是Routes,它的主页上已经明确表明自己是Rails风格的Dispatcher。最后看看目录结构,和Rails一样让人莫不着头脑,当然仅对新手而言。

事实上,很长一段时间以来,我都没有去仔细了解Pylons。原因是我一直都没有正确的认识到Paste是什么。我自做聪明的认为Paste是一个脚本,但最后我才发现,Paste本身就是一个framework,非常low level的framework。这更加让人拍案叫绝。当TG开始整合各种库的时候,好比自己新写了一个类。但是Pylons从一开始就是继承了一个类,整个工作就在别人的基础上实现了,连自己这个轮子都不再需要被重新发明了。

像基本的输入/输出这样的功能,Pylons就是靠继承Paste得来的,顺便Pylons还得到了一个调式服务器和生成项目需要的脚本,这在几乎所有的框架中都有,Pylons当然也不能少。

接着Pylons需要一些模块来完成它需要的功能:为了实现像rails一样的URL Dispatch,Pylons吸收了Routes。为了实现Session和Cache,Pylons使用了Beaker。当需要模版引擎的时候,Pylons为我们提供了一堆候选者,Mako,Myght,Kid⋯⋯数据库还有SQLAlchemy和SQLObject两个现成的可以使用。Ajax也还有很多选择。

现在,Pylons的结构就大概的呈现在我们眼前了
comments: 3 | tags: pylons  rails  django   
by kernel1983

老朋友ffdshow

跟大家分享分享视频方面的
首先是播放

大家都知道播放网上down下来的视频用暴风影音就可以了,不过这应该是大概4年之前的认识了,那个时候刚刚发现这个暴好用的东西的时候,我急于向大家推荐

不过谁都知道Media Player Classic是一个开源的东西,向我这种极度懒惰的人,对于流氓软件或者恶意软件的防范之心超越一切。重装系统无异与慢性自杀,所以我永远不会装那些捆绑着希奇古怪插件的免费软件

如果你从来不播放rmvb的话,只需要两样东西就可以解决大部分需求:mplayerc(MPC)和ffdshow解码器,不用去装divx或者xvid,ffdshow可以满足大部分的需求 常见的divx格式h.264格式还有flv格式

需要嘱咐的就是,千万别到某某下载站去下载这些东西,mplayerc最好去sf下载,ffdshow最好去free-codec下载


接下来做一些深入的科普宣传

首先是ffdshow的名字含义。dshow就是DirectShow,熟悉DirectX的人应该有印象,Direct3D/DirectSound都是它的兄弟姐妹,可是随着时代的发展,它已经不属于DirectX的范畴了,现在想要使用DirectShow,我们必须安装Windows SDK。

提到ffdshow不得不提到另外一个项目,那就是ffmpeg。大家知道,音频/视频的编码解码,实际上就是一些算法的实现,ffmpeg就是这样一个编码的过程。如果是一个普通的程序需要实现编码/解码过程,可以调用动态库来实现,但是如果要让这个编码器在Windows系统中有效,就必须将ffmpeg封装成COM接口的形式。

ffdshow就是COM形式的ffmpeg。它可以对付大多数常见的编码,这是一个开源的实现。
comments: 0 | tags: dshow   
by kernel1983

Django ORM的查询条件

django的orm看起来相当的简单,但是要想用好,就得花上一些时间去仔细阅读reference了

只有应用中才会发现不足

往往做一些简单的应用,select都是等号。但是我们遇到了一个稍微别致的应用,查字典


Dictionary.objects.filter(word = w)

这样明显不行,如果我查询"china"一定找不到,因为是精确的match,所以你要输入"China"才可以找到中国
在这样紧急的情况,我们需要的是立刻查阅reference,原来上面的那一句等同于下面的
Dictionary.objects.filter(word__exact = w)

想要让查询忽略大小写,下面的写法就可以实现
Dictionary.objects.filter(word__iexact = w)

新的想法,当我输入前几个字的时候,可以查找出所有可能的单词
Dictionary.objects.filter(word__istartswith = w)

于是我们可以更加多样的控制SQL语句之中WHERE后面的条件,而不仅仅是等于
* exact
* iexact
* contains
* icontains
* gt
* gte
* lt
* lte
* in
* startswith
* istartswith
* endswith
* iendswith
* range
* year
* month
* day
* isnull
* search
* regex
* iregex
Django ORM为我们提供了这样的工具
comments: 0 | tags: django   
by kernel1983

scafford哲学

无数人都把 rails 和 django 当作差不多的东西,有些人甚至用到了 clone 一词

作为一个用户,我喜欢python,于是从而选择django,看起来顺理成章。不过rails真的和django一样吗?我只能努力的去寻找一点不同之处。真的,我很期待可以从中看到不同的想法

很多人都从 ruby on rails 网站上的秀 textmate 的那些视频开始首次接触 rails ,如果不出意外,很多人也是从这里第一次认识ruby。

即使很多人不愿意承认,他们实际上还是被scafford弄的一头雾水。那段视频总是给人以似懂非懂的感觉,有的时候让人觉得是在变魔术。

django的orm是从一个class推导出一个 database scheme ,类似这样的操作在rails 中不存在,人们必须直面SQL语句,或者使用GUI工具。django的方法明显受到了python的orm工具sqlobject的影响,对于初学者略微友好

从某种角度说,rails在某一方面更加体现了DRY,django略逊一筹。当一个数据模型建立以后,scafford给人的感觉是自我感知了这个模型,并自动生成了操作该模型的CURD(Create Update Read Delete)的Views,而使用django的人似乎不容易习惯这样的方式,往往选择手动创建 view 来操作 model

其实django也有从model直接生成view的工具,其实是表单工具。这样实现CU的问题就不是很大。但是和scafford的一站式服务相比,还是显得有些麻烦。不过newform的出现,已经给django增加了不少生产力,或许django已经决定走这种灵活路线的DRY了吧!

花了好长时间才领悟scafford哲学,这就是我不努力学习rails的结果⋯⋯自嘲中!
comments: 0 | tags: rails  django   
by kernel1983

回到拨号时代

怀旧是一种病态吗?

最近常常逛douban上一个叫做8-bit的group,里面有一群迷恋早期电子技术的geeks。在如此的时代背景下讨论如此话题的人,我称他们为艺术家……

很长一段时间,我一直很迷惑,到底要把我那其实不怎么样的编程技能投入到哪一项值得自己去做的事业中去。很幸运的是即使我心目中的顶级高手也曾经面对着同样的问题,Lippman先生或许仍然希望证明自己在艺术上的才能,可是我们只认可他在C++方面的才能。

虽然对于csound依然很迷恋……
我们确实应该好好想想自己能做什么……

^
跑题了!


UNIX TIME从来都没有负增长过,时间是向量,但是最近我仿佛又回到了从前。没错,我又开始了拨号上网的生涯……真见鬼

不同之处在于,这次是用小灵通。考虑了许久,我决定体验一下拨号上网。显然,我不需要在线视频和下载,我只需要一条稳定的数据流,在终端上静静的敲打一串长长的网址,坐在沙发上,泡上咖啡等待结果。

在一个台风来袭的夜晚,城市的角落,关上灯,静静的敲下xiaowangzi.org,寻找对过去的回忆。
comments: 0  
by kernel1983
1...10111213141516...20