The Best & Rarities


요즘 가장 즐겨듣는 음반을 소개합니다. 직접 구입한 음반은 아니구요, 랑랑이 쓴 책에 대한 리뷰를 블로그에 써서 출판사에서 선물을 준 것인지 아니면 구입할때 이벤트가 있었는지는 모르겠지만 공짜로 얻었습니다. ^^; 공짜로 얻은 음반치고는 애지중지 하며 열심히 듣고 있어요.

이 앨범은 CD2장으로 구성되어 있는데, 두번째 CD는 아직 거의 들어보지 못했습니다. 첫번째 CD에 담긴 음악이 너무 좋아서 여기 있는 곡들만 반복해서 듣고 있습니다.

1. Hungarian Rhapsody No.2 In C Sharp Minor (Franz Liszt)
2. Apring Dance (Sun Yiqiang)
3. Piano Sonata In C Major, K.330 : I. Allegro Moderato (Wolfgang Amadeus Mozart)
4. Liebestraum, S.541, No.3 (Franz Liszt)
5. Yellow River Concerto, Ii. Ode To The Yellow River
6. Nocturne In D Flat Major, Op.27 No.2 (Frederic Chopin)
7. Kinderszenen, Op.15, Traumerei (Robert Schumann)
8. Autumn Moon On A Calm Lake (Lu Wencheng)
9. Rhapsody On A Theme Of Apganini, Op.43, Variation 18 (Sergei Rachmaninov)
10. Piano Concerto No.4 In G Major, Op.58, Ii. Andante Con Moto (Ludwig Van Beethoven)
11. Piano Sonata No.3 In B Minor, Op.58, Iv. Finale (Frederic Chopin)
12. Piano Concerto No.1 In B Flat Minor, Op.23, Iii. Allegro Con Fuoco (Peter Ilyich Tchaikovsky)

보통 4번 트랙부터 7번 트랙까지, 11번 트랙부터 12번 트랙까지 듣습니다.

특히 리스트의 Liebestraum은 요즘 저의 favorite classical music 입니다! 정말 감미롭고 아름다워서 제가 아는 모든 사람들에게 들려 주고 싶은 음악이에요. 언젠가는 직접 연주해보고 싶기도 합니다. (1만시간 연습하면 누구나(?) 전문가가 될 수 있다는 제목의 기사가 떠오르는 군요. ^^;)

이 앨범을 들으면서 얻은 또 하나의 수확은 쇼팽의 소나타를 좋아하게 되었다는 것입니다! 11번 트랙에 소나타 3번이 상당히 마음에 들었거든요. 임동혁, 임동민 형제의 쇼팽 소나타 앨범도 한번 들어보고 싶네요. 하지만 역시 쇼팽은 발라드라는 생각에는 여전히 변함이 없습니다.

5번 트랙을 보면 제목이 생소하지 않나요? 해석하자면 “황하강 피아노 협주곡”입니다. 이 곡을 들어보면 중국문화의 느낌을 클래식 형식으로 잘 살렸다는 느낌을 받게 됩니다. 그리고 부럽다는 생각이 들었습니다. 우리도 “한강 교향곡”, “한강 피아노 협주곡” 같은 것 하나 있어야 하는 것 아닙니까?

DVD에서 봤던 그의 격한(?) 몸짓만큼이나 강렬한 감정이 음악에 실려 있는 듯 하여, 집중해서 그의 음악을 들을때면 온몸이 짜릿해 짐을 느낍니다. 이 앨범에 어느정도 실증이 날때 즈음에는 그의 다른 앨범 혹은 더 나아가 그의 공연에 관심을 가져봐야겠습니다.

알루미늄 아이맥(iMac) 24인치

맥미니, 맥북, 아이맥 사이에서 방황하다 결국 미친척 하고 아이맥 24인치를 구입해 버렸습니다! 회사에 들어온 이후로 제 자신에게 가장 큰 선물이 되겠네요. ^^; 다소 성급한 구매였지만 몇일 사용해본 결과 매우 만족스럽습니다. 


