手头有个pyQT的项目里面使用QtWebKit, 用于在客户端中展示网页内容。虽然使用QtWebkit实现了基本功能。但是存在不少问题。 QtWebKit打开页面速度慢,一些js代码无法正常运行,需要自己去实现的东西太多。由于时间有点紧,所以就准备找第三方实现的库来做。
最后采用CEF(Chromium Embedded Framework)。 这个项目稳定(2008开始),社区活跃。而且还有python实现cefpython。
cefpython 使用cython 实现与libcef之前的交互。项目2012-05-08提交0.11,到最近2012-12-27提交0.51版本的cef1。
使用New BSD License 开源协议。目前只有czarek.tomczak一人维护。 cefpython项目分为cef1, cef3 。cef1的完成度比较高,cef3可用的api太少。 由于项目中对webkit的要求比较少。 所以直接拿来使用。
问题和不足
- 项目完成度还不高,存在一些问题。好在作者开发热情很高,问题能很快解决。
- 目前只支持windows和mac。
- 编译需要安装windows SDK和vs2008。
更多链接
认识cgroup和 lxc
引子
[CPyUG] 对于python的sandbox,有什么好的方案吗? 由python的沙箱引出虚拟化中的两个名词lxc和cgroup。
cgroup(control groups)
- cgroup, wikipedia 中的定义
- http://www.kernel.org/doc/Documentation/cgroups/, cgroups 官方文档
- http://www.cnblogs.com/lisperl/tag/虚拟化技术, 这里对官方文档做了翻译
Lxc(LinuX Containers)
- lxc, wikipedia 中的定义
- Linux Containers - ArchWiki
- LXC - Community Ubuntu Documentation, See also
- How to LXC - this is one of ...
bbcp,替代scp的多线程传输工具
选用bbcp替代scp的原因
这两天用scp往服务器上传数据,scp传输速度太慢。特别是网络不太稳定的时候,速度非常慢。惨不忍睹。 所以想找个替代工具。
使用中遇到的问题
如何好用, 比scp 快多少就不测试了。这里说说遇到问题。
- 需要目标服务器上同样放置bbcp程序。如果有admin权限,比较好办。
- 防火墙。由于采用了多个端口同时传输数据, 所以需要开发至少8个端口用于传输数据。
- 目标服务器在公网,并且开放端口,直接传输;
- 目标服务器在内网,
- 防火墙映射端口,直接传输。
- 目标服务器无法映射端口,本地开放端口或者可以映射端口, 可以使用-Z(同--port 此为12.08.17版本中加入,如果无法使用, 请使用 --help 查看版本) 传输。
- 本地也无法映射端口。那就没辙了。
- 连接目标服务器ssh的端口貌似没法修改, 默认22。 但是好多服务器都修改了这个端口。(提供了-S, 但是不会设置)
bbcp的相关网页
read more基于pelican 写blog
很久之前在dotcloud上面部署了一个pypress, 更新几篇之后就停歇了.
最近在G+上面的ubuntu中文社区看到+mutse young贴了个使用pelican的截图
pelican 是托管在github上的开源项目. 基于python.
目的是让geek很方便的使用markdown 或者rst 写博客.
之前在选用pypress之前也接触过直接生成html的一些项目, 不过那个时候觉得写作和部署都很麻烦.
随着最近一些项目中使用到了rst和markdown写文档, 加之对git 的熟悉以及对github的喜爱. 决定试用一下pelican.
官方的文档 很齐全. 配置和使用过程中的问题,都能在官方文档里面找到说明.
read more莫工厂的面试题之一古诗横转(二)
要求横转古诗输出,输出的结果请运行一下程序。
之前使用列表解析实现,还可以用map + zip 实现矩阵转换。当然使用NumPy 也可以很方便实现。
代码如下:
string = u"""静夜思 李白 床前明月光, 疑似地上霜。 举头望明月, 低头思故乡。 """ list_s=[L for L in string.splitlines()[::-1]] out=map(list,zip(*list_s)) print '\n'.join([U'┊'.join(row) for row in out])
python实现一个Stack类
python 实现Stack类。
之前网上也有不同的实现,但是不是感觉版本太老就是感觉写的不好。自己写了一个,请大家指教。
# -*- coding:utf-8 -*- class Stack(object): """ Stack 类 """ def __init__(self, other=None): """doc test >>> s = Stack([1,2,3,4]) >>> s.pop() 4 >>> s.count 3 >>> e = Stack([1,2,3,4]) >>> s != e True >>> s.push(4) >>> s == e True >>> s += e >>> len ...
莫工厂的面试题之一古诗横转
要求横转古诗输出,输出的结果请运行一下程序。
string = u"""静夜思 李白 床前明月光, 疑似地上霜。 举头望明月, 低头思故乡。 """ list_s=[L for L in string.splitlines()[::-1]] row_num = max(map(len,list_s)) out=[[row[L] for row in list_s] for L in xrange(row_num)] print '\n'.join([U'┊'.join(row) for row in out])
计算当前目录下的子目录数量并打印子目录名称
问题:
组里有人问,有什么好方法来统计当前目录下所有子目录的数量。
解决方案:
我大致综合大家提出的方法,做了一个对照。实现方法有4个 。其中test_diskwalk.py 是利用python 的os.walk 做的。
- time find /usr/ -type d |wc -l
- time python test_diskwalk.py /usr/
- time tree -ad /usr/ |tail -1
- ls -aR /usr/|grep ":$" |wc -l
大致结果是ls 和tree快, find 接近是ls 的1.5倍。 os.walk 更慢。测试不太精准,权当娱乐。
对照测试具体步骤:
利用python ...
read more