- 博客(199)
- 资源 (1)
- 收藏
- 关注
原创 Bottle(Flask)样的tornado开发
起因:今年春节后发现有个tornado web的东西,app server+web framework的集合体,正好工作中有个项目需要其中的异步远程调用的特性,遂研究之,用到现在感触良多,其性能尚可,但是作为Web Framework看来其封装方式我并不喜欢,窃以为不够紧凑,需要设置的地方不够清晰,很多功能的使用稍显繁琐。并且在新创建一个app的时候如果不参看已有的app做为...
2010-09-08 00:26:29
242
原创 在tornado的database.py基础上封装了一个Python的DAL出来,召集帮忙测试的同学
tornado内部化包含了一个很简陋的database.py,最近在这个简单封装了MysqlDb的模块基础上增加增强的功能。对于Python这种动态语言来说我觉得ORM有点过度封装了,很多时候简单的数据操作不好用,太复杂的操作又不如直接写Sql,所以我放弃了Orm的方式,而是直接抽象了Sql的构建,现在的版本支持单表的sql查询,支持子查询,当然还有一些操作有所遗漏,我会继续向项目里追加。...
2010-08-24 09:50:58
210
玩蛇记-给tornado加上session支持
WARNING! 阅读本文需要具有使用python编程的能力以及Web编程的经验,起码应该知道python是什么,Session是什么。初学者慎入,某些描述语焉不详,小心误入歧途,欢迎高手踊跃拍砖。本文代码仅仅作为示例使用,用于说明在tornado中实现session的过程以及方法,未经过任何编译或者运行,请勿直接copy到项目中使用,本人不对此行为造成的后果负任何责任。(此文实现内容源于商业项...
2010-05-28 00:17:00
304
玩蛇记-使用Tornado构建高性能Web之二-autoreload
书接上回,在本系列的第一部分,我们创建了一个helloword的应用,并且能够通过浏览器访问它,这样我们就可以用Tornado来开发网站了,嗯,这是可喜的第一步,不过当你决定了用tornado开发网站,并且开始写新的handler的时候,你会发现需要频繁的,关掉,再重新启动服务器,这是一件非常让人抓狂的事情,我们需要在程序修改后,服务能够自动reload新的代码,和asp.net一样。但是torn...
2010-03-24 01:05:00
217
玩蛇记之用python实现易宝快速支付接口
现在很多这种快速支付的通道,易宝支持的通道算是很全面的,正好最近需要集成易宝的支付通道到平台中,所以写一贴来记录一下,顺便鄙视一下国内的支付平台,api的支持做得很是差劲,易宝的例子代码居然是错的,这么囧的事情都能出现,可见国内的竞争还是不够激烈啊。 进入主题,今天的任务是要打通支付和支付通知接口,根据一般性规则,通过http协议的支付接口的一般设计都是,通过N个field或者查询参数传递数据,...
2010-03-21 17:18:00
225
玩蛇记-使用tornado构建高性能Web应用之一
这个新系列是为了记录在python下的工作点滴,最近从微软平台突然转换到了linux平台下工作,于是.NET不怎么排得上用场,且在python下工作多日才发现原来在.NET下的日子真是往事不堪回首月明中……当然仅仅是一家之言,纯属个人感受。总之呢,玩蛇记这个系列就是用来专门记录python下工作的感想之用了。 在.NET下工作崇尚集成化,集成化的IDE,一体化的服务器,从操作系统到webserv...
2010-03-20 01:02:00
158
4行python代码,删除svn文件夹
svn很好用,但是如果要删除svn文件夹的绑定是个很麻烦的事情,每个目录下都有.svn的文件夹,必须全部删掉才行。手动删除费时费力,一般都写段脚本搞定,不过网上搜索出来的python脚本都太冗长了,一点也体现不出python的优势。如下,网上搜索到得代码:代码<!--<br/ /><br/ />Code highlighting produced by Actip...
2010-02-23 14:11:00
207
程序猿的小说阅读器
半夜看小说突发灵感,遂谋杀时间2H,搞定小程序一个-程序猿专用小说阅读器引用发在codeplex上的项目介绍就是 引用Project Description这是一个邪恶的程序,其用途是用于程序员在上班的时候神不知鬼不觉的看txt小说......为了达到神不知鬼不觉的目的,本程序被设计为一个console应用程序,并且设置了boss键,一按下后就会在console里print出大堆...
2010-01-20 16:57:00
394
装修月记第一弹,硬装篇
硬装完成进入配饰阶段,特此记录。 房屋位置: 首先是入户这个地方,由于没有设计生活阳台(靠,有入户没生活阳台,有生活阳台没入户,真是很FT,FT的蓝光)所以热水器和气表放在了这里,我打算做个什么把他们挡起来,不过通气前暂时没有办法了。很丑 后边的是鞋柜,从这里可以看出来我用了安信的地板,实木复合 一进门最显眼的其实是入户的地面,火山岩的马赛克,真是很昂啊 再一抬眼就能看到很...
2009-12-21 15:13:00
210
也就说说异常那些事儿
前言 首先本文的阐述源于本人自身对异常的理解,以及总结归纳自身实践以及网络所带来经验。 其次是本文的目的,源于再次探讨企业级开发中的Try......Catch性能问题 一文,我对此文的实践结果无异议,但是其立论实在值得商榷,故书此文共同探讨之。 何谓异常 很多人在讨论异常的时候很模糊,仿佛所谓异常就是try{}catch{},异常就是Exception,非常的片面,所以导致异常影响性能,...
2009-12-18 13:16:00
181
利用电信能力开放平台轻松开发短信应用
中国电信在最近开放了其能力平台,现在这个项目正处于beta1的状态,利用能力平台,开发者可以轻松的通过统一的API调用电信提供的多种能力,包括语音呼叫(多方通话)、短信、IVR、GPSOne定位等多种能力,并且将这些能力整合成自己的特色应用,通过电信的MM平台向所有中国电信的3G用户推广,销售,并从中获取收益。相对于iphone和android的平台,电信的能力开放平台更加接近运营商的核心业务,合...
2009-12-04 22:39:00
374
再来谈谈切换输入法以及IMM/IME
本文旨在对前文的遗漏之处做一个patch,继而详细和大家讨论一下输入法相关的内容,毕竟给中国人用的程序难免会遇到打字的需求,提到打字必然会遇到输入法。 首先是对前文的一个补遗,如果你直接copy前文的代码执行可能会发现本没有出现想象中的鼠标一点,输入法就变了,为啥呢。因为我漏掉了一个步骤,也就是对输入法状态的重置。 需要在调用ImmSetConvertionStatus前对要切换输入法的...
2009-11-26 13:23:00
279
再来谈谈切换输入法以及IMM/IME
本文旨在对前文的遗漏之处做一个patch,继而详细和大家讨论一下输入法相关的内容,毕竟给中国人用的程序难免会遇到打字的需求,提到打字必然会遇到输入法。 首先是对前文的一个补遗,如果你直接copy前文的代码执行可能会发现本没有出现想象中的鼠标一点,输入法就变了,为啥呢。因为我漏掉了一个步骤,也就是对输入法状态的重置。 需要在调用ImmSetConvertionStatus前对要切换输入法的...
2009-11-26 13:23:00
249
在应用程序中精确切换输入法
如果在你的程序里需要输入很多的内容,比如各类单据,如果在进入每一个录入框的时候都能自动把输入法切换到合适的状态将会是一个很酷的特性,相比炫丽的界面而言打字到手抽筋的录入人员们对此会更加感兴趣。在winform中切换输入法是很简单的事情: foreach (InputLanguage iL in InputLanguage.InstalledInputLangua...
2009-11-23 12:14:00
721
在应用程序中精确切换输入法
如果在你的程序里需要输入很多的内容,比如各类单据,如果在进入每一个录入框的时候都能自动把输入法切换到合适的状态将会是一个很酷的特性,相比炫丽的界面而言打字到手抽筋的录入人员们对此会更加感兴趣。在winform中切换输入法是很简单的事情: foreach (InputLanguage iL in InputLanguage.InstalledInputLangua...
2009-11-23 12:14:00
149
让你的控件舞动起来
最近有个需求是需要窗体上要有很炫的效果,比如动画划过的panel,跟随鼠标移动的动画,动画扩大缩小的panel,诸如此类,如果单独写这些效果一是要被烦死,二是窗体内的代码会一团糟,所以弄了个指挥其他控件移动变形的控件。使用方法很简单,首先把这个控件拖到窗体 然后在需要移动其他控件的时候,比如我想在窗体上让一个按钮移动到鼠标当前点击的位置,那么只需要在窗体的mouse_click事件里这么写:...
2009-11-20 16:49:00
141
让你的控件舞动起来
最近有个需求是需要窗体上要有很炫的效果,比如动画划过的panel,跟随鼠标移动的动画,动画扩大缩小的panel,诸如此类,如果单独写这些效果一是要被烦死,二是窗体内的代码会一团糟,所以弄了个指挥其他控件移动变形的控件。使用方法很简单,首先把这个控件拖到窗体 然后在需要移动其他控件的时候,比如我想在窗体上让一个按钮移动到鼠标当前点击的位置,那么只需要在窗体的mouse_click事件里这么写:...
2009-11-20 16:49:00
112
脑残的FtpWebRequest 2之事故现场重现
鉴于上一篇POST过于抽象以至于很多人无法理解,现在用代码来说话,我们一起来重新回顾一下事故现场的情况。 首先在本机安装FTP软件,我这里使用的Serv-U一个用得非常广泛的Ftp Server,准备好Ftp的目录,我这里使用自己放mp3的目录 其中有一个子目录 2 我们可以看到两个目录的内容截然不同以方便我们重现事故现场。 第二部我们建立一个Winform项目 之后...
2009-11-14 14:37:00
160
脑残的FtpWebRequest 2之事故现场重现
鉴于上一篇POST过于抽象以至于很多人无法理解,现在用代码来说话,我们一起来重新回顾一下事故现场的情况。 首先在本机安装FTP软件,我这里使用的Serv-U一个用得非常广泛的Ftp Server,准备好Ftp的目录,我这里使用自己放mp3的目录 其中有一个子目录 2 我们可以看到两个目录的内容截然不同以方便我们重现事故现场。 第二部我们建立一个Winform项目 之后...
2009-11-14 14:37:00
210
惊天大Bug?让人呕血的FtpWebRequest
本来以为2.0开始内置了FtpWebRequest,以后不用再受没有更新保障的第三方Ftp类库的限制,结果今天遇到的问题,让我呕血三升不得其解。看来又得自己写FtpClient的类了。言归正传,先说问题 以前用到Ftp上传很多都是一次性的操作,所以如果: FtpWebRequest req = (FtpWebRequest)FtpWebRequest.Create("url"); 之 后的话...
2009-11-13 17:10:00
254
惊天大Bug?让人呕血的FtpWebRequest
本来以为2.0开始内置了FtpWebRequest,以后不用再受没有更新保障的第三方Ftp类库的限制,结果今天遇到的问题,让我呕血三升不得其解。看来又得自己写FtpClient的类了。言归正传,先说问题 以前用到Ftp上传很多都是一次性的操作,所以如果: FtpWebRequest req = (FtpWebRequest)FtpWebRequest.Create("url"); 之 后的话...
2009-11-13 17:10:00
132
用edas写一个简单的http Server,扩展http协议的处理器
为了说明一下基础tcp开发库是如何扩展来处理上层协议的,我这里用一个简单到极点的Http Server来作为例子。这个例子会处理发到特定端口的所有http请求,并返回显示Hello world的网页。 由于是一个很简单的例子,所以我们并不需要解析完整的Http协议,当然我们是能够很快构建一个http处理器,毕竟这是一个基于文本行的协议,不过即使这样还是需要很大的篇幅,所以我们只需要处理其中一小部...
2009-11-11 23:04:00
94
用edas写一个简单的http Server,扩展http协议的处理器
为了说明一下基础tcp开发库是如何扩展来处理上层协议的,我这里用一个简单到极点的Http Server来作为例子。这个例子会处理发到特定端口的所有http请求,并返回显示Hello world的网页。 由于是一个很简单的例子,所以我们并不需要解析完整的Http协议,当然我们是能够很快构建一个http处理器,毕竟这是一个基于文本行的协议,不过即使这样还是需要很大的篇幅,所以我们只需要处理其中一小部...
2009-11-11 23:04:00
97
发一个异步TCP开发库,求批评,求指正,求BUG
经常在在用socket开发程序的时候会遇到很麻烦的事情,要处理网络异常,要实现异步提高性能,要处理粘包,分包,要分析处理协议,如果能够有一个如同java下的mina一样的开发库会很方便,所以写了这个东西,先在只实现了TCP协议,还很简陋,先在发出来在还能改正的时候求批评,求指正,免得以后不好调头。项目的地址在http://edas.codeplex.com/。 因为很简单,就几个类所以就不装样子...
2009-11-11 15:26:00
89
发一个异步TCP开发库,求批评,求指正,求BUG
经常在在用socket开发程序的时候会遇到很麻烦的事情,要处理网络异常,要实现异步提高性能,要处理粘包,分包,要分析处理协议,如果能够有一个如同java下的mina一样的开发库会很方便,所以写了这个东西,先在只实现了TCP协议,还很简陋,先在发出来在还能改正的时候求批评,求指正,免得以后不好调头。项目的地址在http://edas.codeplex.com/。 因为很简单,就几个类所以就不装样子...
2009-11-11 15:26:00
71
自己动手实现自定义线程池
老赵在前几次的POST里分析了.NET的自带线程池,由于.NET自带的线程池在底层通过win32api调用的windows的进程附带的线程池,所以对于进程,这个线程池是唯一的,而且很不幸的是很多.NET自身的操作也需要通过这个线程池来完成,比如timmer。所以我们来尝试自己写一个线程池,这个线程池不是静态的,一个进程里可以出现多个线程池的实例,我们可以随时放入要执行的操作,由于没有系统线程池的创...
2009-10-31 19:52:00
149
自己动手实现自定义线程池
老赵在前几次的POST里分析了.NET的自带线程池,由于.NET自带的线程池在底层通过win32api调用的windows的进程附带的线程池,所以对于进程,这个线程池是唯一的,而且很不幸的是很多.NET自身的操作也需要通过这个线程池来完成,比如timmer。所以我们来尝试自己写一个线程池,这个线程池不是静态的,一个进程里可以出现多个线程池的实例,我们可以随时放入要执行的操作,由于没有系统线程池的创...
2009-10-31 19:52:00
93
我也来推荐一个强大的flash应用
一个基于flash的视频聊天室,http://www.shan6.com/ 通过rtmp协议实现的视频聊天,如果用flex实现视频聊天尚算容易的话,这个站点的视频服务器并不是基于FMS也不是开源的Red5,而是用C#从头实现RTMP协议来开发的一个Flash媒体服务器,站点的业务逻辑也不是通过AS3而是通过C#来写的。基于IOCP的高并发设计使其能够支撑达到服务器带宽极限的并发用户数。不...
2009-10-19 13:06:00
191
互联网应用盈利模式研究之免费的秘密:逆向收费
很早的时候就想弄个人网站,当时正是个人网站的黄金时代,但是苦于一没钱没精力来扩大网站的规模,二没有好的盈利模式,终于不了了之。后来回想起来常常不胜唏嘘,早年很多做互联网技术入行的人想必都是怀揣着成为张朝阳,丁磊第二的梦想进入互联网这个行业。做互联网开发的,应该都有一个做一个好站,一夜成名的梦想。拿破仑说过不想当将军的士兵不是好士兵,所以我也有同样的梦想,所本文仅为本人长期对互联网行业的观察以及所思...
2009-10-17 23:36:00
288
互联网应用盈利模式研究之免费的秘密:逆向收费
很早的时候就想弄个人网站,当时正是个人网站的黄金时代,但是苦于一没钱没精力来扩大网站的规模,二没有好的盈利模式,终于不了了之。后来回想起来常常不胜唏嘘,早年很多做互联网技术入行的人想必都是怀揣着成为张朝阳,丁磊第二的梦想进入互联网这个行业。做互联网开发的,应该都有一个做一个好站,一夜成名的梦想。拿破仑说过不想当将军的士兵不是好士兵,所以我也有同样的梦想,所本文仅为本人长期对互联网行业的观察以及所思...
2009-10-17 23:36:00
170
利用迭代器让异步操作更加“人性化”-山寨版的AsyncEnumerator
在msdn上读到 使用 AsyncEnumerator 简化 APM 一文,深感启发,但是找寻power threading库的源代码未果,遂山寨之,简陋不周之处多多包涵。.NET下通过AsyncCallback回调来实现异步访问IO,比如FileStream,NetworkStream,之类的都有BeginXXX,和EndXXX等成对出现的方法,将实现AsyncCallback回调的方法作为参数...
2009-10-13 12:15:00
109
利用迭代器让异步操作更加“人性化”-山寨版的AsyncEnumerator
在msdn上读到 使用 AsyncEnumerator 简化 APM 一文,深感启发,但是找寻power threading库的源代码未果,遂山寨之,简陋不周之处多多包涵。.NET下通过AsyncCallback回调来实现异步访问IO,比如FileStream,NetworkStream,之类的都有BeginXXX,和EndXXX等成对出现的方法,将实现AsyncCallback回调的方法作为参数...
2009-10-13 12:15:00
85
利用迭代器在.NET中实现“超轻量级线程”
经常在python,lua之类的脚本语言看到 超轻量级线程的概念,动辄上百万的线程,硕大的线程数量非常的养眼,今天突发奇想,在c#下也来弄个超轻量线程的实现,虽然很简陋,但是希望能和大家一起来讨论讨论。且不说超轻量级的线程有用无用。其实现原理基本上都是在单线程中来模拟线程的切换,由于没有线程切换的开销,所以看着比系统线程要快。在python中一般通过yield关键字来实现。翻遍msdn发现c...
2009-10-08 14:19:00
80
利用迭代器在.NET中实现“超轻量级线程”
经常在python,lua之类的脚本语言看到 超轻量级线程的概念,动辄上百万的线程,硕大的线程数量非常的养眼,今天突发奇想,在c#下也来弄个超轻量线程的实现,虽然很简陋,但是希望能和大家一起来讨论讨论。且不说超轻量级的线程有用无用。其实现原理基本上都是在单线程中来模拟线程的切换,由于没有线程切换的开销,所以看着比系统线程要快。在python中一般通过yield关键字来实现。翻遍msdn发现c...
2009-10-08 14:19:00
91
apache+mod_wsgi部署quixote的方法
折腾了好几天,终于搞定,特此记录,如有大牛发现方法有所不妥,请指正一下,不胜感激涕零........ 过程如下: 假设python2.5和quixote你已经安装了 1.安装apache2.2 ,过程略 2.下载mod_wsgi.so 3.copy到apache的modlues目录下 4.给quixote准备连接mod_wsgi的脚本,代码如下: 由于qwip需要支持多...
2009-06-19 15:00:00
132
apache+mod_wsgi部署quixote的方法
折腾了好几天,终于搞定,特此记录,如有大牛发现方法有所不妥,请指正一下,不胜感激涕零........ 过程如下: 假设python2.5和quixote你已经安装了 1.安装apache2.2 ,过程略 2.下载mod_wsgi.so 3.copy到apache的modlues目录下 4.给quixote准备连接mod_wsgi的脚本,代码如下: 由于qwip需要支持多...
2009-06-19 15:00:00
115
利用metaclass实现python的aop
修行Python个把星期,终于有点成果了,呵呵,一个利用metaclass实现的aop。其实python这类非常动态的语言要实现AOP是很容易的,所以首先我们要来先定义一个metaclass然后我们要在__new__()这个metaclass 的时候动态植入方法到要调用地方法的前后。具体代码如下:<bgsound cep="0"><span style="color: #...
2008-12-06 23:34:00
87
利用metaclass实现python的aop
修行Python个把星期,终于有点成果了,呵呵,一个利用metaclass实现的aop。其实python这类非常动态的语言要实现AOP是很容易的,所以首先我们要来先定义一个metaclass然后我们要在__new__()这个metaclass 的时候动态植入方法到要调用地方法的前后。具体代码如下:<bgsound cep="0"><span style="color: #...
2008-12-06 23:34:00
167
获取数据库结构的奥义......(无码,完全版,未删节)
看过《朝花夕拾:代码生成器的基础——获取数据源的架构信息》一文,感觉,方法正确但是点到即止,没有完全说透,所以来个补全版。经验之谈,欢迎拍砖 首先是获取的方法,没错,都是采用的Connection的GetSchema方法,但是这个方法对于不通的Connection来说,也就是底层连接的数据库有所不同的话,返回的DataTable其实是有区别的。有的是返回所有表和视图,有的是返回系统表+用户表+...
2008-10-14 13:10:00
150
获取数据库结构的奥义......(无码,完全版,未删节)
看过《朝花夕拾:代码生成器的基础——获取数据源的架构信息》一文,感觉,方法正确但是点到即止,没有完全说透,所以来个补全版。经验之谈,欢迎拍砖 首先是获取的方法,没错,都是采用的Connection的GetSchema方法,但是这个方法对于不通的Connection来说,也就是底层连接的数据库有所不同的话,返回的DataTable其实是有区别的。有的是返回所有表和视图,有的是返回系统表+用户表+...
2008-10-14 13:10:00
202
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人