Shawn's Blog

一个伪程序员的伪技术博客

0X00 安装fabric

使用pip可以轻松地安装fabric

1
pip install fabric

0X01 初次调用

在当前目录下创建一个名为fabfile.py的文件,填写文件内容如下:

1
2
3
4
5
6
# coding=utf-8
import fabric


def test():
print 'hello,world'

然后在当前目录下执行命令fab test就可以看到一条hello,world输出了。

0X02 浅显的道理

根据上面简单的例子可以看出来fab命令执行的时候会默认找到当前目录下的fabfile.py文件,找到后会用fab命令的参数去匹配fabfile.py中的函数名,执行相应的功能。

实际上当前目录可以没有fabfile.py,如果当前目录的上级目录中有fabfile.py是会采用上级目录中的fabfile.py的。而且文件名也不一定用fabfile.py,假设取了一个名为asdf.py的文件,那么只需要执行fab -f asdf.py就可以采用这个fabfile了。

阅读全文 »

0X00 可迭代对象

Python中的列表,元组,字典,文件都是可迭代对。可迭代对象简单地说就是可以用for i in xxx:来遍历的对象。

1
2
3
4
5
6
7
8
9
10
my_list = [1, 2, 3, 4, 5, 6, 7]
for i in my_llist:
print i

my_dict = {
'a': u'苟利国家生死以',
'b': u'岂因祸福避趋之'
}
for i in my_dict:
print i

不过如果数据量非常非常庞大的时候,会很影响程序的性能。这种时候就可以使用生成器来解决这个问题。

0X01 生成器

生成器的用法和普通的可迭代对象差不多,最大的特点就是:“用的时候才去计算”。这里写一个简单的例子,演示一下情况。第一种生成超大列表的方式要逐项计算完才算弄出来了这个10000长的列表,而后者是生成器,只是声明了怎么算,并没有真的去算,所以在速度上才是完全不能比的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python
# coding=utf-8

import time

if __name__ == '__main__':
start = time.time()
[x**x for x in range(10000)] # 这里生成的是一个超大的列表
end = time.time()
print end - start

start = time.time()
(x**x for x in range(10000)) # 这里生成一个超大的生成器(注意看,括号不一样)
end = time.time()
print end - start

运行结果如下:

1
2
3
shawn in ~ λ python hello.py
6.76475715637
0.000135898590088
阅读全文 »

0X00 怎样正确使用分支

通常情况下一个git仓库要保持三个及以上的分支,基本的分支明明如下:

name function
master 正常运行的稳定版本
develop 正常运行的开发版
feature 添加新功能的分支
hotfix 紧急修复bug的分支

如果你已经fork了一份代码到自己本地,当你想添加一个新功能比如「用户管理」的时候,就应该先换到develop分支,然后由这个分支创建一个新的名为feture_add_usermanager的分支。在新分支里编写代码后将代码提交一个PullRequest到自己的develop分支,合并起来后再提交一个PullRequest到团队的仓库中,等待团队其他成员review后就可以正式将代码合并到团队的develop中了。等下一次发布新版本的时候就可以将团队的develop分支合并到团队的master分支中了了。

如果中途项目出现了严重bug(不能登录)需要即使修改上线,那就从自己的master分支上新建一个名为hotfix_cantlogin的分支,修改完后直接提交PullRequest到团队的master分支,review且合并后就可以将该分支删除了。

阅读全文 »

0X00 推荐一波Linux下的软件

Linux对于普通用户可能确实没有那么友好,但是对于计算机“专业”人士来说就好多了。我从接触Linux到现在也有个三两年了,而且用Linux桌面也有一段时间了。这段时间里也发现了不少好用的软件和工具,在这里整理一下也向大家推荐一波。这些工具有些是用来提升工作效率的,有些是用来娱乐的等等。。不过每一个都是我离不开的好工具。
非常重要的一点是,我推荐的这些软件除了为知笔记以外都是 免费的 ,而且还有一大半是 开源的

0X01 zsh

Linux真正效率高的地方就在于Terminal,那我们就需要选一个好用的SHELL。目前绝大多数Linux发行版本都默认使用Bash,这是一个非常好用非常成熟的SHELL。但是有一个更好用的Shell叫做zsh,可以从官网安装也可以直接apt install zsh就装上了。这个shell一定要配合着oh-my-zsh来使用。oh-my-zsh可以让你的SHELL发挥最大的效率。

阅读全文 »

0X00 virtualenv好用但有瓶颈

virtualenv固然好用,可以给你每一个Python项目创建一个独立的Python环境互不干扰。有三五个Python项目的时候用的很开心,有十几个项目的时候还凑合,如果有更多的项目virtualenv就会出现瓶颈。因为virtualenv会给每一个Python虚拟环境创建一个目录来保存相关文件,项目一多这个虚拟环境的目录也就多了起来,每次在多个环境之间source ../../../xxx/bin/activedeactive 也挺烦的,并且很容易把某些环境搞丢。不过开源世界最不缺的就是解决问题的方法了,既然有人遇到了这个问题,那么八成就已经有了解决这个问题的好办法。

0X01 virtualenvwrapper

这个东西名字确实有点长,顾名思义就是把virtualenv包装起来。首先来安装一波这个东西

1
2
3
sudo apt install virtualenvwrapper  # Debian系

sudo yum install virtualenvwrapper # RHEL系

安装好后要进行简单的配置

1
vim ~/.bashrc # 添加一条环境变量,可以根据自己用的shell来修改

向文件中添加 WORKON_HOME=~/Envs 表示将未来所有的虚拟环境都放在 ~/Envs 中。然后创建这个目录 mkdir -p $WORKON_HOME 。最后source一下安装文件,source /usr/bin/virtualenvwrapper.sh 会显示创建了很多文件,到这里就安装完成了。
如果source的时候没有这个virtualenvwrapper.sh文件,那就用which virtualenvwrapper.sh找一下,不过八成都是在/usr/bin/virtualenvwrapper.sh

阅读全文 »
0%