自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dynamic Life

静若处子 动若脱兔

  • 博客(29)
  • 收藏
  • 关注

原创 回归

一晃多年,看到2008年7月最后一篇博文,真有点唏嘘的感觉,从今天起,回归我的博客。分享,改变世界 :)

2012-06-19 10:20:25 13930 18

原创 《Python源码剖析》上架

经过几年的打磨,在博文视点的大力支持下,《Python源码剖析》终于上架了。当年开始剖析Python源码的时候,对于出版,心里只有一个朦朦胧胧的梦想,甚至可以说是幻想,现在幻想成真,回想一下,其间的跌宕也真让人感慨。只要坚持,梦想终会成真。很多书籍出版的时候都会说,自此书以后,学xxx技术的可以分为两类,一类是读过此书的,一类是没读过此书的。我不敢做如此的豪言,但是我敢保证,这本书的内容会让你花的

2008-07-21 11:03:00 28993 38

原创 在调试时自动输出变量名

在Python中,最好的debug方式是什么?毫无疑问,是print,但是print有时候显得有点笨拙,比如考虑下面的代码:def f(value):    a = value    print af(3)我们通过print输出a的值,方便debug,但是如果你的代码里有十几个变量需要这样的方式来查看值,那你一定会搞不清谁对应谁,所以,我们还需要什么呢?毫无疑问,变量的名字!最简单

2008-04-25 12:49:00 12798 9

原创 Decorator的另一种实现方式

这一切都源自python-cn邮件列表上的一个话题,这个话题中,leopay给出了另一种实现decorator的方式:一般decorator都是写一个嵌套函数,def A(func):    def new_func(*args, **argkw):        #做一些额外的工作        return func(*args, **argkw) #调用原函数继续进行处理    return

2008-04-19 23:46:00 17782 3

原创 Cobra —— 编译结果数据与名字空间数据的展示

终于又有点时间来推进Cobra了,sign~~,已经放下很久了。目前的进展有两个,第一是添加了Python虚拟机服务器端到客户端的状态传递机制,这样当Python虚拟机处于不同状态时,Web端的工具栏会根据不同的状态enable不同的按钮。同时,完善了虚拟机端和Web端的通信机制,使得现在的Cobra可以连续处理多个py文件了。第二是加入了Python编译时得到的数据和运行时的名字空间中的数据的展

2008-04-12 12:28:00 15575 6

原创 Cobra —— 字节码指令的动态定位与展示

这几天花了点时间完善Cobra,目前又有了新的进展。对于“下一步”功能,之前实现了对运行时栈的展示,目前,又进一步完善了“下一步”的展示功能,实现了对当前字节码的动态定位和展示。 当提交了一个待观测的文件之后,Cobra会自动定位到第一条字节码指令,并高亮显示,同时在“字节码”区域中展示字节码指令的含义:当点击“下一步”之后,运行时栈得到了更新,同时,Cobra会自动定位到下一条字节码

2007-10-13 18:09:00 15511

原创 Cobra —— 迈进Ajax时代

公司目前正在积累Web2.0的相关技术,正好就拿Cobra来练练手。以后的Cobra将放弃基于wxPython的GUI方式,而是改用基于DHTML+Ajax的技术。在GUI上做出动态的视觉效果实在是一件很繁琐的工作,但是利用Javascript + DOM就能很容易地做到。目前仅仅将显示反编译结果的GUI空间进行了Web化,其中在视觉效果方面,生产力的提高还是很容易就能感受到的。目前后端是基于

2007-08-19 10:49:00 16723 11

原创 Cobra —— 用于显示当前执行字节码的GUI部件

最近忙于公司项目上线,Cobra的进度有点慢了,不过今天有了新的成果了,一个展示反编译结果并能高亮显示当前正在执行的GUI部件——pySrcPanel。下图展示了基于pySrcPanel构建的一个demo。 可以看到,python的源代码和源代码的反汇编结果以大家熟悉的python缩进格式显示出来。每一条反汇编的字节码指令都是作为一条注释出现的,这样的好处是可以通过颜色的对比非常容易地

2007-07-20 14:23:00 15934 1

原创 Cobra —— 对Python源文件进行完整反汇编

不论是Python标准库中自带的dis,还是我们之前看到的sdis,都只能一次对一段代码进行反汇编,对于Cobra来说,这还不是很方便。为了在Cobra的GUI界面中显示对一个.py文件完整的反汇编结果,我们还需要一个比sdis更加强大的反汇编工具,这就是disassemble。disassemble能一次性地对一个.py文件进行完整的反汇编,同时将反汇编结果以用户用好的方式嵌入到源文件中,从

