使用 Vagrant 搭建开发环境

by fen on February 20th, 2013

团队协作开发的时候,每个人搭建相同的开发环境是个很繁琐的问题。尤其是 Python, Ruby on Rails 这类开发。后来发现了 Vagrant 这个虚拟化环境的工具,便安装了试试。

vagrant-logo.png

Vagrant 是基于 VirtualBox 虚拟机的,通俗的讲,就是用虚拟机的环境运行本地的代码。代码可以在本地直接编辑和调试,你可以在本地浏览器里查看运行中 Web 应用。而这套虚拟机是可以直接导入到其他电脑上的使用的,这样团队其他成员省去了配置时间,更能保证开发环境和生产环境的统一。

安装步骤参见官方文档。装好后就是在终端进行配置:

# 添加官方 box 镜像
$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box
# 为当前目录指定运行镜像,这里指定的是之前添加的 lucid32 镜像
$ vagrant init lucid32
# 启动虚拟环境
$ vagrant up

当环境启动成功后,我们就可以在终端中使用vagrant ssh命令以 ssh 方式登录虚拟机,剩下的操作方法和 linux 没什么两样了,在里面进行开发环境的配置。

官方镜像是 Ubuntu 的系统,我给他分配了 256MB 的内存,跑 Python 和 MongoDB 还是很流畅的。如果你想安装 Debian, CentOS 等其他系统,可以到 http://www.vagrantbox.es 下载社区打包镜像。

更多详情请访问:SegmentFault

Virtualenv 下 Sublime CodeIntel 配置

by fen on March 22nd, 2012

Sublime Text 2 是一款非常优秀的代码编辑器,而智能代码提示 Sublime CodeIntel 更是其必不可少的插件。Python 的开发者通常都会使用 Virtualenv 建立多套虚拟环境,在虚拟环境下安装不同的 Package 版本,减少不必要的冲突麻烦。同时使用两者时,代码提示的智能程度却默认下降了,这是为什么呢?

原来,Sublime CodeIntel 指向的 Python 默认安装路径。你在虚拟环境下安装的 Package 都存放在虚拟环境目录下,自然无法被加载。因此我们需要对 Sublime CodeIntel 进行配置。找到配置文件~/.codeintel/config或者project_root/.codeintel/config(后者只针对某个项目进行配置,文件不存在时要手动创建)编辑如下:

{
    "Python": {
        "python": '~/your_virtualenv/your_venv/bin/python',
        "pythonExtraPaths": ['~/your_virtualenv/your_venv/lib/python2.7/site-packages',
        ]
    },
}

/your_virtualenv/your_venv是你的虚拟环境目录,在创建 virtualenv 环境时就生成了,所以要根据你的实际情况进行修改。如此一来,智能提示的功力又提升了。

一次旅行

by fen on February 2nd, 2012

穿过长长的隧道,列车停了下来。未眠,起身。不知停在了哪里,没有月台,或许不是个车站。

总是突然出现在旅途中。遇到有人问起,便说是来看看或是去逛逛。曾跟朋友说旅行是要带着目的的,现在笑自己说得太早,哪有那么多的目的,都不过是喜欢上了这种追求自由的方式。这些年,似乎一直在车站里徘徊,看人来人往,甚至觉得自己是车站的一部分了。心里有个声音,假装没听见许久,却一直无法忘记:下一站,知道吗?

不知该如何落笔,所以没写 2011 的总结。过去一年的故事很哲学,从认识自己是谁,到从哪里来,再到要去往何处。我可以在醒来时突然想出去走走,然后在火车上看一段风景。下车去一个环境不错的校园,赶上一顿午饭,找间没人的自习室打瞌睡。乘船去小岛上乱走。游人在日落的时候拍一会儿照片便离开,这时候就剩下一个人了,也许是知道夕阳即将消失,所以分外珍惜这最后的时光。有时遇着赶海人,那余辉下的背影,好像就是自己。这景能让人明白很多事情,瞬间悟透人生的许多道理,却无法用言语表达。

在陌生的环境,没有人认识你,才会让你认识自己。我想,这一年最大的收获就是知道了自己所要的,自己所坚持的,自己所追求的是什么。巷口食了碗面,背着收获离开,列车也一路欢快的奔跑。回到住所,朋友问:今天去哪了?我笑了笑:出去走了走。然后闭门满怀激情的创作了。这就是过去的一年,不精彩但也不冷场。

汽笛长鸣,列车开动了。这趟夜行车,划过青灰色的山岭,向过去道别,村庄的上空焰火绽放,迎接这新的开始。我不知道前方的路怎样,但我知道,这一年的故事会非常精彩。

Thank you, Steve!

by fen on October 6th, 2011

Steve Jobs, 1955-2011

从牙膏说起

by fen on December 31st, 2010

小时候,老师说:“你的作文就像挤牙膏,半天都挤不出来”。长大了,生活变得像牙膏,清晨的那段是开始,晚上的那段是结束。时光是牙膏化成的泡沫,流水冲走泡沫留下过往的岁月。

即将过去的一年,发生了很多故事:好口子不再是我停留的驿站,设计成了我工作的一小部分,参加过一次书友会,办公环境迁移到了 Mac,发呆时间献给了 iOS,Pmcaff 素装昙花一现,半个多月的京师之行,遇着一群怀揣梦想的青年,还有一群可爱的人。

读过十余本书,反复听着几十首歌,生活变得简单。烦恼偶尔在夜深叩门,辗转反侧中睡去。初冬清晨的阳光照在床头,把你从梦中唤醒。伸个懒腰,遥望远方,阿牛一家在堤岸边散步吃草,平凡从这里开始。住处离办公的地点两三百米,没有都市的喧嚣繁华,多了几分宁静。

这样的环境,给了我驻足思考的时间,给了我沉淀的机会。也让我在远方传来的新年焰火声中,平静的走过 2010 最后一秒。