Mac高效编程基础环境-后台开发

高效开发环境

Posted by zhidaliao on January 1, 2018

最近新买了MBP,所以把以前的环境配置整理了一遍,方便以后更换电脑能快速配置。

Mac配置

  • 设置-触控板-配置点按(不需要按下触控板,轻点即可)
  • 设置-鼠标-跟踪速度、滚动速度 加快
  • 设置-辅助功能-鼠标与触控板-触控板选项:加快滚动速度
  • 设置-辅助功能-鼠标与触控板-触控板选项:启动拖移、三指拖移

基础环境

如果对下面的工具不了解的,请百度了解一下他们

Brew

brew 又叫Homebrew,是MacOSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,只需要一个命令, 非常方便。brew类似ubuntu系统下的apt-get的功能。在命令行输入一下代码进行安装(安装中可能会需要xcode的插件,点击安装、等待完成)

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

Iterm2

一个非常好用的终端程序,禁止 使用osx自带的终端了,用iterm2搭配zsh非常方便

brew install Caskroom/cask/iterm2

Oh-my-zsh

zsh是一个Linux体系下的shell,OSX中已经自带,但是不是默认shell。使用下面的命令让zsh成为默认shell。

chsh -s /bin/zsh

oh-my-zsh是zsh的插件体系,让你使用命令行跟飞一样的感受。安装方法如下:

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

安装完成以后,需要配置一下插件,找到~/.zshrc文件中的plugins=这个地方,设置成下面的代码,启用需要的插件。

plugins=(git autojump extract osx sublime brew-cask copydir copyfile git-extras git-flow gitignore history npm)

我使用的是zsh,相应配置了oh-my-zsh。那么 .bash_profile不会生效,因为配置了zsh之后,打开新的终端不会按照bash的方式走 .bash_profilesource ~/.bash_aliases没有执行,而是走了.zshrc文件。

test -f ~/.bash_profile  && source ~/.bash_profile

Other

  • google-chrome : 浏览器,请自行下载
  • foxmail : 邮件客户端
  • wget : 命令行下载文件工具
  • autojump : 命令行使用j快速切换目录
  • tree : 命令行一次性列出文件夹所有文件结构
brew install autojump wget tree Caskroom/cask/foxmail

作为开发人员,在osx下开发,必须掌握敲命令的能力。以上的一些基础工具能提高效率,建议都看看,学习使用。其他的linux命令也是基本知识。

Docker

安装

前往 https://www.docker.com/ 官网,找到mac 版本下载 新版的docker自带 docker-machine 新版docker不再需要linux虚拟机

添加加速器

前往网站 https://www.daocloud.io 或者 Aliyun Docker container service

右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Advanced 标签下的 Registry mirrors 列表中加入下面的镜像地址:

http://58f8b602.m.daocloud.io Copy

点击 Apply & Restart 按钮使设置生效。

Git

Install p4merge

这是一个osx上面很好的代码对比、代码合并的工具,先安装上。然后配置让git默认使用该工具去对比、合并代码。配置有脚本,见最后的说明。

Install git tool

  • git-extras 提供了一些有用和有趣的命令
  • git-flow 提供了命令简化git使用的流程
brew install git-flow git-extras

Config git

配置脚本2:

  • 2-9行代码配置p4merge工具
  • 11行代码配置全局的gitignore
  • 13-33行配置基础的gitconfig
  • 37-41行配置ssh的config文件
#!/bin/bash

echo '#!/bin/sh' > /usr/local/bin/extMerge
echo '/Applications/p4merge.app/Contents/MacOS/p4merge $*' >> /usr/local/bin/extMerge

echo '#!/bin/sh' > /usr/local/bin/extDiff
echo '[ $# -eq 7 ] && /usr/local/bin/extMerge "$2" "$5"' >> /usr/local/bin/extDiff

chmod +x /usr/local/bin/extMerge /usr/local/bin/extDiff

