Tornado 多进程实现分析

Fri 11 April 2014

引子

Tornado 是一个网络异步的的web开发框架, 并且可以利用多进程进行提高效率, 下面是创建一个多进程 tornado 程序的例子.

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
import time

import tornado.web
import tornado.httpserver
import tornado.ioloop
import tornado.netutil
import tornado.process


class LongHandler(tornado.web.RequestHandler):

    def get(self):
        self.write(str(os.getpid()))
        time.sleep(10)


if __name__ …

Category: Python Tagged: Python fork_processes tornado 多进程 web 提升 效率

comments

Read More

记一次 zsh 产生僵尸进程解决

Fri 21 March 2014

问题描述

今天使用 vmplayer 运行了 xp 系统, 关闭后在 zsh 里继续敲命令就阻塞了, 然后就关闭了终端重新打开, 还是阻塞, 重复几次依然如此. 然后使用 gVim 将 shell 切换到 bash, 终端可以正常打开, 然后运行

$ ps aux | grep zsh
wh       27552  0.0  0.1  47244  5164 ?        Ss   09:38   0:00 zsh
wh       27553  0.0  0.1  47244  5156 ?        Ss   09:38   0 …

Category: Linux Tagged: zsh 进程 阻塞 命令 D 僵尸

comments

Read More

解决一直崩溃的 Adobe Flash Player

Wed 12 March 2014

1月份的时候决定从 Ubuntu 换到 Archlinux, 换完之后 Flash Player 就一直没正常过. 一打开视屏就 crash. 从那之后就一直用手机看视屏, 很别扭, 放着大屏不用一直盯着手机看看. 今天下定决心找找原因. google 了一阵也没有啥结果, 所以我决定卸载现有的, 手动安装一个试试.

$ sudo pacman -R flashplugin

结果卸载的时候输出段信息:

warning: /etc/adobe/mms.cfg saved as /etc/adobe/mms.cfg.pacsave

然后我看了下文件内容

$ cat /etc/adobe/mms.cfg.pacsave
#Hardware video decoding
EnableLinuxHWVideoDecode=1

瞬间觉得可能是这个选项引起的, 所以我又装上了 flashplugin …

Category: Linux Tagged: archlinux flash player crash 解决

comments

Read More

使用 Pygments 对 Vimwiki 进行代码高亮

Fri 27 December 2013

Vimwiki 推荐的代码高亮机制是通过一个 JavaScript 插件来完成的, 那样需要加载很多 js, 所以不想使用, 比较倾向使用 Pygments 在 Vimwiki 生成 HTML 的时候对代码进行高亮.

尝试

使用 custom_wiki2html 选项

仔细的看了 Vimwiki 的帮助文档, 发现有一个 custom_wiki2html (:h vimwiki-option-custom_wiki2html) 的选项可以指定自己 的脚本来处理 wiki2html, 尝试了一下, 发现这个脚本是在生成 HTML 之前调用, 而且如果对 wiki 文件处理之后无法替换回原来的内容(后来发现这个仅仅是对使用 Markdown 语法作为 Wiki 语法设定的), 所以放弃了.

Fork 仓库, 更改代码

后来想想既然原生的没有解决办法, 所以就干脆在 github 上 fork 了仓库 …

Category: Vim Tagged: vim vimwiki pygments python highlight

comments

Read More

使用 Vimwiki + git 做知识管理

Thu 26 December 2013

一直在找一个合适的知识管理工具, 用过 Evernote, 但是不支持 Markdown, 用了一段时间也放弃了. 最近 python-cn 列表里也在讨论这个问题, 看到有人使用 Vimwiki, 所以就尝试了一下.

安装后,试着写了点东西, 发现很方便做知识管理和记录笔记, 可以生成HTML, 可以定制模板, 这里不讨论如何使用, Vimwiki 的文档介绍的很详细,

我使用bootstrap和 jquery 对模板进行了一些定制:

  • 添加导航
  • 将toc移动到左侧

下面将介绍我是如何做的, 并在最后附上如何部署的

指定模板

首先需要更改默认模板

    let g:vimwiki_list = [{'path': '~/vimwiki',
    \    'path_html': '~/vimwiki_html',
    \    'template_path': '~/vimwiki/template',
    \    'template_default': "default.tpl"}]

并将默认的模板作为模板进行修改

mkdir -p ~/vimwiki/template
cp …

Category: Vim Tagged: vim vimwiki wiki 知识 管理 git

comments

Read More

PyQt + QML 快速开发GUI总结

Wed 06 November 2013

最近结束一个使用PyQt+QML开发的项目, 在此对一些经验做出总结分享出来. 结合QML确实可以快速的构建出GUI程序, 但是相关资料太少, 特别是中文资料, 而且坑太多, 特别是和后端PyQt结合的时候有很多莫名奇妙的问题. 这篇文章会总结这些问题, 避免以后碰到无从下手.

PS:QML的一些基础问题不会在这里讨论, 本篇文章仅讨论一些经验性的问题, 本篇文章使用PyQt4

请留意文章中间的"注意"

如何和PyQt交互

QML和PyQt交互主要有三种方法: PyQt渲染数据, 信号传递, QML提供接口

使用PyQt显示QML

要想在Python里使用PyQt来调用QML显示, 需要用到 PyQt4.QtDeclarative.QDeclarativeView 实例的 setSource 将一个 PyQt4.QtCore.QUrl 对象传递进去, 然后调用 PyQt4.QtDeclarative.QDeclarativeView 对象的 show 方法, 下面是一个例子:

from PyQt4.QtDeclarative import QDeclarativeView
from PyQt4.QtGui …

Category: PyQt Tagged: QML PyQt Gui Python Qt

comments

Read More

推荐几款最近发现非常酷的Vim插件

Fri 18 October 2013

最近看一个github上的Vim配置, 发现了几款非常酷而且非常有用的Vim插件:

  • delimitMate 用于补全括号和引号
  • vim-surround 用于快速切换括号/引号或者标签
  • GitGutter 实时显示git更改
  • Gitv 查看Git详细提交日志(类似gitk)
  • vim-commentary Vim批量注释工具, 可以注释多行和去除多行注释
  • indentLine 更加美观的显示缩进对齐线

先放上录屏:

安装

上面插件可以通过 Vundle 来安装 (了解Vundle猛击 这里), 下面是 .vimrc 的配置

Bundle "Yggdroot/indentLine"
Bundle "airblade/vim-gitgutter"
Bundle "gregsexton/gitv"
Bundle "tpope/vim-commentary"
Bundle "tpope/vim-surround"
Bundle "Raimondi/delimitMate"

然后重新打开 Vim, 执行 :BundleIntall 等待安装完成 …

Category: Vim Tagged: Vim 插件 缩进对齐线 Git surround delimitMate

comments

Read More

Vim 相对行号

Wed 09 October 2013

大家在用Vim时是否会遇到想复制多行或者想快速向下/向上移动多行时而不知道行数的情况, 相对行号将帮助你轻易的完成类似的任务

Category: Vim Tagged: Vim 相对 行号

comments

Read More
Page 2 of 10

« Prev Next »

Fork me on GitHub