月度归档:2012年02月

由于装Argonaut导致pylons问题的解决留档

昨天为了看其他人pylons的项目源代码,而安装了argonaut,结果今天发现(昨天没有想到测试)pylons test页面出问题了,显示如下:

500 Server Error

A misconfiguration on the server caused a hiccup. Check the server logs, fix the problem, then try again.

 

首先我就麻爪了。因为是虚拟主机,自己的权限有限,所以很害怕出问题,甚至担心是供应商把我的权限给拿到导致的。然后就测试,首先测试其它普通的.py文件,发现正常,这样至少证明普通的py脚本没问题。

然后就重新去看了下development.ini文档,里面debug=ture还是被注释掉的。

再下一步,就开始怀疑pylons那里是否有问题了。进入python>>> import pylons ,结果出错,提示大约如下:

Python: ImportError: No Module Named _md5

md5 = __get_builtin_constructor(‘md5′)
File “/usr/lib/python2.5/hashlib.py”, line 60, in __get_builtin_constructor
import _md5
ImportError: No module named _md5

从网上找到解决方法是:

Searching on the Internet, It is caused incompatible by Python 2.5.1 and openssl-0.9.8a, the python 2.5.1 need the openssl library (symbol link: libssl.so.4 and libcrypto.so.4, and also libc.so.6 which is supplied by libc), but the openssl-0.9.8a only supply the libssl.so.6 and libcrypto.so.6 at /lib/, solution as following:
1. login as user “root”
2. cd /lib/
3. ln –s libssl.so.0.9.8e libssl.so.4
4. ln -s libcrypto.so.0.9.8e libcrypto.so.4
5. check in the python: execute python, then input “import md5”, if there is no output, the bug is fixed.

 

当然我的情况稍有不同,我没有root账户,我的python也不是用root账户装的,ok这在bluehost就是如此。

于是我把所说的那两个链接文件链接到~/python/lib 目录了。然后import md5 ,pass 了,再import pylons ,也不报错了。现在打开pylons test页面,乌拉,正常啦!过程如下:

(env)quyecom@quye.com [~/python/lib]# ln -s /lib/libssl.so.0.9.8e libssl.so.4
(env)quyecom@quye.com [~/python/lib]# ln -s /lib/libcrypto.so.0.9.8e libcrypto.so.4
(env)quyecom@quye.com [~/python/lib]# ~/python/bin/python
Python 2.7.2 (default, Jul 22 2011, 23:13:34)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import md5
>>> exit()
(env)quyecom@quye.com [~/python/lib]# python
Python 2.7.2 (default, Jul 22 2011, 23:13:34)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import md5
>>> exit()
(env)quyecom@quye.com [~/python/lib]# python
Python 2.7.2 (default, Jul 22 2011, 23:13:34)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import pylons
>>> exit()

2012.9.21日更新:

由于昨日安装python3和pyramid,又导致pylons出现了“A misconfiguration on the server caused a hiccup”问题。

参考这个文档,发现bluehost的lib目录里没有那2个lib文件了,于是从另一个系统copy过来,也不管用。经测试,不光在python2.7里用import pylons测试会出错(ImportError: No module named _md5),即使想重新安装一下pylons用easy_install pylons命令,也会出错。于是用pip install pylons(在env虚拟环境下)重新安装,问题解决。

另外,非常不可思议的是,测试用的pyramid页面,竟然也神奇的出现了,也就是,pyramid在bluehost虚拟主机中安装成功!太高兴了!

windows下那些好用的免费程序 zt

 

windows下那些好用的免费程序

http://shell909090.com/blog/2012/02/windows下那些好用的免费程序/

 

    大部分开源,不开源的特别注明。

firefox或者chrom替换掉IE。

    不解释了。本公司UED坚持认为在windows下使用IE是一类人格缺陷,有这种缺陷的人应当被自然淘汰。我当然不支持他人格缺陷的论点,我认为是智力缺陷。
Everything(不开放源码)
    文件搜索工具,肯定要装,平时不消耗资源,需要的时候闪电一般的把你需要的东西找出来。这个东西会彻底的改变你文件管理的习惯。