cp ../file/gitignore_global ~/.gitignore_global

read -p '请输入姓名(最好是邮箱的名称,不带@后缀,如xiejun)' ENAME
read -p '请输入邮箱(请填写企业邮箱,如xiejun@xxx.com)' EMAIL
echo '[user]' > ~/.gitconfig
echo '	name = '$ENAME >> ~/.gitconfig
echo '	email = '$EMAIL >> ~/.gitconfig
echo '[push]' >> ~/.gitconfig
echo '	default = matching' >> ~/.gitconfig
echo '[core]' >> ~/.gitconfig
echo '	editor = subl -w' >> ~/.gitconfig
echo '	quotepath = false' >> ~/.gitconfig
echo '	excludesfile = ~/.gitignore_global' >> ~/.gitconfig
echo '[color]' >> ~/.gitconfig
echo '	ui = true' >> ~/.gitconfig
echo '[merge]' >> ~/.gitconfig
echo '	tool = extMerge' >> ~/.gitconfig
echo '[mergetool "extMerge"]' >> ~/.gitconfig
echo '	cmd = extMerge \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"' >> ~/.gitconfig
echo '[mergetool]' >> ~/.gitconfig
echo '	trustExitCode = false' >> ~/.gitconfig
echo '[diff]' >> ~/.gitconfig
echo '	external = extDiff' >> ~/.gitconfig

配置脚本2: 生成公私钥,配置config文件

chmod 600 ~/.ssh/xxx //xxx是私钥文件

Host g
    IdentityFile ~/.ssh/zhida.lzd
    Hostname gitlab.***.com
    Port 22
    User git

Notice

所有的git代码必须放到 ~/git 中,如果没有该文件夹,使用命令新建

mkdir ~/git

java环境

Install jdk8

去 Oracle 官网下载 jdk1.8.dmg

Install maven

  • 前往Apache maven 官网下载 ,解压到 home目录下
  • 配置环境变量

sudo vim /etc/profile 

export M2_HOME=/Users/zhidaliao/apache-maven-3.5.3
export PATH=$PATH:$M2_HOME/bin

:wq

source /etc/profile 

mvn -v

settings.xml

settings.xml文件可能存在于两个地方:

  • Maven安装时默认的配置:$M2_HOME/conf/settings.xml
  • 用户自定义的配置:~/.m2/settings.xml

前一个settings.xml成为全局设置,后一个成为用户设置。当两个文件同时存在的时候,它们的内容将会被合并,在后者中用户具体定的重复配置将会覆盖系统默认的配置。

default-settings.xml

vim ~/.m2/settings.xml

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <pluginGroups></pluginGroups>

  <proxies></proxies>

  <servers>
    <server>
      <id>nexus</id>
      <username>umi</username>
      <password>***</password>
    </server>  
  </servers>


  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://m2.umiit.cn/content/groups/public/</url>
    </mirror>
  </mirrors>

  <profiles>
    <profile>
      <id>nexus</id>
      <repositories>
        <repository>
          <id>nexus</id>
          <url>http://nexus-releases</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>nexus</id>
          <url>http://nexus-releases</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>

aliyun-settings.xml

<mirrors>
	<mirror>
	  <id>alimaven</id>
	  <name>aliyun maven</name>
	  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	  <mirrorOf>central</mirrorOf>        
	</mirror>
</mirrors>

pom.xml

<repositories>  
    <repository>  
        <id>alimaven</id>  
        <name>aliyun maven</name>  
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
        <releases>  
            <enabled>true</enabled>  
        </releases>  
        <snapshots>  
            <enabled>false</enabled>  
        </snapshots>  
    </repository>  
</repositories>  

Install eclipse

下载 Eclipse Oxygen 版本,解压到 home 目录下

Config eclipse

