내가 보기에 한국 사회의 구조적인 문제의 시작은 ‘계급’ 인거 같다. 민주주의 한국에서 무슨 계급이냐고 하겠지만, 제도화되지 않은 계급은 엄연히 존재한다. 사회적인 직위도 어찌보면 사회적인 제도이기도 하지만, 내가 말하고자 하는 계급은 ‘내가 너보다는 잘났다’ 하는 의식구조를 말한다. 문제는 ‘내가 너보다 잘났다’ 라고 한다면 뭔가 현실을 바꿀수 있는 액션, 예를들어 번뜩이는 아이디어를 낸다던지 그 많은 사회생활과 자기분야의 경험을 기반으로 어려운 문제를 해결해나간다든지 하는 것이 있어야 한다. 쉽게말해서 자타공인 능력자소리는 들어야 그런 말쯤은 할 수 있지 않겠나? 하지만 한국 ‘내가 너보다 잘났다’ 는 […]
우리은행 전산장애 관련해 드는 생각.
지난 5월 초. 5월 5일 어린이날에 주말이라 대체휴일로 월요일까지 쉬는때였는데, 우리은행에서 전산작업으로 인해서 카드결제외엔 아무것도 안된다고 문자가 왔다. 뭔가 큰 작업을 하는 거구나만 생각했는데, 다음날에 사람들 사이에서 우리은행 전산망이 작동하지 않는다고 말을 하더라. 그날 급여를 받아야 하는 사람들은 월급이 이체가 안되었다고 하면서 불만을 토로하기도 했다. ‘은행 전산’, 차세대만 하면 장애부터… 은행 전산망은 다른 전산과는 차원이 좀 다르다. 인간세상 돈이 매우 중요하지 않은가? 그런 돈을 관리를 전산화하는 리스크는 다른 전산시스템을 능가한다. 그런데, 이러한 은행/증권 전산시스템 작업을 했다하면 장애부터 발생하고 시작하는게 문제가 […]
Docker 에 Volumes 추가 하기.
Docker 를 서비스 모드로 실행을 시키면 나중에 문제가되는게 하나 있다. 예를들어, MySQL 을 Docker 를 이용해서 서비스 모드로 실행시켰다고 치자. 그러면 MySQL를 위한 데이터 디렉토리 Container 내에 생성된다. 만일 MySQL을 패치된 버전으로 올리고 싶다면 어떻게 될까? 이럴 경우에 데이터 디렉토리를 Container 내에서 백업할 방법이 없다. 이를 위해서 Docker 에는 Data Volumes 을 추가 할 수 있다. Data Volumes 데이터 볼륨은 호스트 파일 시스템을 컨테이너에 마운트 하는 방법이다. 따라서 Container 가 중지되었거나 Container 를 삭제했다 하더라도 호스트 파일 시스템에는 Container 에서 […]
Eclipse Jeeeyuls themes
Sometime ago, I found themes of Jeeeyul’s for the Eclipse. But now I can’t find it anywhere in the internet. I have some themes of Jeeeyul’s, so I post it. Download: Jeeeyul’s themes If you want to use it, first you should install Jeeyul’s Theme plugins for the Eclipse.
MySQL 8 설치하기
MySQL 8 은 그동안의 버저닝을 버린 최초의 메이저 버전 업데이트라고 할 수 있다. 그만큼 기념할 만큼 큰 변화를 예고했던 버전이며 실제로 많은 변화가 있었다. MySQL 8 의 설치는 5.7 과 크게 차이가 없다. 컴파일 옵션
|
1 2 3 4 5 6 7 8 9 10 11 12 |
apt install libssl-dev libncurses5-dev libaio-dev libnuma-dev libevent-dev cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql-8.0.11 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_SYSTEMD=1 \ -WITH_EDITLINE=/usr \ -WITH_LIBEVENT=/usr \ -WITH_ZLIB=/usr \ -DWITH_BOOST=/usr/src/boost \ -DDOWNLOAD_BOOST=1 |
컴파일러 옵션중에 스토리지 엔진관련해서 변경사항이 있었다. InnoDB, MyISAM, MERGE, MEMORY, CSV 엔진은 이제 기본이 됐다. 명시적으로 지정할 필요가 없다. 엔진 옵션으로 ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED 등을 선택할 수 있다. -DMUTEX_TYPE 옵션으로 InnoDB 에 대한 뮤텍스 타입을 지정하는 건데, 기본값으로 event 다. 이를 위해서 libevent […]
DBA 직업군의 질이 떨어지고 있다.
내가 이러한 글을 쓰는 건 순전히 내 경험에 바탕을 둔 것이다. 나는 현재 SI 분야에서 프리랜서로 일하고 있다. 나의 임무는 TA이다. 인프라 담당이 주요한 업무이긴 하지만 단순하게 인프라를 담당하는 것을 넘어 설계분야까지가 나의 직업적인 업무의 영역이다. 인프라를 담당해서인지 개발자보다도 DBA와 부딪히는 일이 많았다. 별탈이 없었으면 좋았겠지만 문제가 지금도 지속되는 걸보면 내 개인적인 부분이라고 치부하기에는 뭔가 이상했다. 사람이 한번이나 두번정도는 상대방, 그러니까 나의 경우에는 DBA의 개인적인 일탈쯤으로 여길수도 있다. 하지만 프로젝트를 할때마다 DBA와 문제가 생긴다면 이거는 개인적인 일탈이 아니라 사회적인 제도와 […]
Docker 실행하기
Docker 를 설치하고 나면 이제 실행을 해야 한다. 우선, 원래 실행 방법은 다음과 같은 순서를 따른다. Docker 이미지 다운로드 다운로드 된 Docker 이미지를 가지고 Container 생성 Container 실행 Docker 이미지 다운로드는 pull 명령어를 이용하면 된다. Docker ps -a Docker 에서 실행중이거나 중지된 Container 의 목록을 보여 준다. Docker create -t -i imageId /bin/bash [ –name naming ] Docker Container 를 생성한다. -t 는 tty 를 할당하고 하게 -i 는 Interactive 를 말한다. 보통 -t, -i 옵션을 붙여서 -it 로 붙여서 […]
Docker Hub
Docker Hub Docker 는 컨테이너기반 애플리케이션 격리모드로 동작하도록 해준다. 기존의 Hypervisor 를 사용하는 가상화가 아닌 Docker Engine 이 각 애플리케이션을 격리해준다. 애플리케이션이라는 말은 운영체제를 포함한다. 이 컨테이너에서 운영할 각종 애플리케이션들이 있어야 하는데, 이런 것을 개개인이 만들어서 사용해야한다면 비용이 많이 들것이다. 예를들어 Ubuntu 16.04 를 Docker 에서 동작하기 위해서 Docker 컨테이너 환경에서 설치부터 해야한다면 가상화 시스템과 다를바가 없을 것이다. 그래서 많은 사람들이 사용할 애플리케이션을 미리 이미지로 구워서 필요한 애플리케이션이미지를 다운받아 각종 설정들과 함께 실행만 시키면 될 것이다. 이는 마치 리눅스 시스템에서 […]
MySQL 5.7 소스 설치
이 문서는 MySQL 5.7 소스 설치 문서 입니다. Boost 라이브러리 MySQL 5.7 로 넘어오면서 GIS관련해 기능과 InnoDB Engine 에서 R-tree indexes 가 포함되었다. geometry compute 위한 많은 native code 들로 작성이 되었는데 이를 위해서 Boost.Geometry 를 이용했다. 따라서 소스 설치시에 이 라이브러리를 필요로한다. Boost 라이브러리를 컴파일 단계에서 다음의 옵션으로 알려줄 수 있다. -DWITH_BOOST: Cmake 컴파일러에게 Boost 지점를 알려준다. Boost 지점은 다음의 셋중에 하나여야 한다. tarball/zip 파일 tarball/zip 파일을 포함하는 디렉토리 tarball/zip 파일을 압축해제한 디렉토리 -DDOWNLOAD_BOOST: boolean 값으로 Boost tarball/zip 파일을 자동으로 다운로드 받게 할지 말지를 […]
Bash 파일 존재 유무 체크하기
Bash 쉘 스크립트를 작성할때 자주 사용하는 로직인 바로 파일 존재 유무를 체크하는 것이다. 파일 하나만 체크할 수도 있고 여러파일을 체크할 수도 있다. 여러 파일을 체크할때는 다음과 같이 할 것이다.
|
1 2 |
]$ ls *file.txt ls: cannot access *file.txt: 그런 파일이나 디렉터리가 없습니다 |
이것을 Bash 쉘 스크립트에서는 어떻게 리턴을 받아야 하나하는 고민이 생긴다. 가장 쉬운 방법은 stdout, stderror 를 체크하는 방법이다. Bash 에서 이를 exit code 라고 하고 $? 에 세팅이되어 다음과 같은 로직이 가능해진다.
|
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash ls *file.txt if [ $? -eq 0 ] then echo "file exist!!" else echo "file doesn't exist!!" >&2 fi |
명령어가 성공(stdout)하면 $?에 0, stderr 면 1 이다. 위를 실행하면 다음과 같다.
|
1 2 3 |
]$ ./a.sh ls: cannot access *file.txt: 그런 파일이나 디렉터리가 없습니다 file doesn't exist!! |
위 방법외에도 한줄로 다음과 […]