Posted in
Tech on
2009/12/12 – 23:18
最近切换成了debian lenny,不过每到周末晚上就难以忍受apt-get的龟速,想起曾在使用gentoo和archlinux时看到过的加速emerge和pacman的文章,决定想办法加速下apt-get的下载速度。
查看了apt-get的手册,决定从 –print-uris这个参数入手,脚本如下:
#!/bin/bash
# filename : multiapt.sh
# author : yanckin AT gmail.com
# usage : ./multapt.sh $1
sudo apt-get --print-uris -y install $1 | grep http | awk '{print $1}' | sed "s/'//g" | xargs -l sudo aria2c -s 5 -d /var/cache/apt/archives/ ; sudo apt-get install $1
其中aria2c是多线程下载工具aria2的执行程序名称,需要先安装。比起wget来支持多线程 ,支持多种协议,甚至包括bt。
然后给脚本执行可权限:
假如你要安装opera,现在只需:
后记:
对于普通网友,可能更多的时候找个更快的源,笔者想出此策实在是因为局域网奇慢无比,p2p,arp泛滥,实属无可奈何。
如果你喜欢这篇文章,欢迎 订阅我的 RSS feed!
Posted in
Tech on
2009/11/15 – 16:42
安装
配置
$ passwd postgres
$ emerge --config =postgresql-8.0.4
$ /etc/init.d/postgresql start
$ rc-update add postgresql default
使用
创建一个数据库:
$ createdb -U postgres -W test
删除一个数据库:
$ dropdb -U postgres -W test
创建一个超级用户:
createuser -a -d -P -E -U postgres -W testroot
其中-a 表示该用户可以添加其他用户. -d 表示该用户可以创建数据库. -P 让你为用户输入一个密码 -E 加密,出于安全目的.
创建一个标准用户:
createuser -A -D -P -E -U testroot -W testuser
-A,-D和-a,-d的作用相反,表示用户将被剥夺创建用户和数据库的能力
创建一个普通用户有权限的数据库MyDB:
$ createdb -O testuser -U testroot -W MyDB
登陆数据库:
更多
参考官方文档
如果你喜欢这篇文章,欢迎 订阅我的 RSS feed!
Posted in
Tech on
2009/10/31 – 01:01
一图胜千言,Zope糟糕的文档,不友好的社区注定了它的没落,虽然Zope有很多优秀的地方,但比起Django在很多地方做的太过复杂了。学习Django的过程中有着过去从Zope身上从来没有得到的愉悦,Django为什么会流行?
如果你喜欢这篇文章,欢迎 订阅我的 RSS feed!
Posted in
Tech on
2009/10/19 – 18:51
for linux
主目录下新建一个.pythonstartup的文件,内容如下:
# python startup file
import readline
import rlcompleter
import atexit
import os
# tab completion
readline.parse_and_bind('tab: complete')
# history file
histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
try:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter
如果这时还没生效,可以在.bashrc或者.profile文件中加入
export PYTHONSTARTUP= ~/.pythonstartup
for win
安装readline,下载地址
在任意目录,比如D:\Python2.5下建立一个文件startup.py,内容如下:
# python startup file
import readline
import rlcompleter
import atexit
import os
# tab completion
readline.parse_and_bind('tab: complete')
# history file
histfile = os.path.join(os.path.dirname(os.environ['PYTHONSTARTUP']), '.pythonhistory')
try:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter
增加环境变量PYTHONSTARTUP,值为刚才那个文件的路径。
如果你喜欢这篇文章,欢迎 订阅我的 RSS feed!
Posted in
XMU on
2009/09/01 – 23:03
厦门真的美的就像风景 离开了一年后再回去 才真的真切的感觉到它
以前天天处于其中竟浑然不知觉
那些青春的过往 那些不诉的离伤 ...
但在这海的面前你可以忘却一切忧伤 那么蓝的天又怎么可以让你不明媚
一不小心就踏入了人生的另一个殿堂 从此过去一切天高水远
只有了一份安定和责任
站在二十五岁 过去和未来 一个身后一个眼前
如果你喜欢这篇文章,欢迎 订阅我的 RSS feed!
Posted in
Tech on
2009/08/15 – 00:45
- 说明:
虽然本文是针对django而写,但对于其他python框架应同样适用。
浪点现在只支持mod_python这一种部署方式了,详细了解mod_python请参考mod_python 官方手册翻译
构造虚拟环境:
$ python virtualenv.py --no-site-packages sandbox
virtualenv.py下载地址
浪点默认装了一些有用的Python包,如PIL、lxml等,这些依赖c的包是你无法自己在virtualenv环境中使用的,不过好在直接拷贝过来就可以用了
$ cp /usr/share/pyshared/* -r sandbox/lib/python2.6/site-packages/
切换到虚拟环境,安装自己的包
source sandbox/bin/activate
easy_install Django
自定义Pythonhandler:
这里做的最核心的事情就相当于你运行source bin/activate,把Python运行环境切换为你自己的虚拟环境。
#myve.py
activate_this = '/home/virtualhost/${username}/sandbox/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
from django.core.handlers.modpython import handler
配置 .htaccess
注意这里的mysite和project。PythonInterpreter可随意写,只要别和其他目录下重复就行了,不写也可以
SetHandler python-program
PythonPath "['/home/virtualhost/${username}/sandbox/bin', '/home/virtualhost/${username}/xmu.me/public_html/${mysite}/'] + sys.path"
PythonHandler myve
SetEnv DJANGO_SETTINGS_MODULE {project}.settings
PythonDebug On
PythonInterpreter wayhome
现在你就可以访问你的django程序了,have fun :)
如果你喜欢这篇文章,欢迎 订阅我的 RSS feed!
Posted in
Tech on
2009/08/13 – 21:19
首先,response的所有heaer必须为字符串,unicode,数字都不可以!
当然,在一般的测试服务器中没什么大不了的,但是在apache的mod_wsgi中你或许就会遇到这种很奇怪的问题。
再者,计算response的content-length时需小心。不然就可能出现页面下载不完全的问题。
请注意 len(”中文”) 和 len(u”中文”)的长度是不同的,因此计算输出页面长度之前,最好先encode为utf-8。这样页面显示就正常了。
如果你喜欢这篇文章,欢迎 订阅我的 RSS feed!
Posted in
Tech on
2009/08/13 – 01:19
Easy_install is not so easy,you may got problem some times.
For example,when I install PIL,it will got an error:
Searching for PIL
Reading http://pypi.python.org/simple/PIL/
Reading http://www.pythonware.com/products/pil
Reading http://effbot.org/zone/pil-changes-115.htm
Reading http://effbot.org/downloads/#Imaging
No local packages or download links found for PIL
error: Could not find suitable distribution for Requirement.parse('PIL')
You can got it work like this:
easy_install --find-links http://www.pythonware.com/products/pil/ Imaging
And also,by default,the reportlab 2.3 is not supported by easy_install,you can install it like this:
easy_install --find-links http://distfiles.minitage.org/public/externals/minitage/
如果你喜欢这篇文章,欢迎 订阅我的 RSS feed!
Posted in
Tech on
2009/08/11 – 23:36
诚然,自认为自己距一个优秀的程序员还相差甚远,只是抛砖引玉,说说自己的感觉。
《编程珠玑》上言,优秀的程序员都有点儿懒:他们会舒适的靠背坐着,等待灵感出现,而不急于将自己的第一思想转化为编码。网上流传一个传说,是懒人创造了这个世界。一些问题,苦思冥想不得其解,走在路上,吃饭回来,忽然就想出来了。
优秀的程序员信奉的几条信仰,少即是多,慢即是快,舍即是得。很多时候拿到手里即编码反而比不上慢慢设计,到心中完全清楚才开始编码。所谓欲速则不达即是如此。
优秀的程序员应努力看到问题的本质,不该问了问题而问题,更应该看到问题身后的背景,问题带来的影响。不要匆匆忙忙的就把程序写出来,那个帮爱迪生量瓶子容量的研究生该不会就是你吧?
优秀的程序员的程序应尽量简短,干净,漂亮。优秀的代码不是你还能增加什么,而是你不能减少什么,优秀的程序是赏心悦目的。重构,重构到你无法再重构。如果一个东西复杂到你无法理解,那就不应该是你理解的。任何东西都应该有足够清晰的方式表达出来。
多学几门语言,多看几本书,但一定要读好书,程序员的生命实在宝贵,别把时间浪费在那些不值得一读的烂书上。视野要宽阔些,不要被语言的局限所限制,不要太过于钻研细节,要有大局观,诸葛亮就是被累死的!
一年有数月,一月有数日,一日有数时,跳出程序外,不在五行中。
先只想到这些,以后想到慢慢补充。
如果你喜欢这篇文章,欢迎 订阅我的 RSS feed!
Posted in
Tech on
2009/06/14 – 02:03
话说python里面的框架还不够多么,这不又来了一个轮子bobo.

这是Jim Fulton(何许人也?Zope的精神领袖是也)最近刚刚写的一个wsgi 框架。和pylons,tubrogears,bfg等新兴wsgi框架同出一辄,都是基于Paste的。
非常小,包含注释在内只有1000多行,40多kb因此速度也很快。
感觉和bfg的设计理念比较类似,但是不同在于bfg明眼人一眼就能看出是对Zope的改造,而bobo就目前看来与zope没有任何关系,除了依赖里有写
zope.testing,但是完全没有用到,可能未来会用于测试。Routes规则,实在和ror太像了!不过其还有独特的SubRoutes。
这个框架目前还没有正式发布,Jim Fulton声称会在下周一发布。
如果你喜欢这篇文章,欢迎 订阅我的 RSS feed!