进入设置中配置 :

  • maven-user settings : 首先在~/.m2文件夹下面加入settings.xml文件(文件在file下面的settings.xml),然后把global settings 和 user settings的路径均配置为~/.m2/settings.xml
  • java-codeStyle-format:自动换行的选项中,最大行宽为120
  • java-codeStyle-Code template - Comments ``` /**
  • @author ${user}
  • ${date}
  • ${tags} */ ```

设置文件编码:

1、windows->Preferences…打开”首选项”对话框,左侧导航树,导航到general->Workspace,右侧 Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。

2、windows->Preferences…打开”首选项”对话框,左侧导航树,导航到general->Content Types,右侧Context Types树,点开Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。其他java应用开发相关的文件如:properties、XML等已经由Eclipse缺省指定,分别为ISO8859-1,UTF-8,如开发中确需改变编码格式则可以在此指定

eclipse默认编码为GBK,修改为UTF8的方法

下载Alibaba 插件

Help - Install new software - https://p3c.alibaba.com/plugin/eclipse/update

《阿里巴巴Java开发手册》IDEA插件与Eclipse插件使用指南

Node

nvm是管理nodejs的工具,可以在一台机器上安装多个不同版本的nodejs

Install nvm

brew install nvm

Config nvm

配置脚本在

mkdir ~/.nvm
echo 'export NVM_DIR=~/.nvm' >> ~/.zshrc
echo '. $(brew --prefix nvm)/nvm.sh' >> ~/.zshrc

Install nodejs

统一nodejs版本为8.9.1,并设置为默认版本,请 必须 安装该版本

nvm install 8.9.1
nvm alias default 8.9.1

Config npm

将以下代码复制粘贴到~/.npmrc中,如果没有该文件,请新建

always-auth=true
registry=http://yourNexusUrl/content/groups/npm/
_auth=dW1pOnVtaTEyMzQ=
email=修改为你的email

Install tool

  • grunt-cli grunt工具
  • supervisor 保持nodejs不间断运行
npm install -g grunt-cli supervisor

Commands Of nvm

  • nvm ls //查看目前机器已经安装的nodejs
  • nvm help //查看各个命令的使用方法

Sublime

非常快速和强大的文本编辑器,开发人员 必须 安装,插件部分选装

Install SublimeText

brew install Caskroom/cask/sublime-text

Install Package Control