작년에 맥북을 사용했던 전력이 있기 때문에 mac osx에 금방 익숙해 질 수 있었습니다. mac osx의 사용자 인터페이스가 워낙 훌륭하기 때문이기도 하겠죠. 넓고 선명한 화면도 훌륭하지만, 가장 만족스러운 부분은 소음이 거의 없다는 것입니다. 얼마전에 처분한 조립PC는 정말 시끄러웠거든요! 컴퓨터로 음악을 듣는게 바보스럽게 느껴질 정도로…

Objective-C 공부 후에, mac 어플리케이션 혹은 iPhone/iPod Touch 어플리케이션을 개발해보려고 합니다. 어느정도 진행이 되면 블로그에 관련 글을 쓸 수 있겠죠. ^^

Call stack을 깨는 버그의 해결

decNumber Library(http://speleotrove.com/decimal/)를 사용하는 코드에서 Call stack을 깨먹는 버그가 발생하여 지난 일주일동안 마음이 편치 않았는데, 결국 해결했습니다! 워낙 사소한 실수에서 비롯된 일이라 부끄럽기 그지 없지만, 유사한 버그로 머리를 쥐어뜯고 있을 누군가에게 도움이 될지도 모른다는 바램을 가지고 용기를 내어 보겠습니다!

Call stack을 깨는 코드는 다음과 같습니다.

이 함수가 호출되면 sementation fault가 발생하면서 프로그램이 죽는 현상이 발생했습니다. gdb에서 bt를 실행해보니 call stack이 깨졌다는 사실을 알 수 있었습니다. 곰곰히 생각해보니 로컬변수에 값을 쓰다가 activation record의 return address 영역을 엎어 쓰는 것 같더라구요. 이를 확인하기 위해 left 변수 앞에 임의로 char buf[100]; 변수 선언을 넣었더니 call stack이 깨지는 현상은 사라졌습니다.

decNumber 라이브러리를 사용하여 실제 계산을 수행하는 코드는 다음과 같습니다.

여기서 눈여겨 보아야 할 것은 DECNUMDIGITS라는 상수(constant)입니다. 항상 decNumber를 사용해 계산을 수행하기 위해서는 decContext를 설정해서 전달해 주어야 하는데 이때 DECNUMDIGITS을 참조하게 되죠. 이 값을 별도로 설정하지 않으면 decNumber.h에서 1로 설정하기 때문에 정상적인 연산을 수행할 수 없습니다.

따라서 decNumber로 표현 및 계산하고자하는 최대 자리수를 #define으로 미리 지정해 주어야 합니다.  문제는 여기에 있었습니다. decNumber를 사용하여 계산하는 함수를 따로 분리하는 과정에서 decNumber.h를 include 하는 문장 뒤에 #define DECNUMDIGITS를 포함하는 헤더파일의 include 문장이 존재하게 되었던거죠! 결과적으로 decNumber.h가 확장될때는 DECNUMDIGITS가 기본값인 1로 결정되고, 제가 작성한 코드에서는 프로젝트 전역 헤더파일에서 정의한 값(30)이 참조되었습니다. 변수와 정의와 변수의 참조 사이에 괴리(?)가 발생했던 겁니다. 

decNumber.h를 살펴보면 문제는 좀 더 명확해 집니다.

decNumber.h를 include하는 문장 앞에 DECNUMDIGITS을 정의한 프로젝트 전역 헤더파일을 include하도록 수정함으로써 문제는 간단히 해결되었습니다. 대부분의 버그가 비슷하겠지만, 문제를 찾아서 해결하고 나니 참으로 허무한 기분이 들었습니다. 한동안 제 자신이 미워지더군요. ^^;

이번 경험을 통해 얻은 교훈은 다음과 같습니다.

1. macro 사용에 유의하자.
2. 헤더파일의 include 순서에 유의하자.
3. call stack을 깨는 경우는 문자열을 비롯한 array의 잘못된 사용 및 참조로 발생하는 경우가 많다.

Ruby로 작성한 회귀 테스트 장치

저희팀(TmaxSoft, Compiler팀)은 컴파일러를 개발하고 있습니다. 컴파일러를 개발하다보면 코드의 수정 혹은 추가로 인해 기존에 잘 되던 것이 잘 안되는 문제가 빈번히 발생합니다. 언어를 처리하는 프로그램의 특성상 상호의존적인 코드의 비중이 높기 때문이죠.

그런 까닭에 “실용주의 프로그래머“에서도 강조하는 회귀 테스트가 정합성을 생명으로하는 컴파일러의 개발과정에서 빼놓을 수 없는 영역을 차지하게 됩니다. 

저희팀에서 컴파일러 혹은 인터프리터의 개발과정에서 사용하는, Ruby로 작성된 회귀 테스트 장치(regression test harness) 코드는 다음과 같습니다. (Ruby의 맛만 살짝 본 상태에서 제가 작성한 조악한 코드지만, ‘이런식으로 회귀 테스트를 하기도 하는구나!’ 정도로 이해해주시면 좋겠네요.)

컴파일러나 인터프리터가 제대로 동작하는지 확인하는 가장 간단한(?) 방법은 소스코드를 사용하여 예상대로 동작하는지 확인하는 것 입니다. 일반적인 경우에는 standard output(이하 stdout) 결과를 보고 이상유무를 파악합니다. 기본적인 아이디어는 여기서 정리하고 본론으로 들어가자면…

여기서 소개한 회귀 테스트를 위해서는 2가지 작업이 선행되어야 합니다.

1. 회귀 테스트에 포함시킬 예제 파일의 이름(확장자 제외)을 list.txt에 추가 (newline으로 여러개의 파일구분)
2. 정상 동작할때 stdout을 filename.out 파일에 저장 (e.g. ezp -i filename.ezt > filename.out)

회귀 테스트 과정은 다음과 같습니다.

1. list.txt에서 테스트 할 파일 이름을 추출하여 nameArray에 저장, 이 때 존재하는 파일인지 확인
2. ezp 인터프리터 실행하여 stdout을 filename.tmp에 저장
3. diff로 정상 동작시 결과 filename.out과 현재 실행 결과 filename.tmp를 비교
4. diff의 stdout이 비어 있으면 테스트 성공! 비어있지 않으면 failArray에 추가
5. 회귀테스트 결과 출력

저희팀에서는 (당연한 이야기겠지만) 저장소에 commit하기 전에 회귀 테스트를 통과하는 것을 정책적으로 강제하고 있습니다.

Code::Blocks

Code::Blocks는 윈도우, 리눅스, 맥 환경을 모두 지원하는 오픈소스 C/C++ 개발 환경입니다.

http://www.codeblocks.org/

리눅스나 유닉스를 기반으로 하는 맥의 경우 C 프로그래밍 환경을 쉽게 갖출 수 있지만, 윈도우의 경우 로컬 시스템에 C 프로그래밍 환경을 마련하기가 애매한 것 같습니다. 윈도우를 위한 gcc환경인 MinGW를 직접 설치해야 하죠.

윈도우 환경에 Code::Blocks를 설치하는 경우 codeblocks-8.02mingw-setup.exe 파일을 다운받아 실행하시면 MinGW가 함께 설치되고 Code::Blocks의 기본 컴파일러로 등록이 됩니다. 별도의 설정없이 바로 프로젝트를 생성하고 빌드하고 실행할 수 있는 환경을 마련할 수 있습니다.

IDE 자체도 훌륭합니다. function outline, folding, debug, syntax highlighting 등등 IDE가 갖추어야 할 기본적인 기능은 모두 포함하고 있습니다. 윈도우에 C 프로그래밍 환경을 마련하고자하는 분들에게 Code::Blocks를 추천하고 싶네요.

아름다운 열정

아름다운 열정8점
조현정 지음/청림출판

대학교에서 컴퓨터를 전공하던 시절, 컴퓨터를 전공하는 학생이 비트교육센터를 다니는 것을 챙피한 일로 여겼던 것 같다. 그러나 이 책을 읽고 생각이 180도 달라졌다. 프로그래머로 일한지 2년이 다 되어가는 내가 비트교육센터 전문과 과정에 들어간다면 과연 잘 해낼 수 있을까 의문이 들정도로 비트교육센터는 엄청난 노력과 탄탄한 실력이 뒷받침 되어야 이겨낼 수 있는 교육과정을 제공하고 있었다.

원래는 성공시대 출연으로 유명한 조현정 대표과와 비트컴퓨터라는 회사를 좀 더 알고 싶어서 이 책을 읽기 시작했는데, 대부분은 비트교육센터에 대한 이야기로 가득하다. 조현정 대표의 인생철학, 국가관, 소프트웨어 산업에 대한 생각등을 책을 통해 접하면서 우리회사의 CEO겸 CTO 이신 박대연 교수님과 굉장히 비슷하다는 생각이 들었다. 회사에서도 워낙 애국심, 소프트웨어 산업의 중요성, 프로그래머가 지녀야할 정신자세 등에 대해서 많이 들어왔기 때문에… 

뚜렷한 목표의식을 가지고, 죽을 힘을 다해 공부하는 비트출신들을 보면서 현실에 안주하고 있는 나 자신을 돌아보고 부끄러워 할 수 있는 기회를 갖게 되었다. 좀더 나은 프로그래머로서 회사와 사회에 기여하기 위해서는 어떤 노력을 꾸준히 기울여야 하는지 고민해 봐야겠다.

고해상도 앨범 사진 얻기

iTunes로 음악을 정리해 듣다 보면 앨범 사진까지 깔끔하게 입혀 놓고 싶은 욕심이 들때가 많다. 작은 이미지를 구하는 것은 그리 어렵지 않지만, iTunes의 Cover Flow를 사용해도 볼만할 정도의 큰 이미지를 구하기는 녹녹치 않았다.

지금까지 사용하던 방법은 에반레코드(http://www.evan.co.kr/)에서 해당 앨범을 찾은 후, 플래쉬 화면을 캡춰하여 앨범 사진으로 사용했는데 정확히 자르기도 어려울 뿐더러 여간 불편한게 아니였다.

오늘 우연히 에반레코드의 데이터베이스를 이용해 앨범 사진을 쉽게 얻을 수 있는 사이트를 발견했다.

커버.즐즐넷
http://cover.zzlzzl.net/

이 곳에서는 손쉽게 정말 커다란 앨범 사진을 얻을 수 있다. 특히나 웬만한 클래식 앨범을 모두 찾을 수 있다는 점이 매력적이다. iTunes의 경우 사이트에서 찾은 이미지를 drag and drop으로 음악파일에 입력할 수 있어 매우 편리하다.

추가로 추천하고 싶은 사이트는,

maniadb
http://www.maniadb.com/

커버홀릭
http://www.coverholic.com/


고해상도 앨범 사진으로 음악파일을 정리한 덕분에 음악을 듣는 즐거움에 보는 즐거움이 더해졌다. ^^

아이맥 리퍼 구입 실패

맥북을 사서 즐겁게 사용하다 팔아치운지 벌써 1년이 넘었다. 메인 PC로 사용하기에는 국내 웹환경이 옳지 않아서 아쉬움을 뒤로 하고 맥라이프를 접었었는데, 요즘에는 다시 맥을 사용하고 싶은 마음이 굴뚝같아서 전전긍긍하며 지내고 있다. 레오파드도 한번 써보고 싶고, 아이폰 SDK로 어플리케이션 개발도 해보고 싶고…

그래도 가능하면 돈을 굳혀 보려고, 
우분투를 설치해 리눅스에 정을 붙여 보려고 애를 써보기도 하고…
회사에 남는 PC에 해킨토시를 설치해 보기도 하고…
나름 애를 써보았으나 맥에 대한 욕망을 접기가 녹녹치 않았다.

그리하여 싸게 맥을 구할 수 있는 방법을 고민해 보았다. 괜찮아 보이는 중고 맥미니를 사려 했는데, 연락해보니 이미 팔렸고, 새제품을 사자니 성능에 비해 비싸기도 하고, 기왕이면 아이맥으로 가자 싶기도 하고…

이래저래 찾아 다니다 애플 사이트에서 리퍼 제품을 저렴하게 구입할 수 있다는 것을 알게 되었다. 12시에서 2시 사이에 갑자기 떴다가 사라진다는…

오늘 점심 먹고 돌아와 티베로데이 관련 기사를 읽다가 심심해서 링크를 열어보니 리퍼제품이 떠있었다!
http://store.apple.com/kr/browse/home/specialdeals/mac?mco=MTE3NjY


부랴부랴 아이맥 20인치 제품을 장바구니에 넣고 결제를 시도했다! 그러나 현대카드 안심클릭 사이트에 접속이 잘 안되서 살짝 버벅거리는 사이에 물건은 안드로메다로… 오호 통제라…

절호의 기회를 놓치다니… 앞으로 매일 점심시간마다 긴장해야 하나…

Ubuntu 8.10

집에서 회사일 및 알고리즘, 프로그래밍 공부를 해볼 요량으로 오랜만에 리눅스를 설치해 보았다. iptime 무선 랜카드 G054U-A를 사용하는 환경이라 이를 리눅스에서 동작하게 하기 위해서는 엄청난 삽질이 뒤따를 것을 감안하고 Ubuntu 8.10을 설치했는데, 놀랍게도 아무런 설정없이 바로 무선랜 카드를 사용할 수 있었다!

더욱 놀라운 것은 파티셔닝을 하지 않고 윈도우 파티션 내부에 가상 파일시스템을 구축하여 우분투를 설치할 수 있게 되었다는 것! 단 이때는 파일 시스템의 성능이 다소 저하될 수 있으며 Hibernation 기능을 사용할 수 없다. 그러나 이와 같은 방식으로 설치하고 사용해본 결과 눈에 띌만한 성능의 저하는 느낄 수 없었다. 간단히 윈도우에서 uninstaller를 실행하는 것으로 깔끔히 리눅스를 제거할 수 있다는 점도 상당히 매력적이다.


Ubuntu studio 테마를 설치하고, 네이버에서 받은 나눔고딕을 사용하도록 설정하니 윈도우보다 더 보기좋은 UI가 완성되었다! 회사 컴퓨터에도 설치해볼 계획인데, 부디 듀얼모니터 설정도 별다른 삽질 없이 마법처럼 되었으면…

마에스트로 금난새 열정과 도전

마에스트로 금난새 열정과 도전10점
금난새 지음, 이진영.신승철 구성/생각의나무

금난새 선생님의 공연을 본적은 없지만, “금난새와 떠나는 클래식 여행”을 통해 호감을 갖게 되었는데, 이 책을 읽고 나서 나는 완전히 그의 팬이 되었다. 수원시립도서관에서 빌려 읽은 이 책을 따로 구입해 소장하고 싶은 마음이 들 정도로…

들고 다니기 부담스러울 정도로 크고 무거운 이 책은 많은 사진을 담고 있다. 환갑이 넘은 나이에도 불구하고 젊은 시절과 그리 다르지 않은, 오히려 부드러운 인상이 더 좋은 느낌을 주는 그의 모습은 아마도 음악의 힘이 아닐까?

어렵게만 느껴지는 클래식 음악을 대중에게 전달하기 위한 평생에 걸친 그의 노력과 음악에 대한 순수한 열정 뿐만 아니라 현실에 안주하지 않고 항상 새로운 목표와 꿈을 향해 도전하는 모습을 엿볼 수 있었다. 국내 최고의 오케스트라였던 KBS 교향악단을 박차고 나와, 수원시립교향악단, 유라시안 오케스트라, 경기도립교향악단으로 자리를 옮기며 자신의 맡은 오케스트라의 역량을 최고로 끌어 올렸던 그의 행보를 눈여겨 보는 것만으로도 그가 언제나 꿈을 꾸고 노력하며 생을 충실히 살아가고 있는 사람이라는 것을 짐작케 한다.

음악인으로서 사명을 다하기 위해 노력하는 모습, 사회인으로서 사회적인 책임을 다하려는 자세, 창의적인 아이디어와 강한 추진력, 단원들을 이끌어온 친화력과 배려심 등등 책을 읽는 내내 배울점이 참 많은 사람이라는 생각을 했다. 특히 침체되어 있는 수원시립교향악단에 활력을 불어 넣어 전국에서 가장 활발히 활동하는 지방교향악단으로 만든 일화나, 유라시안 오케스트라를 설립해 자생력을 갖춘 오케스트라로 성장시킨 이야기는 상당히 인상적이였다.

또 한명의 훌륭한 인생 선배를 만난 느낌! 금난새 선생님의 공연이 있다면 한번 찾아가보고 싶다.