2020년 2월 16일 일요일

[2020년도 43 5극관 싱글앰프 리모델링] 3. 섀시 설계

도면은 설계자와 제작자(가공자?)를 연결하는 언어에 해당한다. 아이디어를 손으로 그린 스케치가 아니라 정확한 도면으로 만들어 낼 줄 아는 능력은 메이커 시대를 맞이하여 '있으면 좋은 것'이 아니라 필수라고 해도 과언이 아닐 것이다. 도면이란, 음악에서 악보와 같은 것이다. LibreCAD를 수년 전에 받아서 설치를 해 놓고도 진도를 나가지 못하고 있으니 한심할 뿐이다. LibreCAD 위키 사이트튜토리얼을 참조하여 끈기있게 따라가 보는 노력을 들여야 되겠다. 튜토리얼 페이지에 소갠된 Johnny Heikell의 "LibreCAD for Real Dummies"(97쪽)이 학습하기에 좋은 자료라고 여겨진다. 유튜브에 소개된 동영상 튜토리얼도 괜찮다. 아마도 작년에 내가 처음으로 인쇄하여 앞부분을 조금 읽었던 자료는 Jasleen Kaur의 "Quic Start Guide to LibreCAD"(29쪽)가 아니었었나 한다. 인쇄를 해 놓은 것이 어디로 갔는지를 모르겠다.

모든 가공 업체에서는 AutoCAD의 기본 형식인 DWG 파일로 주문을 받는다. LibreCAD는 DWG 파일을 읽을 수는 있지만 이 형식으로 출력을 하지는 못한다. LibreCAD의 결과물을 PDF로 출력한 뒤 다른 서비스(웹사이트)를 이용하여 DWG로 바꿀 수 있다는 글은 간혹 보이는데, 실제로 얼마나 잘 돌아가는지는 모르겠다. 2D 도면이라면 별 문제가 없을 것이라는 희망을 가지고 곧 LibreCAD를 공부해 보도록 하겠다. 진공관 앰프 상판 가공용 도면 정도는 LibreCAD를 며칠 배우지 않아도 가능할 것만 같은데 너무 쉽게 생각하는 것은 아닌지 모르겠다.

올해 계획하고 있는 43 오극관 싱글앰프 리모델링에서는 나무로 뚜껑이 없는 상자 모양의 틀을 만들고 두께 2 mm 알루미늄 상판을 가공하여 부품을 얹을 생각이다. 나무 틀은 다음과 같이 반제품으로 파는 것을 사용하려 한다. 미가데코라는 곳에서 판매하는 300 x 200mm짜리 반제품 수납함이 적당해 보인다. 재질은 소나무이고 두께는 12 mm로 알고 있다. 마감은 동봉된 사포로 문지르는 것까지만 할까? 너무 무성의하니 바니쉬라도 몇 번 칠할까? 그게 낫겠다.



일반적으로 알루미늄 상판은 나무틀보다 조금 작게 만들어서 턱이 지게 가공한 틀 위의 안쪽에 고정하는 방식을 취한다. 백문이 불여일견이니 실제 사례를 보자. 상판이 돌출되지 안아서 보기에 좋다.

출처: 소리전자 판매장터 게시판(링크)

하지만 나의 경우는 기성품 상자를 사용하는 데다가 나무의 두께가 두껍지 않아서 그런 멋을 부리기가 곤란하다. 따라서 나무틀의 외곽 치수와 같은 상판을 쓰려고 한다. 다음은 파워포인트로 대충 그린 스케치이다. 파워 소켓을 포함한 모든 부품을 상판에 고정하게 만들지, 혹은 일부 입출력 단자는 나무틀(옆면)에 고정할지를 놓고 한참을 고민하였다. 어제 출력 트랜스가 배송되어서 구멍 위칭에 대한 수치는 얻었지만 전원 트랜스는 대전 집에 있어서 아직 확인을 하지 못하였다.

주황색 자작나무 각재는 나무틀의 아랫쪽에 길이 방향으로 약간 내부에 고정하여 아랫판을 고정할 지지대로 사용할 것이다.

스피커 출력선을 연결할 단자는 가구 DIY용 평철을 구입하여 구멍을 넓힌 뒤 여기에 고정한 다음, 나무틀 뒷편에 붙일 생각이다. 가장 오래 고민한 것은 입력용 RCA 단자의 위치이다. 상판에 고정하면 배선이 간단해지지만 보기에 별로 좋지 않다. 아래 그림에서는 스피커 연결 단자와 같은 평철에 고정하는 아이디어를 소개한 것이다. 스테인리스 스틸이 아니라서 가공에는 별로 어려움이 없을 것이다. 적당한 알루미늄판을 잘라서 구멍을 내고 표면처리까지 할 수 있다면 얼마나 좋을까? 이번의 가공 의뢰 목표는 상판까지만이다.



2020년 2월 14일 금요일

콤마로 구분된 파일 목록을 만들기

De novo assembly를 통하여 얻은 여러 결과 파일(contig 또는 scaffold)을 한번에 비교하는 도구로서 QUAST(오, 러시아의 기술이여!)나 BBMap의 statswrapper.sh를 종종 사용한다. 소련, 즉 소비에트 연방은 요즘 더 이상 존재하는 국가는 아니지만 그 당시에 만들어진 기술이 아직도 우리집 오디오의 부속으로서 힘을 발휘하고 있다.

구 소련의 전자공학 기술로 만들어진 오디오 신호 증폭용 초단관 6N2P(6Н2П). 출처는 내 블로그. 진공관을 켜 놓고 있으면, 정말로 내가 '전자(electron)'를 부려먹고 있다는 것을 느낄 수 있다. 따라서 진공관보다는 전자관 혹은 열전자관이라고 부르는 것이 더 정확하다. 진공 자체는 중요한 조건이지만 실제 일을 하는 것은 전자니까 말이다. 진공관 표면에 찍힌 OTK라는 표식은 군용관임을 의미하는데, 이걸 볼 때마다 자꾸 한국생명공학연구원 전임 원장님이신 오태광 박사님이 떠오른다^^
매뉴얼에 의하면 QUAST는 'contig1.fa contig2.fa contig3.fa'와 같이 비교할 조립 결과물을 공백으로 구분하여 인수로 주어야 하고, statswrapper.sh는 'in=contig1.fa,contig2.fa,contig3.fa'처럼 콤마로 구분하여 공급해야 한다. 이것 때문에 작년에 생명정보학 교육을 하면서 입력 파일 목록을 만드는 짧은 스크립트를 만드는 수고를 해야만 했다. 그런데 아주 최근, 두 프로그램을 실행하면서 그냥 *.fa라고만 인수를 제공하니 멀쩡하게 잘 돌아가는 것이 아닌가. 리눅스에서 돌아가는 모든 명령어가 와일드카드를 받아먹을 수 있는 것은 아니라서 아예 시도를 해 볼 생각을 하지 않았다. 이것을 알고 난 뒤 얼마나 허탈하던지...

콤마로 구분된 파일 목록을 만들어서 인수로 제공해야 하는 다른 유틸리티도 많이 있다. 어떻게 하면 이를 좀 더 간편하게 할 수 있을까? ls -m이 바로 그런 기능을 수행한다. 하지만 콤마 뒤에 공백을 삽입하는 것이 문제이다. 이것은 없애면 된다(tr -d ' ' 이용). 그런데 여기까지만 하면 목록이 너무 길어서 한 줄을 넘어가는 경우 저절로 삽입된 줄바꿈이 드러난다. 이를 제거하기 위해 tr -d '\n'을 한번 더 실행하면 된다.

$ ls -m / | tr -d ' '
bin,boot,data,dev,etc,home,lib,lib64,lost+found,media,mnt,nas,opt,
proc,root,run,sbin,srv,sys,tmp,usr,var
$ ls -m / | tr -d ' ' | tr -d '\n'
bin,boot,data,dev,etc,home,lib,lib64,lost+found,media,mnt,nas,opt,proc,root,run,sbin,srv,sys,tmp,usr,var

대단히 간결하고도 아름답지 않은가? 실제 활용 사례를 하나 들어 보겠다. 나는 조금 전에 메타게놈 데이터를 strain 수준에서 분석하는 프로그램인 MIDAS를 실행하였다. 샘플은 13개였고, midas_sample1, midas_sample2...와 같이 개별적인 디렉토리에 결과가 수록되었다. 여기에서 만들어진 snps 분석 결과를 집계하기 위해 mergy_midas.py snps 명령을 실행하려고 한다. 전단계에서 생성한 13개의 MIDAS 결과 디렉토리를 콤마로 묶어서 인수로 제공해야 하니 다음과 같이 명령어을 내리면 된다.

앗차, 안 된다. 현 디렉토리에 여러 파일과 디렉토리가 섞인 경우 ls -m으로는 midas로 시작하는 디렉토리만을 묶을 수가 없다. ls -m midas_*는 원하는 결과가 나오지 않는다. 이렇게 하면 midas로 시작하는 디렉토리가 아니라 그 하위의 것들이 묶여서 나오는 결과를 빚는다. 내가 원하는 것은 이게 아니다.

다른 방법이 없을까? 구글을 뒤지니 'ls | grep midas | paste -s -d ',' -'가 원하는 결과를 만들어 주는 것 같았다. 좀 복잡하지만 다음의 명령이 잘 돌아가는 것을 확인하였다.

