fabric是instagram团队使用的自动化部署工具,花了一个早上试用了一下,一个hello world就遇到了各种问题。这里是在windows环境中进行的安装。
1.源码安装pycrypto不成功
提示:
error: Python was built with Visual Studio 2003;
extensions must be built with a compiler than can generate compatible binaries.
Visual Studio 2003 was not found on this system. If you have Cygwin installed,
you can try compiling with MingW32, by passing "-c mingw32" to setup.py.
解决:
1)setup.py install --skip-build
参考http://stackoverflow.com/questions/2261866/how-to-install-python-ssl-module-on-windows
2)使用msi或者exe文件来安装
2.找不到fab命令
fab.exe在python安装目录的Scripts目录,比如我的目录D:\Program Files\Python25\Scripts
找到后加入到环境变量Path中,即可使用fab来执行了。
3.执行fab提示找不到fabfiles
D:\>fab hello
Fatal error: Couldn't find any fabfiles!
Remember that -f can be used to specify fabfile path, and use -h for help.
Aborting.
原因:跟python的PYTHONPATH有关系,如果fabfile.py没有放在PYTHONPATH中,会提示找不到。
解决:使用-f指定文件
D:\>fab -f ./fabfile.py hello
无论现在有多少人情感上仍然支持微软,但是不得不面临这样的一个问题和事实,在欧美市场中Apple的电脑已经开始逐渐占据了IT工程师和学生们的桌面与膝盖。在最近Google公布的一段公司视频中,Google的一群核心算法程序员开会正在讨论未来如何改善Google的搜索算法,然而他们的讨论并没有引起太多人的注意,所有开会人员几乎统一的苹果电脑成为了这段视频的亮点。
而最近我的一位同事在赴美国参加某个会议的时候,也遭遇了铺面而来的Apple电脑浪潮,在偌大的一个会场上,只有零星的人在使用Windows操作系统的电脑,大多数为Dell或者联想。这群数量庞大的Apple用户们在向我的同事指路的时候这样说:“往前走,有个拿Dell的家伙就是!”非Apple用户被一律称之为了Dell们,并且成为了一种带有标志性的符号,这在某种程度上也暗示了,Apple已经成为了大多数用户的标准配置,而在几年前这些人手中拿的或许是Dell,或者其他什么电脑,但是这些电脑的开机画面都会率先亮出微软的Windows徽标。
在近几年中,苹果接着iPhone、iPad和iPad等流行设备,已经开始入侵微软帝国昔日的领地,甚至微软最为在乎的企业用户目前也有像Apple倾斜的可能性。曾经这个世界上大多数程序员因为Apple下的开发环境、用户数量等问题一直将Apple用户群体当做一个小众且微利的市场。
微软在经历市场最大一次豪赌,在此之前Google也曾经想通过和摩托罗拉的合作,将Android在手机端的成功模式复制到平板电脑之中,但是在付出巨额的成本之后,摩托罗拉的Xoom最终并没有取得Google所预想的业绩。最终只是在Google收购摩托罗拉的时候加强了彼此的信任感和某种共识而已。
在众多传统的PC设备制造商看来,Android目前的战略重心仍然是抢占尽量多的手机终端,这让许多平板电脑制造商对Android不敢给予太多希望。况且在Google内部,Chrome OS团队仍然没有死心,毕竟如果电脑设备完全是基于浏览器的Web平台,那么对于Google说他们能够更加轻松的掌控这样一个帝国,并且从中获取最大的利润。在Google的战略版图中,Chrome OS似乎更具战略价值,他们在2011年之前对待Android的时候更像一个私生子。这种局面无法让设备制造商全力跟随Google而动,他们只能够在Google需要的时候略表一下支持的姿态。
但设备们也无法无视平板电脑目前逐步疯狂的市场增长业绩,它甚至瞬间秒杀击溃了台湾厂商寄予厚望的上网本市场。但是,这些平板电脑的用户又能够选择谁呢,除了苹果之外似乎并没有太多丰富的可选项,能够让用户感觉自己不是盲目的潮流追随者或者厂商的实验性小白鼠的产品实在是乏善可陈。
还好,Windows 8来了。微软传统的坚定盟友似乎早就盼望着这一天的到来,特别是微软在Windows 8中表现出的坚定信念,它甚至抛弃了曾经被好评的Windows 7 UI风格,并赌上了用户可能在初次使用时会不一定立即能够习惯的Metro UI用户界面,不惜伤害Intel支持ARM架构。而所有的这些妥协,都是为了能够让Windows在最新的平板电脑中赢得至关重要的一局。
就在微软前不久释放出用户体验版Windows 8后,Dell、惠普和联想都表示出了对Windows 8的坚定支持。Windows 8赢得这些微软传统盟友的支持非常重要,特别是Dell、惠普和联想,他们是大多数企业的服务器和PC设备供应商,只要这些厂商能够推出价格合理且外观出色的平板电脑,微软夺回平板电脑市场就指日可待。
但是微软并不会一路顺风,虽然Windows 8为微软和他的伙伴们带来了重回主流的可能,但是不可忽视的是,Apple的iPad已经推出了第三代产品,其应用商店的丰富性和用户基数已经拥有了相当可观的数量。即便是企业的IT部门为了保持系统的统一性青睐于Windows 8平板电脑,可最终的业务部门如果仍然选择iPad,那么企业的采购天平依旧会倾向业务部门。
至少今年对微软和他的伙伴们是个好时机,Apple的New iPad推出之后一直被用户诟病,而iPhone 4S也开始在用户群体中出现了审美疲劳。加之Apple的开发成本相较Windows平台会高许多,只要微软能够保证自己的应用丰富性,包括与各种企业环境的良好兼容,也不是没有可能再次扳回一局。
另外,微软还有别的未来可以选择吗?显然没有太多可供选择,那么只有发动这场决定性的平板圣战……
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim: windows config(c:\Program Files\Vim\_vimrc)
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Use Vim defaults (much better!)
" This should the priority setting, otherwise problems can appear
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set nocompatible
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 编码设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
"set fileformats=unix
set fileformat=unix
set encoding=prc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set guifont=Consolas:h14
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction
set number " 显示行号
set tabstop=4 " 设定tab长度为4
set shiftwidth=4 " 缩进的空格数
set expandtab " 是否在缩进和遇到Tab键时使用空格代替;
" 使用noexpandtab取消设置
set autoindent " 自动缩进
set smartindent
set cindent
set showmatch " 显示括号配对情况
set paste " 支持外部复制(好像不管用)
set clipboard+=unnamed " 与windows共享剪贴板
set history=50 " keep 50 lines of command history
set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" color set
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
colorscheme desert " windows下深色主题
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" windows下gui去掉显示,如果需要显示,只需要将-改为+即可
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set guioptions-=T " windows下隐藏工具栏
set guioptions-=r " 把gui右边的滑动条去掉
set guioptions-=L " 把gui左边的滑动条去掉
set guioptions-=m " 把gui的菜单栏去掉
set shortmess=atI " 启动的时候不显示援助索马里儿童的提示(是I而不是L)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" windows下启动vim最大化
autocmd GUIEnter * simalt ~x
set gcr=a:block-blinkon0 " windows下去掉光标闪动
set nobackup " 关闭自动备份功能,backup自动备份
" 侦测文件类型
filetype on
" 载入文件类型插件
filetype plugin on
" 为特定文件类型载入相关缩进文件
filetype indent on
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" windows下python配置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 自动补全:
" 配置说明
" 1. 下载pydiction, pydiction包括了complete-dict和python_pydiction.vim
" 2. cp complete-dict to C:\Program Files\Vim\vimfiles\ftplugin\pydiction
" cp python_pydiction to C:\Program Files\Vim\vimfiles\ftplugin
" 3. modify _vimrc
" add:
" filetype plugin on
" let g:pydiction_location='C:\Program Files\Vim\vimfiles\ftplugin\pydiction\complete-dict'
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 快捷键说明
" 需要补全的时候,按住tab键,便可以看到补全的内容
" 然后通过ctrl-n, ctrl-p可以上下选择
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"filetype plugin on
let g:pydiction_location='C:\Program Files (x86)\Vim\vimfiles\ftplugin\pydiction\complete-dict'
" 自动编译python,
" python需要加入path路径,以后只要编写python的时候,按住f12,便可直接编译
" %代表的就是当前的文件
map <F12> :!python.exe %
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Tag list(ctags)
" 配置说明:
" 1. 下载ctags, 解压缩,会发现里面有一个ctags.exe
" 1. cp ctags.exe to c:\windows\system32\, 这之后,cmd下便有了ctags命令
" 3. 下载taglist, 解压缩, 里面有doc/taglist.txt和plugin/taglist.vim
" 4. cp taglist.vim to C:\Program Files\Vim\vimfiles\plugin\
" cp taglist.txt to C:\Program Files\Vim\vimfiles\doc\
" 5. 使用:
" 同linux类似。
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"let Tlist_Show_One_file=1 " 不同时显示多个的tag,只显示当前文件的
"let Tlist_Exit_OnlyWindow=1 " 如果taglist窗口是最后一个窗口,则退出vim
"nmap tl :TlistToggle
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" winmanager config
" 配置说明:
" 1. 下载winmanager, 解压缩
" 2. 操作同taglist类似
" let g:winManagerWindowLayout='TagList|FileExplorer' 显示顺序,TagList在上,
" FileExplorer在下
" let g:winManagerWidth=30 30像素的宽度
" nmap wm :WMToggle 自定义快捷键
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"let g:winManagerWindowLayout='TagList|FileExplorer'
"let g:winManagerWidth=30
"nmap wm :WMToggle
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""