2022년 6월 16일 목요일

로드 자전거의 튜브 상태가 예사롭지 않다

모름지기 기계나 도구는 쓰지 않으면 망가진다. 사람이 살지 않는 집이 금방 망가지는 것처럼. 자전거도 예외가 될 수 없다. 저녁에 집 근처 1 km 정도 떨어진 식당에서 모임이 있어서 차는 집에 세워두고 오랜만에 자전거를 타고 1 km 정도를 이동해 보려고 계획하였다. 펌프를 집어들고 바람을 채우는데 공기가 새는 소리가 들린다. 앞바퀴는 타이어 옆면에서, 뒷바퀴는 밸브 근처에서...

아마 튜브가 팽창하지 않은 상태로 몇년을 방치하다 보니 튜브가 눌리고 접힌 곳에 손상이 발생한 것 같다. 대부분은 수선 가능하지만, 밸브 근처에서 튜브가 뚫리면 손을 쓸 수가 없다. 어쩌면 앞뒤 튜브를 전부 교체하는 것이 현명할 것이다. 

브레이크 선의 당김을 해제하고, 휠을 분리하고(QR이라서 어렵지는 않음), 타이어를 힘겹게 분리하고, 튜브를 교체하고... 손에 시커멓게 기름때를 묻혀가며 작업할 생각을 하니 벌써부터 한숨이 난다. 어휴...

일단 교체용 튜브를 몇개 구입해 놓는 것에서 출발하자. 

2022년 6월 10일 금요일

펄(Perl) 뻘짓 - pod를 이용한 펄 스크립트의 매뉴얼 작성

Pod(plain old documentation format, 링크)를 이용하여 펄 스크립트의 도움말을 만들어 보았다. Pod는 펄 프로그램이나 모듈의 documentation에 쓰이는 간단한 마크업 언어이다. 코드 내부에 문서를 직접 작성한다는 것이 특징인데, 코드가 아닌 텍스트 정보만을 저장한 .pod 파일을 만들어 활용할 수도 있다. 순수한 pod 문서의 사례는  리눅스 배포본이라면 다 갖고 있을 /usr/share/perl5/pod/perlpod.pod 파일(펄 안내서)을 참조하면 된다. 이 파일을 확인하려면 리눅스 명령행에서 'perldoc perlpod'를 입력하자. 이 문서(perlko)의 한글판은 여기에 있다.

코드 내부에 작성해 넣는 문서는 어떤 용도인가? 당연히 그 코드의 설명을 위한 것이다. 가령 펄에서 '#'로 시작하는 줄(주석)은 인터프리터가 해석하지 않고 지나가므로, 코드의 특정 부분을 설명하는 용도로 쓰인다. 그러나 이러한 방식의 정보는 코드를 텍스트 편집기로 열어야만 보인다. Pod는 코드 안에 작성되지만 실행을 통해서 화면에 일정한 형식을 갖추어 보기 좋은 형태로 뿌려진다. 따라서 코드의 설명서를 별도로 작성하는 수고를 덜어준다. 한글 Perl Maven 웹사이트의 Pod 소개문을 읽어 보면 개념을 잡는데 도움이 될 것이다.

요즘 가장 인기 있는 마크업 언어는 아마도 간단하고 문법이 쉬운 경량의 Markdown이 아닐까 한다. LaTeX도 마크업 언어의 일종으로 간주된다. 생명과학 전공자로서 LaTeX으로 학위논문을 썼던 나도 상당한 수준의 '뻘짓러'가 아니었을까? 도대체 왜 그랬었지?

엇, perlko 문서의 저자에 '신정식'이란 이름이 보인다. 현재 구글의 소프트웨어 엔지니어로 일하는, 내가 아는 그 Jungshik Shin이 맞을 것이다. 그는 인터넷의 한글화에 큰 공헌을 했던 것으로 알고 있다. Nerd와 Geek가 득실거렸던 대학교 1학년 때의 기숙사가 생각난다. 신정식과는 몇 개의 수업을 같이 들었었던 것 같다. 

