存档
linode apache 部署web.py配置
wget http://webpy.org/static/web.py-0.36.tar.gz
tar -zxvf web.py-0.36.tar.gz
cd web.py-0.36
python setup.py install
apt-get install libapache2-mod-wsgi
service apache2 restart
vi apache2.conf
添加
WSGIScriptAlias /12306 "/srv/www/quancha.cn/public_html/12306/code.py/"
Alias /12306/static "/srv/www/quancha.cn/public_html/12306/static/"
AddType text/html .py
<Directory "/srv/www/quancha.cn/public_html/12306">
Order allow,deny
Allow from all
</Directory>
service apache2 restart
使用 http://ip/12306就可以访问网站了。
linode vps ubuntu 安装subversion
root@li385-186:/home# sudo apt-get install subversion
root@li385-186:/home# sudo apt-get install libapache2-svn
root@li385-186:/home# cd /home/
root@li385-186:/home# mkdir svn
root@li385-186:/home# chown root:www-data svn -R
root@li385-186:/home# chmod u+s svn -R
root@li385-186:/home# chmod g+s svn -R
root@li385-186:/home# chmod 770 svn -R
root@li385-186:/home/svn# svnadmin create hct
root@li385-186:/home/svn# chmod g+ws hct -R
root@li385-186:/home/svn# vi /etc/apache2/mods-enabled/dav_svn.conf
加入以下内容
DAV svn
SVNPath /home/svn/hct
AuthType Basic
AuthName "hct Subversion Repository"
AuthUserFile /etc/subversion/passwd
AuthzSVNAccessFile /etc/subversion/access
#
Require valid-user
#
添加用户:
root@li385-186:/home/svn# sudo htpasswd -c /etc/subversion/passwd hct
New password:
Re-type new password:
Adding password for user hct
root@li385-186:/home/svn# vi /etc/subversion/access
加入内容
[groups]
admin = chenhe
# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded.
[/]
* = r
@admin = rw
# Allow developers complete access to their project repos
[hct:/]
@admin = rw
重启apache即可
root@li385-186:/home/svn# /etc/init.d/apache2 restart
现在建立了hct repository 和 hct开发者需要密码访问hct repository
Python urllib2 设置超时时间
import socket
import urllib2
socket.setdefaulttimeout(seconds)
open = urllib2.urlopen("http://*****.com")
通过socket.setdefaulttimeout() 设置了全局默认超时时间,从而给urllibe2.urlopen()也设置了默认的超时时间
gae部署webapp helloword
部署代码后,浏览器显示500错误
log日志
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\google\appengine\runtime\wsgi.py", line 187, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "C:\Program Files\Google\google_appengine\google\appengine\runtime\wsgi.py", line 239, in _LoadHandler
raise ImportError('%s has no attribute %s' % (handler, name))
ImportError:
原因
This line is incorrect:
application = webapp2.WSGIApplication([('/', MainPage)], debug=True)
The correct line should be:
app = webapp2.WSGIApplication([('/', MainPage)], debug=True)
64位win7如何安装PIL
python有64位的,pil官方只有32位的。
安装时会提示找不到python的安装路径。
64位Win7下无法安装PIL库的原因
PIL官方http://www.pythonware.com/products/pil/提供的PIL二进制安装库都是32位的。
64位程序和32位程序检测注册表的位置是不一样的:
64-bit: HKEY_LOCAL_MACHINE\SOFTWARE\Python
32-bit: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python
我安装的是Python2.7 x64版,所以相关信息是在 HKEY_LOCAL_MACHINE\SOFTWARE\Python下面,32位程序在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python 下面找Python安装信息,肯定是找不到了。
解决:
幸好有人提供了非官方的64位库(官方源码编译版)。
http://www.lfd.uci.edu/~gohlke/pythonlibs/
win7显示文件扩展名后缀
第一步: 打开资源管理器,浏览任意目录下的文件。这时候你会发现默认是找不到工具菜单的(我就被迷惑了好久),最后终于找到,按一下“Alt”键就可以呼出工具菜单,点击“工具” >> “文件夹选项” 弹出文件夹选项对话框。
第二步: 这时候的修改就跟xp一样了,点击“查看”, 将“隐藏已知文件类型的扩展名”前面的勾选状态取消,点击“确定” 搞定。
securecrt 导入用户session
重新安装后把之前的配置文件拷到新机器上即可
xp目录默认为C:\Documents and Settings\用户名\Application Data\VanDyke\Config
win7 %userprofile%\AppData\Roaming\VanDyke\Config\
复制session目录下的文件到新安装的位置即可。
PHP单例模式
1.单例类只能创建唯一的实例
2.单例类只能自己创建这一唯一实例
3.单例类需要为外界提供访问这个实例的方法
4.单例类多用于保存数据库连接的实例
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | class Singleton { private $db; private static $_instance; private function __construct() { $this->db = mysql_connect($servername,$username,$password); } public function getInstance() { if(!(self::$_instance instanceof self)) { self::$_instance = new self(); } return self::$_instance; } public function __clone() { trigger_error('Clone is not allow',E_USER_ERROR); } public function test() { echo 'test'; } } // 这个写法会出错,因为构造方法被声明为private $test=new Singleton; // 下面将得到Example类的单例对象 $test= Singleton::getInstance(); $test->test(); // 复制对象将导致一个E_USER_ERROR. $test_clone=clone $test; |
php __call()函数
__call() 是PHP里的一个魔术方法,当你调用一个类里的方法,而该方法又不存在里,就会自动调用__call() ;
__call 的第一个参数 就是你要调用的方法 ,第二个参数是你调用方法传的参数被当作数据传进来。