본문 바로가기
잡동사니

나 혼자 보려고 만든 참고 노트 (21.02.08 UPDATE)

by misconstructed 2021. 2. 8.
728x90

개발하면서 자주 만나는 오류들과 문제들을 정리한 포스트.

이쯤 정리했으면 외울법도 하지만 못외우니 그냥 ctrl + f 해서 찾아서 제대로 쓰기라도 하자.


# MySQL

MacOS에 MySQL 설치하기

  1. MySQL 다운로드 (링크)
  2. .dmg 파일을 다운받은 후 설치
  3. root user의 비밀번호 설정
  4. [시스템 환경설정]에서 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와 로컬 디렉토리 연결하기

  1. 연결을 원하는 로컬 디렉토리로 이동
  2. git init
  3. git remote add origin [주소]
  4. 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 브랜치 간의 머지

Merge

  • Squash and Merge (a, b, c를 합쳐서 새로운 커밋으로 만들고, 머지 대상 브랜치에추가)
    • 커밋을 parent를 init 하나만 가짐
    • 커밋 'a, b, c'는 init만을 부모로 가진 단일 커밋
    • 기존의 브랜치에서 작업한 a, b, c 커밋들은 'a, b, c'와 아무런 연관을 가지지 않음
    • Develop-feature 브랜치 간의 머지에 유용
      • feature의 복잡한 커밋 히스토리를 모두 하나로 묶어서 완전히 새로운 커밋으로 develop 브랜치에 추가해서 관리할 수 있음

Squash and Merge

  • Rebase and Merge (a, b, c 를 심리스하게 머지 대상 브랜치로 추가, 각 커밋들은 모두 parent를 하나씩만 가짐)
    • master-develop 브랜치 간의 머지

Rebase and Merge

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 버전이 나와서 발행하는 오류 (이전 버전을 사용한 경우)

  1. tensorflow의 버전을 1.4로 다운그래이드
  2. 기존에 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

댓글