随笔分类 - python
my favourite programming language! I love python!
摘要:深入的学习了下 git 的各种用法。 闲来无事 看看django的提交历史。 想看看各位牛人都提交了些什么。24小时前django的master分支更新的一段代码。 很有意思。| +++ b/django/template/defaultfilters.py| @@ -827,17 +827,23 @@ def filesizeformat(bytes):| | filesize_number_format = lambda value: formats.number_format(round(value, 1), 1)| | - if bytes < 1024:| + ...
阅读全文
摘要:看到邮件列表里面讨论遍历一个目录下的文件 最 pythonic 的做法。有点绕 但是确实简洁实用。效率也很高。收藏下。分解下这神奇的一行代码吧sum([[os.path.join(base,file) for file in files] for base,,files in os.walk(dir)],[])这一句是两个嵌套的列表推倒,加上一个内置的sum函数得到了结果。sum在这里的用法不同于平常我们对sum的使用比较特殊。列表推倒还是比较容易理解的。首先外层的列表推倒 遍历出所有的 base 和 files, 这里的base是所有的路径,而files则是对应路径下的所有文件。写成In [
阅读全文
摘要:经常看到QQ群里面有朋友问python程序该如何调试的问题. 学会用pdb之前 我也一直很困惑. 原来在eclipse下使用Pydev开发的时候 可以使用pydev自带的调试工具.转到emacs下开发后 发现啦 pdb 以及pdb的加强版 ipdb 这些工具相当的强大.. 用起来也非常容易首先需要安装 pdb 貌似是内置在python中的. 不需要安装ipdb$ pip install ipdb就可以啦在程序需要中断的地方插入from ipdb import set_traceset_trace()运行程序后, 会在执行到set_trace()的时候中断程序 并出现提示符(ipdb) ...这
阅读全文
摘要:写上篇日志时 偶然发现这个 可以输出可读性很好的日期格式http://pypi.python.org/pypi/py-pretty/1py-pretty 1Formats dates, numbers, etc. in a pretty, human readable format.Downloads ↓Sample code::from datetime import datetime, timedeltanow = datetime.now()hrago = now - timedelta(hours=1)yesterday = now - timedelta(days=1)tomorro
阅读全文
摘要:在一个表单中 遇到需要判断填入的开始时间不能早于结束时间自己想到一个笨办法. 用 " 结束时间 - 开始时间 " 如果减后得到的结果 小于或者等于 0显然是错的 因为两个datetime对象 相减后 得到的是一个timedelta对象 , 而timedelta对象当然是不能与 int 对象来比较大小的于是查了下文档 发现timedelta对象的值是有取值范围的AttributeValuedaysBetween -999999999 and 999999999 inclusivesecondsBetween 0 and 86399 inclusivemicrosecondsB
阅读全文
摘要:使用HTMLParser去除HTML源文件中的标签和属性在一些情况下,比如输出一片文章的摘要,前面的若干个字,但是存储在数据库中的文章又 偏偏是带有格式的HTML。这种情况下,可以使用下面这种方法将HTML中所有的标签剔除干净。from HTMLParser import HTMLParserdef strip_tags(html): html=html.strip() html=html.strip("\n") result=[] parse=HTMLParser() parse.handle_data=result.append parse.feed(h...
阅读全文
摘要:django在命令行下执行的脚本使用ORM项目中遇到一个东西需要写一个deamon来处理,需要在deamon脚本中使用到djangoORM来操作数据库,这样就需要在deamon script中初始化一个django environment# settings.pyfrom os.path import joinimport os.pathsettings_path = os.path.abspath(os.path.dirname(__file__))# deamon.pyimport sysimport settingsfrom django.core.management import s
阅读全文
摘要:1.memcached安装使用apt-get安装memcached# sudo apt-get install memcached启动一个memcached实例# memcached -m 10 -p 12000-m 10 是指定最多使用的内存大小单位是M,如果不指定默认会使用64M-p 12000 是指定端口号,默认端口为11211另一个例子 说明一下参数memcached -d -m 10 -u root -l 192.168.40.4 -p 12000 -c 256 -P /tmp/memcached.pid参数说明:-d选项是启动一个守护进程-m是分配给Memcache使用的内存数量.
阅读全文
摘要:pywin安装模块:http://sourceforge.net/projects/pywin32/files/import win32apiimport win32conwin32api.keybd_event(17,0,0,0) #ctrl键位码是17win32api.keybd_event(86,0,0,0) #v键位码是86win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) #释放按键win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)附个键位码表:字母和数字键 数字小键盘的键
阅读全文
摘要:[刺鸟原创文章,转载请注明出处]在前面的文章中,我们已经开始了不少逻辑功能的开发,在这期间也有不少可以分享的经验点,这个我们以后慢慢道来。今天,我们主要讨论下如何让服务端能进行分布式部署和工作。一:为什么要支持分布式部署和开发众所周知,python是单线程的语言,存在GIL锁、无法利用多核CPU等诸多限制,为了能让服务端能承载更多的用户,我们必须让程序能在逻辑上、甚至物理上分开,当用户达到一定数量的时候,我们能新开一个进程来响应请求,或多加一台服务器来处理请求。这样就能达到理论上无限扩展的可能性。二:如何让程序能达到上述效果我们简单分析下我们的服务端要实现的功能:战斗服务器:通过之前的文章可.
阅读全文
摘要:[刺鸟原创文章,转载请注明出处]前面的工作都已准备就绪,现在我们得来看看服务端怎么和客户端之间进行通信了,Python和FLASH之间的通信,我整理为以下3种:1、用现成的协议及类库处理,比如:pyamf2、自己封包进行二进制数据流通信3、用JSON字符串通信一、JSON和二进制数据流的优缺比较pyamf有比较现成的文档,因此,这里我主要研究研究后两种。我们先简单分析下JSON和数据流各自的优缺点:JSON:优点:数据结构灵活,无需先制定复杂的协议;跨语言之间基本都有完整的解决方案。缺点:传送的数据因为要增加json的特征符(',"",:,{等),导致数据量较大;明
阅读全文
摘要:[刺鸟原创文章,转载请注明出处]在之前的准备工作中,我们已经建立了一个socket服务器,并且经过了简单的测试,得到的结论是python可以满足我们的需求,那么接下来,我们要解决的是身为webgame服务端必须的几个功能模块:一、记录和维护所有客户机的状态更新:按照jinmin_lan同学的建议,这里直接用self.transport.sessionno即可,查twisted文档的时候我忽略了这个东西。因此无需按照我下面的方法来手动维护,好吧,我造了一次轮子……为了实现这个功能,我们先回过头来分析下之前的服务端代码:1、每个客户端连接会有一个gameSocket对象被创建,然后触发connec
阅读全文
摘要:[刺鸟原创文章,转载请注明出处]就在刚才,我们用基于python下的Twisted库写了一个简单的socket服务器,不知道它的性能和基本的承载到底如何呢?接下来,我们作一个简单的测试。说是简单的测试,一点也不假,因为这确实只是最基本的测试,流程是这样的:用python写一个客户端,设定连接数,然后向我们指定的端口发起socket连接,连接成功后,向服务端发送一个字符串并一直保持连接状态,服务端在收到客户端的内容后,向它回复:bingo!igotyourmsg:{content}。好啦,有了需求,开始动手吧!把我们之前的服务端代码略作修改:fromtwisted.internet.proto.
阅读全文
摘要:[刺鸟原创文章,转载请注明出处]在开始之前,先简单描述一下项目的特点:我要实现的是一个mmorpg的webgame,地图上需要看到其他的玩家,战斗系统采用半回合制的模式,所谓的半回合制,即是:采用回合制的画面布局,友方和敌方分列左右,但是战斗的中途,其他的玩家可以及时的随时插入这场战斗。当然,作为一款rpgGame,装备加工,NPC对话,任务逻辑等是必不可少的了。在分析了需求以后,我为这款game的程序结构定义如下:客户端,毋庸置疑肯定是flash,服务端分为两块:一是通讯不需要很及时,但是会涉及到很多逻辑处理的模块(如:各UI窗口内的逻辑,NPC对话逻辑,装备加工等),我为此选择了PHP作.
阅读全文
摘要:本文是从A Google Interviewing Story这篇文章翻译而来。问题是这样的:假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有?比如,如果是下面两个字符串:String 1: ABCDEFGHLMNOPQRSString 2: DCGSRQPOM答案是true,所有在string2里的字母string1也都有。如果是下面两个字符串:String 1: ABCDEFGHLMNOPQRSString 2: DCGSRQPOZ答案是false,因为第二个字符串里的Z字母
阅读全文
摘要:by AKara 2010-08-07微博:http://weibo.com/akaras博客:http://blog.csdn.net/akara邮箱:akaras(at)163.com标签:网易 / MMORPG / 动作网游 / 项目运营 / 技术管理--------------------------------------------------------------------- Python编程规范(for Python2.5 by AKara)-------------------------------------------------------------------
阅读全文
摘要:Python 的类的下划线命名有什么不同?1,以一个下划线开头的命名 ,如_getFile2,以两个下划线开头的命名 ,如__filename3,以两个下划线开头和结尾的命名,如 __init__()4,其它这些命名有什么不同吗首先是单下划线开头,这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数,如果使用 from a_module import * 导入时,这部分变量和函数不会被导入。不过值得注意的是,如果使用 import a_module 这样导入模块,仍然可以用 a_module._some_var 这样的形式访问到这样的对象。在 Python 的官方推荐的
阅读全文
摘要:Python数值和进制转换1.1 python中数值类型 int 整型 123 long 长整型 2147483648L float 浮点型 3.14不同的数值类型会自动扩充 int数值大于或等于2^31次方,会自动转换成long 表示方式是在数值后面加上L 如果int或long和float一起运算,结果会自动扩充到float >>> 3.14 + 1 4.14python中没有数值溢出的概念,如果超出int的范围会自动扩充到long, 而长整型上不封顶,可以表示非常大的数字1.2 不同的进制二进制 0b101 以数字0和字母b打头的表示二进制数 如果出现大于等于2的数 会抛
阅读全文
摘要:教学类图书 OpenBookProject -- 开放图书计划!使用DocBook 标准化的生产/维护/创建/推广好书! OsmondLiang创立 CDBE 作者 PyProgFaq -- 《Python编程FAQ》-- 由liqust翻译 PyFaqDict -- 总是要回答的基础的不能再基础的一些概念词典! PyIAQ -- Python 罕见问题集! PySourceCode -- 从Py...
阅读全文
摘要:前天找到这个代理windows下cmd的开源小程序功能很强大 不过有点小问题 就是文字内容会偏移显示 很不爽 上网查了下 发现是由于文字编码问题造成的因为console2只是cmd的一个代理程序所以需要在console2的窗口中 右击 选择 view->console window进入到cmd界面 然后在cmd的标签上选择 属性->字体->新宋体保存时选择第二项 保存属性,供以后具有相同标题的窗口使用这样在下次进入console2时 就不会出现上述屏幕偏移的问题了.另外 关于中文输入 貌似目前无解只能通过选择 view->console window在弹出的cmd窗口中
阅读全文
浙公网安备 33010602011771号