Fork me on GitHub

virtualenv是如何工作的

简介

virtualenv 是一个创建python隔离环境的工具,可以解决python包的依赖问题, 版本问题和权限问题。

例如应用a需要用到版本1的LibFoo, 而另外一个应用b需要不兼容的版本2,如何能同时跑这两个应用呢?

如果所有包都装到系统site-packages, 很可能会不小心升级了某个不该升级的包。

另外,如果你没有权限安装包到系统的site-packages目录怎么办?

上面这些情况,virtualenv都能派上用场,它会创建一个拥有自己独立安装目录的环境,不会跟其他的virtual环境共享库文件.

使用

安装:

sudo pip install virtualenv

安装后的基本用法是:

virtualenv ENV

会创建一个叫ENV的virtual环境, 然后激活这个环境:

. ENV/bin/activate

它创建了一个 ENV/lib/python2.7/site-packages 目录, 以后所有的包都会安装到那里.

它还创建(复制)了一个 ENV/bin/python 解释器,这个解释器会使用刚才创建的环境(import时会去那个目录寻找模块).

简单点说就是现在无论是 pip install ...

more…

配置共享ssh账号的hg服务器

我们想以ssh方式来提供mercurial仓库服务,服务端共享一个ssh账号hg,

每个用户提供他的ssh public key后就可以通过下面路径来访问远程仓库:

ssh://hg@example.com/repo

然后可以配置用户对仓库的读/写权限。

http://mercurial.selenic.com/wiki/SharedSSH 提供了一些解决方案并说明了工作原理,

其中最简单的是mercurial自带的hgssh脚本, 不过它是直接在 ~/.ssh/authorized_keys

里来指定用户访问仓库的权限,用户/仓库一多,配置起来就眼花缭乱了:

command="cd /home/hg && hg-ssh proj1 proj2 proj3 proj4 proj5 projxxx" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnDpmJrbRd31zIFr/nzOKlHen18RAiIen2CaCrlGFrj/2uPvQfKo263NLev9IQ3+5G5VTaZv3ubByJFSvyCAc7r5QiWp13qcs6GhwXtPKqMvmlZUBHjLxbscdmB70W2g74hfY3YpTyRckNW4cH7Ji1xxuzNnPevLInFnZf4nu4Wi/89jJZO6pJFFqZ6d9V/h9+aze22ylvUdwWg0jkEuql4xngziOx9lmmNp4Bcj/NOwXw8cPVid6JbDsZWtZCovy8dX5MEF1S25mT25/AzSh4Iu6NT4AU0zHRVIMRPfPWQIs0+Vsl1+XEKWTRLdvfu ...
more…

UITextField auto complete suggestion for email

Permalink: 2012-08-29 15:23:37 by freestylerin dev tags: ios
  • Declare property in XXViewController
@property (nonatomic, strong) UITableView *suggestionTableView;
@property (nonatomic, strong) NSMutableArray *suggestionList;
@property (nonatomic, strong) NSArray *suggestionSuffix;

@synthesize suggestionTableView = _suggestionTableView;
@synthesize suggestionList = _suggestionList;
@synthesize suggestionSuffix = _suggestionSuffix;
  • Initialization

in ViewController viewDidLoad

CGRect frame = self.textField.frame;

//customize the tableView ui
self.suggestionTableView = [[UITableView alloc] initWithFrame:CGRectMake(frame.origin.x ...
more…