python缓存代理服务器安装和配置

python缓存代理服务器安装和配置: pip install -U devpi-server devpi-server  –host=0.0.0.0 –start 使用 pip –trusted-host 172.20.11.12 install -i  http://172.20.11.12:3141/root/pypi/ simplejson 还可以通过配置文件,就不用每次输入超长命令了 mkdir $HOME/.pip vi $HOME/.pip/pip.conf [global] index-url=http://172.20.11.12:3141/root/pypi/+simple/ trusted-host=172.20.11.12 [search] index = http://172.20.11.12:3141/root/pypi/

getopt:命令行选项、参数处理

getopt:命令行选项、参数处理 在写shell脚本时经常会用到命令行选项、参数处理方式,如:

-f 为短选项,它需要一个参数,即config.conf, -v也是一个选项,但它不需要参数 –prefix 是一个长选项,即选项本身多于一个字符,它也需要一个参数,用等号连接,当然等号不是必须的,/home可以直接写在–prefix后面,即–prefix=/home 在shell中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景 手工处理方式 getopts getopt 下面我们依次讨论这三种处理方式 1. 手工处理方式 在手工处理方式中,首先要知道几个变量,还是以上面的命令行为例: $0 : ./test.sh,即命令本身,相当于C/C++中的argv[0] $1 : -f,第一个参数 $2 : config.conf $3, $4 … :类推。 $#  : 参数的个数,不包括命令本身,上例中$#为4. $@ : 参数本身的列表,也不包括命令本身,如上例为 -f config.conf -v –prefix=/home $*   : 和$@相同,但”$*” 和 “$@”(加引号)并不同,”$*”将所有的参数解释成一个字符串,而”$@”是一个参数数组。如下例所示:

所以,手工处理的方式即对这些变量的处理。因为手工处理高度依赖于你在命令行上所传参数的位置,所以一般都只用来处理较简单的参数。如./test.sh 10。而很少使用./test -n 10这种带选项的方式。 手工处理方式能满足大多数的简单需求,配合shift使用也能构造出强大的功能,但在要处理复杂选项的时候建议用下面的两种方法。 Read more…

shell中EOF的用法

用法: cmd << delimiter Here Document Content delimiter EOF 只是一个标识而已,可以替换成任意的合法字符 作为结尾的delimiter一定要顶格写,前面不能有任何字符 作为结尾的delimiter后面也不能有任何的字符(包括空格) 作为起始的delimiter前后的空格会被省略掉 cat > 1.txt <<EOF  与   cat <<EOF > 1.txt    效果一样的,都是将<<EOF之后的内容覆盖到1.txt文件中 <<EOF和<<“EOF”和<<\EOF

<<EOF和<<-EOF的区别 <<-EOF会把每行前面的tab空白去掉, 注意空格是去不掉的, 只能去掉tab

   

CentOS6.5下安装vim7.4

部分一:vim7.4安装 系统版本centos6.5; root权限 su – root 卸载 $ rpm -qa | grep vim $ yum remove vim vim-enhanced vim-common vim-minimal 下载、解压 $ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2 $ wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gz $ wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz $ tar jxvf vim-7.4.tar.bz2 $ tar zxvf vim-7.2-extra.tar.gz $ tar zxvf vim-7.2-lang.tar.gz $ mv vim72 vim74 安装编译环境 $ yum install Read more…

CentOS 7 安装 JDK

CentOS 7 安装 JDK 环境 CentOS 7.1 (64-bit system) JDK 8 (jdk-8u45-linux-x64.tar) CentOS 安装 参考:http://www.waylau.com/centos-7-installation-and-configuration/ 下载 JDK 方法1:编译文件压缩包 地址为 http://www.oracle.com/technetwork/java/javase/downloads/ 本例为 jdk-8u45-linux-x64.tar 方法2:yum 包 地址为 http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.rpm 本例为 jdk-8u45-linux-x64.rpm 安装 方法1:编译文件压缩包安装 创建目录 home 目录下建 software目录(也可以是任意目录)下用于存放下载的软件。

根目录下 usr 目录下新建 java 目录,用于 jdk 的安装路径。

解压下载包 切换到 software 目录,里面有我们之前的 jdk-8u45-linux-x64.tar 执行

Read more…

Mac使用rz,sz远程上传或下载文件

