Mac开发者2013年新机设置参考

面向Mac新手开发者,主要侧重Web开发。更久远的参考:Mac Lion常用软件清单2011年版

1.基础硬件设置篇

1.1 重装Mac之前

重装之前,先使用时光机器(Time Machine),备份一下所有硬盘资料在移动硬盘上。然后注意,将其从时光机器中移除出来!这样就冻结了开发状态,使得未来不存在被时光机器误删除的可能性。未来再移回去即可。当一个项目结束时,使用此方法非常棒。未来不需要重新搭建环境、寻找第三方库等。

1.2 重装Mac

按住option键,选择从镜像或者网络恢复新机。恢复之前,用磁盘工具删掉之前的老机的内容。

安装时,记得将语言选为English,不要使用中文界面!太多术语,记忆、理解与查找使用中文不便。

1.3 重装之后的基础设置

更改安全设置:

Anywhere 2013 2

更改触摸板默认设置:

Tapclick 2013 1

设置鼠标右键:

Mouse

设置finder偏好:Finder=》Preferences,如下图所示:

Finder

2.通用开发环境设置篇

2.1 编译环境Xcode

Xcode: 在App Store里面免费下载。Apple官方出品。编译下软件与开发mac、ios等软件需要。安装好Xcode之后,打开偏好设置,安装command line,如下图所示:

Commandtool 2013

特别提醒:

Mac 10.9之后,安装command line的方式略有变化,请在终端中输入:

xcode-select --install

2.2 终端iTerm2

终端:iterm2:下载地址是:https://code.google.com/p/iterm2/downloads/list

更多技巧参考老文:iTerm2新手应知特色功能。比如,可以查询出所有之前的命令历史:

iterm2 Paste History

2.3 编辑器Textmate

开源版下载地址

注意配置Shell,

export EDITOR="/usr/local/bin/mate -w"

关于它的使用,敬请参考我的老文章。或者:

2.4 安装homebrew

brew是mac下级别的,用于安装一切Mac需要但没提供的软件。比如mysql等。打开iTerm2,输入:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装wget等通用软件

brew install wget
brew install curl
brew install openssl
brew install imagemagick #未来Rails图片处理需要
brew install gfortran #未来R语言等编译需要
brew install node #未来安装Ruby web服务器pow需要

需要使得系统默认识别的路径,优先识别brew所在的。方法就是编辑:/etc/paths。调用subl打开:

subl /etc/paths

使得它的次序先后是:

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

brew安装的与系统自带的同类软件有什么区别呢?它始终是从github下载最新的。

2.5 下载.dotfiles

dotfiles是很多程序员,将自己的配置环境放在网上。使得未来避免很多重复工作。一般建议找一个与自己类似的。笔者参考zan5hin的修改。

cd ~/. #进入根目录
git clone https://github.com/zanshin/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
git submodule init 
git submodule update 

请注意,dotfiles下载之后,我们这个时候还没下载zsh、oh-myzsh等等,所以,此时先不执行配置文件中的内容。等下载完它们了,再来执行。

2.6 安装zsh与oh-my-zsh

brew install zsh

oh-my-zsh是一个流行的zsh配置文件包。

cd ~/.  #进入根目录
#自动安装脚本    
wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

使用之前git clone下来的.dotnetfiles来管理zsh等很多配置文件。创建软链接,使得ZSH等配置文件默认由它来管理:

ln -s ~/.dotfiles/zsh ~/.zsh
ln -s ~/.dotfiles/zsh/zshrc ~/.zshrc
ln -s ~/.dotfiles/zsh/zshenv ~/.zshenv
ln -s ~/.dotfiles/zsh/zprofile ~/.zprofile

如果提示:ln: /Users/psytown/.zshrc: File exists,请删除该文件,命令为:

rm -rf ~/.zshrc  #请注意,将psytown更改为你的Mac的用户名

设置zsh为默认shell

subl /etc/shells

在文末增加:

/usr/local/bin/zsh

将zsh设置为默认的Shell:

chsh -s /usr/local/bin/zsh

重新启动iterm2。

更详细的参考老文:

3.Ruby开发环境设置篇

3.1 安装RVM

Rvm是Ruby管理器。当系统需要同时安装多个Ruby的时候,RVM非常管用。官方默认的直接将rails一块安装了,我们并不需要,修改为:

curl -L https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash -s stable --autolibs=enabled

注意其中的--autolibs=enabled参数,将自动将缺少的库,比如sqlite、openssl安装上。然后按照shell中的提示,重启RVM:

rvm reload

3.2 安装Ruby

通过RVM安装Ruby:

   rvm install ruby

3.3 通过gem安装Rails

