存档

作者存档

emacs下reStructuredText环境的配置经历

2012年8月9日 没有评论

       因为最近离职在家,终于有了时间进行各种折腾,例如在Emacs写reStructuredText,这是几个月前就有的一个想法,因为和朋友一起维护wordpress搭建的博客,可是又不喜欢用wordpress自带的文章编辑器。经过各种找,终于找到这个还算喜欢的方式。

      先介绍一下自己的配置环境,macbook pro 10.7.2的系统,自带emacs-22.1。根据使用emacs的经验先下载了rst.el放到了用户的.emacs.d/site-lis目录中,然后修改.emacs增加如下配置:

阅读全文…

[转载]SHELL脚本运行的几种方法以及区别

2012年7月2日 没有评论

SHELL脚本运行的几种方法以及区别

  1. 给脚本加上执行权限chmod u+x a.sh, 而后就可以直接用全路径来执行脚本了,比如当前文件夹下用./a.sh,如果如果脚本所在目录在PATH环境变量之中, 则直接用a.sh即可(这和运行我们自己编写的程序是一个道理)
  2. sh/bash  ./a.sh  这种情况不需要脚本具有执行权限

以上两种执行方式都是在子shell中执行的,也就是说当前shell需要启动另外一个shell,用来执行a.sh内的命令

  1. source  ./a.sh  
  2. .  ./a.sh(注意前面的 . )

以上两种执行方式是在当前shell下执行,并不需要建立子shell

source和 . 命令的作用:用来执行一个脚本


前两种方式和后两种方式的另外区别:如果你在一个脚本里export $KKK=111 ,如果你用./a.sh执行该脚本,执行完毕后,你运行
echo $KKK ,发现没有值,如果你用source来执行 ,然后再echo
,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是
source不同它就是在本shell中执行的,所以可以看到结果。

  • 执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出
  • 一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中)
  • 用export定义的变量会被复制到该shell的子shell中
  • 不用export定义的变量只对该shell有效,对子shell也是无效的

转自:http://www.360doc.com/content/11/0919/10/496343_149430114.shtml

分类: Linux 标签: ,

结构体边界对齐

2012年6月27日 没有评论

许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)。当一种类型S的对齐模数与另一种类型T的对齐模数的比值是大于1的整数,我们就称类型S的对齐要求比T强(严格),而称T比S弱(宽松)。这种强制的要求一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。比如这么一种处理器,它每次读写内存的时候都从某个8倍数的地址开始,一次读出或写入8个字节的数据,假如软件能保证double类型的数据都从8倍数地址开始,那么读或写一个double类型数据就只需要一次内存操作。否则,我们就可能需要两次内存操作才能完成这个动作,因为数据或许恰好横跨在两个符合对齐要求的8字节内存块上。某些处理器在数据不满足对齐要求的情况下可能会出错,但是Intel的IA32架构的处理器则不管数据是否对齐都能正确工作。不过Intel奉劝大家,如果想提升性能,那么所有的程序数据都应该尽可能地对齐。

规则:

第一,编译器按照成员列表的顺序给每个成员分配内存.
第二,当成员需要满足正确的边界对齐时,成员之间用额外字节填充.
第三,结构体的首地址必须满足结构体中边界要求最为严格的数据类型所要求的地址.
第四,结构体的大小为其最宽基本类型的整数倍.

sizeof操作符能够得出一个结构体的整体长度,包括因边界对齐而额外填充的那些字节.
offsetof(type, member)宏能求得成员在结构体内的偏移,返回size_t.

转自:[http://www.cnblogs.com/steady/archive/2010/11/05/1870296.html]

分类: Linux 标签: ,

翻译redis-natives-py

2012年6月11日 没有评论

redis-natives-py

redis-natives-py模块是对redis-py中Redis实体的简单抽象,以将其与python中的数据类型相对应。该模块简洁明了,但是功能强大。它没有采用ORMing或者model-messing,因为这些不是Redis等高性能的k-v存储软件的使用方向。 阅读全文…

分类: Python 标签: ,

python中多进程模式实现

2012年6月5日 没有评论

1. 启动多个进程注册不同的端口,利用反向代理来实现

2.一个进程监听,多个进程处理

3.开启多个子进程处理(可能出现问题:multiprocessing模块和os.fork会使得两个进程重复在事件核心注册accept事件,导致文件句柄重复的异常)

分类: Python 标签: ,

[转载]LANG,LC_ALL,local详解

2012年4月28日 没有评论

/etc/sysconfig/i18n

locale 是国际化与本土化过程中的一个非常重要的概念,个人认为,对于中文用户来说,通常会涉及到的国际化或者本土化,大致包含三个方面:看中文,写中文,与 window中文系统的兼容和通信。从实际经验上看来,locale的设定与看中文关系不大,但是与写中文,及window分区的挂载方式有很密切的关 系。本人认为就像一个纯英文的Windows能够浏览中文,日文或者意大利文网页一样,你不需要设定locale就可以看中文。那么,为什么要设定 locale呢?什么时候会用到locale呢? 阅读全文…

分类: Linux 标签: , ,

Android中运行Ice-Java demo提示java.lang.VerifyError: com.zeroc.hello.HelloApp

2012年3月27日 没有评论

在网上查了下,大致有两种原因
1. 大多数可能引用的外部jar文件出现了问题,比如说package的路径产生了问题,但该类被class文件定义了。
2. 调用了一些编译器产生异议的问题,可能是使用的sdk版本不同,但源代码是一些更老版本的定义。
阅读全文…

分类: android 标签: ,

[转载]gevent 安装

2012年3月21日 没有评论

其实很简单,记录在这里给有需要的朋友,大多数问题其实是出在easy_install 上的,遇到此类问题,最好能去下个源包,比如这个:
http://pypi.python.org/packages/source/g/gevent/gevent-0.13.1.tar.gz#md5=5c1b03d9ce39fee4cfe5ea8befb1d4c4

解压后,要先运行下其中的:
python fetch_libevent.py

然后:
python setup.py build
python setup.py install

齐活!简单伐?

转载自:
1.http://iyuan.iteye.com/blog/815073

分类: Python 标签: ,

[转载]python 线程,GIL 和 ctypes

2012年3月21日 没有评论

1 GIL 与 Python 线程的纠葛
GIL 是什么东西?它对我们的 python 程序会产生什么样的影响?我们先来看一个问题,
运行下面这段 python 程序,CPU 占用率会到多少:

# 请勿在工作中模仿,危险:)
def dead_loop():
while True:
pass

dead_loop()

阅读全文…

分类: Python 标签: ,

python GIL 相关

2012年3月20日 没有评论

对于纯python代码,即使开启多个线程也无法并行执行,因为GIL会将它们串行化,但这并不意味着多线程在python中无用武之地:
一个I/O密集型的线程因等待而sleep时,会释放GIL,另一个线程这时可以接手(因为在输入输出函数会更多地调用内建的C级代码,而不是Python级代码)
可以在C扩展中开启多个线程,不受GIL的限制,比如ctypes
对于多用户的程序或者需要responsive interface的GUI程序,多线程是一个很好的解决方案

参考文档:
1.http://septem.iteye.com/blog/1002509

分类: Python 标签: ,