无知的 TonySeek,深圳大学软件工程系本科生,Python 控。
以前不会现在不会以后也不会否认自己无知,会一直无知并一直学习下去。
这几天在给 Simple RBAC 添加 contrib,其中有一个功能需要从用户实体类产生 named tuple 作为访问控制列表中的资源标识。因为“类”在原型链层次上的特殊性,我还需要自动将实体类的“类”所对应资源注册为实体类的“实例”所对应资源的 parent,这样我就可以很简单的结合 assertion 让一篇文章只能被它的作者或者管理员修改:
前几天在邮件列表看到大家在说有没有好用的权限管理工具,有人说 Zend_Acl 不错。我看了下官网文档,貌似是挺不错的,用起来很方便。可惜 Zend_Acl 是 PHP 的,我于是兴起模仿它的用法,写了一个 Python 版的。
说来惭愧,听说控制反转(Inversion of Control)和依赖注入(Dependency Injection)这两个名词已经是大二的事情了,时至今日才想明白了具体的含义。我之前知道依赖注入的用法,一直将控制反转将其等同化,现在看来二者其实还是存在差别的。于是今天就此也顺便查阅了一些资料,将一些思考记录下来。
这里的“Web 控制器”指的的确是 MVC 中的 Controller,在 Django 等 Python Web 框架中也被称为“视图”。
说到本文,源起 Python Web 框架中对于“控制器”有两种不同的表达方法。其中一种是类似于 Rails 的 class-based,另一种是 类似于 Sinatra 的 function-based(当然 Sinatra 的实际是 block-based)。tornado、web.py 采取了前者,而 Flask、Bottle、Django 采取了后者。
在组织简单代码的时候,两种方式仅仅是风格上的区别,这时候往往 function-based 会显得更加简洁。但对于更加复杂一点的情况,class-based 的控制器有一些代码组织上的优势,可能 function-based 的需要花一些脑筋才能达到相同效果。
为什么要分的那么清楚呢?丰顺三汤片本来就是客家地区和潮汕地区的交接处,是客家是潮汕又怎样,我们是客家人,喜欢潮汕文化……不行么?本来我们就是一群认同潮汕风俗的客家人,有什么好讨论的……
构思文章中……
让我想起了《悲惨世界》中的一幕,花匠准备参加巷战,请求修道院的院长嬷嬷祈福。
院长嬷嬷:我会为你感到遗憾的,也就是说,没有人能强迫你参加这场战争,一场内战。
花匠:所有的战争都是内战,因为所有的人都是兄弟。
Python 多到数不过来的 Web 框架已经成为了一大风景,而且不同于 PHP Frameworks 集体山寨 Rails 的风格,几乎每个 Python 框架都有自己的特色。我接触过的有 web.py、Django、Bottle、Flask ,其中属 Flask 最为我喜欢。有时候框架会被称为“轮子”,但是可以确定的一点是这四个框架一定不是轮子,我最喜欢的 Flask 有许多非常方便的特性,当然也有我想吐槽的不爽点。于是写一篇博客把吐槽记录下来。
前不久申请了实习,今天早上刚完成了在线笔试。总体来说题目不难,但是我答题过程并不顺利,所以写下这篇文字,反思自己的不足。实习单位要求对试题保密,故我不谈及试题,只针对自己的知识疏漏总结。
事件:深圳电信再度耍流氓,劫持用户访问的站点。
结果:几次电话投诉之后,电信客服表示“针对性取消推送”。处理之后至今未被劫持。
建议:如果遇到此类情况不要沉默,而应该致电谴责这种卑鄙的做法,并维护自己的权益。