펄 스크립트 또는 모듈 내에 심은 pod 문서를 보려면 'perldoc <script명>'을 입력하는 것이 일반적이다. 그러나 도움말을 보기 위하여 다른 명령어를 또 불러야 한다는 것이 성가시다. 그래서 명령행에 인수가 없거나 혹은 '-h' 또는 '--help'라는 단일 인수가 주어졌을 때 내부적으로 'perldoc <스크립트>'를 실행하여 스크립트 내에 심어놓은 도움말이 출력되게 하였다. 명령어 바로 뒤에 연달아 입력하는 문자열을 option, switch, flag, argument 등으로 세분해야 한다고 믿는 사람도 있겠지만, 그건 별로 중요하지 않다.


Pod 공식 설명 문서만으로는 그 문법을 이해하기가 어려워서 Bio::Seq.pm을 편집기로 열어서 실제 사례를 참조하였다. Bio::Seq 파일의 위치를 알고 싶다면 다음과 같이 입력한다. Bio와 Seq 사이의 연속된 콜론 두 개는 디렉토리('/')를 의미한다. 따라서 Bio::Seq.pm 모듈 파일의 실제 이름은 Seq.pm이다. 'perldoc -l Bio::Seq.pm'이라 입력해도 결과는 같다.

$ perldoc -l Bio::SeqIO
/usr/local/share/perl5/Bio/SeqIO.pm

기술 문서를 마크다운으로 배포하는 것은 이상할 것이 없지만, 요즘 분위기에서는 pod 파일로 배포하기는 적합하지 않다. 그저 펄 스크립트 내에 심어서 설명 용도로 쓰는 것이 최선일 것이다.


2022년 6월 16일 업데이트

Bash 스크립트 내에 POD-like documentation을 삽입하는 방법도 있다. 매우 유용한 팁이 아닐 수 없다. 다음에 소개할 문서는 2007년에 작성된 매우 오래된 것이다.


그런데 O'Reilly에서 발간한 Bash Cookbook에도 이미 Embedding Documentation in Shell Script라는 문서가 있다. 여기에서는 스크립트 내에서 =pod라는 태그를 쓰지 않는다. 두 문서 모두 연구해 볼 만한 가치가 있다.

2022년 6월 9일 목요일

뻘짓의 지평을 넓혀야 인생이 풍부해진다 - 자전거 이야기

'뻘짓'은 허튼짓을 뜻하는 전라남도 사투리라고 한다. 결코 비속어가 아니다. 비슷한 의미의 낱말로 '삽질'을 떠올리게 되는데, 근원이 불확실하여 별로 쓰고 싶지 않다.

젊어서 철이 없을 때 되도록 많은 뻘짓을 해 봐야 한다. 그러면 나중에 나이가 들어서 '뻘짓'을 재발견하면서 새로운 재미를 느끼게 될 것이다. 뻘짓은 창조적 정신의 원천이다! 내가 경험했던 다양한 뻘짓 중에 자전거 관련 취미가 있다. 2000년대 초반에 출퇴근 길에 열심히 달렸던 자전거가 복도 계단에 자물쇠로 묶인 상태로 벌써 몇년이 흘렀는지 기억이 나지 않는다. 자전거에 관한 이야기는 구글 블로그를 쓰기 전, 네이버에서 운영했던 블로그(2005-2015)에 대부분 존재한다. 네이버 블로그는 중간에 한번 탈퇴를 거치는 바람에 PDF 백업본 파일로만 남았다.

자전거 감옥. 약 10년 째 수감 중? 바람이 빠진 타이어는 옆면에 균열이 보이기 시작했고 계단에 눌린 상태라서 아마 내부의 튜브도 유착이 발생했을 것이다.

휘발유 가격도 크게 올랐고, 평소에 운동을 거의 하지 않는 나의 생활 습관을 그대로 두고 볼 수는 없어서 다시금 자전거 출퇴근에 관심을 가질까 생각한다. 매일은 어렵더라도 일주일에 두 번 정도라는 목표를 세우고 다시 습관을 들이고자 한다. 출근길은 편도로 약 9 km. 자전거를 한창 타던 시절에는 일부러 KAIST쪽으로 돌아가는 편도 11 km의 코스를 비가오나 눈이오나 매일 달렸었다.