2007-06-30 15:00:00 24624 1

原创 Cobra —— super dis

在Python的标准库中,有许多库是用于Python的编译和反编译(呃,确切地说,是反汇编)。在Python自带的文档中“Python Library Reference”的“Python Language Services”一部分中,列出了这些库。dis是其中一个,官方的描述是“disassembler for python byte code”通俗地说,dis是python编译后结果中字节

2007-06-22 14:24:00 17839

原创 Cobra——client与server通信

Cobra的基本框架有了一个雏形,Cobra的client和server之间的通信能够实现,同时,也能够使Python虚拟机在client的控制下运行。由于client需要向server传递两类独立的信息:1、待执行的py源文件;2、控制虚拟机执行的指令。所以cobra server在两个端口分别监听这两类信息,它们分别对应的端口是6061和6060。当cobra server启动时,会在6061

2007-06-17 15:12:00 18674

原创 Cobra —— 可视化Python虚拟机

开始着手一个项目,Cobra(眼镜蛇),希望可视化Python虚拟机的内部运行状态,初步的想法Cobra分为下面两方面:1、 Cobra Server:修改Python源代码,通过socket和client通信,使Python虚拟机能够支持单步执行、断点设置等功能,还能向client传回Python虚拟机当前状态。2、Cobra Client:基于wxPython实现,通过socket与serve

2007-06-16 21:15:00 22366

原创 监控Python中的引用计数

问题缘起于python-cn邮件列表的一个问题:http://groups.google.it/group/python-cn/browse_thread/thread/758891b4342eb2d9/92c12bf6acd667ac 有趣的是,为什么在Python2.4中sys.getrefcount(11111111)的结果是2,到了Python2.5中却摇身一变,变成了 3?更令人惊奇的

2007-06-12 18:34:00 38537

原创 重读《Python Tutorial》

最近在重新阅读刘鑫翻译的《Python Tutorial》,发现Guido真是字字珠玑啊......

2007-06-08 10:18:00 16318

原创 Python源码剖析[15] —— 最简单的Python实现:Small Python

[绝对原创 转载请注明出处]Python源码剖析——Small Python本文作者: Robert Chen ([email protected] ) 1.      Small Python在详细考察了Python中最常用的几个对象之后,我们现在完全可以利用这些对象做出一个最简单的Python。这一章的目的就是模拟出一个最简单的Python——Small Python。 在Sm

2006-01-05 00:11:00 14624 3

原创 Python源码剖析[14] —— 字典对象PyDictObject(3)

Python源码剖析——字典对象PyDictObject(3)本文作者: Robert Chen ([email protected]) 4         PyDictObject对象缓冲池前面我们提到,在PyDictObject的实现机制中,同样使用了缓冲池的技术: [dictobject.c] #define MAXFREEDICTS 80 static PyDictObje

2006-01-05 00:09:00 13034 1

原创 Python源码剖析[13] —— 字典对象PyDictObject(2)

[绝对原创 转载请注明出处]Python源码剖析——字典对象PyDictObject(2)本文作者: Robert Chen ([email protected]) 3         PyDictObject的创建和维护3.1.1    PyDictObject对象创建[dictobject.c] typedef PyDictEntry dictentry; typedef Py

2006-01-05 00:08:00 19351

原创 Python源码剖析[11] —— PyListObject对象(3)

[绝对原创 转载请注明出处]Python源码剖析——PyListObject对象(3)本文作者: Robert Chen ([email protected] ) 3.      PyListObject对象缓冲池还记得吗,刚才我们按下了一个有趣的话题。没错,就是那个缓冲池,free_list。现在,是揭开它的神秘面纱的时候呢。我们想知道的问题是:free_list中所缓冲的PyL

2006-01-05 00:06:00 9157

原创 Python源码剖析[10] —— PyListObject(2)

[绝对原创 转载请注明出处]Python源码剖析——PyListObject对象(2)本文作者: Robert Chen ([email protected] ) 2.      PyListObject的创建与维护2.1     创建Python中只提供了唯一一种创建PyListObject对象的方法—PyList_New: [listobject.c] PyObject* Py

2006-01-05 00:04:00 8784 2

原创 Python源码剖析[9] —— PyListObject对象(1)

[绝对原创 转载请注明出处]Python源码剖析——PyListObject对象(1)本文作者: Robert Chen ([email protected] ) 1.      PyListObject对象元素的一个群是一个非常重要的抽象概念,我们可以将符合某一特性的一堆元素聚集为一个群,当然,还要可以向群中添加或删除元素。这样的群的概念对于编程语言十分重要,C语言就内建了数组的

