Macbook - Personal Settings
1. Basic Configuration
1.1 잠지기 방지 설정
노트북을 덮어도 꺼지지 않도록 설정하는 방법
# 잠자기 방지 설정 세팅
$ sudo pmset -c disablesleep 1
# 노트북 닫으면 정상적으로 꺼지도록 설정
$ sudo pmset -c disablesleep 0
1.2 Terminal & Brew & Bash
Brew 설치
# Brew 설치
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.profile
$ eval "$(/opt/homebrew/bin/brew shellenv)"
# Bash 설치
$ brew install bash
Bash로 변경
$ chsh -s /bin/bash
~/.bashrc
또는 ~/.zshrc
에 다음을 설정합니다.
export CLICOLOR=1
export LANG=en_US.UTF-8
~/.bash_profile 에 작성
export PATH="/usr/local/bin:/opt/homebrew/bin:$PATH"
# Hide default loging message
export BASH_SILENCE_DEPRECATION_WARNING=1
# Fancy colors in Bash
export CLICOLOR=1
export LSCOLORS=GxBxCxDxexegedabagaced
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# Show Current Git Branch
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1='\[\033[00;36m\]\u:\[\033[0;33m\]\W$(parse_git_branch)>\[\033[00m\]'
1.3 키 바인딩 설정
HOME
, END
키를 줄의 처음, 끝으로 보내도록 설정
$ mkdir -p ~/Library/KeyBindings/
$ vi ~/Library/KeyBindings/DefaultKeyBinding.dict
이후 다음의 내용을 넣습니다.
{
"\UF729" = moveToBeginningOfLine:; // home
"\UF72B" = moveToEndOfLine:; // end
"$\UF729" = moveToBeginningOfLineAndModifySelection:; // shift-home
"$\UF72B" = moveToEndOfLineAndModifySelection:; // shift-end
"@\U007F" = deleteWordBackward:; // cmd + backspace
}
그외 대부분의 기본 세팅값들은 .. /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict
에 있습니다.
Terminal 에서의 변경
Preferences > Profiles > Settings > Keyboard.
에서 변경이 가능합니다.
- 라인의 처음으로 이동:
\033OH
- 라인의 마지막으로 이동:
\033OF
설정이 완료된 이후, 컴퓨터 재시작 필요.
1.4 그외 터미널 설정
터미널 벨 끄기
- Terminal -> Settings -> Advanced -> Bell
- Visual Bell 체크 박스를 uncheck 으로 만듭니다.
Default Terminal as VIM
~/.bash_profile
을 열고 다음을 추가 합니다.
export EDITOR=/usr/bin/vim
반복 키가 안눌리는 문제 해결
$ defaults write -g ApplePressAndHoldEnabled -bool false
2. Python & Spark
매우 중요
scipy는 M1 에서 Python 3.8 부터 지원이 됩니다. Python 3.7 그 이하는 scipy 가 설치가 안됩니다.
2.1 Preparation
이건 개인 설정이기 때문에, 상황에 따라 다를 수 있습니다.
일단 XCode를 설치 합니다.
brew install qt5 openblas gfortran
# Optional
brew install apache-arrow
brew install zmq
2.2 PIP Configuration for Security
pip 보안 설정을 해줍니다.
mkdir ~/.pip
vi ~/.pip/pip.conf
아래와 같이 붙여 넣습니다.
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
# Replace cert value
# cert = /etc/ssl/cert.pem
cert = /etc/ssl/cert.pem
2.3 Install Prerequisites
brew install openblas gfortran lapack
~/.bash_profile 에 다음을 추가 합니다.
export# openblas
export LDFLAGS="-L/usr/local/opt/openblas/lib"
export CPPFLAGS="-I/usr/local/opt/openblas/include"
export PKG_CONFIG_PATH="/usr/local/opt/openblas/lib/pkgconfig"
# lapack
export LDFLAGS="-L/usr/local/opt/lapack/lib"
export CPPFLAGS="-I/usr/local/opt/lapack/include"
export PKG_CONFIG_PATH="/usr/local/opt/lapack/lib/pkgconfig"
Python 에 기본적으로 필요한 라이브러리를 설치 합니다.
pip install --upgrade pip wheel setuptools cython pybind11
2.3 Install Python & Libraries
특히 M1 이라면 설치전 다음 명령어 실행이 필요합니다.
# Python 설치 (원하는 버젼으로 수정)
pyenv install 3.10.13
pyenv global 3.10.13
# Numpy 설치시 필요한 명령어 입니다. (한번만 실행하면 되며, bashrc 같은 곳에 넣을 필요 없습니다.)
export OPENBLAS=$(brew --prefix openblas)
export CFLAGS="-falign-functions=8 ${CFLAGS}"
pip install --upgrade pip setuptools wheel
pip install -v numpy scikit-learn
pip install --upgrade matplotlib ipython pandas pydot-ng graphviz
pip install --upgrade jupyterlab mpl-interactions[jupyter] jupyterlab-code-formatter black isort autopep8
jupyter server extension enable --py jupyterlab_code_formatter
2.4 Jupyter Kernel 설정
# 리스트 출력
$ jupyter kernelspec list
# 등록
$ python -m ipykernel install --user --name 3.10.13 --display-name "PyEnv 3.10.13"
# 삭제
$ jupyter kernelspec remove <kernel_name>
2.5 Spark
https://spark.apache.org/downloads.html 들어가서 최신 spark를 다운로드 받습니다.
$ wget https://dlcdn.apache.org/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
$ tar -xvf spark-3.5.0-bin-hadoop3.tgz
$ mv spark-3.5.0-bin-hadoop3 ~/app/spark-3.5.0-bin-hadoop3
# pyspark 설치
$ cd ~/app/spark-3.5.0-bin-hadoop3/python
$ python setup.py install
# Log 설정
$ cd ~/app/spark-3.5.0-bin-hadoop3/conf
$ mv log4j2.properties.template log4j2.properties
$ vi log4j2.properties
아래와 같이 log4j2.properties 를 수정합니다.
rootLogger.level = ERROR
2.6 Installing x86_64 brew package
M1, M2, M3 사용하면 arm64 아키텍쳐가 기본값으로 사용이 됩니다.
문제는 x86_64를 돌려야 할때가 있습니다. 이럴때는 x86_64 아키텍쳐 라이브러리를 설치하면 됩니다.
$ arch -x86_64 /usr/local/bin/brew install <package name>
그냥 brew install 하게 되면 arm64 아키텍쳐 기반의 패키지가 설치가 됩니다.
2.7 Docker Build for x86 architecture
Docker 빌드할때 X86 아키텍쳐 (인텔)로 빌드할수 있습니다.
물론 할수는 있긴 있는데, 정말 한 10배는 느려지는 느낌입니다.
그러니까 가급적 필요할때만 해야 합니다.
$ docker build --platform linux/arm64 -t <tag-name>
# 또는
$ docker buildx build --platform linux/arm64 -t <tag-name>