나의 자전거는 생활형 로드 자전거(삼천리 랠리)이다. 한때 유명했던 입문 수준의 로드 자전거 랠리가 아니란 뜻이다. 일명 '도싸' 그리고 '발바리'로 알려진 커뮤니티에서 무료·중고 부품을 구입하여 순전히 재미로 조금씩 업그레이드를 하여 지금에 이르렀다. 브레이크 레버는 Cane Creek(신품), 뒷디레일러는 알리비오, 크랭크셋과 BB는 캄파뇰로... 겨우 2 x 6(카세트 스프라켓이 아니고 프리휠!)단 구식 기어에 퀼 스템에 고정하는 변속레버를 쓰는 주제에 온갖 기괴한 조합의 부품을 갖다가 붙였다. 리어 액슬은 거저 얻은 부품을 이용하여 QR용으로 바꾸었다.



내 자전거의 가장 아름다운 모습은 바로 크랭크셋에 있다. 휠셋은 로드 자전거의 표준인 700C가 아니고 '구식 사이클'에 널리 쓰이던 27인치이다. 내기억이 맞다면 ISO 630 규격이다. 

이탈리아에서 온 캄파뇰로!

 

개인이 할 수 있는 자전거 정비와 부품교체도 해 보지 않은 것이 없을 정도로 경험을 쌓았었지만 10년 가까이 이 '뻘짓'을 잊고 살았더니 이제는 기억이 잘 나지 않는다.

이것이 전부가 아니다. 나에게는 700C 통타이어(tubular tire)용 휠세트도 한 조 있다. 7단 카세트를 달고 있는 뒷쪽 휠의 허브를 살펴보면 현 울테그라의 전신인 Shimano 600'이라는 마킹이 보인다. 이 휠셋을 쓰기 위하여 트랙 경기 후 벗겨낸 튜블러 타이어를 싸게 팔던 것을 커뮤니티 회원과 한번에 구입하여 나눈 일도 있었으니... 겨우 하루에 20 km 남짓한 거리를 달리면서(주말 장거리 주행은 해 본 일이 없음) 부품 교체 장난질은 왜 이렇게 많이 하였는지, 지금 생각하면 정말 뻘짓이 맞다. 

하루에 20 km를 달리면서 출퇴근을 했다면 매주 100 km요, 세 달이면 1,000 km가 넘는다. 몇 년 동안 이 짓을 했으니 따지고 보면 적은 주행 거리는 아니다.

다시 자전거 출퇴근을 개시하려면 고칠 것이 많다. 이것 말고도 미니벨로가 하나 더 있는데, 타이어의 현 상태는 더욱 열악하다.

나에게 인터넷을 통해 자전거에 대한 엄청난 지식을 선사했던 전설적인 자전거 미캐닉 고 Sheldon Brown(1944-2008)에게 경의를 표하는 바이다. 구글 검색창에서 Sheldon Brown 또는 '셸던 브라운'을 입력하면 영문 위키피디어에서 자동으로 번역된 정보 말고는 한글로 된 정보가 전혀 나오지 않는다. 

뻘짓의 재발견은 계속된다. 다음 순서는 아마도 천체 망원경이 아닐런지...

[Perl] 텍스트 파일을 'chunk' 단위로 읽어들이기

chunk는 '큰 덩어리'라는 뜻이다. Perl을 이용하여 텍스트 파일을 읽어들일 때, 보통은 while 루프를 이용하여 줄 단위로 하나씩 읽어서 순차적으로 처리하게 된다. 그러나 어떤 분리자를 경계로 하여 구분된 여러 라인의 덩어리를 단위로 삼아서 변수로 읽어들이고 싶을 때도 있을 것이다. 예를 들어서 EMBOSS primersearch 프로그램의 결과 파일을 살펴보도록 하자. 다음에 보인 그림은 9개 프라이머쌍의 정보를 담고 있는 파일을 이용하여 하나의 FASTA file을 뒤져 amplimer를 탐색한 결과이다. 인간이 읽고 이해하기에는 쉽지만, 컴퓨터로 하여금 결과를 집계하도록 만들려면 매우 불편하다. 특히 수백 혹은 그 이상의 FASTA file에 대하여 primersearch를 돌렸다고 가정해 보자. 