2006-01-05 00:03:00 2308

原创 Python源码剖析[8] —— 字符串对象(3)

[绝对原创 转载请注明出处]Python源码剖析——字符串对象PyStringObject(3)本文作者: Robert Chen([email protected] ) 5.      PyStringObject效率相关问题关于PyStringObject,有一个地球人都知道的严重影响Python程序执行效率的问题,有一种说法,绝大部分执行效率特别低下的Python程序都是由于

2006-01-05 00:02:00 2175 1

原创 Python源码剖析[7] —— 字符串对象(2)

[绝对原创 转载请注明出处]Python源码剖析——字符串对象PyStringObject(2)本文作者: Robert Chen([email protected] ) 3.      Intern机制无论是PyString_FromString还是PyString_FromStringAndSize,我们都注意到,当字符数组的长度为0或1时,需要进行了一个特别的动作:PyStr

2006-01-05 00:01:00 3021 1

原创 Python源码剖析[6] —— 字符串对象(1)

[绝对原创 转载请注明出处]字符串对象,在任何一门主流编程语言中,都是整数对象之外使用最广泛的对象。它和整数对象犹如少林,武当,双峰对峙。本章将研究Python中的字符串对象的实现,同整数对象一样,字符串对象的实现中采用了很多额外的机制来保证性能的优化。 本章内容分为三个部分:1. 研究Python中的字符串对象PyStringObject2. 研究字符串对象的效率加速机制3. 分析字符串连接操作

2006-01-05 00:00:00 3132 1

原创 Python源码剖析[5] —— 整数对象(3)

[绝对原创 转载请注明出处]Python源码剖析——整数对象PyIntObject(3)本文作者: Robert Chen ([email protected]) 3         Hack PyIntObject现在,让我们荡起双桨,哦不对,让我们挽起衣袖和裤脚J,来和PyIntObject大战一场。我们渴望在运行时观察Python的整数对象体系的变化。这一点,完全可以通过修改

2005-12-31 22:10:00 2435

原创 Python源码剖析[4] —— 整数对象(2)

[绝对原创 转载请注明出处]Python源码剖析——整数对象PyIntObject(2)本文作者: Robert Chen ([email protected]) 2         PyIntObject对象的创建和维护2.1       对象创建的三种途径 在intobject.h中可以看到,可以从三种途径获得一个PyIntObject对象:   PyObject *PyInt

2005-12-31 22:09:00 5972 2

原创 Python源码剖析[3] —— 整数对象(1)

[绝对原创 转载请注明出处]作为Python中最简单的对象,整数对象是研究Python对象体系的一个非常好的切入点。直观上会认为整数对象的实现非常简单,如果单纯以整数对象而言,实现确实非常简单。然而在Python中,为了运行效率,实际上存在着一个以缓冲池为核心的整数对象的体系结构,实际上,Python各种对象几乎都拥有这样一个以缓冲池为核心的体系结构,理解这一点对Python运行时行为的了解有重要

2005-12-31 22:05:00 3722 2

原创 Python源码剖析[2] —— 对象机制

[绝对原创 转载请注明出处]Python源码剖析——对象机制本文作者: Robert Chen([email protected]) 1.      对象在Python的世界中,一切都是对象,一个整数是一个对象,一个字符串也是一个对象,更为奇妙的是,类型也是一个对象,整数类型是一个对象,字符串类型也是一个对象。从1980年Guido在那个圣诞节揭开Python世界的大幕开始,一直到

2005-12-31 22:01:00 8457 1

原创 Python源码剖析[1] —— 编译Python

[ 绝对原创,转载请注明出处] 注意 :第一部分Python总体架构采用了网络文档《The Architecture of Python》,这是网络上唯一可见的以剖析Python实现为己任的文档。可惜是作为一门课程的作业的结果,太简略了,有点“食之无味,弃之可惜”的感觉。这里借用其介绍Python总体架构的部分,比较简略,以后我会再充实。Python源码剖析——编译Python本文作者: Robe

2005-12-31 21:56:00 10380 6

原创 Python源码剖析[12] —— 字典对象PyDictObject(1)

[绝对原创 转载请注明出处]Python源码剖析——字典对象PyDictObject(1)本文作者: Robert Chen ([email protected]) 1         散列表概述元素和元素之间通常可能存在某种联系,这种神秘的联系使本来绝不相同的两个元素捆绑在一起,而别的元素则被排斥在外。比如对应于“2倍”,这样一种联系,6和3就是这样的两个元素,而4和2同样也是被

2005-12-31 21:45:00 2921 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除