按 Ctrl+` 调出console,粘贴以下代码到底部命令行并回车: sublime text2

import urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp) if not os.path.exists(ipp) else None;open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())

sublime text3

import urllib.request,os;pf = 'Package Control.sublime-package';ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) );open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())

参考链接

重启Sublime Text 2,如果在Perferences->package settings中看到package control这一项,则启用成功

Sublime Plugins

非nodejs、java开发人员可以不安装

按下Ctrl+Shift+P调出命令面板,输入pci 调出 Install Package 选项并回车,然后在列表中选中要安装的插件

  • GBK Encoding Support GBK编码支持
  • alignment 代码对齐插件
  • emmet 快速编写html、css的工具,牛逼到不行
  • jquery jquery插件
  • pretty json json格式化工具
  • bracketHight… 代码高亮
  • jsformat js代码格式化
  • auto file name 在编写代码时会自动提示文件名
  • docblocker 编写注释很有用
  • htmlbeautify html格式化工具
  • csstidy css格式化工具
  • markdown preview markdown文件预览
  • Sublime CodeIntel 代码自动完成插件
  • ConvertToUtf8 编码格式转换为utf-8

Snippet

sublime支持代码片段插入,就是可以用快捷键插入一段很长的代码,提升编码速度

如何安装和使用: sublime-snippet

Dash

Dash是一个API文档浏览器( API Documentation Browser),以及代码片段管理工具(Code Snippet Manager),比 sublime的代码管理要更加的好用一些

在网上找到下载,设置权限 设置 - 安全与隐私 - 辅助功能 - 允许Dash控制你的电脑

Snippet用法

在 Preference - Integration 中,显示了集成的软件,在这些软件中 键入你定义的 snippet 缩写,就会自动弹出代码块

定义的代码块可以插入占位符 ,例如

Random random = new Random();
int randomInt =  random.nextInt(__range__);

Snippet用法

在 Preference - Integration 中,显示了集成的软件,在这些软件中 键入你定义的 snippet 缩写,就会自动弹出代码块

定义的代码块可以插入占位符 ,例如

Random random = new Random();
int randomInt =  random.nextInt(__range__);

旧版的介绍:仅供参考 Dash:程序员的的好帮手

API 查找

  • 可以直接在列表中下载官方文档
  • 如果没有的话可以添加左边的选项卡中 - User Contributed ; 查找是否有用户上传的
  • 直接在谷歌中搜索API doc, 然后在 Dash中添加书签
  • 上传 doc 格式的文档到 Dash中

telnet

mac 下的telnet 软件包名 是 inetutils

brew install inetutils

➜  bootstrap telnet localhost 7002
Trying ::1...
Connected to localhost.
Escape character is '^]'.

test
HTTP/1.1 400
Transfer-Encoding: chunked
Date: Tue, 08 May 2018 09:20:18 GMT
Connection: close

0

Connection closed by foreign host.

Python

旧版的介绍:仅供参考 Dash:程序员的的好帮手

API 查找

  • 可以直接在列表中下载官方文档
  • 如果没有的话可以添加左边的选项卡中 - User Contributed ; 查找是否有用户上传的
  • 直接在谷歌中搜索API doc, 然后在 Dash中添加书签
  • 上传 doc 格式的文档到 Dash中

Python

Python环境

现在主流的Linux 版本和Mac 机子都是自带python不需要额外安装;

➜  ~ python
Python 2.7.10 (default, Oct 23 2015, 19:19:21)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

软件源安装

sudo easy_install pip

集成sublime开发环境

(建议使用专门的IDE进行Python开发,避免tab的问题)

SublimeREPL

shift + command + p 打开面板输入 install packages ,安装 SublimeREPL

安装成功之后:Tools -> SublimeREPL -> python -> run current file 即可运行

键位绑定

当然每次通过Tools 这样的方式比较繁琐,将这样的操作和一个按键如F1绑定后,就会方便很多啦

打开Preferences->Key Bindings-User,复制一下代码:

{"keys":["f1"],
"caption": "SublimeREPL: Python",
"command": "run_existing_window_command", "args":
{"id": "repl_python",
"file": "config/Python/Main.sublime-menu"}}

ps 如果还想编译下热乎乎的py代码,可以复制以下代码:

{"keys":["f2"],
"caption": "SublimeREPL: Python - RUN current file",
"command": "run_existing_window_command", "args":
{"id": "repl_python_run",
"file": "config/Python/Main.sublime-menu"}}
command + B

直接在sublime中使用command + B 就可以看到输出结果

参考网址

https://www.zhihu.com/question/22904994/answer/87527103

Blog

习惯使用 github page 写博客,所以使用的是jekyll

检查 ruby 版本 ,MAC自带

ruby -v

ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]
sudo gem install bundler jekyll
jekyll -v

jekyll 3.8.0

尝试运行 jekyll serve ,报错 It looks like you don't have jekyll-paginate or one of its dependencies installed

可以安装github-pages解决

sudo gem install github-pages
➜  zhida_blog git:(master) ✗ Jekyll serve
Configuration file: /Users/zhidaliao/zhida_blog/_config.yml
       Deprecation: The 'gems' configuration option has been renamed to 'plugins'. Please update your config file accordingly.
            Source: /Users/zhidaliao/zhida_blog
       Destination: /Users/zhidaliao/zhida_blog/_site
 Incremental build: disabled. Enable with --incremental
      Generating...
                    done in 4.23 seconds.
 Auto-regeneration: enabled for '/Users/zhidaliao/zhida_blog'
    Server address: http://127.0.0.1:4000
  Server running... press ctrl-c to stop.