언제 어떻게 활용될지 몰라서 프라이머 염기서열은 일단 가렸다. FASTA 파일 하나에 대해서 하나의 결과 파일을 쓰게 할 수도 있고, 여러 FASTA 파일에 대한 탐색 결과를 하나의 결과 파일에 몰아서 기록할 수도 있다. 후자의 방법을 이용하려면, 결과 파일 내에 입력 FASTA 파일에 따른 구분자를 넣을 수도 있다. 여러 FASTA 파일에 대한 탐색 결과를 처리하는 더 미련하고 복잡한 방법도 얼마든지 고안할 수 있다.
  

한 쌍의 프라이머에 대한 amplimer 탐색 결과는 빈 줄("\n\n")을 경계로 다른 결과와 구분된다. 바로 이것이 하나의 chunk이다. 이를 구현하기 위한 힌트는 StackOverflow의 Grabbing Chunks of Data from File in Perl에서 얻었다.

local $/ = "\n\n";

open LOG, $ARGV[1];
while ( $chunk = <LOG> ) {
   # do something on $chunk
}

결국은 "\n"을 경계로 하여 $chunk 변수를 분할하여 세부적인 작업을 해야 된다. 그러나 이렇게 하는 것이 편한 이유는, chunk 단위가 하나의 프라이머 쌍에 대한 '모든' amplimer 예측 결과에 해당하기 때문이다. 

Multi-record GenBank 파일은 '//'로 개별 단위가 분리된다. 오늘 알아본 방법을 통해서 GenBank 파일을 chunk 단위로 처리할 생각은 '1'도 없다. chunk 내의 구조가 워낙 복잡하기 때문이다. 꼭 필요하다면 csplit 유틸리티를 써서 각 레코드를 물리적인 파일로 나누어 버리는 것이 더욱 현명하다. 다음은 실제 응용 사례이다. 코드가 약간 난해하다! 아니, 난해할 것은 없다. 파일 분리자로 사용할 '//'를 정규표현식으로 나타낸 것에 불과하다. 맨 뒤의 '{*}'가 어떤 의미인지 알기가 좀 어렵다. csplit의 매뉴얼에 의하면 'repeat the previous pattern as many times as possible'이다. 'find ... -exec' 명령어에서 맨 뒤의 '\;'도 이해하기 쉽지는 않다. Bash 환경에서 {}, (), \, ; 등이 나오면 본능적으로 긴장을 하게 된다.

csplit --prefix=test ../genome.gbk '/^\/\/$/' '{*}'

리눅스 bash 환경에서 출현하는 특수한 문자 중 나를 가장 긴장하게 만드는 것은 바로 GNU parallel 유틸리티의 고급 용법이다...

BLAST parser 따위는 제발 짜지 말라는 글(Mad Scientist)이 기억났다. 과거에 BioPerl을 이용하여 human readable 형태의 BLAST 결과 파일을 파싱하는 코드를 짰던 적은 있다. 그 이후에 Zerg를 한동안 사용했었다. 잠시 추억에 젖어서 찾아보니 Zerg는 2003년에 나온 프로그램이다(논문 링크). 지금은 tabular output을 지정하면 되니 되므로 특별히 parser를 쓸 필요가 없다. Alignment를 반드시 눈으로 봐야 한다고 고집하지 않는다면 말이다. 2000년대 초반의 blastall 프로그램이 tabular output을 제공하지 않았었던가? 기억이 나지 않는다.

이러한 명령행 환경의 자료 조작 업무를 이제는 전부 Python으로 대체해 나가야 할까? 장기적으로는 그것이 정답일 수 있는데, 자꾸 손은 Perl Cookbook을 향하고 있으니...

2022년 6월 8일 수요일

세상은 넓고 공부할 것은 많으며 들을 음악도 많다

