FLAC

회사에서 CARAT-HD1V와 ATH-A900의 조합으로 음악을 듣고 있습니다. 가요는 그럭저럭 들을만 한데, 클래식의 경우 영 시원찮더군요. 음원이 문제일 수도 있다는 생각에 FLAC 형식으로 CD 음원을 추출하여 들어 보았습니다.

허접한 mp3에 비해 볼륨을 높여도 잡음이 끼지 않고, 확연히 다른 감동을 선사해 주었습니다. 왜 지금까지 mp3를 들었나 싶을 정도로… 한동안은 가지고 있는 CD로부터 틈틈히 FLAC 음원을 추출해야겠네요.

큰 돈 들이지 않고 장만한 PC-FI 환경으로 즐기는 음악… 상당히 매력적인 것 같습니다.

부서 이동: Compiler팀에서 DB2팀으로

일본 출장 다녀와서, 인수인계를 마무리 하고, 휴가 답지 않은 하루의 휴가(사이버 강좌 수강 및 자동차 정기점검)를 보내고, 9월 1일부터 Compiler팀이 아닌 DB2팀 소속으로 출근하였습니다. 오늘이 세번째 날이네요.

짐을 풀고, 컴퓨터를 세팅하면서, 코드리뷰, 스터디 등을 소화하느라 이틀을 정신 없이 보내고 이제 조금 여유를 찾고 있습니다.

완전히 새로운 분야이기 때문에… 공부할 것이 산더미 같습니다. 아주 오랜만에 학생으로 돌아간 기분이 들기도 합니다. 새로운 팀에 합류한 후 6시간 정도 밖에 잠을 이루지 못할 정도로 여유가 없지만,  정신은 또렷한 것을 보면 적잖이 긴장하고 있는 듯 합니다. 열심히 배우고 익혀서 팀에서 제 역할을 해낼 수 있어야겠다는… 생각으로 매일 새롭게 배운 것을 놓치지 않으려고 노력 중입니다.

지금은 아무역할도 할 수 없지만, 1년 후에는… DB분야의 전문 연구원이 되고 싶습니다.

마지막 파티 in 일본

길고 긴 일본 출장 일정을 마치고 내일 한국으로 돌아갑니다. 지난번 출장 기간을 합치면 올해 한달이 넘는 시간을 일본에서 보냈네요. 처음엔 맛있었던 일본 음식이 차차 지겨워질 때 즈음에 한국으로 돌아갈 수 있어서 다행입니다.

1차 출장: 7월 1일 ~ 7월 8일
2차 출장: 7월 31일 ~ 8월 26일

그 동안 NTT comware에 출근하면서 함께 동고동락했던 분들과 마지막 파티를 벌였습니다. 지난번에는 소고기 위주로 구워 먹었는데, 오늘은 소고기, 만두, 새우, 감자 등등 다채로운 메뉴를 즐겨 보았습니다.


효소가 살아 있는 KIRIN 맥주를 마시며 도란도란 여러가지 주제로 이야기를 나누었습니다. 오늘은 주로 그 때 그 시절의 컴퓨터와 게임에 대한 이야기를 나누었습니다. 역시 모두들 지금의 직업이 천직인지라 이야기 주제가 컴퓨터를 벗어나지 못하네요.

마지막은 새우로 장식했습니다. 일본에서 새우를 즐겨 먹어서 그런지, 통통하고 신선한 새우를 쉽게 구할 수 있더라구요. 소금을 깔고 제대로 구워 먹었습니다. 정말 맛있더군요.이렇게 일본 출장 일정이 끝나가네요. 낯선 환경에서, 보고 싶은 사람들을 마음속에 간직한체 지내는 것이 조금은 익숙치 않았지만, 일본에서 일했던 기억은 오래 남을 것 같습니다. 일본 법인 분들도, 저희 팀원들도 모두들 좋은 분들이라 힘든 가운데 즐겁게 일할 수 있었습니다. 8월 초 팀을 옮기는 일정을 미루고 와서, 새 팀에 합류했을 때 스터디 일정을 따라가는게 평범한 저에게는 매우 힘든 과정이 되겠지만, 정들었던 기존 팀원들에게 조금이나마 도움을 주고 떠나게 되어 뿌듯합니다.