$ merge_midas.py snps outdir -i $(ls | grep midas | paste -s -d ',' -) -t list --site_depth 10

paste 명령에서 -s를 생략하면 목록이 한 줄에 출력되는 것이 아니라 저마다 new line을 달고 세로로 출력된다. paste 명령 맨 끝의 '-'는 없어도 별 상관은 없다. 오늘도 이렇게 하여 한 꺼풀의 무식함을 벗겨냈다.

2020년 2월 13일 목요일

출근길에 읽는 시집 - 칫솔 든 돈키호테

반갑고도 안타까운 시집 한 권을 선물로 받았다. 故 유석종 박사의 유작 시집 [칫솔 든 돈키호테]. 그가 2013년 문예지를 통하여 정식으로 등단한 시인이라는 것을 미처 알지 못했다. 이 시집은 그의 첫번째이자 마지막 시집이 되고 말았다.


오아시스가 아름다운 것은
곁을 지켜주는 야자수의 뿌리가
오아시스에 이어져 있어도
세상은 그 비밀을 모른다는 것 ('오아시스를 찾아서' 중에서)
기억을 더듬어 보니 그가 시인으로 등단했을 즈음부터 故 유석종 박사를 알게 된 셈이었다. 과제 기획이나 세미나 등의 인연으로 1년에 한 번 정도는 만났었다. 많은 시간을 함께 하지는 못했지만, 차분하고 맑은 정신을 가진 사람으로 기억한다. 할 일 많은 세상에 가족들만 남기고 먼저 떠나다니, 야속한 사람. 부디 편히 가시오.
얼굴에 묻은 꿈의 조각을 털어내며
중세의 기사가 성문을 열듯
화장실 문을 열고 거울 앞에 섰다
저기 나를 비웃는
그대의 송곳니를 처단하기 위해
장창을 들듯 칫솔을 들어 올리고
함락되지 않는 성을 향해 돌진이다
어제저녁 먹었던
어금니와 송곳니 사이
몇 시간째 버둥거리는 고기 한 점
창으로 찍어 세치 혀 위에 밀어냈다
오늘도 성은 함락되지 못하고
애꿎은 고기 한 점만
아등바등 세면대 위에서 태풍 같은
물줄기 속으로 사라진다
그리고 거울 저편
돈키호테의 옷을 벗고
도시의 빌딩 속으로 들어가는
그대의 뒷모습도
('칫솔 든 돈키호테' 전문)

2020년 2월 11일 화요일

2008년 강적 OB 공연 포스터

월요일에 둘째의 대학 정시 합격 소식을 들었고, 지난주 금요일 저녁에는 초등학교 6학년 때 동창들의 모임을 40년 만에 처음 참석하였었다(이렇게 써 놓고 보니 내 나이에 대한 강력한 증거가 드러나고 말았다). 1년 동안의 인연, 그리고 40년 동안의 단절.. 과연 이 1년 동안의 인연을 되살리는 일이 내 남은 인생에 얼마나 긍정적인 변화를 가져다 줄까? 아이의 대입과 관련된 스트레스와 동창회의 의미를 생각하면서 복잡한 감정이 뒤섞인 머릿속을 정리하고자 동창 모임 다음날, 아무런 준비 없이 차를 몰고 아내와 함께 무작정 춘천으로 향했다. 점심으로 막국수와 닭갈비를 먹고 의암호 스카이워크를 거닌 뒤 즉흥적으로 동해 바닷가로 가기로 했다. 낙산 해수욕장에서 끔찍하도록 거센 바닷바람을 맞고 휴대폰으로 설악산 초입에 있는 숙소를 구하여 1박을 하였다. 춘천 방문은 꼭 20년 만이었고, 아내는 40년도 훨씬 전에 들렀던 낙산사를 두번째로 방문하였다(나는 처음). 오랜 시간이 지났다는 느낌을 새삼스럽게 느끼면서 문득 과거의 기록을 찾고 싶어졌다. KAIST rock band "강적"의 졸업생 밴드 연주회의 기록을 더듬고 싶어졌다.

공연이 있었던 것은 2008년 늦가을이니 벌써 12년 전의 일이다. 학번 상으로 17-19년 차이가 나는 후배들과 모여서 급조한(?) 밴드의 이름은 "별안간밴드"였다. 강적 2기 멤버였던 나는 참가자 중에서 최고령이었다! 나는 1학년 때 키보드로 오디션을 보았지만 독학으로 피아노를 두드리는 정도로는 부족하였다. 지금은 한양대 교수로 있는 김 모 동문이 그 자리에 들어갔고, 나는 나중에 리드 기타 포지션에 들어가게 되었다. 멤버가 여러 사정으로 밴드를 탈퇴하는 것은 매우 흔한 일이었다. 지금으로 따지면 추가합격과 비슷한 꼴이었다.

다니는 직장이 모교와 바로 붙어있는 곳이라는 점은 나를 이 공연에 참석하게 만든 가장 큰 원인이었다. 구글을 뒤적거리다가 당시 공연 알림 게시글(2008 강적 OB 콘서트)이 있는 것을 발견하고 글이 없어질 것을 대비하여 포스터 파일을 다운로드하였다.



별안간밴드

2g 정해영/ 19b 이태호/ 19d 김지훈/ 20v 조수영/ 20k 김선영 / 21g 이경태

  1. 예감좋은날/ 럼블피쉬
  2. 도마뱀/ 시베리안허스키
  3. 바보같은미소/ 왁스

연주한 곡은 세 곡이다. 아들녀석이 6 mm 비디오로 녹화했던 동영상을 유투브에 올려 놓았는데 차마 부끄러워서 공개는 못하겠다. 나는 '예감좋은 날에'서는 건반을, 나머지 두 곡에서는 기타를 쳤었다. 구글 포토에 남아있던 공연 및 연습 사진을 공개하고 그 링크를 여기에 남긴다. 같이 연주를 한 후배들이 지금은 어떤 모습이 되었을지 궁금하다. 생각해 보니 내 블로그의 글 중에서 "강적"을 태그로 한 글은 이것이 최초이다. 그동안 내가 너무 무신경하지 않았었나 싶다.

강적 제7회 OB 공연 "별안간 밴드" 2008년 11월 1일





해매다 봄이 오면 신입생들 소개한다고 전화가 오고는 했었다. 이제는 내 큰아이도 대학을 졸업할 나이가 되었으니 나도 그만큼 나이를 많이 먹은 셈이고, "해영이 형~"을 찾는 강적 2학년 후배들의 전화는 더 이상 오지 않는다. 남는 것은 기록과 기억뿐이다.


2020년 2월 6일 목요일

스포츠 리터러시(sports literacy)

참고: 영어권에서는 복수가 아닌 단수를 써서 sport literacy라고 한다.
"과거 스포츠는 신체활동만 중시했다. 스포츠를 신체적으로 할 수 있다는 과거 개념을 넘어 스포츠를 알 수 있고, 느낄 수 있는 자질을 통틀어 스포츠 리터러시라고 정의한다. 스포츠 리터러시는 운동능, 운동지, 운동심으로 구성된다... 운동능은 기본적인 동작과 기술을 활용해 스스로 운동할 수 있는 재능과 자질이다. 운동지는 운동에 대한 지식을 이해하고 적용하는 인지적 능력과 지성적 자질이다. 운동심은 운동하는 사람이 가지는 다양한 심성적 태도나 마음의 자질을 의미한다." 
지난 2월 2일 스포츠경향에 실린 서울대 최의창 교수의 인터뷰 기사에서 발췌하였다. 기사 원문은 여기(서울대 최의창 교수 "영·유아  체육은 생애체육의 주춧돌...국가가 나서야")에 있다. 이 기사를 읽으니 체육 활동에 대해서는 평생 그늘로 남아 있었던 내 지난 인생이 더욱 아프게 다가왔다.

왜 나는 어려서 밖에 나가 땀흘려 뛰어노는 즐거움을 누리지 못하였을까? 인생을 살아오면서 왜 그런 선택을 했을까, 또는 다른 길을 갔더라면 더 나은 현재가 되지 않았을까하는 생각을 전혀 갖지 않을 수는 없다. 가령 남들처럼 학위를 마치고 외국으로 포스트닥 연수를 나가지 않은 일, 그리고 다소 경솔하게 택했던 첫 직장(삼개월이나 근무했었을까) 등. 물론 이런 선택을 한 것을 100% 후회하는 것은 아니며, 아직까지도 인생에서 그러한 선택을 한 것에 대한 긍정적인 의미를 찾기 위해 노력하고 있다. 그러나 그중에서도 가장 뼈아프게 후회가 되는 것은 바로 체육 활동에 전혀 관심을 갖지 않았다는 것이다. 지금 생각하면 이것은 전혀 옳은 선택이 아니었다.

어린 시절의 체육 수업 시간이란 그저 아이들에게 공 몇개를 나누어 주고 알아서 놀게 하는 것이었다. 운동 경기의 룰에 약하고 경쟁심이 부족했던 나는 어쩌다가 발야구 외야수라도 맡게 되면 그 시간이 정말 공포스러웠다. 내 앞에 떨어지는 공을 잡지 못했을 때의 비난이 너무나 두려웠기 때문이다. 잘 하는 아이 몇몇만이 돋보이는 체육시간은 나에겐 정글과 같은 곳이었다. 바로 얼마 전, 40년 만에 연락이 닿은 초등학교 동창생은 친구들과 축구하면서 운동장을 뛰어다닌 기억 밖에 없다고 하였지만, 나에게 운동장은 별로 기억하고 싶은 곳이 아니었다.