넷플릭스를 뒤적거리다 <영광의 깃발(원제: Glory)>이라는 1989년도 미국 영화를 보게 되었다. 남북전쟁에서 흑인들로만 구성된 부대(제54매사추세츠 의용보병연대)와 그 지휘관인 실제 인물 로버트 굴드 쇼(Robert Gould Shaw, 1837-1863)의 이야기이다. 노예 신분을 갓 벗어난 흑인들이 - 노예 제도를 허용하지 않던 북부에 살아서 그랬을 수도 있고, 남부에서 노예 생활을 하다가 탈출한 상태였을 수도 있음 - 군대에 자원해서 실제 전투에 가담한다는 것은 당시로는 매우 획기적인 일이었을 것이다. 영화의 마지막을 장식하는 와그너 요새 공격에서 비록 대패하였지만, 이들의 용맹은 더 많은 흑인이 남북전쟁에 참전하게 만드는 계기가 되었다고 한다. 전 부대원이 가로로 길게 늘어서서 전혀 엄폐도 하지 않은 채 적진을 향해 일제히 총을 쏘는, 매우 위험하고 비능률적인 전투 대형을 보고 의아하게 생각하다가 이 전쟁이 미국인들에게 어떤 의미를 갖는지 찾아보게 되었다. 1·2차 세계대전과 6·25 전쟁에 참전했던 미군보다 더 많은 사람이 남북전쟁 때 희생되었다고 한다. 그럼에도 불구하고 이 전쟁은 하나의 미국을 만들어 나가는 값진 전쟁으로 미국인들 가슴 속에 남아 있는 것 같다.

로버트 굴드 쇼와 매사추세츠 54연대 기념 부조. 출처: 미국 National Park Service.

남북전쟁에서 큰 전환점이 되었던 게티즈버그 전투(1863년)을 재연하는 행사는 지금도 인기가 있는 것 같다. 행사 참가자는 북군이든 남군이든 원하는 역할을 맡을 수가 있다. 그런데 만약 우리가 6·25 전쟁의 특정 전투를 재현하는 행사를 갖는다면? 결국 이 전쟁을 통해 어느 쪽으로든 통일이 이루어지지 않았기 때문에, 북한군의 역할을 맡고 싶은 '한국인'은 아무도 없을 것이다. 미국의 남북전쟁 재연 행사가 백인 중심의 시각으로 재구성된 역사를 미화하는 일이라는 비판도 있다고 한다.

미 남북전쟁 재연행사 "역사 보존" vs "백인중심 추종" 논란(2019년 6월 25일 한경 기사 링크)

앞으로 보름 남짓이면 6·25 전쟁 발발 72주년을 맞지만, 아직도 이 전쟁의 원인과 성격에 대해서 완벽한 정의를 내리기가 어렵다. 심지어 모스크바 3상회의에서 한반도의 신탁통치에 관한 결론이 당시 국내에 잘못 보도되었다는 것도 최근에야 알게 되었다. 소련이 신탁통치를, 미국은 즉시 독립을 주장했다는 국내 신문사의 보도는 완전한 오보였다고 한다. 이것이 단순한 오보인지, 혹은 어떤 정치적인 의도를 가지고 일부러 사실과 다르게 보도했는지는 알 수가 없다. 이 잘못된 보도로 말미암아 국내에는 맹렬한 반탁운동이 일어나게 되었고, 결과적으로는 분단의 고착과 나아가서는 동족 상잔의 비극인 6·25 전쟁까지도 이르게 된 것이다.

동족 상잔이라는 면에서 미국의 남북전쟁이나 한반도의 6·25 전쟁은 다를 것이 없다. 그런데 왜 전자는 하나의 국가를 만들어 나가는 성장통이었고, 후자는 있어서는 안될 비극이자 그로 인한 서로간의 적대감을 아직까지 해소하지 못한 상태로 갖고 있어야 하는가? 전쟁이 끝난 뒤 흐른 시간이 달라서? 통일이 이루어지지 않았기 때문에?

6·25 전쟁을 제대로 아는 것이 아직도 쉽지 않다. 내전인가? 강대국 사이의 대리전인가? 일제에 나라를 빼앗기고 급변하는 세계 정세에 자주적으로 준비하지 못한 우리의 책임은 없는가? 2014년 프레시안에 실렸던 기사 '6·25 전쟁'도, '한국전쟁'도 틀렸다를 매우 흥미롭게 읽었으나 링크 접속이 현재 원활하지 않아서 유감이다.

