关于Python中的yield
2010 年 10 月 23 日在介绍yield前有必要先说明下Python中的迭代器(iterator)和生成器(constructor)。
一、迭代器(iterator)
在Python中,for循环可以用于Python中的任何类型,包括列表、元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器
迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前进到下一结果,而在一系列结果的末尾是,则会引发StopIteration。任何这类的对象在Python中都可以用for循环或其他遍历工具迭代,迭代工具内部会在每次迭代时调用next方法,并且捕捉StopIteration异常来确定何时离开。
使用迭代器一个显而易见的好处就是:每次只从对象中读取一条数据,不会造成内存的过大开销。
比如要逐行读取一个文件的内容,利用readlines()方法,我们可以这么写:
1 2 | for line in open("test.txt").readlines(): print line |
这样虽然可以工作,但不是最好的方法。因为他实际上是把文件一次加载到内存中,然后逐行打印。当文件很大时,这个方法的内存开销就很大了。
利用file的迭代器,我们可以这样写:
1 2 | for line in open("test.txt"): #use file iterators print line |
这是最简单也是运行速度最快的写法,他并没显式的读取文件,而是利用迭代器每次读取下一行。
继续阅读
用Python写了个贪吃蛇
2010 年 10 月 14 日windows环境下用nginx+FastCGI方式运行Django
2010 年 6 月 21 日最近几天在写一个蛋疼的Django项目,前些天调试一直是用Django自带的HTTP服务器,不过最近可能要先部署一些东西,为了更加接近真实的服务器环境,决定用FastCGI的方式试试。服务器选择了nginx,本来是计划在CentOS下试验的,不过由于CentOS还要安装,出于懒人的做法,就直接在自己的windows里试试了。
首先确保你的电脑里已经安装了Python和Django,接下来我们还需要两个组件,nginx服务器和flup(Python的FastCGI组件)
nginx下载地址:http://nginx.org/en/download.html
flup下载地址:http://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz
与Linux下不同的是,nginx在windows下是以一个应用程序的方式运行,而不是以一个服务运行(难怪没人在windows服务器上用nginx)
继续阅读
Mcrypt模块简介(译)
2010 年 3 月 31 日在这篇教程中你将学到如何使用PHP自带的Mcrypt函数进行加密和解密。Mcypt 库 (http://mcrypt.sourceforge.net/), 让加密/解密变的非常容易。 Mcrypt 支持非常多的加密算法,一定能够满足你的需求. 在教程中,我可能不会涉及所有Mcrypt支持的算法和模块,但是我会提供一个简单的加密接口一边从php访问。虽然mcrypt提供了相当好用的加密方式,但没有任何加密时牢不可破的,因此你把加密过的信息保存在数据库或其他类似的足够安全的地方。
教程需求:
+ 任何安装有PHP 4.x 或者 PHP 5.x的web服务器
+ 编译进php的Mcrypt模块或者作为一个共享模块存在(需要 libmcrypt)
为什么我们使用Mcrypt?
和hash算法相比, 比如: md5, sha1, 或其他加密算法,他们只允许信息加密后以便以后验证比较使用, Mcrypt 允许人们轻松地加密并且解密信息, mcrypt 提供的两种加密方式有着非常广泛的应用,包括但不限于:
+ 安全储存机密信息 (ie: 密码, 信用卡号码, 身份证号码, etc)
+ 安全的信息验证 (ie: email, 服务器与服务器通信, 应用和应用间的通信, etc)
+ 安全储存文件 (ie: 私钥, 安全证书, etc )
mcrypt 同样提供了丰富的加密模式:
+ ECB (electronic codebook) 适用于较小量的数据,如积分值等。
+ CBC (cipher block chaining) 适用于加密大量的数据,如文件。
+ CFB (cipher feedback) 适用于数据量非常小的加密,其中每个字节都会被加密,安全程度高
继续阅读
Chrome插件推荐——第二波
2010 年 3 月 31 日好的插件总能经得住时间的考验,随着用chrome的时间增加,很多插件慢慢的卸载掉,剩下的都是自己喜欢的了
再次写篇文章介绍下一些比较好用的Chrome插件,最近因为换域名,面临图片链接失效的问题,蛋疼了一阵子……
这次强烈推荐LastPass这个插件,我们可以把它理解为一个密码管理器,他会保存你常用站点的密码,当你换到其他电脑工作的时候,只要你下载这个插件并登陆,你就能方便的访问任何你保存过的网站,在自己电脑上用也可以免去经常输密码的痛苦
第二个推荐的是SearchPreview for Google,在你用Google搜索时他会显示所有搜索结果的预览图,方便你选择是否该打开这个网站,如果碰到很挫的网站就不用打开浪费时间了
还有其他几个比较好的:TooManyTabs for Chrome、Turn Off The Lights
更换域名到lfyzjck.com
2010 年 3 月 16 日让Notepad++使用TextMate的主题
2010 年 3 月 14 日今天升级了一下我的Notepad++的版本,就是在因为Windows7每次启动都要求我重启,确认以后没反应,再次打开故障依旧……汗一个,最后确认原因是因为权限不够,以管理员身份运行一次就好了。好了,废话不多说,切入文章正题。
由于升级后要把原来的很多插件和style主题移植到新的版本,变的很麻烦,Notepad++自带的几个主题又不能让人满意,于是想到了TextMate——The Missing Editor for Mac OS X,这个里面有很多漂亮的主题,不过格式是不一样的,Notepad++用的是xml格式来配置主题的,而TextMate则是tmTheme文件,上网找了下,果然有方法能转化。
1. 首先确认你已经安装了Notepad++, 然后进入Textmate Theme Directory,下载你中意的主题
2.用Notepad++打开下载好的 .tmTheme 文件
3.用 (Ctrl+A)全选并且复制