Etude

지난 화요일 피아노 레슨은 완전히 암울했다. 지난주 선생님이 지적해주신 부분을 염두해서 세심하게 연습한 것이 아니라 개인적으로 재미있게 대충대충 연습하다 보니 선생님이 보시기에는 한주 동안 전혀 발전이 없었던 것 같았다.

아무렇게나 건반을 누르다가 선명하면서도 부드러운 소리를 내기 위해 타건 방법을 바꾸었더니 마치 풍맞은 사람처럼 빠르게 치려고 하면 손이 마음대로 안움직인다. 어렸을때 배우는 것이 중요하다는 것을 뼈져리게 깨달으며, 어렸을때 그만둔 것을 후회하는 한편으로 과연 노력하면 되는 것인가 하는 의문을 마주하며 불안함에 떨고 있다. 그러나 몇 년은 꾹 참고 나아갈 생각이기에 그리 조급하지는 않다.

최근의 성의없는 연습을 반성하며, 레슨 이후에는 항상 마에스트로(?)가 일러준 것을 상기하며 재미위주가 아니라 실력향상을 위주로 연습을 하고 있다. 오늘도 그렇게 잘 움직이지 않는 4번 손가락에 영혼을 불어넣기 위해 스타카토를 열심히 연습하던 중 현택이형이 잠깐 들르셨다.

잠깐의 담소를 나눈 후, 현택형은 연습을 하기 위해 방으로 돌아갔고, 곧 아름다운 음악이 흘러나왔다. 체르니 30번을 치던 나는 치던 것을 멈추고 넋을 잃은체 그 음악에 빠져들었다. 그 곡은 바로 쇼팽 에튀드 Op. 10, No. 1 이였는데, 최근에 많이 듣는 곡이다. Etude는 연습곡을 의미하는데 쇼팽의 에튀드는 연습곡이면서도 굉장히 아름답다.

지금은 그저 부러울 따름.

리눅스로 작업환경 변경

사용자 삽입 이미지
작업환경을 완전히 리눅스로 옮겼다. 윈도우 컴퓨터에서 Putty로 셀레론 컴퓨터에 접속해서 GCC를 컴파일 하며 작업하다 듀얼 코어 컴퓨터에 리눅스를 설치하고 직접 컴파일 하니 속도가 2배 가까이 향상 된 듯한 느낌을 준다. 게다가 우분투 7.10은 설정하고 사용하기가 정말 편리하다.

빨간색을 좋아하다 보니 입맛에 맞게 글꼴과 테마를 수정했다. 그럭저럭 마음에 드는 개발 환경을 마련하는데 성공! 출근해서 저녁먹을때까지는 리눅스 환경에서 업무에 집중하자!

성남시립교향악단 48회 정기연주회

성남시향 48회 정기연주회의 제목은 “브람스 서거 110주년 기념 음악회”로 다음과 같은 프로그램으로 진행 되었다.

브람스 바이올린 협주곡     

브람스 교향곡 4번

원래는 혼자 가서 음악에 집중(?)하려고 했는데, 출근 길에 용호형에게 이야기 했다가 뜻(?)이 맞아서 함께 가게 되었다.

전날 잠을 많이 못자서 피곤한 상태인데다가, 바이올린 협주곡은 들어본 적이 없어서 그만 살짝 졸고 말았다. 바이올린은 일본인인 쓰지오 도쿠나카씨가 연주했는데, 화려한 손놀림에 감탄했다. 낮에 있었던 피아노 레슨에서 버벅거리던 나의 가까운 과거를 상기시키며, 저정도 경지에 이르기까지 그가 들였을 평생의 노력을 상상해 보았다.

애초에 나는 브람스 교향곡 4번을 들으러 간 것이므로, 바이올린 협주곡을 꿈결에 넘긴 것에는 아쉬움이 없었다. 드디어 인터미션을 지나 교향곡 4번의 연주가 시작되자 익숙한 선율에 감동이 물 밀듯이 밀려왔다. 갈대가 바람에 흔들리는 듯, 바다에 파도가 치는 듯 바이올린의 선율이 격정적으로 다가오는 1악장은 교향곡 중에 내가 가장 좋아하는 곡이다.