국가 사이의 갈등이 가장 폭력적으로 표출되는 것이 바로 전쟁이다. 역설적으로 전쟁은 새 질서를 만들기도 하고 기술의 극적인 발전을 유발하기도 한다. 또 어떤 사람들에게 전쟁은 둘도 없는 비즈니스 기회가 된다. 그렇다고 하여 전쟁을 장려할 수는 없는 노릇이다. 폭력이라는 인간의 내재적인 속성을 잘 다스려서 이를 전쟁이 아닌 다른 방식으로 승화해야 한다.

두 번째 주제인 음악 이야기로 넘어가자.

음악을 꽤 좋아하면서도 '이러한 거물 음악가를 아직 모르고 있었단 말인가?'하는 생각이 들 때가 많다. 유튜브를 통해 미처 몰랐던 곡을 들으며 감동에 빠지다가도, 내가 참으로 체계 없이 음악을 듣고 있었다는 자괴감 비슷한 것을 느낄 때가 많다. 칼라 블레이(Carla Bley)라는 1936년생 재즈 뮤지션을 알게 된 것은 불과 이틀 전. 그녀는 2018년 자라섬 재즈 페스티발에 참여하기도 하였다.

Carla Bley(사진 출처 링크)

"니 칼라 블레이 들어봤나"...90년대 음악애호가들의 단골멘트(매일경제 2021년 1월 9일 기사 링크)

(1987년 앨범 'Sextet'에 담긴 'Lawns'라는 곡은) 이후 이 곡은 음악 좀 듣는다는 뮤지션들이 라디오 음악 방송에 나와서 '이 곡 잘 모르셨죠'하는 느낌으로 소개하는 대표곡이 됐다.

다음 유튜브 동영상은 Carla Bley와 Steve Swallow의 <Lawns> 연주이다. 그렇다! 난 이틀 전까지 이 곡을 들어 본 일이 없었다. 존 콜트레인은 알면서 칼라 블레이를 모르면 무식한 건가? 아직도 찾아 들을 새로운 음악이 많다는 것을 오히려 다행으로 여기자.

 


2022년 6월 5일 일요일

계룡산 오르기(삼불봉)

지나친 운동부족 상태로 나이만 먹어가는 것은 옳지 않다는 생각이 들어서 아내와 함께 계룡산을 조금씩 올라가 보기로 했다. 늘 계룡산 사찰(동학사, 갑사, 신원사)과 근처 물가만 맴돌다가 지난주 은선 폭포를 시작으로 이번 주는 삼불봉에 도전하였다. 변변한 등산복이나 모자도 없는 상태에서 갖고 있는 것이라고는 경등산화 한 켤레가 전부였다. 혹시나 싶어서 쿠팡에서 최저가 등산스틱을 구입하였는데 정말 큰 도움을 받았다.

싸구려 등산스틱은 무겁고, 크고, 길이 조절이 불편하다. 손잡이 부분을 이루는 플라스틱에서는 왜 이렇게 유기용매 냄새가 나는지... 환경 호르몬이 풀풀 배어 나오고 있을 것이다. 그래도 이번 삼불봉 등산에서는 큰 몫을 했다.

우리는 등산스틱이라고 부르지만 영어권에서는 trekking pole이라고 부른다. '등산'은 하이킹(hiking), 트레킹(trekking), 그리고 마운티니어링(또는 마운틴 클라이밍 mountaineering or mountain climbing)으로 구분된다. 트레킹이라 해도 보통 이틀 이상의 코스는 되어야 그렇게 부른다고 한다. 저마다 알록달록한 등산복(반대편의 극단에는 레깅스가 있겠다)을 입고 배낭에 음료와 도시락 한끼 분량을 싸서 아침에 출발하여 저녁에 집에 돌아오는 것은 하이킹이다!

6월 4일 등산, 아니 하이킹 코스는 계룡산 동학사쪽 입구의 주차장에서 천정탐방지원센터를 시작으로 남매탑까지 2.8 km를 간 후 삼불봉에 오르는 것을 목표로 하였다. 돌아올 때에는 남매탑에서 세진정으로 곧바로 내려오는 코스를 택했다. 천정탐방지원센터를 기점으로 하면 입장료를 낼 필요가 없어서 매우 유리하다. 계룡산 국립공원 웹사이트(링크)에서 천정코스라고 부르는 이 코스는 남매탑에서 삼불봉으로 가는 편도 0.5km의 샛길을 제외하면 5.8km(3시간), 난이도 '중'에 해당한다.

