web.py在cgi下的install

Posted on Mon 19 April 2010 in miscLeave a comment

由于ixwebhosting下无法安装web.py之类的程序,只能将web.py当作工程的一部分。这需要将web.py下的web目录拷贝到工程目录中,以后只需要import web就可以使用web.py了。

web.py可以和Lighttpd,Apache搭配使用。web.py的官网推荐的是使用lighttpd(fastcgi)。这里介绍的是Apache下的CGI方式(这种方式效率不高,不过在ixwebhosting下只能使用这种方式)。

在.htaccess下添加如下代码:

[codesyntax lang="apache"]

Options +ExecCGI
AddHandler cgi-script .py

[/codesyntax]

或者在http.conf(或apache2.conf)下添加如下代码:

[codesyntax lang="apache"]

Alias /foo/static/ /path/to/static
ScriptAlias /foo/ /path/to/code.py

[/codesyntax ...

Continue reading

apache url rewrite

Posted on Mon 19 April 2010 in miscLeave a comment

最近在ixwebhosting上安装了web.py(python下的一个full stack web framework),为了在路径中隐藏.py,需要使用url rewrite。apache中mod_rewrite可以实现这个功能。

在ixwebhosting下,可以修改网页根目录下的.htaccess,具体内容见下。

[codesyntax lang="apache"]

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/icons
RewriteCond %{REQUEST_URI} !^/favicon.ico$
RewriteCond %{REQUEST_URI} !^(/.*)+index.py/
RewriteRule ^(.*)$ index.py/$1 [PT]

[/codesyntax]

以后使用http://www.test.com/就相当于访问index.py,而且/*都由index.py来处理。\

mod_rewrite还有更多的内容,以后逐渐更新

Continue reading

subprocess(python)

Posted on Sun 18 April 2010 in miscLeave a comment

subprocess 是python在2.4版本之后引入的用于subprocess管理的module。subprocess中有一个重要的类Popen和一个重要的方法call。下面对Popen和call进行相关说明。

Popen用于新建一个subprocess,下面是它的构造函数。

class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)

其中:

args是运行进程的命令行(与shell中输入的命令行一样);

bufsize, if given, has the same meaning as the corresponding ...

Continue reading

pyqt的安装(linux下)

Posted on Sun 18 April 2010 in miscLeave a comment

nokia在收购qt之后,让qt出现了lgpl的licence,这一举动获得了不少赞许。nokia也希望pyqt能有lgpl的licence,只可惜与Riverbank谈判不拢,pyqt依旧是gpl的licence。迫不得已,nokia只好自己搞个类似pyqt的项目(pyside)。这个pyside项目的协议是lgpl的,目前还不够完善,但相信以后的前景是不错的。

目前pyqt仍然是主流,所以下面说一下pyqt的安装。由于windows有安装的exe,几乎不用配置就可以安装上,这里就不做说明。

要在linux下安装pyqt,首先需要安装Riverbank的SIP。在SIP安装前需要确保系统上安装了python-devel(python 开发的一些文件,在fedora下可以直接yum安装)。

安装SIP过程:

1.下载SIP,解压。

2.从命令行中进入SIP的目录,输入python configure.py

3.在上一步成功之后,输入make(需要确保有make,gcc等一系列编译工具)

4.在上一步成功之后,输入make install。到此sip安装完成。

接着是pyqt的安装:

1.下载pyqt,解压 ...

Continue reading

vimrc配置(持续更新)

Posted on Sun 18 April 2010 in miscLeave a comment

文章转载自http://jmcpherson.org/vimrc.html

.vimrc and customization

vim is extremely customizable. It will read the file .vimrc in your home directory before it starts. This file can contain settings and even scripts. The below settings are ones I've found helpful -- give them a try!

set nocompatible

This setting ...

Continue reading

libvlc与pyqt搭配使用

Posted on Tue 30 March 2010 in miscLeave a comment