프로젝트가 성공해서 모두들 고생한 만큼 좋은 결실을 맺기를 바랍니다. 모두들 크게 웃을 수 있기를…

몇 가지 루비 예제 코드

루비를 제대로 공부하진 않았지만, 언어가 간결한 덕분에 여러가지 상황에서 유용하게 사용하고 있습니다. 그 동안 만들어서 사용했던 몇 가지 루비 예제 코드를 소개합니다. 여기에 소개하는 코드를 조금만 수정하면 다양한 경우에 활용할 수 있을 것 같네요.

1. 소스코드에서 32자 이상의 심볼을 사용한 라인을 찾아 출력하기

HITACHI 메인프레임 C 컴파일러가 32자 이상의 심볼을 지원하지 않더군요. 일일이 찾기 힘들어서 이를 찾기 위해 작성한 프로램입니다. 현재 디렉토리에 존재하는 소스코드를 읽어 32자 이상의 심볼을 찾은 경우 해당 라인을 라인번호와 함께 출력합니다.

file_array = Array.new

Dir.foreach(“.”) { |x|
  if x.include?(“.c”) or x.include?(“.h”) or x.include?(“.y”) or x.include?(“.l”)
    file_array.push(x)
  end
}

file_array.each { |fname|
  File.open(fname) { |fp|
    lineno = 1
    while line = fp.gets
        line.scan(/[1-9a-zA-Z_]+/) { |x|
          if x.length > 32
            puts “#{fname}:#{lineno}:+#{x.length – 32}:#{x}”
          end           
        }
        lineno = lineno + 1
    end
  }
}

2. 파일의 라인 뒤집기

매년 말 블로그에 독서 리스트를 정리할 때 사용하기 위해 작성한 프로그램입니다. 티스토리에서 목록을 뽑아 파일에 저장한 후 이를 뒤집어 독서 리스트를 읽은 순서대로 뽑아냅니다.

line_array = Array.new
File.open(“ReadingList.txt”) do |file|
    while line = file.gets
        line_array.push(line)
    end
end
ofile = File.new(“ReadingList.rev.txt”, “w”)
line_array.reverse!
cnt = 1
line_array.each do |reversed_line|
    ofile.puts(“#{cnt}. #{reversed_line}”)
    cnt = cnt + 1
end
ofile.close

3. 프로그램 수행 및 stderr, stdout 얻기

루비에서 다른 프로그램을 실행하고 stderr, stdout을 추출하는 예제 코드입니다. 루비를 사용하여 배치 스크립트를 작성 할 때 유용할 것 같네요.

require ‘session’

t=Thread.new do
  sh = Session.new
  sh.execute( ‘ruby /home/stefano/documenti/scripts/prova.rb’ ) do |out, err|
    puts “Msg: #{out}” if out
    puts “Err: #{err}” if err
  end
end
t.join

ATH-A900

드디어 오늘 퇴근 길에 아마존JP에 주문한 ATH-A900을 수령하였습니다. 제가 있는 숙소의 입구에 택배함이 있는데 방번호와 암호를 입력하면 방번호에 해당하는 택배함이 자동으로 열리도록 되어 있습니다. 온통 일본어라 약간의 시행착오가 있었지만 무사히 제품을 수령할 수 있었습니다.


아마존JP에서 일본 법인 분의 도움을 받아 13860엔에 ATH-A900을 구입하였습니다. 일본은 배송이 한국보다 느리다고 하는데, 의외로 주문한 다음날 도착하였습니다. 한국에서 29만원 정도하는 제품을 18만원 정도로 구입한 셈이네요.



개봉 후 바로 작은 볼륨으로 평소 즐겨듣는 임동혁의 앨범을 틀어 두고 있습니다. 헤드폰이라 그런지 작은 볼륨으로도 충분히 듣기 좋네요. 해상력이 뛰어난 오디오테크니카의 제품이라 그런지 클래식 음악에 잘 맞는 것 같습니다.


오늘 밤새 클래식을 틀어 에이징을 하고, 내일은 이적의 노래를, 모레는 락음악을 들어 봐야겠습니다. 지금 글을 쓰는 이 순간 쇼팽의 녹턴 2번을 듣고 있는데, 너무 아름답네요. 어서 한국으로 돌아가 직접 연주하고 싶습니다.