본문 바로가기
🤖 생산성 Up & Tips

macOS 개발 환경 설정과 자주 사용하는 앱 소개 (Karabiner, Alfred, Go, Java, Jetbrain, ...)

by kukim 2023. 3. 12.

최근 회사에 입사하며 맥북 설정을 하였습니다. 자주 사용하는 앱과 개발 환경 설정을 정리하였습니다. 

 

목차

- Commom

- macOS App (Karabiner, Alfred, Magnet, itsycal)

- Terminal

- Jetbrain(Intellij, Goland, plugins)

- 개발 언어 설정(Go, GVM, Java, JVM)

- Infra (Docker, k8s kubectl, redis-cli)


Commom

System Preferences - Keyboard

키보드 입력 속도 변경 

맥북 기본 키보드 입력속도가 느리기 때문에 키보드 입력 속도를 빠르게 설정하는 편입니다.

키보드 입력 automatically 제거


macOS App 

Karabiner (무료)

키보드 입력키를 변경하는 앱입니다. 가장 많이 사용하고 있습니다. 저 같은 경우 vim의 이동키(hjkl)를 vim이 아닌 곳에서도, 모든 텍스트 편집기에서 vim 방향키를 매핑하여 사용하고 있습니다. (Caps Lock + hjkl) 

Complex Modifications- Add rule에서 CapsLock Hyper key 설정

Caps Lock 키를 Hyper 키로 매핑하면 기존의 한영 변환 키를 변경해야 합니다. 저의 경우 Caps Lock + A와 ⌃ + Space 한영키를 변경하고 있습니다.

한영키 입력 변경

Alfred (유료)

알프레드는 macOS의 스포트라이트 기능을 대신하는 앱입니다.

제가 가장 많이 사용하고 효율적으로 사용하고 있습니다. 추가 기능을 사용하려면 라이선스 1개에 약 4만 원 정도 비용을 지불해야 합니다. 개인적으로 돈이 아깝지 않은 앱입니다. 유료 서비스를 확장하면 Workflows나 클립보드, Snippets를 사용할 수 있습니다. 

특히 클립보드와 Workflows를 커스텀하게 설정하면 생산성이 상당합니다.

클립보드 예
workflows 예
해당 workflows를 실행하면 카카오, 디스코드, 슬랙이 실행되면서 화면 분할 정렬합니다.

alfred로 macOS 모니터 화면 회전 하기 : 2021.11.26 - [🤖 생산성 Up & Tips] - 🖥 ↩️ macOS에서 모니터 피벗 단축키 설정하기 (Apple API + Alfred Workflows)

 

 

Magnet - 화면 분할 앱 (유료, 12000원)

키보드로 화면을 분할하는 앱입니다. 이 앱도 가장 많이 사용하고 있습니다. 유료이기에 무료 서비스 Spectacle도 있다고 합니다. 

 

itsycal - 캘린더 앱 (구글 연동) (무료)

구글의 여러 계정을 연동하여 캘린더 일정을 한 번에 볼 수 있습니다.


Terminal

# 초기 xcode install
xcode-select --install
# brew 설치 : https://brew.sh/index_ko 
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

# 설치확인
> brew doctor
Your system is ready to brew.
## Git 버전 업데이트와 기본 설정
# git version update
brew reinstall git

# default branch rename : master -> main
git config --global init.defaultBranch main
git config --global user.name "name"
git config --global user.email"name@gmail.com"
# iterm2 설치
brew install iterm2

brew install cask # brew 확장
brew install make # Makefile
brew install tree # tree command
brew install jq # json view
brew install bat # cat

# zsh 자동완성
brew install zsh-completion
# vim 기본 설정

vi ~/.vimrc

syntax on

set autoindent

set cindent
set nu
set ts=4 " Tab 너비
set shiftwidth=4 " 자동 인덴트할 때 너비
set hlsearch " 검색어 하이라이팅

highlight ColorColumn ctermbg=gray
set colorcolumn=80

JetBrain (IntelliJ, Goland)

JetBrain 제품은 JetBrains Toolbox App을 통해 손쉽게 설치할 수 있습니다.

 

IntelliJ

- 테스트 자동 생성 시 assertJ 정적 메서드 자동 완성

  • Preferences > File and Code Templates > Code탭 > Junit5 Test Class > import static org.assertj.core.api.Assertions.*; 추가
##import static org.junit.jupiter.api.Assertions.*;
import static org.assertj.core.api.Assertions.*;
#parse("File Header.java")
class ${NAME} {
  ${BODY}
}

추가 라이브 템플릿 설정 : 2022.03.10 - [✅ 테스트] - IntelliJ의 Code&Live Templates 활용하여 생산성 높이기! 테스트코드 작성시간 줄이고 아직 구현하지 않은 메서드 예외로 확인하기

 

IntelliJ Plugin

- .ignore : .ignore 파일 기본 템플릿 생성이 간단합니다.

 

- CSV Editor : csv 파일을 테이블 형태로 쉽게 보고 바로 수정할 수 있습니다.

- Git Commit Template : 기본적인 commit 포맷을 제공합니다.

- GitHub Copilot : GitHub Copilot access 가 있다면 추천합니다. (회사에서 사용하려면 확인 필요)


개발 언어 설정

Go

- 공식 홈페이지 특정 releases 설치

- brew 설치

# 특정 버전 지정 설치 
brew install go@1.18

# 최신 버전 설치
# brew install go


❯ go version
go version go1.18 darwin/amd64

❯ go env | head
GO111MODULE="auto"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/kukim/Library/Caches/go-build"
GOENV="/Users/kukim/Library/Application Support/go/env"
GOEXE=""
...

GVM(Go Version Manager)

GVM을 사용하여 Go 버전 관리 가능(설치, 버전 변경)

  • gvm listall : releases 확인
  • gvm install go1.2 : go 특정 버전 설치, e.g. go1.2
  • gvm list : local에 설치된 go 버전 확인
  • gvm use go1.2 : GOROOT 변경으로 사용하는 go 버전 변경
  • gvm use go1.18 --default : 해당 버전 default 설정
## GVM 설치
# bash의 경우
❯ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

# zsh의 경우
❯ zsh < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

Cloning from https://github.com/moovweb/gvm.git to /Users/kukim/.gvm
Created profile for existing install of Go at "/usr/local/go"
Installed GVM v1.0.22

Please restart your terminal session or to get started right away run
 `source /Users/kukim/.gvm/scripts/gvm`

GVM 사용 예

# Go 모든 releases 확인
❯ gvm listall

gvm gos (available)

   go1
   go1.0.1
   ...
   go1.19.6
   go1.20
   go1.20rc1
   ...
# install go
❯ gvm install go1.20
Installing go1.20...
 * Compiling...
go1.20 successfully installed!

# 설치된 go 확인
❯ gvm list

gvm gos (installed)

   go1.20
=> system # system은 기존 local에 설치된 go (작성자의 경우 1.18)
# go version 변경
❯ go version # 변경전 1.18
go version go1.18 darwin/amd64

❯ gvm use go1.2 # 변경 
Now using version go1.20

❯ go version # 변경 (GOROOT 가 변경되어있음)
go version go1.20 darwin/amd64

Java

Install Java 17 (Amazon Correntto)

# 설치된 자바 버전 확인
❯ java --version
openjdk 17.0.6 2023-01-17 LTS
OpenJDK Runtime Environment Corretto-17.0.6.10.1 (build 17.0.6+10-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.6.10.1 (build 17.0.6+10-LTS, mixed mode, sharing)

# 설치된 자바 경로
❯ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
    17.0.6 (x86_64) "Amazon.com Inc." - "Amazon Corretto 17" /Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home

jENV

JDK Version 관리 툴, jENV

❯ brew install jenv

# jenv add error가 발생하는 경우라면 아래와 같이 진행
❯ jenv add /Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home/
ln: /Users/kukim/.jenv/versions/corretto64-17.0.6: No such file or directory

# doctor
❯ jenv doctor
[OK]	No JAVA_HOME set
[ERROR]	Java binary in path is not in the jenv shims.
[ERROR]	Please check your path, or try using /path/to/java/home is not a valid path to java installation.
	PATH : /usr/local/Cellar/jenv/0.5.6/libexec/libexec:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/local/bin:/usr/local/go/bin
[ERROR]	Jenv is not loaded in your zsh
[ERROR]	To fix : 	echo eval "$(jenv init -)" >> /Users/kukim/.zshrc

# add
❯ jenv add /Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home/
corretto64-17.0.6 added
17.0.6 added
17.0 added
 17.0.6 already present, skip installation

# version check
❯ jenv versions
* system (set by /Users/kukim/.jenv/version)
  17.0
  17.0.6
  corretto64-17.0.6

# configure e.g.
> jenv global oracle64-1.6.0.39 # global java version setup
> jenv local oracle64-1.6.0.39 # local java version setup
> jenv shell oracle64-1.6.0.39 # shell java version setup

Infra

Docker

로컬에서 Docker를 돌리기 위해서 Docker 데스크톱 용 프로그램이 필요합니다. 개인 계정이라면 가장 유명한 Docker Desktop을 사용하면 됩니다. 단, 회사에선 Licence 문제가 있습니다. 이를 대체하기 위해 Rancher Desktop을 사용할 수 있습니다. 아래 설명은 Rancher Desktop으로 설명하겠습니다.

Rancher Desktop 설치
dockerd (mody)로 설정해야 docker command 용으로 사용

만약 기존 Docker Desktop 사용하고 있고, docker daemon 못 찾는다면 docker context Rancher Desktop으로 변경해야 합니다.

❯ docker ps
Cannot connect to the Docker daemon at unix:///Users/kukim/.docker/run/docker.sock. Is the docker daemon running?

❯ docker context use rancher-desktop
rancher-desktop
Current context is now "rancher-desktop"

❯ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

# docker command 자동완성이 필요한 경우
## http://recordingbetter.com/aws/2017/07/05/Docker-names-%EC%9E%90%EB%8F%99%EC%99%84%EC%84%B1

Rancher Desktop는 기본적으로 Local k8s를 On 하고 있기 때문에 사용하지 않는다면 off 하면 됩니다.

k8s 끄기


 

k8s kubectl

Install with Homebrew on macOS, Enable shell autocompletion

## brew로 kubectl 설치
brew install kubectl

## kubectl 자동완성과 alias로 k로 변경

# autocomplection (자동완성)
source <(kubectl completion zsh)

# complete:13: command not found: compdef 와 같은 오류가 발생하면, ~/.zshrc 파일의 시작 부분에 다음을 추가한다.
autoload -Uz compinit
compinit

# alias
echo 'alias k=kubectl' >> ~/.zshrc
echo 'complete -F __start_kubectl k' >> ~/.zshrc

# kubectl -> k
❯ k get all
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.43.0.1    <none>        443/TCP   19h

Redis-cli

brew install redis

# Enable cluster mode
redis-cli -c -p 7000

127.0.0.1:7000> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3

댓글