지난주 은선폭포를 갈 때에는 뙤약볕이 내리쬐는 코스였지만, 이번에는 대부분 숲길이어서 매우 쾌적하게 오를 수 있었다. 여름을 위한 최적의 경로라고 해도 무방할 것이다.

등산은 기다림이다! 걷기 힘들어하는 아내를 조금 앞서 천천히 가면서 기다려 주기. 지난주에 은선폭포를 다녀와서는 장딴지가 아파서 삼사일 고생을 했지만, 이내 회복 후 단련이 되었는지 이번에는 괜찮았다.

큰 바위 앞에서. 전해져 내려오는 이름이 있지 않을까?

삼불봉을 다녀온 직후 남매탑 앞에서. 남매탑의 전설은 역사적 사실일까?

정중앙 바로 오른편의 뭉툭한 봉우리가 관음봉(766m)이다. 우리가 위치한 삼불봉보다 9미터 낮다.

엉덩이 붙일 곳을 찾기 어려울 정도로 비좁은 삼불봉에서.



발끝만 보면서 힘겹게 걷다가 탁 트인 하늘을 바라보는 기분. 이것이 산에 오르는 재미가 아닐까? 단 나이가 나이니만큼 무릎이 망가지지 않게 조심해야 한다.

언젠가는 삼불봉에서 관음봉까지 이르는 자연성릉을 따라 가리라.

남매탑에서 세진정으로 내려오는 길은 생각보다 힘들었다. 특히 남매탑에서 시작하여 첫 쉼터까지 내려오는 약 0.6km의 길은 공식 등산 안내도에도 난이도 4급(총 5급)으로 나와 있을 정도라서 등산 초보에게 쉽지 않았다. 오죽하면 그 길을 올라오는 사람에게 얼마나 더 내려가야 되느냐고 묻고 싶을 지경이었으니까. 사실 이것은 예의가 아니다. 결혼 전에 아내와 함께 이 길을 통해서 남매탑까지 올라갔던 적이 있었다. 그때는 비교적 쉽게 올랐던 것 같은데 생각해보면 돌도 씹어먹을 20대였으니 당연하지 않을까?

어느 경로를 거치든 관음봉까지 가 보는 것이 올해의 목표이다. 나 혼자라면 언제든 가겠지만, 체력이 좋지 못한 아내와 함께 오르려면 연습이 필요하다. 아내를 위해 좀 더 가벼운 등산스틱을 사야 되겠다.

긴 가뭄 끝에 오늘 꽤 많은 비가 내려서 당분간 은선 폭포에는 물이 꽤 많이 흐를 것이다.

바위 한가운데 갈라진 틈에 뿌리를 박고 사는 나무의 생명력이 대단하다.



2022년 6월 3일 금요일

논문을 출판하려면 돈이 많이 든다

논문을 내려면 생각보다 돈이 많이 든다. 연구비(인건비를 포함해야 함)가 기본적으로 들어가고, 논문 원고를 영어로 작성하여 교정을 하는 데에도 적지 않은 돈이 든다. 학술지를 선택하여 투고하면 지난한 검토 과정(review process)을 거쳐서 게재 승인이 떨어진다 해도, 최종적으로 게재료를 납부해야 정식으로 출판이 된다. 게재료는 논문 출판 기관에 따라서 천차만별이다.

논문의 저자 입장에서는 출판을 끝으로 돈이 더 이상 들지 않겠지만, 이를 읽으려는 독자는 돈이 들 수도 있고 들지 않을 수도 있다. 요즘 OA(open access)가 추세라고 한다. 이는 이용자들에게 학술정보, 논문 등을 무료로 개방하는 것이다. 그러나 출판사는 자선사업을 하는 것이 아니므로, OA로 논문을 공개하려면 저자에게 더 비싼 게재료를 내게 한다.