klite codec
    还在用腾讯/暴风影音?我推荐klite codec。这个玩意里面内置了Media Player Classic – Home Cinema作为播放器,并且把常用的解码器组件都装上了。基本好用。当然,所谓基本,和商用播放器的一堆花哨功能不同。klite的功能还是略差的,比较偏向基本功能的稳定。不过好在,有的地方klite更强一点——例如没有烦人的广告和插件,性能和稳定性都很不错,而且有些生僻格式也做了支持。实际上,我觉得出问题最多的还是这些生僻格式和wmv。
mplayer
    比klite还强的播放器,和vlc并称最强播放器之二。就是太难玩了。
    另外,我不推荐在windows下用vlc,不太稳定。
MediaCoder
    转编码不错,除了rmvb格式外都很好转。压个片给手机的时候很方便。
putty(英文版!)
    远程命令行工具,基本是做linux开发的不二选择。即使我没事用windows也习惯装个虚拟机,跑个linux,然后用putty连上去。当然,putty肯定是要用英文版的,具体自己google吧,不要baidu。
foobar2000(不开放源码)
    音乐播放器,替换千千静听和酷狗的。确实是超级强的定制工具,居然支持从zip/7z中加载音乐。这样我下的音乐包都可以直接用了,不用解压。
launchy
    启动工具。有更好的启动程序可以给我介绍一下,我现在用的是launchy。按热键,敲几个字母,就可以启动程序了。而且这个是linux/windows支持的,两者习惯完全一致。当然,如果你stick在某个系统上,可以找找更适合的软件。
honeyview(不开放源码)
    漫画工具,主要是还在维护。能用的漫画工具也没几个了,comicviewer不维护了,acdsee根本是个庞然大物。
peazip
    压缩工具,挺不错的。现在大多数都用winrar了吧?一个是这玩意需要破解,不然就乱弹窗。作为一个程序员,我实在不好意思破解。另一方面,这个东西对samba的支持不好,在win7下,他没法打开samba共享出来的文件,而且某些文件会乱码。peazip可以解压我要用的全部格式,包括rar。并且可以生成我要的大部分格式,包括linux格式,不包括rar。这个主要受限于copyright问题。
    不过peazip对某些比较奇怪的字符支持不如winrar,有时会不认识一些日文压缩包。这个问题对honeyview等程序都存在,我认为是这些压缩包自己的问题。
Foxit(不开放源码)
    pdf阅读工具,国产软件,比adobe的强。不过细节总是做的不是很好。例如书签不够强大,注记功能不足,不支持zip文件读取等。不过要不用foxit,就要用回adobe,你自己看着办。

如何在bluehost中使用pylons框架建立网站

真的不可思议,竟然可以在bluehost虚拟主机中使用pylons,太牛了!

问题: bluehost非常开放,但是由于一般pylons建站需要直接用paster启动网站,而在虚拟主机中没有权限去使用80端口和1080端口,而1081、5000等端口尽管可以使用,但没法本机用nginx去代理,也没法(在公网)去访问那些端口(估计是有防火墙阻挡)。

解决的方法在这里写的很详细:

http://www.bluehostforum.com/showthread.php?899-Can-I-run-Pylons-(Python-framework)

我对照着进行了试验:

1 用vitualenv建立env目录,这个对老python来说轻车熟路,然后source ~/env/bin/activate

2 ~/env/bin/easy_install pylons 安装pylons

3 建立一个pylons的项目,我是直接建立了一个项目叫“ai”

paster create -t pylons ai
4 cd ai
  $python setup.py develop
5 建立一个脚本:

#!/home8/quyecom/env/bin/python
# Filename: pyt.py
import cgitb; cgitb.enable()
import sys
from paste.deploy import loadapp
import wsgiref.handlers
sys.path = [‘/home8/quyecom/ai/’] + sys.path

wsgi_app = loadapp(‘config:/home8/quyecom/ai/development.ini’)
wsgiref.handlers.CGIHandler().run(wsgi_app)

6 将该脚本放入可以执行的目录,给执行权限。在bluehost虚拟主机中,网站根目录也是可以执行脚本的,并不局限于cgi-bin。

现在可以在浏览器看一下http://www.airoot.org/pyt.py 发现就是pylons建立的那个项目页面了!

2.20 补充:

