Posts

MacOS X에서 JDK 버전 전환

보통 JDK 최신 버전을 설치해 사용한다. 운영환경에 여전히 JDK7을 쓰고 있지만 개발환경에서는 JDK8을 쓰되 -target 1.7 옵션을 주어 컴파일하면 문제가 없지 않을까 생각했다. 그런데 서버를 올릴때 계속 에러가 발생해 인터넷에서 찾아보니 Spring 3.2.8 버그란다. 이 문제는 Spring 3.2.9에서 해결되었다고 하지만 운영환경은 여전히 Spring 3.2.8을 사용하고 있고, 내가 Spring 버전을 올릴 권한도 없다. 어쩔 수 없이 노트북에 JDK7을 설치할 수밖에 없다.

Read more...

정규 표현식을 이용한 찾기/바꾸기 시 카운터 사용

반복된 패턴을 찾아 다른 문자열로 치환하고 싶을 때 정규 표현식을 사용하면 편리하다. 지금까지는 정규 표현식을 사용해 문자를 치환할 때 고정된 패턴만 지정할 수 있다고 생각했다. 그래서 스택오어플로우에서 정규 표현식으로 문자열을 치환할 때 카운터(counter)를 사용할 수 있냐는 질문을 봤을 때 '되지도 않는 질문'이라 속단했다.

Read more...

MySQL Row Generator

Oracle에서는 connect by를 사용해 필요한 만큼 행(row)을 생성할 수 있다.

select level from dual connect by level <= 100;

PostgreSQL에서도 generate_series를 사용해 쉽게 행을 만들 수 있다.

select * from generate_series(1, 100);

재귀적 CTE(Common Table Expressions)를 사용하면 특정 DBMS에서만 제공하는 기능을 사용하지 않고 표준 SQL만 사용해 행 생성기(row generator)를 만들 수 있다. PostgreSQL에서는 다음과 같은 식으로 원하는 만큼 행을 생성할 수 있다.

Read more...

함수형 언어로 구현한 퀵정렬

언어의 한계가 사고의 한계다.
- 비트겐슈타인

아주 오래 전에, 그러니까 C/C++, Java 외 다른 언어는 공부할 필요가 없다고 생각했던 때에, 잡지에서 다음과 같은 코드를 본 적이 있다.

qsort [] = []
qsort (p:xs) = qsort [y | y <- xs, y < p] ++ [p] ++ qsort [y | y <- xs, y >= p]

Read more...

Hexo: 소스 코드 하이라이팅 스타일 변경

블로그 테마를 수정하면서 소스 코드 하이라이팅 스타일도 바꾸고 싶었다. 내 테마의 스타일은 stylus로 되어 있는데, 파일을 살펴보니 중간에 다음과 같은 부분이 보였다.

Read more...

초보 DBA 삽질기 5

그동안 프로젝트 성격의 일도 있었지만 대부분은 반복적인 작업이었다. 일이 점점 지겨워지고 있었다. 매일 아침 데이터베이스 상태를 확인하는 것도, 작업을 할 때마다 세 번씩 확인을 받아야 하는 것도 모두 짜증났다. 내가 사고를 쳤기 때문에 이런 절차가 생겼고, 이런 절차를 만든 게 나 자신이었고, 안정적인 운영을 위해서는 이런 절차가 필요하다는 점이 나를 더욱 힘들게 했다. 참을성이 바닥나고 있었다.

Read more...

초보 DBA 삽질기 4

입사한지 1년 반이 되어 가고 있었다. 그동안 심각한 장애는 대부분 내 실수에서 비롯되었다. 애플리케이션 서버는 여러 대로 운영하기 때문에 한 대에 문제가 생겨도 거래가 중단되지 않는다. 데이터베이스는 문제가 생기면 모든 거래가 중단되는 단일 실패 지점(Single poing of failure)이었다.

Read more...

초보 DBA 삽질기 3

지난 번 사고 후 네 달 이상 장애가 발생하지 않았다. 처음에 조금 실수를 했지만 이제는 어느 정도 자리를 잡았다는 생각이 들었다. 그동안 많은 일을 했고, 특히 전산센터를 이전할 때 내가 작성한 데이터베이스 동기화 프로그램이 중요한 역할을 했다는 점에 자부심을 느꼈다. 몇 달 동안 사고 없이 데이터베이스를 운영하면서 감도 조금 생겼다. 하지만 실수는 방심할 때 찾아오는 법이다.

Read more...

초보 DBA 삽질기 2

잘 돌아가면 건드리지 말라는 말이 있다. 100% 완벽하게 이해하지 못하는 시스템에 대해서는 이 말이 좋은 충고일 수도 있겠다는 생각이 든다. 데이터베이스 관리 시스템은 매우 복잡한 소프트웨어이므로 이것을 완벽하게 이해하기란 정말 어려운 일이다. 더군다나 데이터베이스가 어떻게 구성되어 있느냐에 따라 같은 명령도 다른 양상을 보일 수 있다. 중단이 허용되지 않는 데이터베이스 시스템에서 뭔가 작업하려면 더욱 주의해야 하고 가능한 보수적으로 접근해야 한다.

Read more...

초보 DBA 삽질기 1

그동안 SI 프로젝트에서 개발 DBA만 하다 처음으로 운영 DBA가 되었다. 그날도 뭘 해야 할지 몰라 데이터베이스 이곳 저곳을 들여다보며 일거리를 찾고 있었다. 모두들 바쁜데 나만 한가한 것 같았다.

Read more...