80년대가 되어 프로 스포츠가 시작되면서 체육이란 보는 스포츠, 엘리트 육성을 통해 국위선양을 위한 것, 또는 비즈니스라고만 여기는 부정적인 시각이 자리잡게 되었다. 형편없는 체력의 소유자로서 지금까지 살아오게 된 것이 바로 여기에 기인한다.

최의창 교수가 소개한 캐나다의 생애 체육 정책은 정말 놀라웠다. 스포츠를 모두가 해야 하는 기본적인 활동, 즉 인간이 갖추어야 할 기초 소양의 하나로 정의한 뒤 어릴 때부터 운동을 하면서 나이가 들수록 경쟁적으로 운동할 그룹과 즐기면서 할 그룹으로 나누게 된다. 그러다가 노년층이 되면 자연스럽게 즐기는 그룹으로 대부분 옮겨가게 된다는 것이다.



거창하게 운동 또는 체육이라고 하지 말고 '신체 활동'이라고 여기자. 신체 활동은 선택을 할 수 있는 일이 아니라 생존을 위해서 반드시 해야 하는, 다른 것으로 대체할 수 없는 일이라는 생각을 가져야 한다. 신문 기사 하나가 나의 지난 생애 전체를 반추하게 만들 줄은 꿈에도 몰랐다. 이제는 달라져야 한다. 그리고 지금 당장 바뀌지 않으면 소용이 없다.

최의창 교수가 2018년 출간한 책 [스포츠 리터러시]를 소개한 현직 체육 교사의 블로그를 소개한다(링크).

[2020년도 43 5극관 싱글앰프 리모델링] 2. 부품 구입 시작

5K:8 싱글 출력트랜스를 주문하였다. 제이앨범에서 공동으로 주문하는 형식을 따랐다. 아마도 일신전기에서 제작하는 것이 아닐까 한다.

출처: 제이앨범 밴드
제원은 66 Z코아, 양카바, 검정 도장, 1차전류가 150 mA 이고 2차 출력은 8 W까지 가능하다고 들었다. 43 오극관으로 만드는 앰프로서는 차고 넘친다. 양질의 부품을 구입해 놓으면 나중에 더 좋은, 혹은 더 높은 출력을 낼 수 있는 출력관으로 앰프를 만들 때 이용할 수 있다는 기대감을 갖게 된다. 그렇다면 이번에 개작을 추진하는 43 싱글 앰프는 한갓 거쳐가는 물건이란 말인가? 나는 43 앰프를 만들면서 여분의 진공관 1조를 마련해 놓았다. 진공관의 수명은 의외로 길어서, 초기 불량만 만나지 않으면 꽤 오랜 시간을 쓸 수 있다. 2014년 초에 장만한 PCL86 초삼결 앰프는 초기에 진공관 하나를 교체하고 나서 지금까지 잘 작동하고 있다. 교체용으로 필요할지도 모른다는 생각에 여분의 진공관을 10개 가까이 구입했다가 결국은 절반은 팔아버리곤 하는 미련한 짓을 반복할 수는 없는 노릇이다.

개작한 앰프에서 출력 트랜스포머를 다시 적출해서 쓴다는 것은 별 문제 없이 작동하는 상태의 앰프를 해체하겠다는 의미가 된다. 그런 가능성을 전부 감안하여 쉽게 해체가 가능한 - 다시 말해서 완성도가 떨어지는? - 작품을 만드는 것은 별로 바람직하지 않다.

이러저러한 가능성을 놓고 궁리를 하는 순간이 가장 즐겁다. 막상 제작에 들어가면 몸이 힘들다. 과정을 즐기는 것, 특히 뇌 이상의 도구를 쓸 필요가 없는 구상 과정이 가장 즐겁지 아니하던가?

이 글의 후반부에는 부품 구입과 관련한 정보를 추가하여 작성해 나갈 것이다.

국내 업체인 (주)벨톤연구소에서 진공관 소켓을 판매한다. 가격이 상당히 저렴하다. 43 오극관에 맞는 고전 6핀 소켓은 당연히 만들어지지 않지만...

2020년 2월 15일 업데이트

6LQ8 진공관 10개와 5K 싱글 출력트랜스가 도착하였다.




2020년 2월 5일 수요일

최초의 새벽 배송 이용

얼마 전 색소폰 마우스피스를 구입하면서 쿠팡의 로켓와우 멤버십을 가입하게 되었다. 매달 약간의 비용을 내면서 일부 품목에 대한 무료배송 혜택을 입을 수 있다는 조건에 대하여 한참을 고민하다가 멤버십 자격을 유지하기로 하고 바로 어제 첫 구매를 해 보았다. 출입이 제한된 오피스텔에서 어떻게 수령인의 잠을 깨우지 않고 새벽 배송이 이루어지는지 무척 궁금했었는데, 주문을 하는 과정에서 그 방법을 비로소 알 수 있었다.

"요즘 누가 마트에 가서 물건을 사요?"

남들이 편하게 자고 있을 시간에 신선식품을 문앞까지 가져다 준다니! 그 편리함의 이면에는 배송 노동자들의 고단함과, 포장재를 처리해야 하는 또 누군가의 한숨이 서려 있을 것이다. 아내의 증언에 의하면 엊그제는 쓰레기가 갑자기 너무 많이 나와서 처리가 어려우니 그날 하루는 쓰레기 배출을 하지 말아달라는 구내 방송을 들었다고 한다. 생활 쓰레기가 아니라 대부분 이렇게 배달받은 물건의 포장재임을 너무나 잘 알고 있다.

총각김치 2.5 kg을 배송하기 위해 커다란 종이 상자 하나와 아이스팩 두 개가 쓰였다. 이것은 고스란히 오피스텔 1층의 쓰레기 배출장소로 옮겨져서 산을 이룰 것이다. 내가 평소에 비판적으로 느껴왔던 일을 결국은 편리함에 굴복하여 실행에 옮겼다고 생각하니 마음이 씁쓸하였다.

기술은 편리함을 가져다 주지만 환경에도 큰 부담이 된다. 그리고 인공지능은 미래의 직업을 위협한다는 우려를 낳는 것도 사실이다. 그러나 이를 피할 수 있을까? 어제 경향신문에 실린 기사를 보자.

[녹아내리는 노동]자율차·드론 배달 연구에 내 세금이...나는 동의했는가 ④기술변화 거부할 수 없나

변화의 속도를 늦추거나 보다 인간적인 방향으로 바꿀 수 있다고 믿고 싶지만, 전문가들에 의하면 기술 발전에 따른 사회 변화는 결코 바뀔 수 없는 '상수'라고 한다. 기술은 분명히 사람들이 만들어내는 것인데, 그것 자체가 스스로 흘러가는 큰 흐름이 되어 우리의 생활과 생각까지 바꾸어야 한다는 것이 서글프다.

2020년 1월 31일 금요일

Jvarkit: Java utilities for Bioinformatics

오늘의 글은 jvarkit라는 자바 응용프로그램을 소개하기 위함이 아니다. javakit에 포함된 blastn2snp라는 것을 컴퓨터에서 컴파일하는데 겪었던 어려움과 그 해결 경험을 공유하기 위함이다.

Perl은 가끔 코딩을 하고, python은 기초 수준의 교육만 두어 차례 받은 상태라서 코딩을 직접 할 수준은 아니지만 수도 없이 많은 package와 application을 설치하여 사용하지만, Java에 대해서는 부끄럽게도 지식이 전무하다는 것이 나의 현 상태이다. JRE가 설치된 컴퓨터에서 겨우 Java 응용프로그램을 설치하여 쓰는 정도이다. 정확히 말하자면 설치라기보다는 압축을 푸는 정도의 일이다. 서로 다른 Java 환경을 관리하기 위해 alterenatives 명령어를 쓰는 것도 포함해서이다. JVM(Java Virtual Machine)까지 들어가면 머리가 아파진다. 난 자바 개발자가 아니고 그렇게 되고 싶지도 않다. 그런데 상황은 나를 그렇게 만들지 않는다.

"JDK란 무엇인가" 자바 개발 키트 소개와 설치하기

아주 드물게 Java 소스 코드로 배포되는 것을 사용하려면 골치가 아프다. 최근에 자바 응용프로그램으로서 첫 좌절을 안겨준 것은 Sanger Institute에서 개발하고 배포하는 Artemis의 최신버전이었다(소스코드는 GitHub에 있음). Windows에서는 아주 깔끔하게 잘 돌아간다. 그런데 Git의 최신 버전을 클로닝하여 쓰려고 하면 mvn(Apache Maven)이라는 것을 사용하여 빌드를 해야 되는데, 여기서부터 지식이 부족하여 애를 먹게 된다. 물론 과거에는 .jar 파일을 배포했으니 메이븐이든 뭐든 알 필요가 없었다.
아파치 메이븐(Maven)은 자바용 프로젝트 관리 도구이다. 아파치 앤트의 대안으로 만들어졌다.
뭔 말인지 이해가 잘 안되니 이미 컴파일이 되어 배포되는 artemis-unix-release-18.1.0.tar.gz를 가져다가 테스트해 보자. 실행은 되는데 염기서열 view에서 글꼴 폭이 맞지 않아 아주 보기가 싫다. 윈도우에서는 이렇지 않다. 이건 어떻게 해결해야 하는지 잘 모르겠다.