오늘 성남시향의 브람스 교향곡 4번 공연은 내가 들어왔던 유명한 오케스트라의 공연 못지 않게 훌륭했다. 한가지 작은(?) 바램이 있다면 내년에는 라흐마니노프의 피아노협주곡 2번의 공연이 있었으면 한다.

교육소집일자 신청

신기하게도 혹은 친절하게도, 전문연구요원의 4주훈련 날짜를 정해서 알려달라는 회사의 메일을 받았다. 꽃샘추위가 맹위를 떨칠 내년 2월이나 3월쯤 가게 될 것이라 생각했었는데 날짜를 선택할 수 있다니!

다음 날짜 중에서 교육소집일자를 정해야 한다.

2008년 5월 22일
2008년 7월 3일
2008년 8월 14일
2008년 9월 4일

일단은 추위 때문에 고생할 일은 없을 듯 하다. 개인적으로는 9월을 생각하고 있다. 매년 5, 6월쯤 달리기를 시작하여 9월 정도에는 최적의 체중과 최상의 체력을 갖춘 상태에 이르기 때문이다.

훈련 가보신 분들, 훈련가기에 좋은 날짜 급추천 바랍니다. 오늘 안으로 결정해서 회신해야 할 듯.

Ruby로 처음 작성한 코드, test harness

펄, 파이선, 루비 등의 스크립트 언어 중에 하나 정도는 알아 두는게 편할 것 같다는 생각에 이번 달에는 루비를 공부하고 있다. 책의 절반을 쭉 읽어 나가면서 코드는 한번도 작성한 적이 없었지만 언어가 간결해서 그런지 몰라도 쉽게 원하는 코드를 작성할 수 있었다.

지금 진행하고 있는 프로젝트는 코볼 컴파일러의 개발인데, 컴파일러가 생성한 코드가 정확한가를 확인하는 가장 쉬운 방법은 기존의 컴파일러가 생성한 코드와 수행 결과(stdout)을 비교하는 것.

지금까지는 급한 마음에 두 실행파일을 번갈아 실행하며 눈으로 수행결과를 비교했는데, “실용주의 프로그래머”를 보면 테스트를 포함한 프로젝트 빌드의 전과정을 자동으로 수행할 수 있도록 할 것을 강조하고 있다.

그리하여 고즈넉한 저녁에 잠깐의 짬과 약간의 용기를 내어 처음으로 루비를 사용해 간단한 test harness를 작성해 보았다.

name_list = [
    ‘intrinsic_math_func’,
    ‘intrinsic_char_func’,
    ‘intrinsic_case_func’,
    ‘intrinsic_value_func’,
    ‘intrinsic_divide_func’,
    ‘intrinsic_numval’,
    ‘intrinsic_annuity’
]

test_cnt = 0
succ_cnt = 0
fail_cnt = 0

# TODO
# compare execution time
name_list.each do |name|

    test_cnt += 1

    mf_exec = “./” + name + “.cob32”
    tmax_exec = “./” + name + “.gcobol”

    mf_stdout = `#{mf_exec}`
    tmax_stdout = `#{tmax_exec}`

    print “[#{test_cnt}] #{mf_exec} vs #{tmax_exec}”
    if (mf_stdout == tmax_stdout)
        puts ” …success”
        succ_cnt += 1
    else
        puts ” …fail”
        fail_cnt += 1
        puts “[#{mf_exec}]”
        puts mf_stdout
        puts “[#{tmax_exec}]”
        puts tmax_stdout
    end
    puts
end

puts
puts “Total : #{test_cnt}”
puts “Success : #{succ_cnt}”
puts “Fail : #{fail_cnt}”
puts

컴파일러가 생성한 코드의 수행시간 역시 컴파일러를 평가하는데 중요한 이슈이므로, 두가지 컴파일러가 생성한 코드의 수행시간을 자동으로 비교해 주는 프로그램을 루비로 간단히 작성하는 것도 큰 의미가 있을 것 같다. 사용하기 쉬운 루비 언어를 조금 더 연습해서 프로젝트의 여기저기에 잘 활용한다면 생산성을 향상 시킬 수 있을 것이다.