OA가 아닌 경우, 보통은 논문 PDF 파일 하나에 일정 비용을 지불하고 다운로드를 받게 된다. 일반 논문에 비하여 인용 횟수가 높을 것임은 자명하므로, 이에 굴복하여 큰 돈을 지불하도록 결정을 내릴 수도 있을 것이다. 만약 이용자가 소속된 기관이 해당 출판사에 꽤 큰 금액을 연 단위로 지불한 회원이라면, 이용자는 논문 이용료를 개별적으로 내지 않아도 된다. 

최근 국내 학회에서 발간하는 어느 학술지에 논문을 투고하여 심사를 거친 후 게재 승인을 받았다. 공개일자는 바로 어제. 실제 발간은 Springer Nature라는 회사에서 진행한다. 국내 학회에는 50만원의 게재료를 납부한 상태였다. 그런데 Springer Nature에서 온 안내 메일을 보니, OA로 출판하려면 무려 2,900달러를 내라는 것이었다. 납부 증명을 가져오면 국내 학회에서는 이미 냈던 돈 50만원을 돌려준다고 하였다.

2,900달러라니... 임팩트 팩터가 5를 넘는 '고급' 학술지도 아닌데 이렇게까지 할 필요가 있을까 싶어서 OA를 선택하는 것은 포기하였다. 따라서 내 논문의 PDF를 다운로드하려는 이용자는 소속 기관이 이 학술지를 구독하지 않는 경우 34.95유로, 즉 오늘 환율로 약 46,645원을 지불해야 한다. 어제 저널 웹사이트의 latest articles에서 가장 위에 자리잡은 내 논문은 전문이 공개되어 있지만, 아마 조금 뒤면 초록만 공개되는 상태로 바뀔 것이다. 한 저널에 실린 논문이 추가 비용을 냈는지에 따라서 어떤 것은 OA, 어떤 것은 돈을 주고 사서 보는 것으로 운명이 갈린다. 물론 논문을 읽으려는 사람의 소속 기관이 이 저널을 구독하고 있다면 차이가 없겠지만.

게재료가 치솟는 것이 요즘의 추세이다. 예를 들어 한국미생물생명공학회에서 발간하는 Journal of Microbiology and Biotechnology는 올해 3월 1일부터 게재료(article processing charge, 줄여서 APC 또는 출판비)를 무려 120만원으로 인상하였다. 학회 회원에게는 할인이 적용되어 70만원을 받는다. 외국인 투고자는 600달러를 내야 한다. 

논문 게재 실적이 연구자들의 승진이나 연구비 신청 경쟁에서 매우 중요한 근거로 쓰이게 되니 이를 이용하는 비즈니스가 성장하는 것을 막을 길이 없다. 다만 이를 악용하는 약탈적 학술지(predatory journal)가 자꾸 생겨나서 검증하기가 어렵다는 것이 문제이다. 이러한 현실을 비꼰 글 몇개를 인용해 본다.

MPDI나 Frontiers가 약탈적 학술지인가? BRIC 커뮤니티를 보면 이를 묻는 글이 심심찮게 올라온다. 참 판단하기 어려운 문제이다. 해당 출판사에서 만드는 저널이 분야에 따라 수십 개로 나뉘므로 여기에 모두 일률적인 잣대를 들이대기도 어렵고(IF가 있는 것도 있고 없는 것도 있고...), 단지 APC가 비싸다고 해서 모두 주의를 요하는 저널이라고 하기도 어렵다. 내가 몇번 논문을 낸 적이 있는 Frontiers in Microbiology의 현재 APC(링크)는 얼마인가? 여기도 지금은 2,950달러나 하는구나! 참고로 Frontiers 저널 전체에 대해서 나는 지금까지 총 6편의 논문을 실었었다(링크).

오죽하면 국가과학기술연구회 소속 출연연구소에서 Elsevier나 Wiley서 저널에 논문을 출판할 때 APC를 지원하겠는가. 두 회사의 평균 APC가 각각 약 3천달러와 3400달러나 된다. APC가 높은 학술지라고 해서 고급 학술지(소위 IF가 높은..)인 것도 아니니 판단은 논문 저자가 알아서 해야 될 것이다.