手头有个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

01-09-2013 by luw2007

引子

[CPyUG] 对于python的sandbox,有什么好的方案吗? 由python的沙箱引出虚拟化中的两个名词lxc和cgroup。

cgroup(control groups)

Lxc(LinuX Containers)

read more

bbcp,替代scp的多线程传输工具

01-07-2013 by luw2007

选用bbcp替代scp的原因

这两天用scp往服务器上传数据,scp传输速度太慢。特别是网络不太稳定的时候,速度非常慢。惨不忍睹。 所以想找个替代工具。

使用中遇到的问题

如何好用, 比scp 快多少就不测试了。这里说说遇到问题。

  1. 需要目标服务器上同样放置bbcp程序。如果有admin权限,比较好办。
  2. 防火墙。由于采用了多个端口同时传输数据, 所以需要开发至少8个端口用于传输数据。
    • 目标服务器在公网,并且开放端口,直接传输;
    • 目标服务器在内网,
      • 防火墙映射端口,直接传输。
      • 目标服务器无法映射端口,本地开放端口或者可以映射端口, 可以使用-Z(同--port 此为12.08.17版本中加入,如果无法使用, 请使用 --help 查看版本) 传输。
      • 本地也无法映射端口。那就没辙了。
  3. 连接目标服务器ssh的端口貌似没法修改, 默认22。 但是好多服务器都修改了这个端口。(提供了-S, 但是不会设置)

bbcp的相关网页

read more

基于pelican 写blog

12-14-2012 by luw2007

很久之前在dotcloud上面部署了一个pypress, 更新几篇之后就停歇了.

最近在G+上面的ubuntu中文社区看到+mutse young贴了个使用pelican的截图

pelican 是托管在github上的开源项目. 基于python.

目的是让geek很方便的使用markdown 或者rst 写博客.

之前在选用pypress之前也接触过直接生成html的一些项目, 不过那个时候觉得写作和部署都很麻烦.

随着最近一些项目中使用到了rst和markdown写文档, 加之对git 的熟悉以及对github的喜爱. 决定试用一下pelican.

官方的文档 很齐全. 配置和使用过程中的问题,都能在官方文档里面找到说明.

read more

关于博客更新的想法

10-21-2011 by luw2007

blog 不知道写什么. 天天都会看邮件列表和问答社区. 

准备把CpyUG 里面自己回答到的问题组织一下思路.

转发到blog 中来. 不知道涉及不涉及到版权的问题. 

read more

莫工厂的面试题之一古诗横转(二)

09-21-2011 by luw2007

要求横转古诗输出,输出的结果请运行一下程序。

之前使用列表解析实现,还可以用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])
read more

python实现一个Stack类

09-16-2011 by luw2007

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 ...
read more

莫工厂的面试题之一古诗横转

09-16-2011 by luw2007

要求横转古诗输出,输出的结果请运行一下程序。

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])
read more

计算当前目录下的子目录数量并打印子目录名称

09-08-2011 by luw2007

问题:

组里有人问,有什么好方法来统计当前目录下所有子目录的数量。

解决方案:

我大致综合大家提出的方法,做了一个对照。实现方法有4个 。其中test_diskwalk.py 是利用python 的os.walk 做的。

  1. time find /usr/ -type d |wc -l
  2. time python test_diskwalk.py /usr/
  3. time tree -ad /usr/ |tail -1
  4. ls -aR /usr/|grep ":$" |wc -l

大致结果是ls 和tree快, find 接近是ls 的1.5倍。 os.walk 更慢。测试不太精准,权当娱乐。

对照测试具体步骤:

利用python ...

read more