SecureCRT有个很便捷的文件上传下载工具sz与rz,我们同样可以把这样的便捷带到mac上,只是稍微有一点点麻烦 第一步:下载并安装iterm2   地址:http://www.iterm2.com/#/section/downloads 第二步: 下载并安装lrzsz brew install lrzsz安装成功后,会在以下路径生成两个可执行文件(具体的路径取决于brew配置,可以用find查找一下) /usr/local/Cellar/lrzsz/0.12.20/bin/rz /usr/local/Cellar/lrzsz/0.12.20/bin/sz 建立符号连接 ln –s /usr/local/Cellar/lrzsz/0.12.20/bin/sz /usr/local/bin/sz ln –s /usr/local/Cellar/lrzsz/0.12.20/bin/rz /usr/local/bin/rz 第三步:下载并安装automatic zmoderm for iTerm2 源码:https://github.com/mmastrac/iterm2-zmodem 注意黄色字体,需要修改为实际sz与rz的路径  

  第四步:编写相应的iTerm2 trigger iTerm2-Profiles-Open Profiles-Edit Profiles-Advanced-Edit Trigger 如下图所示:

现在就可以使用iTerm2终端便捷地从远程服务器上上传下载文件了

Homebrew https下载失败的解决方法

Mac平台软件包管理器Homebrew使用curl下载文件,有些是使用https连接下载的。但由于网络环境或一些其它原因,造成https证书认证失败而无法下载。 curl 的”-k”选项可以解决这个问题,不检查ssl证书安全性而直接下载,这可能带来一些安全风险。 但你若对homebrew足够信任,那可以修改其源码给curl加上“-k”选项,方法如下:

 

BASH关联数组

Bash从4.0版本开始引入关联数组。 关联数组允许你使用非整型下表索引数组中的元素,类似于Perl中的哈希数组或者Python中的字典。Bash要求关联数组的键是唯一的,而值可以不唯一,在Bash内部键与值是一一对应的(即使有多个相同的值也是如此)。使用关联数组前应该先申明变量类型为关联数组类型:

然后就可以像使用普通数组一样使用它了:

  如果不声明关联数组的话,你得到的将是一个普通数组:

  那么如何像Perl和Python中那样,轻松愉快地获取Bash中关联数组的键或者值呢?我相信绝大多数人刚开始学习SEHLL编程时,都会为它蹩脚语法感到困惑,但是正是因为这些丑陋但却实用的语法,往往可以在我们脚本编程中成为解决某个问题出奇制胜的方法。Bash中关联数组的操作方法如下:

  遍历一个关联数组可以用下面的方法:

 

统计nginx日志,查看调用api最高的app top10

有个需求,是统计nginx访问日志,统计出调用rest api最高的用户app前10,每分钟统计一次。 nginx定义的日志格式: ‘V1 [$time_iso8601] $remote_addr $host $request ‘ # Request ‘$status $body_bytes_sent $bytes_sent $request_time ‘ # Response ‘”$http_referer” “$http_user_agent” “$http_x_forwarded_for” ‘ # Client ‘$tcpinfo_rtt,$tcpinfo_rttvar,$tcpinfo_snd_cwnd,$tcpinfo_rcv_space ‘ # NET ‘$upstream_addr $upstream_status $upstream_response_time’; # Upstream 如下为日志返回的三种状态(200,40x, 50x) 207.247.141.184 a1.XXX.com – [2015-11-29T09:42:05+08:00] “POST /qudeo/xiying/devices HTTP/1.1” 503 740 “-” “XXX-SDK(Android) 2.1.3” “-” 0.316 – Read more…

SQLAlchemy参考

转自:http://www.zouyesheng.com/sqlalchemy.html 1. 基本流程

2. 创建连接 SQLAlchemy 的连接创建是 Lazy 的方式, 即在需要使用时才会去真正创建. 之前做的工作, 全是”定义”. 连接的定义是在 engine 中做的. 2.1. Engine engine 的定义包含了三部分的内容, 一是具体数据库类型的实现, 二是连接池, 三是策略(即engine 自己的实现). 所谓的数据库类型即是 MYSQL , Postgresql , SQLite 这些不同的数据库. 一般创建 engine 是使用 create_engine 方法:

参数字符串的各部分的意义:

对于这个字符串, SQLAlchemy 提供了工具可用于处理它:

create_engine 函数有很多的控制参数, 这个后面再详细说. 2.2. Engine的策略 create_engine 的调用, Read more…