- 浏览: 44588 次
最新评论
文章列表
通常shell中我们需要给变量设置默认值,可能会写出如下代码
#!/bin/bash
if [ ! $1 ]; then
$1='default'
fi
显然这种方式在变量少的时候没啥问题,一旦变量多起来,我们可能就有大量的重复劳动(if判断)
有没有比较优雅的方式,不用写一大堆if判断,显然答案是有的
1.变量为null时
#当变量a为null时则var=b
var=${a-b}
2.变量为null且为空字符串的时候
#当变量a为null或为空字符串时则var=b
var=${a:-b}
在编写shell的时候我们都需要万分小心,尤其是给root执行的脚本
#!/bin/bash
....
rm -rf $1/$2/bin/
....
假设上述脚本我执行的时候没有传递参数,造成的后果是相当恐怖的。
有没有好的办法解决这个问题,答案是有的
#!/bin/bash
....
if [ !$1 ];
echo '$1 is null'
exit 1
fi
if [ !$2 ];
echo '$1 is null'
exit 1
fi
rm -rf $1/$2/bin
....
...
在shell 中判断变量为null
方法一:
if [ $x ];then
echo 'not null'
else
echo 'is null'
fi
方法二:
if [ -z "$x" ];
echo 'is null'
else
echo 'not null'
fi
webpy中获取get和post参数的方式非常简单
args=web.input()
name=args.get('name')
age=args.get('age')
sex=args.get('sex')
需要注意的是上面方法获得的参数的类型全是unicode,所以对于数值需要作相应的类型转换才能使用
获得上传的文件
args=web.input()
file=args.get('file')#获得文件
filename=file.filename#获得文件名称
content=file.read()#读取文件内容
webpty中使用session非常简单
import web
web.config.debug = False
urls = (
"/count", "count",
"/reset", "reset"
)
app = web.application(urls, locals())
session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={'count': 0}) ...
之前我们讲的都是简单的返回文本到浏览器,例如下面将会返回hello word到浏览器
# coding:utf-8
import web
urls=(
'/','index'
)
app=web.application(urls,globals())
class index:
def GET(self):
return 'hello word!'
if __name__ == '__main__':
app.run()
当然我们也可以返回html到浏览器,例如
# coding:u ...
今天重点说下webpy的路由规则。
#这里声明了三条路由规则,它是一个tuple,由url匹配规则和处理类组成
#url匹配规则是用正则表达式书写的
#可以声明多条路由规则,每一条都是由url匹配规则和处理类组成
urls=(
'/','index',
'/user','user',
'/topic','topic'
)
既然url匹配规则是正则表达式那我们就可以灵活的写出各种表达式
urls=(
'/','index',
'/(user|member)','user', #匹配 htt ...
之前介绍了webpy,还写了一个自己的web程序,下面我们就来分析下代码。
# coding:utf-8
import web
urls=(
'/','index'
)
app=web.application(urls,globals())
class index:
def GET(self):
return 'hello webpy!'
if __name__=='__main__':
app.run()
import web #导入webpy的模块
#这里声明了路由规则, ...
python的web框架是一个百花齐放的世界,完全列表请看这里。
面对如此众多的框架我们要如何选择!它们都有各自的优缺点,你不可能找到一款完美的,其实只需要选择适合的即可!
这里介绍webpy,进入官方首页你可以看到右边有一个hello word的例子
import web
urls = (
'/(.*)', 'hello'
)
app = web.application(urls, globals())
class hello:
def GET(self, name):
if not ...
python操作mysql需要用到MySQLdb这个库。
1.下载MySQLdb,点击这里下载(可能被墙请自带梯子)
2.使用
import MySQLdb
try:
con = MySQLdb.connect(host='192.168.1.100', user='myuser', passwd='123456', port='3306', db='mydb',charset='utf8')
c = con.cursor()
c.execute('select * from user');
rows=c.fetchall() # ...
python对图片的操作需要使用到(Python Imaging Library)PIL库,PIL可以处理几乎所有的图片类型,了解更多请点击这里(可能被墙请自带梯子)。
1.下载PIL并安装
windows:直接下载对应的安装包
linux:
yum install python-imaging
或
sudo apt-get install python-imaging
或
直接通过源码安装
2.使用
import Image
img = Image.open('example.jpg')
new_img= img.resize((w, h), ...
1.首先下载mysql源码包,我这里下载MySQL Community Server 5.5。
2.检查机器是否装有cmake,直接输入cmake显示帮助信息表示已安装,现在mysql编译都需要用cmake生成makefile文件,关于cmake更多可以点击这里。如果你的机器上没有cmake请先行安装cmake。
yum install cmake
或者
sudo apt-get install cmake
3.解压mysql并编译
# tar xzvf mysql-5.5.27.tar.gz
# cd mysql-5.5.27
# cmake -DCM ...
varnish通过几个辅助命令行工具观察varnish的工作情况:
varnishlog:
varnish的日志是写入共享内存的,可以使用varnishlog命令行工具读取
[admin@localhost ~]$ varnishlog -c
//上面的命令将输出客户端的请求信息
195 RxRequest c GET
195 RxURL c /BD/310x85-2.jpg
195 RxProtocol c HTTP/1.1
195 RxHeader c Accept: */*
195 Rx ...
Varish Configuration Language 简称VCL,通过它我们可以完成一些复杂的逻辑处理。下面将详细介绍:
Backend declarations:
backend www {
.host = "www.example.com";
.port = "80";
.connect_timeout = 1s;
.first_byte_timeout = 5s;
.between_bytes_timeout = 2s;
}
或者
backend www {
.host ...
varnish是一款高性能的开源HTTP加速器,用来缓存静态文件(图片,js,css)以减少后端服务器压力,性能要比squid高很多。1.下载varnish,https://www.varnish-cache.org/ #建议下载最新稳定版2.编译安装 tar xzvf varnish-3.0.2.tar.gz cd varnish sh autogen.sh sh configure #一些可选参数 make make install3.启动varnish 通过varnishd命令来启动varnish服务 varnishd -a 0.0.0.0:80 -s malloc,1 ...