Fastq file(raw sequencing read)이 아니라 완성된 유전체 서열을 레퍼런스와 비교하여 SNV 관련 정보를 뽑을 일이 생겼다. Fake read를 만들어서 일반적인 variant analysis를 하거나, snippy를 돌리거나(이것도 fake read를 사용하는 점은 마찬가지), 아니면 유전체 서열 그대로 nucmer를 실행하여 SNV 정보를 뽑는 것은 익숙하다. 하지만 비교 대상인 두 유전체 서열(bacterial complete chromosome)이 머리부터 발끝까지 거의 그대로 정렬된다는 것을 알고 있는 상태라서 이런 간접적인 방법은 쓰고 싶지 않았다. BLAST를 실시하여 HSP의 위치를 잘 파악한 다음, 그 결과물에서 SNV 정보를 추출하는 방법이 적당하다고 생각하여 어떠한 도구를 쓰면 되는지 검색을 해 보았다. 개인적으로는 Phil Green의 cross_match를 가장 좋아하지만 alignment 출력물을 처리해주는 Perl 혹은 Python 라이브러리가 없다. 구글 검색을 해 보니 Jvarkit 패키지의 blastn2snp('print indel/mismatch in a blastn stream)가 아주 적당해 보였다. Jvarkit는 누가 만들었나? GitHub 주소에 보이는 'lindenb'이라는 문자열이 왠지 낯설지 않다. 아! BioStar 커뮤니티에서 가장 크게 기여한 Pierre Lindenbaum이었다(구글 스칼라). 내가 2016년에 작성한 글(링크)에서 Pierre Lindenbaum을 잠시 언급한 일이 있다. BLAST 결과물을 XML로 출력하여 blastn2snp에 제공하면 된다. 설치 방법을 알아보자.

$ git clone "https://github.com/lindenb/jvarkit.git"
$ cd jvarkit
$ ./gradlew blastn2snp

gradlew? 이건 또 뭔가? 그레이들(gradle)이라는 프로그램을 돌리는 wrapper 같은데..
Gradle은 Groovy를 이용한 빌드 자동화 시스템이다.
어이쿠, 내가 이것까지 알아야 하나?
gradle이라는 것을 알았을 때 일단 한숨이 나왔다. 이제 겨우 maven에 적응되었는데 또 다른 툴이라니 오 마이 갓! 그런데 권남님의 블로그에서 [maven을 넘어 gradle로 가자]라는 글을 읽고 공감되었다. 출처: 와이케이의 마구잡이 
사실 명령행에서 복사하여 붙여넣기만 할 줄 알면 자바 소스를 컴파일하는데 별 어려움은 없다. maven이든 gradle이든 개발자가 아니라 단순한 사용자 입장에서는 그 깊숙한 얼개를 알 필요는 없는 것이다. 그런데... 문제는 gradlew 실행 시 파일 다운로드가 안된다는 것이다. 파견 근무지에서 1년 가까이 내 속을 썩이던 SSL/HTTPS/인증서 문제가 고스란히 남아있었다. 그래도 솟아날 구멍이 이제는 있으니 바로 아마존 웹 서비스 EC2이다. 시험 삼아 돌리고 있는 인스턴스에서 설치를 하니 아무런 문제가 없다. Lindenbaum이 만든 수많은 자바 응용프로그램을 이제 순조롭게 빌드하여 쓸 수 있게 되었다.

blastn2snp의 사용법은 다음과 같다.

$  java -jar dist/blastn2snp.jar < blast.xml | column -t

생소한 명령어가 또 하나 등장하였다. column? 'man column'을 쳐서 매뉴얼을 읽어봐도 샘플이 없으니 잘 이해가 가질 않는다. Linux column command tutorial for beginners (with examples)라는 글이 도움이 되었다.

여담이지만 무인도에 가지고 가고 싶은 소프트웨어 10개를 꼽으라면 나는 cross_match와 artemis 두 개를 최우선적으로 선택할 것이다.

Phil Green은 1997년 Genome Research에 이런 글을 기고했었다(링크).

Against a Whole-Genome Shotgun


Long read sequencing technology를 이용하여 플라스미드 라이브러리 제작 과정 없이 인간 유전체를 금방 읽어버리는 2020년, Phil Green이 이 글을 읽으면 어떤 생각이 들까? 아주 죄송스런 말이지만 요즘 쓰는 저속한 말로 평가하자면 '꼰대의 뻘글' 정도 취급을 당할지도 모르겠다. 웃자고 쓰는 말이니 이 글을 읽으시는 분은 불쾌하게 생각하지 마시길... 하지만 NGS 시대에도 Phil Green의 유산은 당당하게 남아있다. 지금도 쓰이는 Phred score라는 용어는 1시대 시퀀싱 시대의 basecaller인 phred라는 프로그램에서 온 것이고, phred를 만든 사람이 바로 Phil Green이니까. Phred는 Phil Green's (혹은 Phil's) read editor에서 온 것이다. 지금은 구글을 뒤지면 Phred가 무엇을 의미하는지를 묻고 답한 글이 쉽게 보이지만, 나는 이 정보를 Consed의 개발자 David Gordon에게 직접 이메일로 물어서 알아낸 것이다. Consed와 David Gordon은 내 블로그에 몇 차례 소개되었다. 이러다가 온라인에 '유전체 탑골공원'이라도 만들어서 이 분야의 원로들을 소개하는 것 아닌지 모르겠다.

2020년 1월 30일 목요일

[2020년도 43 5극관 싱글앰프 리모델링] 1. 기본 계획 수립 및 자료 정리

43 5극관이라고 적어 놓으니 이상하게 보일지도 모르겠다. 12AX7과 같이 진공관 형번이 제대로 자리잡기 이전에 개발된 것들은 41, 42, 43처럼 단순한 숫자로만 된 이름을 갖고 있었다. 43은 오디오 앰프에서 출력용으로 사용된 오래된 5극관(pentode)으로 주로 라디오 수신기에 쓰인 것으로 알고 있다. 43 극관이라고 쓰면 더욱 명확할 터인데, 국어에서는 아라비아 숫자를 직접 붙여서 한 단어로 쓰는 일이 워낙 많아서 대세를 따랐다.

