在Linux中用Shell脚本完成SVN版本库的建立

每次建立一个新的SVN版本库总感觉很繁琐,所以写了段脚本来把这个过程自动化,详细代码如下:

#!/bin/bash
# by www.sunbloger.com

echo -n "Enter SVN name :"
read svn_name
/usr/bin/svnadmin create /svnroot/$svn_name
if [ $? -eq 0 ]; then
    
    # svnserve.conf
    sed -i 's/# anon-access = read/anon-access = none/g' /svnroot/$svn_name/conf/svnserve.conf
    sed -i 's/# auth-access = write/auth-access = write/g' /svnroot/$svn_name/conf/svnserve.conf
    sed -i 's/# password-db = passwd/password-db = \/svnroot\/conf\/passwd/g' /svnroot/$svn_name/conf/svnserve.conf
    sed -i 's/# authz-db = authz/authz-db = authz/g' /svnroot/$svn_name/conf/svnserve.conf
    
    # authz
    cat > /svnroot/$svn_name/conf/authz<<EOF
[groups]
developer = jason
[/]
@developer = rw
EOF

fi

阳光部落原创,更多内容请访问http://www.sunbloger.com/

MySQL获取自增主键ID的四种方法

1. SELECT MAX(id) FROM tablename

2. LAST_INSERT_ID() 函数

LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。

在多用户交替插入数据的情况下MAX(id)显然不能用。这时就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的 Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update 操作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。使用单INSERT语句插入多条记录, LAST_INSERT_ID返回一个列表。

3. SELECT @@IDENTITY;

@@identity 是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。

比如有个表A,它的自增列是id,当向A表插入一行数据后,如果插入数据后自增列的值自动增加至101,则通过select @@identity得到的值就是101。使用@@identity的前提是在进行insert操作后,执行select @@identity的时候连接没有关闭,否则得到的将是NULL值。

4. SHOW TABLE STATUS;

得出的结果里边对应表名记录中有个Auto_increment字段,里边有下一个自增ID的数值就是当前该表的最大自增ID。

上述内容来自互联网

用Python提取网页中的超链接

最近正在学习Python,打算用作爬虫开发。既然要做爬虫,首先就要抓取网页,并且从网页中提取出超链接地址。

下面是最简单的实现方法,先将目标网页抓回来,然后通过正则匹配a标签中的href属性来获得超链接,代码如下:

import urllib2
import re

url = 'http://www.sunbloger.com/'

req = urllib2.Request(url)
con = urllib2.urlopen(req)
doc = con.read()
con.close()

links = re.findall(r'href\=\"(http\:\/\/[a-zA-Z0-9\.\/]+)\"', doc)
for a in links:
    print a

阳光部落原创,更多内容请访问http://www.sunbloger.com/

在Linux/CentOS中编译安装Python

心血来潮,想学习一下Python,听说用来做爬虫还不错。先从运行环境开始入手,CentOS中已经内置了Python,但版本似乎比较老,通过python -V命令看到版本是2.4.3。目前Python 2.x的最新版本号是2.7.8,那么就开始动手升级一下。

首先,下载源码包,命令如下:

wget --no-check-certificate https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz

这里需要特别注意一下,因为下载网址是https开头的,所以要给wget命令加上–no-check-certificate参数。

下载好源码包后,解压:

tar -zxvf ./Python-2.7.8.tgz

解压出Python-2.7.8这个目录后,我们开始对源码进行编译:

cd Python-2.7.8
./configure --prefix=/usr/local/python
make
make install

编译安装完成后,要替换掉系统自带的Python,但CentOS的yum依赖于Python工作,为了保证yum的正常运行,我们要在替换前,先将自带的Python更名备份,方法如下:

mv /usr/bin/python /usr/bin/python-2.4.3
ln -s /usr/local/python/bin/python /usr/bin/python

上面两行命令执行完后,可以分别用“python -V”和“/usr/bin/python-2.4.3 -V”来验证部署是否成功,正确的结果应该是2.7.8和2.4.3。

最后,要修改yum,让其运行指向旧的版本:

vi /usr/bin/yum

将第一行中的“#!/usr/bin/python”修改为“#!/usr/bin/python-2.4.3”,保存即可。

 

阳光部落原创,更多内容请访问http://www.sunbloger.com/

PHPCMS V9无法正常通过QQ登录的解决方案

这个故障的原因是PHPCMS V9的QQ登录功能代码中,使用了file_get_contents函数来获取腾讯的https网址,这类网址是通过ssl加密传输的。虽然,我们可以通过为PHP安装openssl扩展,让file_get_contents函数可以获取到内容,但获取到的内容还是加密的,无法正常的解密。

我的解决思路是自己编写一个通过curl读取数据的方法,替换掉PHPCMS原有的方法,具体如下:

阅读更多

搭建rsync同步机制 解决测试和生产环境的文件同步问题

rsync是类unix系统下的数据镜像备份工具——remote sync。是一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步。

通过搭建rsync服务端和客户端,可轻松解决开发中遇到的测试环境与生产环境的文件同步问题,且同步过程完全自动化,避免了人工上传文件容易出现的错传或漏传现象。

下面我们一起来看一下设置的过程。

生产环境主机(rsync服务端)设置

1.配置rsyncd.conf文件

阅读更多