libvlc是vlc播放器社区所提供的一个库,使用这个库,可以快速实现一个全能的播放器(支持很多视频格式的播放)。对于这个库,官方提供的是c++版本,不过现在有很多语言的binding,如python, java, c#等。要提到的一点是,libvlc是gpl协议的。为了更方便与pyqt联合起来使用,我选择了python binding的libvlc。对于python版本,官方wiki上所给出的链接地址是错误(可能是过期的原因)的,下面给出最新的地址。http://liris.cnrs.fr/advene/download/python-ctypes/ 从最新的地址下载到vlc.py文件之后,你可以将vlc.py放到sit-package或当前工作目录中。如果要导入这个文件,只需要在python脚本中添加import vlc即可。python版libvlc的api详情可参见http://liris.cnrs.fr/advene/download/python-ctypes/doc/index.html。要实现视频的播放,仅仅靠一个vlc.py是不够的,您还需要确保个人的机器上有vlc的lib ...

Continue reading

编译libtorrent rasterbar(linux下)

Posted on Fri 26 March 2010 in miscLeave a comment

六维、晨光等ipv6的bt下载站只支持为数不多的client,仅支持utorrent, k**(名字忘记了,和KDE有些关系), transmission(在linux上貌似没法下载,仅支持mac os)。为了能在linux下下载电影,我只好用wine+utorrent来搞定(不想装k**)。可是用的时间久了,总觉得有点什么。于是呢,我就想自己写个支持torrent协议的程序,再在上面添加上边下边播放(utorrent上一直没有,我觊觎这个功能很久了)的功能。在网上搜索了相关的一些资料,最后决定使用libtorrent rasterbar(网上还有另外一个叫libtorrent的库,而且那个库仅支持linux)。libtorrent rasterbar用到了boost的一些库,正好最近我也在学习boost。下面是libtorrent的编译过程。\

1.编译boost

这里我使用了boost.build来编译生成。

a.首先进入BOOST_ROOT/tools/jam/src目录(BOOST_ROOT为boost的根目录),接着在命令行中运行./build.sh

b.将上一步所生成bin.XXX目录中的bjam拷贝到系统的path(如/usr/local ...

Continue reading

gcc编译(持续更新)

Posted on Thu 25 March 2010 in miscLeave a comment

gcc -I[path] 后接include目录

gcc -L[path] 后接library目录,一般会与-l(L小写)[library name(如libabc.a,名称就为abc)]连用。

gcc -static 静态链接。可能会产生"cannot find -lm"错误,这是由于缺少glibc-static的原因(fedora系统上就可能存在这个问题)。安装上glibc-static后,/usr/lib/目录下会出现libm.a这个文件。

gcc -o[out name] 接输出文件的名称

gcc -w                inhibit all warning message (不允许出现任何warning消息) [东哥]

gcc -Wall            打开部分的warning的flag,这部分flag所对应的 warning可能是用户避免或觉得有问题的。

gcc ...

Continue reading

Template

Posted on Sun 21 March 2010 in miscLeave a comment

文章内容参考了http://www.cplusplus.com/doc/tutorial/templates/

个人觉得template的使用,使得 c++更加oo了。下面就记录下template的几种用法。\

Function template

函数template的声明和定义一般使用如下的方法。

[codesyntax lang="cpp" title="function template"]

//declaration
template //or template 
T getMax(T, T);

//definition
template //or template 
T getMax(T lfs, T rfs){
   return (lfs > rfs)?lfs:rfs;
}

[/codesyntax]

函数的使用如下。\ 中的内容为类型名称,在某些情况(编译器能够理解 ...

Continue reading

#pragma(转载自百度百科)

Posted on Fri 19 March 2010 in miscLeave a comment

#pragma

#pragma 预处理指令详解\ 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和 C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。\ 其格式一般为: #Pragma Para\ 其中Para 为参数,下面来看一些常用的参数。\ (1)message 参数。 Message 参数能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:\ #Pragma message(“消息文本”)\ 当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。\ 当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏可以用下面的方法\ #ifdef _X86\ #Pragma message(“_X86 macro activated!”)\ #endif\ 当我们定义了_X86这个宏以后,应用程序在编译时就会在编译输出窗口里显示“_X86 macro activated!”。我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了 ...

Continue reading