后来在测试controller项目的时候(paster controller hello),发现浏览http://www.airoot.org/pyt.py/hello/index报500错误,经过多次测试,发现将项目的development.ini文件中 debug那句注释掉后(#debug = true),hello/index 正常显示了。

我的理解是如果debug打开的话,debug流会出异常,导致网页出500错误。

pylons框架网站开机启动

学习pylons框架,当然想让它开机就一直启动。但是问题是经过试验,发现要在其网站根目录,才能执行成功。我用的账户是sky,python环境是env目录,网站是helloword,每次都要在/usr/home/sky/helloword 目录输入 ../env/bin/paster serve –reload development.ini 才行,在其它目录都没法正常启动。这样我就没法在/etc/rc.conf中用一句话实现启动。

看了很多文档,cookbook中有讲在rc.d中写pylons启动程序(init.d script to start and stop an app),但是没有成功,链接:
http://wiki.pylonshq.com/display/pylonscookbook/init.d+script+to+start+and+stop+an+app

后来看到一个文档里讲到放在crontab中,
16,32,33,34,36,56 * * * * cd /home2/indications/workingenv; source packyears/bin/activate; cd ../webapps/packyears; paster serve –daemon development.ini

通过上面的例子,发现原来可以在命令中直接进入某个目录的,这样我想到一个解决方法:
写一个简化的pythons启动shell,并放入/etc/rc.d 目录中,内容为:
cd /usr/home/sky/helloword
/usr/home/sky/env/bin/paster serve –reload development.ini

当然实际中是用–deamon代替–reload,也就是

fb9# vi /etc/rc.d/pylons

#! /bin/sh
#set user = sky
cd /usr/home/sky/helloword
/usr/home/sky/env/bin/paster serve –daemon development.ini
启动后发现进程起来用的是root账户,这个还要想办法改成其它非root账户。

另外一个解决方案就是像上面那样,放在sky账户的crontab中。

 

pylons 框架网站开机启动

学习pylons框架,当然想让它开机就一直启动。但是问题是经过试验,发现要在其网站根目录,才能执行成功。我用的账户是sky,python环境是env目录,网站是helloword,每次都要在/usr/home/sky/helloword 目录输入 ../env/bin/paster serve –reload development.ini 才行,在其它目录都没法正常启动。这样我就没法在/etc/rc.conf中用一句话实现启动。

看了很多文档,cookbook中有讲在rc.d中写pylons启动程序(init.d script to start and stop an app),但是没有成功,链接:
http://wiki.pylonshq.com/display/pylonscookbook/init.d+script+to+start+and+stop+an+app

后来看到一个文档里讲到放在crontab中,
16,32,33,34,36,56 * * * * cd /home2/indications/workingenv; source packyears/bin/activate; cd ../webapps/packyears; paster serve –daemon development.ini

通过上面的例子,发现原来可以在命令中直接进入某个目录的,这样我想到一个解决方法:
写一个简化的pythons启动shell,并放入/etc/rc.d 目录中,内容为:
cd /usr/home/sky/helloword
/usr/home/sky/env/bin/paster serve –reload development.ini

当然实际中是用–deamon代替–reload,也就是

fb9# vi /etc/rc.d/pylons

#! /bin/sh
#set user = sky
cd /usr/home/sky/helloword
/usr/home/sky/env/bin/paster serve –daemon development.ini
启动后发现进程起来用的是root账户,这个还要想办法改成其它非root账户。

另外一个解决方案就是像上面那样,放在sky账户的crontab中。

 

FreeBSD系统打造个性化智能音乐播放服务器

自己有台atom的机器,用来做家庭服务器,已安装FreeBSD9.0 、nginx、python等 。
要打造一个音乐播放服务器,需要解决如下几个问题:
1 命令行下的播放器
2 音乐文件
3 智能控制

近几日主要解决了前两个问题:
1 命令行下的播放器可以使用mpg123或mocp,其中mpg123是命令行方式,mocp是窗口方式,所以mpg123更适合。
2 可以用wget直接下或者用bt下。于是安装了ctorrent 。当然unrar等也是必须的

关于智能控制,有如下几个思路:
1 在cron中设置为定时播放,播放10-20分钟后kill掉
2 在ssh远程键入命令播放
3 以后可以考虑跟web整合,这样可以在任何浏览器中控制该播放器。