Pylons使用小记

Thumbnail

活着就是折腾,最近事情多的一塌糊涂,烦躁的很,导致log4d也荒废一个月了。今天趁着周五晚上,梳理一下最近学习的pylons知识。 关于Pylons Pylons是一个用pythons写的web框架,优点是配置灵活,默认使用[Mako](http: //www.makotemplates.org/)作为Template,SQLAlchemy作为 ORM映射。使用BSD作为授权协议。 托WSGI的福,python的web框架超多,甚至高手5分钟可以自己手写一个web框架,这种情况也导致了Python web框架的纷杂。我这里选择Pylons(其实是被选择),并不是说Pylons一定最好,而是比较适合当前项目。更多的Python web框架对比建议看这篇[浅谈Python web框架](http://feilong.me/2011/01/talk-about-python-web- framework),另外,这个Best Web- Framework有直观的对比。 ...

2011-05-16 · alswl

最简陋的GAE代理

年前换了一次服务器,之后发现Lifestream的Errors飙升到1000+错误,检查一下,发现是获 取不了豆瓣的rss链接。正好这台主机支持SSH,连入之后CURL了一下豆瓣服务器,发现Time out。 紧接着发现中国内的所有域名都无法使用CURL获取,联系小张之后,得知该主机曾经被入侵过,于是屏蔽了中国大陆的ip段(囧~入侵和中国ip有毛关系) 遂想用GAE做个代理服务器,反正获取RSS也只要Get一下,代码没几句。把这项任务放入Toodledo之后,就一直没去弄,今天发现GAE Laucher升级了,就部署到自己GAE上了。 ...

2011-01-11 · alswl

一周Python小记

上个星期以来忙里偷闲一直在写一系列小型的代码生成器,完成一些从需求到结构化代码生成和验证作业。这个小东西是用Python写的,我简单分享一下中间所得。 一、配置文件 1、YAML格式 数据库连接信息和作业相关信息是存放在数据库中的,配置文件形式可以有很多种选择:XML / ini / txt,我这里选择YAML作为存放。 YAML使用起来相当方便,能够自动解析成对应语言中的变量,比如列表解析为列表,数字文字分别解析成对应的格式变量。 之所以选择YAML,是看中它对语言的亲和性和可读性,GAE的配置文件就是YAML格式。YAML的语法相当简单,用:来分隔key: value,用 - 来分隔列表,注意点是缩进需要用空格,关键符号和内容之间要加上一个空格。我的配置文件如下: ...

2010-11-09 · alswl

Python读写剪贴板

最近在写一个CodeGenX代码生成器,说是生成器,其实是目前只完成一堆零散的脚本。这些脚本的调用方式一般是从某个txt中读取数据,再写到另外一个txt中。 由于某些数据变动频繁,导致我操作txt次数大增,我怒了,就找了一个脚本自动读写剪贴板。 #coding=utf-8 ''' 读写剪贴板 ''' import win32clipboard as w import win32con def getText(): w.OpenClipboard() d = w.GetClipboardData(win32con.CF_TEXT) w.CloseClipboard() return d def setText(aString): w.OpenClipboard() w.EmptyClipboard() w.SetClipboardData(win32con.CF_TEXT, aString) w.CloseClipboard() 别说有了这个脚本用起来还是蛮方便的,建议丢到Python的lib下面,然后可以方便调用。 如果双击 .py 文件调用可能产生无效的情况,测试发现在IDE环境下有效,如果想完成一键转换,就需要一个bat执行一下。 ...

2010-10-23 · alswl

小脚本mm->html

我同时在使用两套信息记录工具,知识收集记录工具BooguNote + KMS Wiz,关于这两套系统具体介绍请见桌面记录神器- BooguNote & 我所使用的知识管理系统。 我的使用习惯是在BooguNote中收集日常的琐碎知识点,包括我所想的和工作记录。每个小知识节点的长度大概在200-300字左右。这些被我称为的知识碎片显然 不能直接放入KMS。 BooguNote可以将里面的文字直接复制出来,会在父亲节点上加入+,子节点加入-,这种简单的txt不能满足我的要求。于是我花了点时间写了一个mm文件到ht ml的转换脚本。 ...

2010-09-27 · alswl

获取每日Bing图片

Thumbnail

在使用公司一个Redirect开发工具页面时候,想个性化一下,就想添加一个背景,最好每天能自动变化,我第一个想到的就是Bing。 放狗搜索,发现一篇文章 抓取每天必应bing背景图片 - huangct的专栏 - CSDN博客,文中提供了抓取程式的Python代码,我摘录如下。 import urllib import time def main(): url = 'http://www.bing.com' f = urllib.urlopen(url) html = f.read() f.close() a = html[html.index('/fd/hpk2'):] data = a[:a.index('',id:')] url = data.replace('\', '') url = 'http://www.bing.com'+url name=time.strftime("%Y%m%d", time.localtime()) name=name+".jpg" urllib.urlretrieve(url,name) if __name__ == "__main__": main() 关键的步骤是MS修改了jpg的url方式,用g_img={url:’/fd/hpk2/BambooBoat_ZH- CN1057817945.jpg’这样的字符串躲避机器人的抓取。简单的替换即可完成。 ...

2010-07-19 · alswl

铁血联盟EdtTxt转换器v0.9

上个月时候,zwwooooo同鞋联系我让帮写一个铁血联盟中需要用到的Edt<->Txt转换器,我前前后后大约三个星期完成 到v0.9,能完成基本的功能(但似乎存在一些未知Bug,-_-#)。由于我之后很长一段时间得找工作,所以不能继续维护这个小工具,现在把他的代码开放,如果有高 人能看到这个小工具,有兴趣的话可以继续维护下去,(zwwooooo,真的很不好意思……)。 一些关于程序说明,zwwooooo原文,更详细可以联系zwwooooo本人: edt(后缀) 是游戏对话文件,游戏里有很多种,但都是有规律的,我把一些规律和流程说一下 ...

2009-11-01 · alswl

Python输入16进制保存到文件

(题目有点勉强,不过问题真的很难描述,希望Google/Baidu到这里的童鞋不要失望) 前几天给zwwooooo写一个 小工具,其中遇到一个输入的问题。具体描述就是:“输入4个16进制的数字,如'00a0’,输入之后必须能够把这个输入给保存到文件中存为2进制格式,必须是原始的 16进制,而不是字符串类型。如’x00xa0’"。(其实这是用在处理文本上的) 不知道各位大大有没有明白我的意思,我花了很长时间没有一个好的解决方案。 第一种方案,先用int()转换,然后转换hex(),直接失败,hex()转换后格式为'0x00a0’,是字符串格式,根本不是我需要的内容。 我苦思冥想三天,终于找到一个最傻,也最好用的方法,用list进行匹配。 下面是生成匹配list的脚本: ...

2009-10-07 · alswl

GAE+校内App初接触

Thumbnail

下午刚有了在Google App Engine上写校内(人人网)App的想法,下午就迫不及待的开始动手。下面我以一个简单的Hello World来介绍一个开发步骤。 1.创建GAE应用 建立一个Google App Engine空间,需要一个Google帐号,仅此而已。拥有帐号,进入 App Engine ,激活这个服务,就可以创建新的应用。如何创建不是我这里要讲的重点,现在GAE支持简体中文版本,应该没有任何问题。 一个简单的App控制台 2.部署GAE App 刚才建立的GAE App其实还是空的,如果访问xxx.appspot.com时候,你会发现什么都出不来(按理应该是404页面,但是由于连404页面都没有设置 ,所以Nothing,检查http状态会发现返回的是404状态)。 这时候我们就要开始部署这个GAE App了:1.下载一个Google App Engine SDK for Python-Win,这样就可以在本地测试项目,然后发布到 GAE。 用这个GAE Launcher在本地创建了一个Application,注意标识符和你网上申请的要一致。然后会自动生成一个包含"」Hello Word!「的main.py和app.yaml的文件夹。其中app.yaml的内容是用来配置项目的。 相关链接:app.yaml的具体设置 我创建了一个名为jasontidemo的App,并且启动服务器,可以进行浏览。 在一切没有问题之后,我们就可以惦记Deploy部署这个项目了,这时候要输入帐号和密码,然后出现console控制台等待信息。出现下面提示时候,就说明上传成功 了。 Closing update: new version is ready to start serving. Uploading index definitions. Password for alswlwangzi@gmail.com: 2009-09-27 16:00:36 (Process exited with code 0) 这时候我们就可以打开xxx.appspot.com查看刚才部署的网站。 3.校内应用 拥有校内帐号,就可以创建校内应用。第一步是需要安装一个名为「开发者」 的应用。通过这个应用,可以链接到其他一些有帮助的内容:开放平台文档、测试工具、讨论区。 第二步是创建一个新的应用,按部就班的填上相关资料。 校内开发者,右上角可以申请开发应用(看讨论区貌似童鞋们都不满意这个开发平台呢) 我的应用程序,在这里可以编辑应用的属性 创建之后,就可以填上Canvas的基本选项中的「应用展示地址」和「Canvas Callback URL」,后者就是实际的地址,我们将填上刚才的xxx.appspot.com这种形式的网址。 最后测试自己的应用,也就是刚才「应用展示地址」,形式类似于apps.renren.com/xxx/,就可以看到我们的应用了,这时候基本框架就差不多了。 4.噩耗 此时当满天欢喜时候打开刚才的「应用展示地址」,你会惊奇的发现校内居然报错了,直接报了405错误。什么是405错误,就是服务器没有权限访问。 我花了一下午时间才解决这个问题,因为问题可能出在校内,也可能是GAE的功能限制上。 在appspot上测试这个应用是没有任何问题的 显示的源码,其中的xnml校内服务器自己可以解析出来的,这段代码在校内测试工具也能通过 调试之后,终于把问题锁定在get 和post上,具体原因是因为校内发起请求GAE服务器用的是Post方法,而我们的main.py中目前只相应get方法,导致了校内请求GAE Post方法,服务器没有这个方法调用,就返回了405错误。 修复这个问题只给main.py的MainHandler这个类加上post方法 class MainHandler(webapp.RequestHandler): def head(self, *args): return self.get(*args) def post(self): self.response.out.write’Hello world!') 5.结合 最后我加上一个简单的<xn:profile-pic />来展示一下整个App 下面我发布我的这个简单的Hello World!(其实因为要使用XNML,所以已经不是单纯的打出Hello World了) app.yaml:定义了main.py和404页面 application: jasontidemo version: 1 runtime: python api_version: 1 handlers: url: / script: main.py url: /index.html script: main.py url: /.* script: not_found.py main.py:我把post 和get写的比较Dirty,其实可以封装在一个函数里的。 import wsgiref.handlers from google.appengine.ext import webapp class MainHandler(webapp.RequestHandler): def head(self, *args): return self.get(*args) def post(self): self.response.out.write(’’’使用者的名称及其大中小三种头像: 图片: <xn:profile-pic uid=“loggedinuser” linked=“true” size=“tiny”/> <xn:profile-pic uid=“loggedinuser” linked=“true” size=“normal”/> <xn:profile-pic uid=“loggedinuser” linked=“true” size=“main”/> 姓名: <xn:name uid=“loggedinuser” linked=“true” shownetwork=“true” /> ''') def get(self): self.response.out.write(’’’使用者的名称及其大中小三种头像: 图片: <xn:profile-pic uid=“loggedinuser” linked=“true” size=“tiny”/> <xn:profile-pic uid=“loggedinuser” linked=“true” size=“normal”/> <xn:profile-pic uid=“loggedinuser” linked=“true” size=“main”/> 姓名: ...

2009-09-28 · alswl

当Google APP Engine遇上校内

Thumbnail

昨天看《程序员》时候看到一篇讲开放接口的文章,是FaceBook的一个开发人员写的,讲了很多关于开放平台的东西 。其中提到Google App Engine的云计算支持,FaceBook的FBML(校内的称为XNML,一种标记性语言)。 Google App Engine(GAE) Google App Engine让用户可以在 Google 的基础架构上运行的网络应用程序。Google App Engine 应用程序易于构建和维护,并可根据用户的访问量和数据存储需要的增长轻松扩展。使用 Google App Engine,将不再需要维护服务器:用户只需上传用户的应用程序,它便可立即为用户的用户提供服务。 通俗的说,App Engine就像是免费提供的一个500M高性能的空间,和一个appspot.com二级域名。在Google强大的云计算能力下,服务器的速度 和质量毋容置疑。现在App Engine支持Python和Java(似乎Java有些限制,具体的细节我没有看)。 ...

2009-09-27 · alswl