2018년에 호기심을 채우기 위해 오래된 43을 구입하여 직접 싱글앰프 회로를 구성하여 듣다가 - 엄밀히 말하자면 인터넷에 떠도는 회로를 짜깁기한 것에 불과하지만(예를 들어 https://www.radiomuseum.org/tubes/tube_43.html에 기본 회로가 나온다) - 2020년 전면적인 개보수를 실시하기로 결심하였다. 개보수의 목표는 제대로 '섀시'를 만들자는 것이다. 그런데 창틀(흔히 삿슈라고도 부르는)과 차대(섀시)는 영단어 철자가 다르다는 것을 매우 최근에 알았다. 전자는 sash, 후자는 chassis. 두 단어 모두 불어에서 온 것인데, 정작 불어의 chassis는 창틀과 자동차 차대를 전부 포함한다나? 원, 이럴 수가!(나무위키) 간혹 앰프 케이스라는 말을 쓰기도 하는데, 이는 옳지 않다. 악기 케이스, 시계 케이스를 생각해 보자. 케이스란 것은 어떤 물건을 보관하거나 이동하기 위해 담는 통이다. 케이스에 넣은 상태로 쓰는 것이 아니라는 뜻이다. 앰프 인클로저(enclosure)가 더 합당한 듯.

섀시라고 하면 금속이 재질로 쓰인다는 느낌이 강하게 든다. 나만 그런가? 만약 나무판이나 플라스틱으로 앰프의 통을 만들면 이것도 섀시가 맞는가?

그런데 구글에서 sash를 검색하면 생각하지 못한 물건이 나온다(영문 위키피디아). 아, 나도 모르겠다.

앰프 리모델링의 본론으로 들어가겠다. 단지 '통'을 만들어 넣겠다는 것이 전부가 아니다. 전원부의 대대적인 교체가 있을 것이며, 이에 대해서는 기본적인 실험을 완료한 상태이다(이전 글 링크). SMPS + DC-DC booster의 기본 조합을 전원트랜스를 사용하는 전통적인 전원회로 + 리플 제거 기판으로 바꾸는 것이 골자이다. DC-DC booster가 망가지기도 했고, 부품통에서 자리만 차지하던 전원 트랜스포머 두 개를 사용해 버리려는 의도도 있었다. 이렇게 함으로써 이전 세팅에 비하여 조금 더 높은 B+전압 제공이 가능하다. 다음 그림은 지금까지 사용해 왔던 6N2P + 43 싱글 앰프의 회로도이다. 펜과 파워포인트로 직접 그린 소박하고 단순하기 짝이 없는 회로도이다. 이번 개보수에서는 전원부를 제외하면 바뀔 곳이 없다. 예전 제작기는 내 블로그에 '43번 오극관(43 power pentode) 싱글 앰프 프로젝트'라는 제목으로 1번(2018.9.26.)부터 18번(2019.1.8.)까지 이어진다. 물론 이 제목을 철저하게 지키지 않은 것도 있을 것이다. 작년, 그러니까 2019년에는 6LQ8 푸시풀 앰프를 만들면서 즐거운 시간을 보냈었다.

출처: 내 블로그(링크)

앰프 '통'은 나무판으로 만든 상자 위에 알루미늄판을 가공하여 부품을 얹는 것을 목표로 한다. 두께 10 mm의 나무판을 재료로 한 상자 반제품(옥션 미가데코 링크)이 있어서 이를 구입하여 조립한 뒤 적당히 마감을 하면 될 것이다. 알루미늄 상판은 도면을 그려서 가공을 의뢰하는 것(네이버 카페 사운드머신)과 직접 구멍을 뚫는 것 사이에서 고민을 하고 있다. 홀쏘를 이용하여 케익 틀에 직경 31 mm의 구멍을 세 개 뚫어본 경험으로는 이것이 얼마나 위험하고 어려운 일인지를 잘 안다!

드라이브단은 6N2P 하나를 쓴 대단히 단순한 회로를 페놀 만능기판 위에 꾸며서 사용하고 있다. 꼭 1년 전에 실험을 거쳐서 43 앰프의 드라이드단으로 채용하였었다.





이 기판에서 RCA 단자만 제거하여 그대로 사용할까? 그러려면 자리를 많이 차지한다. 아니면 9핀 소켓을 새로 구입하여 알루미늄판에 고정한 다음 직접 point-to-point 배선을 할까?

어제(2020년 1월 19일) 그린 드라이브단 배선도. 진공관을 아래쪽에서 바라본 모습을 기준으로 그렸다. 오류가 없기를!

마지막으로 가장 중요한 변화는 출력 트랜스이다. 지금까지 써 온 것은 전원트랜스를 개조한 것이었다. DHT 사운드에서 Z코어(57 규격)를 사용한 5k 싱글 트랜스(링크)를 주문할 생각이다. 67코어는 너무 크고, 62코어는 제품 리스트에 없다. 나중에 다른 싱글 앰프를 만들때 사용할지도 모르니 조금 더 큰 코어로... 하는 욕심은 버리자. 만약 그럴 일이 생긴다면 내가 직접 만든 R코어 출력트랜스(힘겨운 제작 과정은 여기에)를 쓰고 말겠다.

배선도 수정판. 그라운드선을 처리하는 것이 매우 어렵다. 잘못 연결하여 루프를 생성하면 잡음의 원인이 되기 때문이다. 가장 보편적인 것은 두꺼운 동선으로 그라운드 버스를 만든 뒤 여기에 회로도의 순서대로 접속을 하는 것, 또는 한 점에 모으는 스타 그라운드 방법이 있다. 전원부와 신호부, 그리고 섀시를 함부로 접속해서도 좋지 않다.
그라운드 결선법에 대한 자료를 모아 보았다.

2020년 1월 27일 월요일

2020년의 오디오 DIY 첫 실험 - 6N2P + 43 싱글 앰프의 전원부 개선

엄밀히 말하자먄 개선이 아니고 고장 수리에 가깝다. 작년에 다른 실험을 하다가 DC-DC 스텝업 컨버터를 망가뜨린 이후 대전 집에 그냥 팽개쳐 둔 상태인 것을 수리한 것에 지나지 않는다. 예전 모습 그대로 되돌린 것은 아니니 개선이라 볼 수도 있겠다.

원래 이 앰프의 B+전원은 직류12V(주변에 흔한 SMPS 어댑터)에 DC-DC 스텝업 컨버터를 연결한 것이었다. 43 오극관은 트랜스포머가 없는 라디오 수신기 등에 쓰이던 것이라 +150~160V 정도만 공급하면 된다. 물론 최대 출력은 2와트 정도로 낮은 편이다. 여기에 사용했던 스텝업 컨버터를 작년에 만든 푸시풀 앰프에 시험삼아 연결하여 출력전압을 조금씩 올리다가 완전히 망가뜨리고 만 것이다.

이 컨버터가 그렇게 마음에 들지는 않았었다. 매우 작고 경량이지만 약간의 험도 들리는 문제가 있었다. 완제품 보드로 파는 리플 필터를 달아서 테스트를 하기 전에 망가졌으니...

좀 다른 방식을 택하면 안될까? 작년 6월에 미리 세워 둔 구상(링크)을 이제 실천에 옮기기로 하였다. 용량이 다소 부족하여 울림이 있던 전원 트랜스, 그리고 실수로 구입한 단권 트랜스를 직렬로 연결하면 115V를 얻을 수 있다. 이를 일반적인 회로로 정류한 다음 리플 필터를 달아 보는 것이다.

생애 최초로 주문제작한 40W급 전원트랜스(원래 글 링크)

두 트랜스를 직렬로 연결하자.

실험은 결코 순탄하지 않았다. 입력 단자쪽 납땜이 덜렁거리다가 떨어진 것을 모르고 6N2P 드라이브단에 고장이 난 줄로만 생각했기 때문이다. 저항, 메탈 캐패시터, 그리고 진공관으로만 구성된 단순한 회로에 무슨 고장이 나겠는가. 중도에 포기하고 다 정리하여 넣어버렸다가 아쉬운 마음에 재도전하여 원인을 찾았다. 그리고 전원트랜스포머를 두 개 연결하는 실험도 성공적으로 마쳤다. 작년에 테스트를 해 본 일이 있지만 험이 너무 심해서 쓰기 힘들었었다. 그러나 리플 필터가 들어가면서 이 문제도 완벽히 해결되었다. 오늘의 교훈: 함부로 포기하지 말자!

2020년 설 연휴의 실험. 43 오극관의 히터용 DC 24V에 감압용 컨버터를 달아서 6.3V를 만들었다. 이것은 작년까지 사용하던 구성이다. 그런데 생각해보니 이번에 사용하기로 결정한 전원트랜스에 히터용 2차(AC 6.3V)가 있지 않은가. 부품을 하나 더 줄일 수 있다.

주워온 와인 상자를 이번에 활용해 보려 한다.

단권 트랜스는 1차 440-380-0V, 2차 220-110-0V 구성이라서 첫번째 트랜스의 2차(230V)를 어디에 연결하느냐에 따라 다른 전압을 얻을 수 있다(50% 혹은 57.9%). 나중에 진공관의 플레이트 전압을 실제로 측정해 본 뒤 전원트랜스의 어떤 탭 조합을 사용할지를 결정하겠다.

수리 작업을 끝내고 아내와 오후 내내 튜너를 연결하여 음악을 들었다. 전원 트랜스를 개조하여 만든 싱글 출력 트랜스는 그냥 그러려니 하고 들으면(라디오니까!) 그런대로 음질이 괜찮다.

나만의 섀시를 만드는 문제, 그리고 출력 트랜스를 개선하는 문제가 올해의 주요 과제이다. 출력 트랜스는 기성품 싱글 트랜스를 쓸지, 혹은 R코어를 마지막으로 생각하고(겨우 두번째인데!) 감을지 아직 결정하지 않았다.

2020년 1월 22일 수요일

오디오 자작 궁리 - 진공관 앰프용 출력 트랜스(OPT)를 한번 더 감아보자

오늘 인용하는 대부분의 자료는 제이앨범에서 가져온 것임을 미리 밝힌다.

앰프 자작에 들어가는 주요 부품 중에서 직접 만들 수 있는 것은 트랜스포머가 유일하다. 이것은 증폭의 핵심 소자인 진공관보다 더 비싸다. 기성품을 사든, 직접 수고스럽게 만들든. 2018년에는 J-50 코어를 사용했었고, 올해에는 이보다 약간 작은 KD33 코어를 사용할 계획이다.

출처: http://jalbum.com/ADM01/141

수동 권선기를 사용할 때 R 코어는 EI 코어에 비하여 감기가 수월하다. 그러나 원통 모양의 보빈을 직접 만들어야 한다는 것이 번거롭다. 직경 19 mm인 R 코어가 들어갈 수 있는, 그러나 지나치게 두껍지 않은 플라스틱 파이프를 잘라서 쓰면 금상첨화인데 주변에서 찾기가 어렵다. 두꺼운 종이(절연지 혹은 명함 등)를 잘라 둥글게 말아서 보빈을 만들어도 된다.

출처: http://jalbum.com/board_Wiyi60/62848

원통의 양 끝에는 감은 에나멜선이 풀려 나오지 않도록 바퀴 같은 것을 만들어 달아야 한다. 상세한 공작 요령은 여기에 잘 설명되어 있다. 제대로 설계한 보빈의 외형 치수는 다음과 같다.

출처: http://jalbum.co.kr/ADM01/1010

7.5K:8짜리 OPT를 만들려면 1차 1350T(AWG#30:0.25mm), 2차 44T(AWG#24:0.507mm를 두 겹으로 감음, 이를 bifilar winding이라 부른다), UL 40% (540T)로 감으면 된다. 나는 5K:8을 만들 생각이니 권선비는 25:1로 맞추면 된다. 그러면 1차 1350회, 2차 54회가 된다.

다음 사진은 내가 2018년에 만든 수동 권선기이다. 이번까지만 트랜스를 감은 다음 권선기는 해체할 생각이다. 실제로 사용하기에 매우 불편한 이 물건은 트랜스 감기의 경험용으로는 제몫을 다했다고 생각한다. 만약 세번째의 트랜스 감기를 하게 된다면, 그때에는 제대로 만들어진 수동 권선기를 구입하여 쓰는 것이 현명할 것이다.


이 물건을 사용한 기록은 여기를 참조하라.
하나의 트랜스포머를 만들려면 보빈 두 개에 동선을 감아야 한다. 한 조의 코일을 결선하는 요령은 여기를 참조한다.

유튜브에서 찾은 트랜스포머 코일을 감는 동영상을 보면 시작과 끝을 어떻게 처리하는지에 대한 아이디어를 얻을 수 있다.



시간이 걸리더라도 제대로 준비하여 세상에 하나밖에 없는 출력트랜스를 만들어 보자. 1차용 에나멜선, 절연테이프, 그리고 보빈을 만들 재료를 찾아보자.

논문 저자의 책임은 어디까지인가

황우석 및 조국 '사태'를 겪으면서 연구진실성에 대한 일반 대중의 이해 수준이 과거와는 비교할 수 없을 수준으로 올라갔다. 정당하지 못한 방법으로 만든 논문을 이용하여 실익을 취하는 일은 앞으로 점점 더 어려워질 것이다. 여기서 말하는 실익이라 함은 연구자로서 이름을 알리거나, 승진·채용 혹은 연구비 신청에서 업적으로 활용하는 것 또는 상급학교 진학을 위한 자료로 쓰이는 것을 말한다. 위조 또는 변조한 데이터를 이용하여 만든 연구 논문은 제3자가 이를 적발하거나 권위를 갖춘 기관에 의해 재현을 거쳐 위·변조가 있었음을 검증하는 것도 가능한, 비교적 이해하기 쉬운 연구 부정 행위이다. 종종 BRIC 사이트에서는 '매의 눈'을 가진 네티즌들이 논란이 되는 논문으로부터 날카롭게 위·변조된 그림을 찾아내고는 한다.

올바른 저자 표기를 판별하는 것은 그보다 조금 더 어렵다. 쉽게 말해서 정당하게 제 몫의 일을 하지 않고 논문에 저자로 무임승차를 한 것을 가려내는 일 말이다. 논문 자체를 과학적으로 조사하는 것만으로는 이를 알기가 대단히 어렵다. 물론 정황만으로 의심을 하기는 쉽다. '어라? 고등학생이 논문의 제1저자네? 소문에 의하면 교신저자가 아버지라며? 뭔가 수상하다!' 그러나 이를 입증하는 것은 매우 까다롭다. 각 저자의 연구 노트를 점검하여 실제로 어떤 일을 했는지 소상히 파악하거나, 연구 혹은 논문 작성 당시의 상황을 깊숙하게 아는 사람이 아니라면 문제를 제기하는 것도 쉽지 않고, 그에 따라서 잘잘못을 가려내는 것 역시 어렵다.

일고여덟명의 저자가 참여한 논문이 만들어지는 과정을 생각해 보자. 모든 저자가 수시로 한데 모여서 얼굴을 익히고, 연구와 논문 작성을 점검하며, 각 저자가 어떤 부분을 기여했는지를 만장일치로 확인하는 그런 절차를 거치는 것도 아니다. 한번도 직접 만난 일도 없는 사람들이 태평양을 사이에 두고 이메일을 주고받으면서 한 편의 논문을 만드는 일도 비일비재하다. 저자 그룹에 포함되는 순서라든가 업적 관리에서 가장 중요한 주저자(보통 제1저자와 교신저자)는 최종 투고본이 만들어지기 전까지 서로간에 자연스럽게 합의가 이루어진다. 이 과정에서 종종 정치적인 고려가 이루어지기도 한다. 너무 많은 공동 제1저자와 공동 교신저자가 남발되는 일도 적지 않으며, 이러한 현실은 썩 바람직하지는 않다. 그러나 대부분 그 합의는 암묵적인 것이지 합의서 양식을 돌려서 사인을 받거나 하지는 않는다.

어쩌다가 미성년 저자가 포함된 논문에 연루되어 곤욕을 치르고 있다. 나는 중간쯤에 위치한 정당한 공저자로서 연구 과정에 직접 참여하였고(그 누구의 손을 거치지 않고 내 손으로 시퀀싱 데이터를 분석하고 그림과 표를 만들었으며 논문의 본문을 작성함) 당시에는 미성년 저자가 있다는 사실을 알지 못하였다. 그런데 이제와서 내가 이 논문에 대해서 어떤 기여를 했는지를 소상히 적어내야만 했다. 그것도 한번이 아니라 족히 세 번은 소명 자료를 냈던 것 같다.

이 논문은 미성년 저자가 포함되어 있다고 하여 수준이 낮은 논문도 아니다. 미성년 저자와 특수 관계에 있는 저자(두 명의 교신저자 중 하나임)는 다른 기관 소속이다. 그런데 그 소속기관에서는 문제를 삼지 않기로 했음에도 불구하고 미성년자가 저자로 포함되는 과정에 아무런 영향을 미치지 않은(막지 못한?) 단순 공저자인 나는 정부연구기관 소속이라는 이유로 몇 차례에 걸쳐 소명 자료를 내야만 했다. 흠, 그것을 사전에 알고 막았어야 하는 것인가? 그 미성년 저자가 정말 연구에 참여를 했고 저자로서 합당한 위치에 있었음을 입증할 책임은 교신저자, 특히 특수 관계에 있는 교신저자라 생각한다. 그런데 지난번 조사에서는 내가 그 미성년 저자와 특수관계라는 것이다. 그 교신저자와 내가 아는 사이라서 그렇다는 것이다. 나는 그 미성년자가 누군지도 모르는데?

내가 생각하는 조사 시나리오는 이러하다. 조국 사태를 통해서 미성년 저자가 포함된 논문이 대학 입시에 부정하게 쓰일 수 있다는 것이 국가적 이슈로 부각되어 더 이상 덮어둘 수 없는 상태에 이르렀으니 각 부처에서는 이를 전수 조사하게 되었을 것이다. 조사 후 조치를 취했다는 보고를 남기는 것이 가장 중요하니까. 논문은 하나인데 책임을 질만한 저자가 대학 소속이면 교육부에서, 정부출연연구소 소속이라면 과학기술부(일반인에게는 생소한 NST라고도 불리는 국가과학기술연구회로 토스했을 것임)를 통해서 따로 조사를 하게 만들었을 것이다. 슬프게도 두 상급기관이 하나의 논문을 다루는 심각함이 다르다! 동일한 논문에 대해서 미성년 저자 포함에 가장 큰 책임이 있는 저자(대학 소속)는 교육부를 통해서 더 이상 문제를 삼지 않기로 한 반면, 단순 공저자인 나는 NST를 통해서 몇 번에 걸쳐 집요한 조사를 받는 것이다. 아, 정말 조사하시느라 대단히 수고가 많으십니다...

[연합뉴스] 수상한 미성년 저자 논문 22건...과기부 정밀검증 2019년 12월 9일 기사. 교육부는 뭐 하시나요?

나의 책임은 도대체 무엇일까? 논문의 최종 원고가 투고될때 모든 저자의 이름과 소속 기관을 꼼꼼히 훑어보고 왜 이런 사람이 석연치 않게 저자로 포함되어 있느냐고 따졌어야 하는가? 아니, 내가 넘겨받은 raw data가 진실한 것인지 혹은 아닌지를 따져야 하나? 불행하게도 모든 저자가 논문의 투고용 최종본을 점검할 기회를 가지는 것도 아니다. 내가 담당한 부분의 본문과 그림 혹은 표를 보내고, 투고 이후에 비로소 저널 웹사이트로부터 제출본을 다운로드하여 전체 원고를 보게 되는 일도 허다하다. 많은 저자가 참여하여 분업화가 이루어는 요즘 추세로는 이상한 일도 아니다. 공저자는 대개 자기가 작성한 부분과 이름, 소속, 그리고 연구비 사사가 제대로 표기되었는지 점검하기에 바쁘다. 내가 주저자가 아니라면 다른 저자에까지 신경을 쓸 겨를이 없는 것이다.

저널에 따라서는 다르겠지만, 투고 시점에 교신저자에게 '모든 저자는 최종 투고되는 원고의 내용에 동의하였음'을 확인을 받기도 한다. 넓게 본다면 저자 포함 여부, 순서 및 역할도 동의의 대상이 된다. 그러나 이러한 확인 절차는 보통 교신 저자 선에서 마우스 클릭으로 처리되고는 한다. 참여한, 아니 참여할 연구자의 서명을 개별적으로 받아서 제출하는 것은 정부 지원 연구 과제에 신청서를 낼 때 정도이다. 만약 다음에 공동 작업을 통해서 논문을 같이 쓰게 되면 문제가 불거지기 전에 미리 따져봐야 되겠다.

연구 논문의 Acknowledgment에 보통 표기하는 '과제 사사' 역시 연구 부정 행위의 잣대로 조사하면 웃지 못할 일이 많이 벌어질 것이다...

2020년 1월 21일 화요일

PuTTY가 잘 끊어지는 현상 해결하기 - Seconds between keepalives를 조정하라

Amazon EC2 인스턴스를 생성하여 이것저것 테스트를 하느라 즐거운 1월을 보내고 있다. AWSome Day 온라인 컨퍼런스에도 참석하고, 입문서(권영환 저 아마존 웹 서비스 AWS Discovery Book 예스24)도 한 권 구입하여 읽으면서 기초적인 사항을 습득해 나가고 있다. 나와 같이 리눅스를 오래 써 온 사람도 기본적인 개념을 잡는데 약간의 진입 장벽이 있었다. 일단 회사 법인카드를 통해서 요금을 처리하도록 만들어 놓으니 과금에 대한 부담을 느끼지 않고 업무에 적용할 수 있어서 좋다.

지난주에는 몇 번의 시행착오를 거쳐서 r5.4xlarge(memory optimized, 16 vCPUs/128 GiB memory) 타입의 인스턴스를 생성하여 sequencing data 분석용 프로그램을 설치하였다. 금주의 목표는 EC2 인스턴스에 SSH로 접속할 수 있는 새 사용자를 추가하는 것이다. ssh-keygen으로 새로운 키 페어를 만들고 처리하는 일이 핵심이다.

PuTTY를 사용하여 접속이 되게 만든 다음 잠깐 한눈을 팔고 돌아오니 "Server unexpectedly closed network connection" 메시지(PuTTY Fatal Error)와 함께 접속이 끊어진 것이 아닌가. 대부분의 리모트 서버 접속 작업에는 xshell을 사용하고 있는데, 이때에는 별 문제를 느끼지 못했다. PuTTY를 사용할 때 종종 이런 일이 벌어졌음을 기억한다.

구글에 물어보자.

[Putty] 사용 중 연결이 끊기는 현상 해결 방법

출처: https://webinformation.tistory.com/81

PuTTY Configuration -> Connection -> Seconds between keepalives (0 to turn off)를 기본값이 0으로 두지 말고 적절히 올리면 된다고 한다. 이 지침은 Amazon EC2 리눅스 인스턴스 사용 설명서 중 PuTTY를 사용하여 Windows에서 Linux 인스턴스에 연결에도 수록되어 있다.

간단하지만 대단히 중요한 기법을 오늘 알게 되었다. 너무 늦게 알게 된 것이 부끄럽기만 하다.


2020년 1월 15일 수요일

2019년의 오디오 DIY 계획

작년에 만든 6LQ8 PP 앰프가 워낙 잘 작동하고 있어서 완전히 새로운 앰프를 만들 욕심은 별로 없다.


전원 보드가 망가진 상태로 대전 집에 방치된 43 오극관 싱글 앰프를 수선하는 것이 가장 현실적인 목표라 할 수 있다. 인터넷을 뒤져보면 직류 고전압을 얻을 수 있는 컨버터가 예전보다는 조금 더 늘어났다. 아래 사진에서 A는 상용 교류전원을 넣어서 직류 250V를 출력하는 것이고(eBay), B와 C는 DC-DC 컨버터로서 출력 전압을 조정할 수 있다(AliExpress).


완제품 전원장치를 해외에서 구매할 수도 있고, 2018년에 자작한 SMPS를 써도 된다. 43 싱글 앰프는 직류 155V 정도가 필요하므로 고주파 트랜스포머의 2차에 연결된 배전압 정류장치를 브리지 정류장치로 바꾸면 얼추 해결될 것으로 믿는다.


설 명절이 지나야 추진을 할 수 있을 것이다. 그때쯤이면 딸아이의 대학입시도 결판이 난 상태가 되었을 것이고.

2020년 1월 13일 월요일

Windows 10으로 업그레이드하기

Windows 7이 2009년 출시된 이후 10년 동안의 제품 지원 기간을 거쳐 드디어 내일이면 종료가 된다.

[관련 글] 2020년 1월 14일에 Windows 7 지원 종료

집에서 쓰는 컴퓨터와 업무용 노트북에서는 이미 Windows 10을 써 왔지만 사무실 PC에서는 업그레이드를 계속해서 미루고 있었다. 제조사의 지원이 종료되는 마당에 더 이상 예전 버전의 운영체제를 고집할 수는 없어서 업데이트를 추진하였다. 전산실 관리자에게 부탁하여 설치파일 경로를 입수하여 다운로드를 하고, WinCDEmu를 통하여 가상 드라이브를 만든 다음 setup 프로그램을 실행하였다. 문서 파일은 전부 네트워크 드라이브에 있고, 사용자 영역을 그대로 두는 방식으로 업그레이드를 진행하였기에 설치 후 손을 볼 곳이 없었다.

업그레이드를 차일피일 미뤘던 것은 복잡한 보안 프로그램, VPN 프로그램 들이 꼬여서 설치 후 컴퓨터가 제대로 돌아가지 않을까 걱정을 했던 때문이었다. 내가 사용하는 컴퓨터는 원 소속 기관에서 공식적으로 반출을 해서 가져온 것이라서 오피스나 윈도우는 전부 그쪽의 라이센스 관리를 받고(인증을 받으려면 VPN으로 연결해야 함), 지금 일하는 파견 기관에서는 또 이쪽 사정에 따라서 DRM 소프트웨를 설치한 상태이다.

그런데 의외로 업그레이드 과정은 순탄하였다. 이전 상태의 환경이 그대로 보존이 되었던 것이다. 미련하게도 괜한 걱정을 하면서 업그레이드를 너무 오랫동안 미루어 온 셈이다.

아직 혼동스러운 것은 윈도우 계정의 개념이다. 윈도우 10이 설치된 컴퓨터 여러대를 한꺼번에 통제한다는 것이 익숙하지 않다. 그리고 노트북에 설치되었던 오피스 365가 업무용 PC에서도 보이게 되면서 원래 깔렸던 오피스(2013 버전)와 약간의 불편함이 생긴 것 같다. 정 문제가 된다면 PC의 오피스를 일단 삭제한 다음 원 소속기관에서 오피스 설치파일을 받아서 깐 다음 인증과정을 다시 거치면 된다. 오피스 365 구독시 사용한 이메일과 윈도우 계정에서 사용한 이메일이 같아야 하던가? 현재로는 같지 않다. 공부가 아직 많이 부족하다.

오피스 365를 사용할 수 있는 자격이 있는 동안은 그 기능을 충분히 활용하는 것이 좋을 것이다. 예를 들어 총 다섯 대의 기기에 설치할 수 있다거나, 원드라이브를 사용한다거나. 원드라이브를 쓰려면 윈도우 계정을 이용한다. 아이구 헷갈려라... 패스트푸드점의 자동주문기 앞에 선 시골뜨기 같은 기분이다.

2020년 1월 10일 금요일

리눅스에서 여러 개의 이미지 파일을 하나로 합치기

2020년에 접어든 이후 겨우 5일에 한번 정도의 글을 쓰고 있다. 매우 바쁘거나, 또는 마음에 여유가 없다는 뜻이 되겠다. 업무와 집안일에 파묻혀서 이렇게 건조한 나날을 보내서는 안되겠다.

수십 개의 시퀀싱 라이브러리에 대한 QC 관련 이미지 파일을 하나로 병합하고 싶다. 어떻게 하면 좋을까? 정답은 바로 ImageMagick이 갖고 있었다. 파워포인트에서 이미지 파일들을 늘어놓고 간격을 맞춘 다음 이를 묶어서 export하는 대단히 미련하고도 끔찍한 방법은 이제 버리도록 하자. ImageMagick의 강력한 기능을 이제 알게 되다니 그동안 겪은 어리석은 경험이 너무나 안타깝다.

$ convert +append image1.png image2.png out.png # 가로로 붙이기
$ convert -append image1.png image2.png out.png # 세로로 붙이기
$ convert +append -geometry 240x a.png b.png output.png # 크기 변환

이 방법으로는 이미지를 가로나 세로 한 줄로만 배열할 수 있다. 만약 타일 형태로 늘어놓고 싶다면? montage 명령을 쓰면 된다.

$ montage -mode concatenate -tile 3x8 *png output.png

-mode와 -tile 옵션을 주지 않으면 최종 이미지의 크기와 가로 및 세로로 늘어놓을 이미지의 수를 알아서 결정한다.

이것으로도 상당히 일손을 덜 수 있다. 그런데 처리할 원본 이미지는 LMT1-2.png, LMT1-10.png, LMT12-2.png와 같은 형태의 이름을 갖고 있다. 이를 *png 형태로 montage 명령의 인수로 공급하면 원하는 순서대로 정렬이 되지 않는다. sort -V 명령을 쓰면 이를 해결할 수 있다.

$ sort list 
LMT13-37
LMT15-1
LMT15-24
LMT15-4
LMT15-6
LMT16-16
LMT17-25
LMT17-31
LMT17-36
LMT17-40
LMT17-43
LMT17-62
LMT17-74
LMT17-75
LMT19-13
LMT19-27
LMT19-3
LMT19-32
LMT19-36
LMT19-37
LMT19-6
LMT2-17
LMT2-3
LMT7-21
$ sort -V list
LMT2-3
LMT2-17
LMT7-21
LMT13-37
LMT15-1
LMT15-4
LMT15-6
LMT15-24
LMT16-16
LMT17-25
LMT17-31
LMT17-36
LMT17-40
LMT17-43
LMT17-62
LMT17-74
LMT17-75
LMT19-3
LMT19-6
LMT19-13
LMT19-27
LMT19-32
LMT19-36
LMT19-37

힌트는 How do I sort mixed text & numbers (eg hostnames)?에서 얻었다. 기본 가정은 GNU coreutils ≥ 7.0이어야 한다는 점이다.

그러면 현 디렉토리에 있는 모든 png 파일을 이러한 방식으로 정렬한 다음, 이를 ImageMagick montage 명령어에 인수로 공급하려면 어떻게 하면 좋을까? 바로 작년 10월에 포스팅했었던 process substitution을 응용하면 된다.

$ montage -mode concatenate -tile 3x8 `sort -V <(ls *png)` output.png

난해한 것 같으나 대단히 아름답고도 간결하다. ls *png의 결과물을 sort -V에 공급하고, 그 출력물이 montage 명령어의 인수로 제공된다. `sort -V <(ls *png)`라 쓰지 않고 대신 <(sort -V <(ls *png))라고 해도 되지 않을까 생각했었지만 테스트를 해 보니 중첩해서 쓸 수는 없었다.

구글에서 'imagemagick covert 사용법'으로 검색을 하면 오래전인 2008년 12월 31일에 작성된 [개발자팁] 이미지매직(ImageMagick) 명령어 예제 및 설명이 나온다. 그만큼 많은 사람들이 이 글을 참조했었다는 이야기가 된다.

2020년 1월 5일 일요일

2020년 첫 포스팅, 그리고 독서 기록 <워커홀리즘>

2020년에 접어든지 벌써 5일째를 맞는다. 1818, 1919, 2020, 2121, 2222... 앞 두자리와 뒤 두자리의 숫자가 같은 해가 돌아오려면 약 100년의 주기가 필요하다. 살아있는 동안 한 세기가 바뀌는 연도를 맞거나, 앞뒤 숫자가 같은 연도를 맞는 행운을 모두가 누리는 것은 아니다. 2020년. 기억하기도 쉽고 뭔가 의미가 있을 것도 같은 연도이다. 1970년대에 초등학교를 다니면서 2000년은 참 먼 미래라고 생각했었다. 그런데 벌써 2020년이 되고 말았다!

새해를 맞는 감흥은 예전보다 많이 단순해졌다. TV를 통해 별 시덥지 않은 시상식 프로그램을 생방송으로 보면서도 보신각을 치는 현장 중계 순간을 놓치지 않으려 했던 열정도 많이 식었다. 연말 방송국 시상식에서는 왜 그렇게 공동 수상을 많이 하는지? 게다가 연말에 불거져나온 집안의 여러 소소한 사건들이 새해를 맞는 기분을 많이 가라앉게 하였다.

2019년의 가장 큰 변화는 근무지를 바꾼 것이었다. 직장을 바꾼 것이 아니라 파견 제도를 활용하여 민간 기업의 연구개발 및 기술혁신 지원을 위해 2년간 자리를 옮긴 것이다. 출연연과는 다른 일반 기업의 분위기를 익히고 나의 역량을 이용하여 기업에 기여한 흔적을 남기기 위해서 나름 열심히 일을 하고 있다. 그러한 와중에도 외부 생명정보학 기초 강의나 논문 마무리를 하는 것이 큰 도전이었다.

파견 근무지 숙소의 쓰레기 및 재활용품 배출장소에서는 종종 쓸만한 물건을 특템(?)하는 일이 생긴다. 가구, 의류, 가전제품, 책 등이 그러하다. 이러한 물건이 완전히 소각 또는 매립을 통해 완전히 폐기되거나 갈갈이 찢기어 다른 용도로 쓰일 물질로 환원되기 전에 생명을 연장하도록 만드는 것도 보람이 있는 일이다. 이번에는 읽을만한 책을 많이 구해왔다.


올해 첫 독서는 브라이언 로빈슨 지음/박정숙 옮김 '워커홀리즘(2009)'이었다. 일을 하는 것은 가족을 부양하고 자기계발 및 사회에 기여하기 위함이고 게으른 것은 악이므로, 주어진 할당량보다 더욱 넘치도록 일을 하는 것은 미덕이요, 이를 권장하고 독려하는 사회 분위기는 당연한 것으로 생각을 했었다. 그러나 일을 더 하기 위하여 거짓말을 하고 일거리를 몰래 싸들고 퇴근을 하게 된다면? 몰래 가져온 일이나 몰래 숨긴 술병이 동등한 것이라고 생각해 보자. 이러한 수준에 이른다면 일중독도 역시 병적인 상태인 것이다. 벅찬 일거리를 처리하면서 아드레날린이 분비되는 것을 즐기고 있다면('워커오르가즘'을 느끼기 위하여) 이는 분명히 중독 증세이다. 81쪽에 나온 '일중독의 실체'를 인용해 본다.

  • 일중독은 일중독자가 직장으로 가져오는 강박장애이다. 즉 일중독은 직장에서 발생하는 것이 아니다.
  • 일중독은 정신건강상 문제이며 미덕이 아니다. 그것은 직장에서 해결할 수 있는 문제보다 더 많은 문제를 야기한다.
  • 수퍼히어로의 얼굴은 일중독자가 성취와 업적을 이용하여 숨기고 있는 깊은 내면의 감정을 조절하지 못한 채 문제를 은폐한다.
  • 일중독자는 일을 위해 자유시간과 가족을 희생하는 것이 아니다. 그들은 자기만족을 위해 일을 한다.
  • 대부분의 일중독자들이 일을 즐긴다고 말하지만 일에서 얻는 만족은 일중독의 필요조건이 아니다.
  • 일중독자들은 그들이 스스로 야기한 스트레스로 분비되는 아드레날린에 화학적으로 중독되어 있다. 그들은 일로 느끼는 황홀감을 유지하기 위해 지속적인 위기를 갈망한다.
  • 일중독은 1차적 중독이 될 수도 있고 다른 중독과 섞인 2차적 중독이 될 수도 있다.
  • 직장에 고용된 상태에서만 일중독이 발생하는 것은 아니다. 일중독은 모든 강박적 활동에서 일어날 수 있다.
  • 일중독에서 벗어나 삶의 균형을 회복했을 때 업무의 질과 생산성은 향상되고 일중독자들은 직장에서 행복해지고 더욱 능률적으로 일할 수 있다.
  • 일중독을 줄이고 삶의 균형을 회복하기 위해서는 단순한 업무시간 축소 그 이상이 요구된다. 지금까지 무시해왔던 삶의 다른 부분들에 대한 관심뿐만 아니라 진지한 자기반성과 통찰이 필요하다.

주50시간 근무니 최저임금제 도입과 관련하여 사회 전체가 들썩이는 것을 보면 아직 우리 사회는 최저 수준의 생계를 위해 과도하게 일을 하지 않을 수 없는 사람이 많다는 것을 알 수 있다. 이러한 수준을 지나서 선진국 수준의 보편적인 복지가 이루어진 사회라면 이 책이 좀 더 널리 받아들여지리라는 점이 다소 아쉬었다. 지금 한국 사회의 모습을 보면 경제상황이 너무나 불투명하여 앞으로 근로 및 복지 여건이 더욱 나아지리라는 예상을 전혀 할 수가 없다는 것이 나무나 안타깝다.

일중독은 꼭 직장의 일하고만 연결된 것은 아니다. 다른 유형의 일중독 중에는 돌봄중독(careholic workaholic)이라는 것이 있다고 한다. 이는 타인에게 과도한 책임감을 느끼고 타인의 감정을 지나치게 이해하며 타인을 위해 노력해야 한다는 강박적인 욕구를 느끼는 것을 말한다. 대부분의 부모는 이렇지 않던가? 그리고 이러한 태도는 아무리 과다해도 전혀 문제가 없는 것이라고 생각해 오지 않았던가?

일과 놀이의 경계가 흐려지고, 각종 스마트 기기에 의해서 가정 또는 휴식의 순간에도 일이 침투해 들어오는 것도 일중독을 만연하게 만드는 주요 요인이 된다. 기독교·자본주의적 노동관, 그리고 첨단 기술이 우리를 점점 더 일에 중독되게 만드는 것이 아닐까? 노동은 신성하다는 생각에 더하여 우리의 노력을 통해 좀 더 '부강한(아, 이 70년대스러운 용어여!)'나라를 만들게 한 다음에야 개인의 여유와 행복을 찾자는 전체주의적인 발상이 우리를 더욱 일에 몰두하게 만들고 있다. 우리는 북한과 대치한 상태이고 - 때로는 경쟁국 전체가 우리의 적이 되기도 한다 - 이렇게 게으르게 살면 뒤처지고 '나라가 통째로 넘어간다'는 말을 얼마나 많이 들어왔던가?

다음의 표에서 정말 일을 잘 하는 사람(특히 리더의 미덕을 갖춘 사람)과 단순한 일중독자의 차이를 알아보자.



퇴근 무렵 가방을 챙기면서 인쇄한 논문 등 일할 거리를 늘 조금씩 담는 나의 모습도 어딘가 모르게 일중독자의 모습을 닮았다. 하지만 대부분의 경우 집에서 이를 꼼꼼하게 챙겨 읽지는 못한다. 파견기업의 업무용 이메일을 집에서 열어보지 않는 것도 지나친 일중독을 막기 위한 장치가 된다. 정확히 말하자면 서버 주소를 암기하고 있지 않아서 그런 것이지만!

인에이블러(enabler: 다른 사람을 돕고 있다고 생각하지만 실제로는 그들의 나쁜 행동의 개선을 막는 사람.36쪽에 처음 등장)에 대하여 좀 더 알아볼 필요가 있다는 생각과 함께 2020년 첫 포스팅을 마치고자 한다.