Ruby的插件管理器,叫做gem。通过gem安装Rails:

gem instal rails

创建一个Rails项目,

rails new blog 

本地测试:

cd blog
Rails s

3.4 设置shell默认的gem集合

Rails项目下面,会有一个文件,用于管理插件,叫做Gemfile。Gemfile配套的管理工具叫做bunlde:

bundle check   #检查gem是否缺少
bundle install #安装缺少的gem
bundle update  #重新安装gem,更新项目文件下面的gemfile.lock文件

创建gemset,并使用gemset作为默认的开发环境:

rvm use 2.1.0
rvm gemset create blog #创建ruby2.0下面名为blog的gemset
rvm use 2.1.0@blog --deault #将该gemset作为默认的Ruby开发环境

4.数据库设置篇

安装postgresql数据库

# 手动安装方法

这是手动通过brew进行安装的方法,如果是完全新手,跳到下一节,看更简单的安装方法。

brew install postgresql
postgres -D /usr/local/var/postgres

查看是否安装成功,版本是:

psql --version

初始化数据库:

initdb /usr/local/var/postgres -E utf8

查看brew下的postgresql,

brew list postgresql

发现,postgresql版本是9.2.4。

请注意,/usr/local/Cellar/postgresql/9.2.4/的路径会跟随postgresql的版本变化而变化。未来记得修改为相应路径。

因此,输入下列命令,设为随机启动:

mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/postgresql/9.2.4/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

更详细的参考文档:

# 自动安装方法

一个简单的、自动安装Postgresql数据库的方法是,下载Postgresql App即可,网址是:

[Postgres.app the easiest way to run PostgreSQL on the Mac](http://postgresapp.com/)

安装mysql数据库

安装mysql:

brew install mysql

然后,启动mysql

mysql.server start

请注意,按照brew的安装提示,将mysql设置为自动启动。

ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents

进入mysql数据库:

mysql -uroot

数据库管理软件

navicat premium:商业收费软件。老牌的数据库管理客户端。 支持mysql、postgresql、sqlite与oracle等。

Navicat Premium

5.github工作流程设置篇

使用.dotnetfiles统一管理git配置

使用之前git clone下来的.dotnetfiles来管理git等很多配置文件。创建软链接:

ln -s ~/.dotfiles/git/gitconfig ~/.gitconfig
ln -s ~/.dotfiles/git/gitignore_global ~/.gitignore_global

请特别注意,将其中的~/.dotfiles/git/gitconfig目录中得内容修改为自己的Email地址、Github用户名等。

配置github的SSH秘钥

按照Github提示,创建SSH秘钥:

mkdir ~/.ssh #创建ssh命令
cd ~/.ssh
ssh-keygen -t rsa -C "your_email@example.com" #注意更改Email地址
pbcopy < ~/.ssh/id_rsa.pub

此时,pdcopy命令已经将id_rsa.pub内容复制到剪切板。登陆github:

https://github.com/settings/ssh

点击Add an SSH KeyTitle 部分填写一个所用电脑的名称,然后在Key部分填写之前通过pdcopy命令复制的内容。

Githu Ssh

github最常用的命令

备份到github上:

git add .
git commit -a -m"今天的修改内容是。。。"
git push ##   只有这一步骤才需要联网

设置自己的github所在的分支:

git branch --list
git branch psytown
git checkout psytown
#第一次推送的时候得查文档

安装git flow

安装git-flow

brew install git-flow

使用git flow 初始化项目。

git flow init

创建所有的分支。按照git-flow默认提示即可。

比如,将数据库切换为postgresql。命名一个名为postgresql的新分支。

git flow feature start postgresql

编辑之后,按照正常git流程处理。比如:

git add .
git commit -am "一些改动"

使用此命令完成此新特征的测试:

git flow feature finish postgresql

如下图所示:

Git Flow 2013

更详细的参考文档:

6. Python与R开发环境配置篇

配置Python开发环境

首先通过brew,在iterm2中安装Python。

brew install python

检查Python是否安装成功:

Python -V

然后再创建一个专用目录,比如叫做:~/.virtualenvs,用于保存python的开发环境信息。

mkdir ~/.virtualenvs
cd ~/.virtualenvs

接下来,通过pip包(类似于Ruby中的gem、R中的cran,Python中的包管理机制),安装Python虚拟环境库virtualenv

pip install virtualenv

然后,假设我们要开发项目,创建一个该项目专用开发环境,假设命名为:myproject

virtualenv myproject

创建成功之后,我们会发现,在我们上一步创建的~/python目录下面就多了一个django/bin/python的目录,相关第三方包等内容以后都回下载在这里。我们只需要激活该环境即可:

source ~/.virtualenvs/myproject/bin/activate

如果此时,zsh与oh-my-zsh已经配置成功,iterm2会提醒我们,Python开发环境已经切换到myproject下来。如下图所示:

Django

接下来,在该环境下,安装相关django等类库即可。

pip install django

更详细的可参考:

Python开发,既可以使用Texmate或者sublimetext,也可以使用PyCharm这一类Python IDE。

配置R开发环境

通过brew安装R语言之前,需要先下载xquartz

通过brew安装R:

brew install R

安装R语言桌面开发环境:

启动RStudio,在Console中输入以下命令。或者启动iTerm2,输入R, 然后输入以下命令。批量安装心理测量视图:

install.packages("ctv")
library("ctv")
install.views("Psychometrics") ##   或者更新update.views("Psychometrics") 

更详细的参考文档:

如果你需要备份以上所有辛苦设置的Mac,或者在团队中共享配置,可以使用:Boxen

7.常用shell命令篇

which命令

当你不知道现在用的是哪个路径所使用的ruby、python时,常使用which命令:

which ruby
which python
which R

查询版本

确认是否安装成功时、安装的是什么版本的时候,使用该命令。如:

ruby --version
python --version
curl --version

shell命令常有一个规律,一般–后面带单词的全拼,如version,-后面带单词的首字字母,如:-V。所以,不少时候可以精简为:

ruby -v
python -v

但是,此规律对curl等例外,此时,往往是需要大写,如:

curl -V

帮助

查询帮助时,遵从同样的规律,如:–help或者-h。比如:

ruby --help
python --help

或者:

ruby -h
python -h

将列出ruby的主要命令。当然,也有只支持–help的,如:

git --help 

路径相关

进入某个目录:

cd ~/

查询当前目录:

pwd

创建目录:

mkdir  blog

删除目录:

rm -rf blog

打印系统所使用的PATH命令:

$PATH

编辑系统所在的path先后次序:

subl /etc/paths

更多常用命令参考

  • UNIX TOOLBOX
  • cheatsheets类似于考试时的小抄,将某个需要学习的东西精华整理在一页或几页纸上。http://cheat-sheets.org/,找到里面的Ruby cheatsheets或者你自己所用到语言的小抄,有多个版本,找一个最适合自己的版本 ,然后下载并打印出来。一张纸囊括核心内容。 还有很多在这里:http://refcardz.dzone.com/
  • cheatsheets大全 :以彩色整理了所有主要编程领域的cheatsheets。

8.通用软件篇

编程辅助工具

  • Textexpander:Mac下一个强大的自定义文本工具。
  • DASH:语法库文件本地查询与生成工具。

云端的个人效率软件

  • Evernote: app store可下。笔记无敌。它已收购 skitch:简单易用的截图及图片处理软件。
  • dropbox:个人文件管理利器。
  • Zotero:开源跨平台文献管理软件。
  • Anki:跨平台的记忆、复习软件库。
  • Github for Mac:同步github上的库。作用其实不大,命令提示符效率更高,不过新手可以试试看。另一个支持bitbucket的git图形化管理软件是:SourceTree

~/目录下面统一创建dropbox与dev目录,它们下面的目录结构依次为:

dropbox:
    ---anki:记忆库,存储不懂的,需要经常复习的软件开发术语与技巧
    ---gist:拿来存储Mou这样写作的随想、杂记、报告等。
    ---zotero:拿来存储网页快照、书签与PDF文献、电子书。
dev:
    ---learn:拿来测试、调试与学习的一些别人的开源项目
    ---github:自己的Github私人库与协作的公司库。github for mac会帮助自动管理。

关于知识管理软件的Zotero的使用敬请参考:

浏览器

Chrome:Mac上的主力浏览器。使用Google账号登陆,同步书签、密码等。一些常用的Chrome插件有:

中文输入法

一个较好的备选是又快又贴心的开源输入法鼠鬚管输入法。配置可参考:

備選是搜狗拼音: 搜狗词库更全,但占用资源略高。同样,可以同步词库等。

阅读与写作

  • Keynote:没什么多说的,Apple官方出品,iwork套件中最受人喜欢,富有艺术色彩的表达工具。
  • Mou: Mac上最受喜欢的Markdown写作工具。更多参见:Markdown写作浅谈,如下图所示:

P220903450 3

社交工具

虚拟机

virtualbox:开源虚拟机。Ruby社区一个极富想象力的项目Vagrant,参见:

vmware fusion:老牌虚拟机,收费商业软件。

系统工具

9. 优质资源索引篇

9.1 Ruby

9.2 极客们的通讯

9.3 中文社区

最新的: