728x90
개발하면서 자주 만나는 오류들과 문제들을 정리한 포스트.
이쯤 정리했으면 외울법도 하지만 못외우니 그냥 ctrl + f 해서 찾아서 제대로 쓰기라도 하자.
# MySQL
MacOS에 MySQL 설치하기
- MySQL 다운로드 (링크)
- .dmg 파일을 다운받은 후 설치
- root user의 비밀번호 설정
- [시스템 환경설정]에서 MySQL을 선택하면 현재 실행 중인 MySQL 상태를 확인할 수 있음
MySQL 실행하기
$ cd /user/local/mysql/bin
$ ./mysql -u root(또는 다른 계정) -p # 이후 root 계정(또는 다른 게정)의 비밀번호 입력
$ exit # 종료
# Linux
alias 설정하기
$ vi ~/.bash_profile # bash shell 인 경우
# in .bash_profile
alias ll='ls -al' # ls -al 이라는 명령이 ll 이라는 명령과 동일하게 동작한다.
$ touch .bash_profile
$ alias # 모든 alias 목록을 조회할 수 있다.
Shell
# 쉘 버전 확인
$ bash(zsh) --version
# 쉘 변경
$ chsh -s /bin/bash # bash로 변경
$ chsh -s /bin/zsh # zsh로 변경
# 쉘 확인
$ echo $SHELL
# zsh 설치
$ brew update
$ brew install zsh
$ chsh -s /bin/zsh
# 설정값은 ~./zshrc 에 저장됨
# Git
원격 GitHub Repo와 로컬 디렉토리 연결하기
- 연결을 원하는 로컬 디렉토리로 이동
- git init
- git remote add origin [주소]
- git pull [주소] master
- 로컬에는 master라는 이름의 branch가 생성되어 해당 branch 로 pull 된다.
- 최근에 기본 branch의 이름이 master에서 main으로 바뀜, 그러므로 git pull origin main으로 해야함
- 그렇게 하지 않는 경우, fatal : Couldn't find remote ref master 라는 오류가 발생
Git commit 제거하기
현재 Head를 기준으로 commit 제거하기
$ git reset --hard HEAD^^ # ^의 개수가 HEAD로부터 몇 개의 commit을 삭제할지 결정
$ git reset --hard HEAD # 마지막 HEAD 이후 수정한 내용을 모두 삭제한다.
Git merge VS squash and merge VS rebase and merge 비교
- Merge (a, b, c를 refer하는 m 커밋 노드 생성, m은 parent 로 init, c를 가짐)
- 커밋 m은 부모로 c, init을 가지고, c는 b, b는 a, a는 init을 부모로 가짐, 해당 구조가 모두 히스토리에 남음
- Hotfix-develop, hotfix-master 브랜치 간의 머지
- Squash and Merge (a, b, c를 합쳐서 새로운 커밋으로 만들고, 머지 대상 브랜치에추가)
- 커밋을 parent를 init 하나만 가짐
- 커밋 'a, b, c'는 init만을 부모로 가진 단일 커밋
- 기존의 브랜치에서 작업한 a, b, c 커밋들은 'a, b, c'와 아무런 연관을 가지지 않음
- Develop-feature 브랜치 간의 머지에 유용
- feature의 복잡한 커밋 히스토리를 모두 하나로 묶어서 완전히 새로운 커밋으로 develop 브랜치에 추가해서 관리할 수 있음
- Rebase and Merge (a, b, c 를 심리스하게 머지 대상 브랜치로 추가, 각 커밋들은 모두 parent를 하나씩만 가짐)
- master-develop 브랜치 간의 머지
Git stash
reference : gmlwjd9405.github.io/2018/05/18/git-stash.html
어떤 작업을 하다가 해당 작업을 모두 마치지 못한 상태에서 브랜치를 변경해야 하는 경우가 있음. 이런 경우, 완성하지 못한 작업은 commit 하는게 아니라 stash에 올려서 임시로 저장해둔다.
Git stash 는 아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어이다. 아직 완료하지 않은 명령어는 commit하지 않고 임시로 저장한 후 나중에 다시 불러다가 사용할 수 있다.
# git stash 에 저장하기 때문에 working directory는 깔끔해진다.
git stash
# stash의 목록을 확인할 수 있다.
git stash list
# 임시로 저장한 작업을 다시 불러온다.
git stash apply
git stash apply [stash 이름]
# 가장 최근의 stash를 삭제한다.
git stash drop
# 이름에 해당하는 stash를 삭제한다.
git stash drop [stash 이름]
# Tensorflow
module 'tensorflow' has no attribute 'get_default_graph' 오류
tensorflow 2.0 버전이 나와서 발행하는 오류 (이전 버전을 사용한 경우)
- tensorflow의 버전을 1.4로 다운그래이드
- 기존에 keras에서 import 하던 것들을 모두 tensorflow.keras에서 import하도록 변경 [해결]
# Shell script
touch shell_script_file.sh
vim shell_script_file.sh
chmod +x shell_script_file.sh
파일 최상단에 다음과 같이 추가
#!/bin/bash
추가적인 문법
#!/bin/bash
# usage : ./run.sh gpu_count batch_size
# 첫번째 파라미터
gpu_count=${1}
# 두번째 파라미터
batch_size=${2}
# for 문
# a -le b : a <= b
if [ ${gpu_count} -le 3 ];then
for ((gpu_num=0;gpu_num<${gpu_count};gpu_num++)); do
{
echo RUN ON GPU ${gpu_num}.
CUDA_VISIBLE_DEVICES=${gpu_num} python run.py --gpu [0] --batch-size ${batch_size}
} & # run on background
done
python monitor.py
else
echo GPU count must be less than 3.
fi
728x90
댓글