Python中的参数传递与解析
Python传递命令行参数Python的命令行参数传递和C语言类似,都会把命令行参数保存到argv的变量中。对于python而言,argv是sys模块中定义的一个list。与C语言不同的是,python中并没有定义argc,要获得参数的个数,需要使用len(sys.argv)
当用户使用’python -c “command” ‘来运行一条python语句时,argv中保存的是[‘-c’]及”command”后面的参数,例如:
$ python -c 'import sys
print sys.argv' hello world
['-c', 'hello', 'world']
当用户使用’python -m “module” ‘来运行一个模块时,argv中保存的是模块名及”module”后面的参数,例如:
$ python -m 'show_args' hello world
['/home/kelvin/tmp/show_args.py', 'hello', ' ...
基于web技术的操作系统安装器的设计
什么是基于web技术的安装器(web-based installer)?传统的Linux操作系统安装需要启动一个LiveOS,然后在LiveOS中运行一个本地安装程序,如Fedora下的Anaconda. LiveOS除了让用户在安装操作系统之前能预先体验之外,也为安装器提供了运行环境。这对于桌面操作系统已然足够,因为PC、笔记本电脑自带终端设备——键盘、显示器、鼠标。然而,如果要给一台服务器安装操作系统则稍微复杂了一点,因为服务器通常没有这些终端设备。这就需要利用网络和VNC将服务器端的图像传送出来。这样做的缺点在于,网络负载很大,在网络条件不好的环境下会带给用户非常差的安装体验。另外,本地安装器也会依赖很多的图形软件包,不仅会增加ISO的大小,也会带来很多版权及法律上的工作量。
基于web技术的安装器则利用web开发技术——HTML5,Javascript,CSS,web server等,让用户可以通过浏览器直接安装操作系统。目前,”KVM for IBM z Systems”已经采用这种安装方式。
基于web技术安装器的优势
依赖更少的软件包
非常小的网络负载,网页加载后 ...
QEMU3 - 使用ceph来存储QEMU镜像
ceph简介Ceph是一个PB级别的分布式软件定义存储系统,为用户提供了块存储、对象存储以及符合POSIX标准的文件系统接口。目前,Ceph已经成为Openstack最受欢迎的后端存储系统。下图为ceph的架构图。
RADOS本身是一个对象存储系统,实现了ceph的核心功能。Librados是ceph提供给各种编程语言的接口。RADOSGW,RBD,CEPH FS分别为用户提供了对象存储、块存储及文件系统的功能。Ceph集群及客户端的安装配置请参考Ceph官方文档。
使用Ceph来存储QEMU镜像QEMU会假定ceph配置文件存放在默认位置/etc/ceph/$cluster.conf,也会使用client.admin作为默认的ceph用户。如果要指定其他的配置文件或者用户,可以在ceph RBD的选项中添加conf=/home/ceph.conf或者id=admin选项。qemu-img使用ceph块存储RBD时,需要使用下面的格式:
qemu-img {command} [options] rbd:{pool-name}/{imag ...
顺序存储线性表的实现
最近复习数据结构,写了一个顺序存储的线性表,代码粘在这里:)
代码下载:git@github.com:Wang-Sen/algorithm.git
/*
* Simple array implementation.
*/
#include <stdbool.h>
#define MAX_SIZE 50
#define data_t int
#define array_length_t int
#define ERR_OUT_OF_RANGE -1
#define ERR_EMPTY_ARRAY -2
#define ERR_INVALID_ARGS -3
typedef struct {
data_t data[MAX_SIZE];
array_length_t length;
} array;
static inline void array_init(array *arr)
{
for (int i = 0; i < MAX_SIZE; i++) {
arr->da ...
在fedora下使用搜狗拼音输入法
Linux下的拼音输入法实在是不敢恭维,还好有人把搜狗拼音输入法制作成了RPM包.安装此rpm包就可以在Linux下面使用搜狗拼音输入法及其字库了.
第一步,下载RPM包.
百度网盘地址:http://pan.baidu.com/s/1bpblFoN
第二步,安装RPM包.
$sudo yum install fcitx-sogoupinyin-0.0.4-1.fc20.x86_64.rpm //注意输入正确的路径
第三步,卸载ibus.
$sudo yum remove ibus
第四步,设置fcitx开机自动启动.
$sudo yum install gnome-tweak-tool
$gnome-tweak-tool //在开机启动一项中添加fcitx即可
第五步,重启gnome
$gnome-session-quit
最后,使用Ctrl+space愉快的玩耍.
使用jQuery Validation插件来验证表单
jQuery Validation是一个用于验证表单的jQuery插件,简单易用,已经包含了16种内置的验证规则.Github上也有更多的验证规则可以使用.这都不是重点,重点是你可以轻松的定制自己的规则.
内置规则:
required – Makes the element required.
remote – Requests a resource to check the element for validity.
minlength – Makes the element require a given minimum length.
maxlength – Makes the element require a given maximum length.
rangelength – Makes the element require a given value range.
min – Makes the element require a given minimum.
max – Makes the element require a given ...
迁移宁强在线步骤
配置ssh#mkdir /root/.ssh && cp id_rsa* /root/.ssh/
下载配置脚本#git clone git@git.oschina.net:wangsen/auto_conf_fc.git
安装基础软件#cd auto_conf_fc && bash -x ./conf.sh
安装web软件#yum install net-tools httpd python-django
#yum install python python-pip python-devel python-wsgi mod_wsgi mariadb-server python-mysql mariadb-devel.x86_64 MySQL-python python-html5lib
克隆网站代码#cd /var/www/html && git clone git@git.oschina.net:wangsen/TownInfo-.git
#mvTo ...
JQuery 摘要
选择符与遍历
$(): $函数接受css选择符作为参数,充当一个工厂函数,返回对应元素的JQuery对象。
3种基本的选择符:
标签名 $(‘p’)
ID $(‘#myid’)
类 $(‘.myClass’)
子元素组合符>: $(‘#myid > li’)选择id为myid的元素的所有列表项(li).
否定式伪类: $(‘#myid li:not(.myClass)’)选择id为myid的元素中不属于myClass类的所有列表项(li).
属性选择符$(‘img[alt]‘): 选择所有带有alt属性的img元素.
属性选择符+类正则匹配:
$(‘a[href^=”mailto:”]‘): 选择所有URL以mailto:开头的超链接.
$(‘a[href$=”.pdf”]‘): 选择所有URL以.pdf结尾的超链接.
$(‘a[href*=”rose”]‘): 选择所有URL中包含rose的超链接.
自定义选择符:
$(‘li:eq(1)’): 选择第二个列表项
$(‘li:odd’): 选择奇数的列表项
$(‘li:even’ ...
使用gerrit作为代码评审工具
需求描述其实作为项目代码的maintainer,一直习惯于mailing list + git的代码评审及管理,无奈公司主推敏捷+devops,老板让改用gerrit。硬着头皮切换到gerrit,在这里记录下安装配置的过程及踩过的许多坑,以便网友们以后配置gerrit留作参考。
需求其实很简单,我们项目一直使用公司内部一个类似于github的代码托管网站来托管项目代码,使用邮件列表来评审代码。代码通过评审通过后,我再将patch push到代码托管服务器上去。整个开发流程如下图所示:
现在需要切换到gerrit来作为代码评审工具,以便于能够和jenkins集成,搭建一个集开发、构建、测试、部署为一体的devops系统,结构如下图所示。本文只关注gerrit的搭建。
Gerrit简介安装步骤1 . 安装Java.
网上有很多安装java的博客和文章,因此在这里不再赘述,可以参考下面这篇文章:
Linux下安装java
2 . 给Gerrit单独创建一个账户
#useradd gerrit
#passwd gerrit
#su gerrit
3 . 下载gerrit
gerrit是在go ...
apache配置https服务
1、创建自己签名的证书
#创建CA签名的证书,需要用到openssl
yum install openssl
#创建key
openssl genrsa -des3 -out server.key 1024
#创建csr(证书签发请求)
openssl req -new -key server.key -out server.csr
#生成自己签名的证书
openssl x509 -req -in server.csr -signkey server.key -out server.crt
#安装证书
cp server.crt /etc/ssl/certs
cp server.key /etc/ssl/private
2、编辑ssl配置文件
vim /etc/httpd/conf.d/ssl.conf
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
...