2021년 10월 17일 일요일

가을 기분을 느끼러 전주 한옥마을을 찾았다. 모처럼 사람들이 많아 거리에는 활기가 느껴졌다. 조금만 더 기다리면 사람들의 발길을 꽁꽁 묶었던 신종코로나바이러스를 극복해나갈 수 있을 것 같은 약간은 희망적인 기분을 느꼈다.

전주는 우리 부부의 '놀이터'라 해도 과언이 아니다. 기록을 찾아보니 2014년 5월 전주국제영화제를 가족과 함께 다녀온 것이 처음이었다. 대전에서 가깝고, 볼거리와 먹을거리가 많고, 때로는 방문객이 많지만 거리는 깨끗하고 쾌적하다. 특히 전주 현지인들이 많이 오는 객사길과 영화의 거리까지 진출하게 되면서 가볍게 쇼핑을 하기에도 좋다. 풍남문 앞의 남부시장도 매력적이다.

찾아다니는 경로는 주로 이러하다. 승용차는 대성동에 위치한 공영 주차장에 세우고, 셔틀 버스를 타고 한옥거리 입구(오목대 쪽)로 간다. 보통 점심시간이 다 되어 도착하게 되므로 일단은 현대옥에 가서 국밥에 삶아 썬 오징어를 넣어 먹는다. 그 다음에는 전주 향교를 둘러보고, 아직도 다 탐색하지 못한 골목을 돌아다닌다. 시간이 많으면 영화의 거리까지 걸어가서 시간을 보낸다. 가끔은 극장 '조이앤시네마'에서 영화를 보기도 한다. 남부시장의 청년몰은 요즘 빈 점포가 많아서 안타까움을 자아낸다. 청년몰에서 비탈길을 내려가 한국닭집에서 치킨을 사기도 하고.

요즘은 풍년제과(PNB)의 초코파이에 맛을 들였다. 왜 그런 이름이 붙었는지 이해하기 힘든 '붓세'라는 빵도 좋아한다. 도대체 붓세가 뭔가? 아, 프랑스어로 한 입 크기라는 단어(Bouchee)라고 한다.

현대옥 앞의 PNB 카페에서.

현대옥 옆의 꽃마차에서는 무슨 촬영 대회가 열렸는지 어르신(?)들이 잔뜩 모여서 DSLR을 들이대고 있었다. 사진기는 전부 캐논 EOS 5D이고 렌즈는 24-70mm L을 장착하고 있었다. EOS 500D에 겨우 번들 렌즈를 달고 있는 나는 카메라를 목에 걸고 다니기도 부끄러울 정도였으니... 저 카메라에 렌즈 조합이면 신품으로 600만원은 주어야 구입 가능하지 않을까?

전주 향교의 오래 된 은행나무는 아직 물들지 않았지만 은행이 탐스럽게 열려 익어가는 중이다. 이번에는 향교에서 결혼식이 열리고 있었다. 향교에서 열리는 결혼식이니 당연히 전통 혼례라고 생각했는데 일반적인 야외 결혼식이었다. 대성전과 은행나무를 두고 열리는 결혼식이 이채로웠다. 학교 동문인 서봉수 박사가 진잠 향교에서 전통 혼례를 올린다는 소식을 BBS에서 보았던 것이 아마 90년대 중후반?

누군지도 모르는 커플의 결혼식이지만 마음 속으로 축하를 하고...



평생 모델 아내.


PNB 카페에 장식용으로 전시된 6V6 앰프. 커뮤니티에 사진을 올려 물어보니 Bell 3030 모델이라고 한다.
가을은 어디로 실종되고 곧바로 겨울로 점프하는가? 갑작스런 기온 급강하가 놀랍기만 하다.

드디어 휴대폰을 새것으로 바꾸다

지인으로부터 3년 전에 얻은 갤럭시 S6 엣지 플러스가 상태가 매우 나빠졌다. 떨어뜨려서 화면에 금이 간 이후로 갑자기 화면이 나오지 않거나, 터치가 전혀 먹지 않는 일이 생기기 시작하였다. 가장자리가 둥글게 처리되어 붙잡기가 나쁜 것도 휴대폰을 바꾸고 싶다는 이유가 되었다.

나는 한번도 고급 휴대폰의 할부금을 물어 가면서 구입한 적이 없는 것 같다. 비싼 요금제를 일정 기간 필수로 유지하는 것도 싫고, 휴대폰으로 많은 일을 하는 것이 아니므로 좋은 성능이 필요하지도 않다. 게임은 일절 하지 않는다.

중고 단말기를 알아보려다가 삼성의 자급제폰인 갤럭시 M12로 결정하였다. 쿠팡에서 박스 훼손 제품을 169,010원에 팔고 있어서 어제 주문한 뒤 오늘 오후에 받아 보았다. 일요일임에도 배송 약속을 잘 지켜주는 배송 기사가 정말 고맙다.박스 훼손이라고 했지만 상자 겉면에 씰이 잘 붙어 있었다.

갤럭시 휴대폰 사이에서 데이터와 앱을 이동해 주는 Smart Swith라는 앱이 있어서 매우 편하게 설정을 마칠 수 있었다. 새 휴대폰에 USIM 칩을 옮겼을 때, 재부팅을 해  줘야만 통신망에 접속 가능한 것으로 알고 있었는데, 구글을 뒤져보니 비행기 모드로 한번 들어갔다가 나오면 재시작을 하지 않아도 된다고 하여 이대로 따라서 했더니 무사히 SKT로 접속이 되었다.

스마트 스위치 앱을 이용하여 새 단말기로 데이터를 옮기는 중. 왼쪽이 갤럭시 M12이다.

액정 화면의 해상도나 색감은 갤럭시 S6 엣지 플러스에 비하여 좀 못한 것 같다. 카메라는 4구라서 더 나을지도 모른다. 화면만 조금 더 클 뿐 사양을 찾아보니 약간 수준이 낮은 것은 맞다. 지문 인식 센서가 없다는 것도 약간의 불편한 점. 그래도 아무런 조건 없이 신제품의 스마트폰을 20만원 미만에 살 수 있다는 것이 고맙지 않은가? 색상이 좀 이상해서 왜 그런가 했더니 블루라이트 필터('편안하게 화면보기')가 켜져 있어서 그런 것이었다.

조만간 알뜰폰 통신사로 바꾸어서 월 2만원 대의 요금제를 쓰려 한다. 지금도 SKT에서 3만원 대 가장 낮은 요금제를 쓰는 중이다. 월 1.2G의 데이터는 웹 서핑이나 카카오톡 정도나 하는 나에게도 약간은 부족해서 장기 가입 데이터 리필 쿠폰을 이따금 쓰고는 하였다. 리필된 데이터는 그 달에만 유효하다. 데이터를 조금 많이 쓴 달, 28일쯤에 리필을 하려면 아깝다는 생각이 들었다.

아이들도 집을 다 떠나 있고 가족들이 제각각의 통신사를 쓰고 있어서 주요 3사 통신사의 결합 할인의 필요성을 별로 느끼지 않는다. 빵집에 가서 멤버십 할인을 받는 것에도 관심이 없다. 심지어 나는 주유소 할인 카드도 쓰지 않으며, 특별한 일이 있어서 지출을 하는 경우에는 철저하게 체크카드를 쓰는 사람이니까. 물론 신용카드는 생활비 용도로 쓴다. 하지만 결제가 되지 못한 금액을 다음 달로 돌려주겠다는 광고성 안내 전화는 매달 매몰차게 거절한다. 비교적 통장의 잔고 관리를 철저히 한다고나 할까? 월말에 카드 대금과 아파트 관리비 등 비교적 고정적으로 나가는 금액을 확인하여 통장을 채워 두기 때문이다.

그래 보아야 돈을 특별히 모은 것은 아니다. 주식이나 펀드 투자, 혹은 부동산 투자를 하지 않고서는 자산을 늘리기 어려운 현실에서 그냥 가만히 있는 그런 부류의 사람이다. 빚도 재산이라는데, 이런 나는 스스로 '벼락 거지'임을 자처하는 것인가? 참고로 우리 부부에게 부채는 일절 없다.

"우리 부채 없지?"

"[아내] 부채? 이렇게 쌀쌀한데 부채는 왜 찾아? 있어."

"... 아니, 바람 부치는 부채 말고^^"

꿈이 있다면 언젠가는 단독주택에서 살아보고 싶다는 것 정도이다. 내 나이 또래의 사람들은 노후를 위해 월세를 받을 수 있는 건물을 사려고 혈안이라는 말을 들었다. 나도 이래야 하는 것인지...


2021년 10월 15일 금요일

납땜인두에 불을 지피다

최근 당근마켓에서 중고 DSLR 카메라(캐논 EOS 500D)를 구입하였다. 특별한 문제는 없었지만 호환 충전기의 접촉 상태가 좋지 않았다. 전원 어댑터와 충전기를 연결하는 부위를 잘 만지면 전원이 들어오다 말다를 반복하였다. 저가 호환 충전기라서 신뢰도가 높은 부품을 쓰지 않은 것 같다. 커넥터가 부실하면 늘 말썽을 일으킨다.

공구함을 챙겨 와서 간단한 수선을 하기로 했다. 커넥터를 제거하고 전원 어댑터를 납땜으로 직결하기로 한 것이다. 실로 오랜만에 납땜인두를 달구기 시작했다. 기판에 붙어있던 커넥터를 제거하고, 마찬가지로 전원 어댑터 케이블 끝부분을 잘라낸 뒤 이를 기판에 직접 붙여버렸다.

마지막으로 납땜을 한 것이 언제였던가? PCL86 싱글 앰프를 개조한 것이 마지막이었으니(부순 앰프 다시 만들기 - PCL86 싱글 앰프) 두 달 전이다. 질 좋은 수공구, 좋은 부품(특히 커넥터), 가열한 납땜인두를 갖다 대도 쉽게 녹지 않는 좋은 피복으로 둘러싼 양질의 전선... 이런 것들이 자작의 즐거움을 배가한다.

지극히 간단한 작업이라서 실패할 우려도 없고, 직결하는 것이 안전을 위협할 일도 없다. 사실은 비슷한 수준의 저가형 호환 충전기를 하나 구입하려 했었으나 오늘 수선 덕분에 비용을 들이지 않게 되었다. 여분의 배터리만 구입하면 되겠다.

아직 동영상을 거의 찍지 않아서 배터리 소모 걱정은 별로 하지 않는다. 카메라를 들고 하루 종일 외출을 하여 150장 정도의 사진을 찍는 수준으로는 추가 배터리를 들고 다니지 않아도 큰 지장은 없었다.

DSLR에 이은 다음 장난감은 무엇인가? 일단은 요즘 들어 상태가 급격히 나빠진 휴대폰을 새로 바꿔야 한다. 그 다음에는 EF 28-105mm 렌즈와 올림푸스 E-620의 펜타미러 정렬 문제를 해결해야 한다.

오늘 밤에는 볼루미오와 함께 진공관 앰프도 불을 지펴야 되겠다.

왜 갑자기 컴퓨터에서 소리가 나지 않는가 했더니...

얼마 전부터 사무실 컴퓨터의 사운드카드(오디오트랙 MAYA 5.1 MK-II ZEN)에서 소리가 나지 않았다. 출시된지 다소 오랜 시간이 지난 주변장치라서 혹시 윈도우즈 업데이트 이후 이 기기를 더 이상 지원하지 않게 된 것은 아닐까하는 생각을 하였다. 음악을 좋아하는 사람으로서 아쉬운 일이 아닐 수 없다.

점심 시간을 이용하여 이를 슬롯에서 제거하고 마음에는 들지 않지만 컴퓨터의 온보드 사운드 기능을 되살려 보기로 했다. 마지막으로 혹시 내가 사운드 카드의 설정을 잘못 건드린 것은 아닌지 확인을 해 보았다.

트레이를 클릭하여 사운드 설정이 어떻게 되어 있는지 확인해 보았다. 어라? 재생 디바이스가 HMDI 모니터로 맞춰져 있는 것이 아닌가? 얼마 전에 모니터를 하나 더 연결하면서 설정이 그렇게 바뀐 모양이다. 혹은 내가 모니터에서 소리가 나는지 테스트를 하려고 일부러 건드렸는지도 모른다. 이 모니터는 스피커를 내장하지 않았다. 


MAYA 사운드카드가 소리를 재생하도록 설정을 바꾸고, 자작 오디오 앰프를 연결하였다. 얼마만에 듣는 반가운 음악인지 모르겠다. USB 기기의 자동 인식 기능이라는 것이 가끔 사람을 바보로 만드는 것만 같다.

잠시나마 DSLR에 관심을 갖게 되고, 퇴근 후 넷플릭스로 거의 매일 영화를 한 편씩 감상하다보니 음악을 듣는 일에는 약간 소홀해졌다. 오디오 앰프를 만드는 일에도 관심이 멀어졌다. 왜냐하면 현재 갖춘 구성에 별다른 불편함이 없기 때문이다. 취미로 무엇인가를 만드는 사람의 목적은 사실 불편함을 해소하는 것이 아니라 흥미를 추구하려는 것이다. 불편을 느끼지 않으니 더 이상 손을 대지 않는다면, 이는 그 취미를 멀리하려는(혹은 멀리하려는) 신호가 아닐까?

이미 10년도 더 전에 그만 둔 자전거 취미, 먼지만 쌓여가는 악기, 상태를 확인하기 어려운 천체망원경(이건 고장이 날 일이 별로 없는 물건이다)...

이제 와서 새로운 분야의 취미에 관심을 갖게 될 것 같지는 않다. 한동안 잊고 있었던 물건들을 다시 꺼내어 매만지면서 계속 이들 사이를 순환하게 되지 않을까? 따지고 보면 최근 중고 DSLR을 하나 구입하면서 필름 시절을 화려하게 활동하던 카메라와 렌즈를 다시 꺼내어 만지기 시작했으니 말이다.

다만 아쉬운 점이 있다면 집이 좁아서 나의 '장난감'들을 늘어놓을 공간이 마땅치 않다는 것.

바쁜 10월 보내기

10월이 절반이나 지났음에도 불구하고 이제 겨우 세 번째 글을 올린다는 것은 그만큼 마음에 여유가 없다는 뜻이다. 6개월짜리 짧은 수탁과제를 마무리하면서 최종 보고서를 쓰는 일에 10월 한 달을 전부 쓰기로 하였다. 이렇게 사전에 마련한 계획에 의해 점심도 사무실 책상에서 먹어가며 열심히 일을 하고 있고, 주말에는 가족과 함께 할 일이 있어서 나름대로 바쁜 일상을 보내고 있다.

수탁과제를 위한 데이터 수집과 분석은 거의 다 마친 상태이지만 국외 연구 사례를 조사하는 것도 주요 연구 내용의 하나라서 보고서 작성 자체가 연구 활동이 되는 상황이다.

어제부터 영문 자료를 빨리 읽기 위해 구글 번역기를 조금씩 쓰기 시작하였다. 전에는 창에 붙여넣을 수 있는 영단어의 수가 최대 3천 개였는데, 지금은 5천 단어로 늘어났다. 번역의 품질도 예전보다 나아진 것 같다. 구글이 번역한 국문과 원문을 대조하면서 읽으면 작업의 생산성이 매우 빨라진다.

구글 번역의 다중언어 모델 개념도. 연합뉴스(2017년 2월 9일)에서 가져온 그림으로, 구글이 제공했다고 한다.
이렇게 문명의 이기 - 지금은 인공지능이 큰 인기를 얻고 있다 - 에 의존하다보면, 나의 지적 능력이 점차 퇴화하지 않을까? 정말로 외국어 학습이 필요없게 되는 날이 올 것인가?

기계나 인공지능에게 '단순한' 일을 맡기게 되면, 우리는 더 많은 일(또는 창의적인 일?)을 할 수 있을 것이라는 착각에 빠진다. 그러나 조금만 생각을 해 보면 무의미한 고리를 빙글빙글 돌고 있는지도 모른다. 
  • 아이를 어린이집에 맡기기 위해 직장에서 돈을 벌어야 하고, 직장을 다니려면 아이를 돌볼 시간이 없으므로 어린이집을 이용해야 된다.
  • 알콜 의존증에 걸렸다는 사실을 잊기 위해서 술을 마신다.
  • 걱정이 많아서 머리카락이 빠지기 시작했다. 그 걱정은 바로 머리카락이 빠진다는 것이다.
지루한 단순 작업처럼 느껴지는 일들이 내 능력을 알지 못하는 순간에 향상시킨다는 것이 나의 믿음이나. 최소한 신체 및 정신 능력을 정상 상태로 유지하게 해 주는 활동이 될 수도 있다. 시류에 휩쓸려 가지 말고, 정신줄 놓지 말고... 가끔식은 자동차를 세우고 내가 어디로 가고 있는지, 어디쯤 왔는지, 운전에 정신이 팔려서 주변의 아름다운 경치를 놓친 것은 아닌지 생각해 봐야 한다. 더욱 중요한 것은 왜 목적지를 향해 달려가고 있는지를 늘 잊지 말아야 한다.  


2021년 10월 2일 토요일

나의 첫 당근마켓 거래 - 캐논 EOS 500D

이미 오래전부터 올림푸스 E-620이라는 DSLR을 갖고 있지만 뷰파인더의 정렬이 틀어졌음을 알게 된 이상 손이 많이 가게 될 것 같지가 않았다. 필름 카메라를 쓰던 시절에 구입한 몇 개의 캐논 EF 렌즈 때문에 언젠가는 캐논의 중고 DSLR을 구해서 써 봐야 되겠다는 강렬한 욕구가 끓어오르기 시작하였고, 당근마켓 덕분에 생각보다 빠르게 그 욕구를 충족할 수 있었다.

발매 10년 내외의 보급형 모델로서 동영상 촬영이 되는 것으로는 EOS 500D/550D/600D 정도가 있다. 당근마켓에 올라온 것 중에서 번들 줌렌즈를 포함하면서 10만원 미만의 가격으로 나온 것을 찾아서 비교적 빠르게 거래를 마칠 수 있었다.

컴퓨터에 연결을 해 보니 촬영 컷 수는 2650매 정도로 사용량은 매우 적은 편에 속하였다. 외관은 약간 낡기는 했지만 실 사용에는 아무런 문제가 없는 수준이었다. 올림푸스 E-620에 비교해도 크기나 무게 모두 큰 차이가 나지 않았다.

뒤에 놓인 것은 EOS 5 QD(필름 카메리).

EF 28-105 mm 렌즈는 모터가 작동하지 않는다. 아!

EF 50 mm 1:1.8 표준렌즈와 100-300 mm 1:5.6 줌 렌즈는 잘 작동한다. 크롭 팩터를 고려하면 160-480 mm의 수퍼 망원 줌이 되고 만다.

EF 28-105 mm 렌즈를 EOS 500D에 꽂아 보니 모터가 돌지 않았다. 보유 중인 EF 렌즈의 활용을 위해 캐논의 DSLR을 산다는 것은 무의미한 일이 되고 말았다. 중고 풀 프레임 바디를 사지 않은 것이 정말 다행이다. 만약 20만원 미만의 EOS 5D라면 생산 연도나 활용량으로 미루어 볼 때 그 품질이 어떠했겠으며, 당장 사용할 렌즈는 50 mm 표준 하나 뿐이라서 28-105 mm 렌즈를 고치거나 다른 중고 렌즈를 구입하려고 장터를 기웃거렸을지도 모른다. 어느 것이든 돈이 드는 일이다.

결과적으로 EF-S 18-55 mm 1:3.5-5.6 IS와 EF 50 mm 1:1.8 II라는, 캐논의 보급형 크롭 센서 바디 DSLR을 사용하는 사람에게 너무나 '흔하고 상투적'인 렌즈 구성이 되고 말았다.

뷰 파인더에서 느껴지는 시원함이나 포커싱 속도는 올림푸스 E-620보다 나은 것 같다. 어떤 색감의 사진을 만들어 줄 것인가? 실제로 사진을 찍은 뒤 컴퓨터에 올려 보고 나서야 평가를 할 수 있을 것이다. 구글 포토의 자동 보정에 모든 것을 맡기는 사람으로서 각 제조사의 DSLR이 만드는 고유의 색감에 대해서 논할 자격이 부족함은 잘 안다. 그러나 올림푸스 E-620이 만들어 낸 이미지는 그대로 감상하기에는 다소 밋밋하게 느껴진다. 물론 번들로 제공되는 줌렌즈 말고는 써 보질 않았으니 공정한 평가는 아니다.

2021년 10월 7일 업데이트

며칠 동안 사용을 하였더니 사소한 문제점이 눈에 뜨이기 시작하였다. 중고 거래에서 있을 수 있는 일이다.
  • 호환 배터리 충전기의 상태가 별로 좋지 않다. 배터리를 밀착시키는 작은 이빨(?)이 부러진 상태라서 충전 중에 건드리면 접촉이 떨어지는 경우가 있다.
  • 뷰파인더 내부에서 보이는 ISO 표시에 문제가 있다. 천/백 단위를 표시하는 7-segment 표시기의 위쪽 몇 개가 항상 켜져 있는 상태이다. 약간 불편하지만 실제 사용하는데 지장이 될 정도는 아니다.
  • 픽쳐 스타일의 영문 약자가 무슨 효과를 내는 것인지 즉각적으로 떠오르지는 않는다. S는 표준이니 standard일 것이고, P는 인물사진? 아, portrait로구나. 풍경을 의미하는 L은 landscape인가? 올림푸스 E-620의 Art filter/Scene은 이보다 약간 더 친절하다. 나중에 확인한 것이지만 후면 액정 창에 한글로 표시가 된다. 그런데 왜 내 눈에는 금방 뜨이지 않았던가?
  • 9개의 측거점 배열이 생각보다 넓은 편이다. 자동으로 선택하도록 설정하고 대충 찍으면 의도하지 않은 곳에 초점이 맞는 경우가 있다. 올림푸스 E-620에서는 이런 일이 상대적으로 적었다. 심도가 상대적으로 깊은 포서즈 계열이라 그런지도... 아래의 그림을 보면 이미지 면에서 캐논의 측거점이 더 넓은 영역에 펼쳐져 있는 것도 아니다.
Canon EOS 500D


Olympus E-620


2021년 10월 1일 금요일

Synology DS1512+ NAS의 고장난 하드 디스크드라이브 교체하기

하드 디스크 드라이버를 복사하는 방법의 하나는 '복사기'를 이용하는 것이다. 실제로는 평판 스캐너에 올려놓고 '하드 디스크 이미지'를 생성하였다.

이것이 문자 그대로 하드 디스크의 이미지다!
3TB급 HDD 다섯 개를 전부 6TB급으로 업그레이드하기 위해 수년 전에 Synology NAS에 손을 댄 일은 있었다. 오늘 아침, 다른 서버 컴퓨터의 재부팅을 위해 장비를 숨겨(?) 놓은 방에 들어갔더니 규칙적인 비프 음이 울리고 있었다. 컴퓨터의 재부팅 과정에서 오류가 발생한 것으로 생각하여 긴장을 했는데, 그게 아니라 NAS가 경고등과 함께 소리를 내는 것이었다. 

웹 브라우저를 통해 관리 화면으로 진입해 보았다. 2번 디스크가 고장이 났다고 한다. 마침 여유 디스크가 있어서 위에서 보인대로 기념 '스캔'을 한 다음 교체 작업에 들어갔다. Hot swap을 지원하는 장비이므로 고장난 베이에서 디스크를 꺼낸 뒤 바꾸어 다시 꽂으면 그만이다. 

NAS에서 실제로 고장난 개별 디스크를 교체하는 것이 이번이 처음이다.
다시 저장소 관리자로 들어가서 새로 꽂은 디스크가 인식이 되었는지 확인을 한 다음 수리 작업을 진행하였다. 그런데 잠시 뒤 여전히 2번 디스크가 고장 상태라는 메시지가 나오는 것이다.

뭐가 문제일까? 핫 스왑의 장점은 잠시 뒤로 하고 재시작을 하였다. 그러고 나서 다시 수리 작업을 시도하였다. 오! 드디어 '수리 중(패리티 확인 중 ###%)'라는 반가운 상태 메시지가 나온다. 


자동 업데이트가 한동안 되지 않았던 DSM은 다운로드 센터에서 최신판을 받아서 수동 설치를 진행하였다. 연구소의 보안 시스템이 아마도 일반 PC나 컴퓨터가 아닌 장비의 인터넷을 통한 펌웨어 다운로드를 차단한 것이 그 원인이었을 것이다. 디스크 수리와 DSM 업데이트는 동시에 실시할 수 없어서 패리티 확인이 끝날 때까지 한참을 기다려야만 한다. 디스크 교체작업은 아침 10시가 되기 전에 완료하였는데 6시간 이상이 지난 오후 4시 14분 현재 패리티 확인 진도는 32.9%이다. 오늘은 금요일이니 주말을 보내고 와서 DSM 업데이트를 시도해야 되겠다.

이 NAS를 구입한 것이 언제였던가? 바닥에 붙은 고정자산 스티커를 확인해 보았다. 무려 2013년! 장비를 이동하기 위해 잠깐씩 전원을 내리고 먼지를 털어내던 순간을 제외하면 8년 내내 전원이 켜진 상태라고 해도 과언은 아니다. 별 문제를 일으키지 않고 이렇게 오랜 시간을 묵묵히 버텨 준 것이 고맙기도 하다. 10월에는 2009년 구입하여 잠시 현역에서 물러나 있던 서버를 다시 켜는 것이 목표이다. 계산 성능은 지금 기준에 훨씬 못미치는 수준이지만 최소한 백업용 서버 노릇은 할 수 있을테니까.


2021년 9월 30일 목요일

SLR의 펜타미러 정렬 틀어짐에 관해 검색을 해 보다

지난 일요일, 올림푸스 DSLR E-620 뷰파인더의 문제점에 대하여 글을 쓴 일이 있다(링크).  뷰파인더 상에서 피사체를 정중앙에 놓고 사진을 찍었지만 실제로 찍힌 이미지에서는 오른쪽 아래로 심하게 치우치는 현상을 카메라 구입 11년째에 확인했다는 내용이었다.

국외 사이트에서 나와 같은 문제에 대한 질문과 답을 찾았다. 

[DPREVIEW] Viewfinde lost its accuracy.. please help.

...Sounds like the viewfinder pentamirror is out of alignment.

카메라 제조사의 서비스 센터에 가서 조정을 받으라는 것이 답변이었다. 그렇군! 왜 그런 생각을 못했을까? 부품을 교체할 필요는 없을 것이다. 오래 전에 단종이 된 모델이라서 수리를 위한 부품이 있을 것 같지도 않다.

그러나 만약에 조정을 할 수 있는 여지가 없다면? 예를 들어 나사를 돌려서 각도를 조절할 수 있는 것이 아니라 펜타미러 어셈블리가 접안부에 완전히 접착된 상태라면? 별로 생각하고 싶지 않는 상황이다.

올림푸스 카메라의 국내 A/S는 2026년 3월 말에 완전히 종료된다. 서비스점은 용산 한 곳밖에 남지 않았다. 완전히 문을 닫기 전에 가 봐야 되겠다.

2021년 9월 27일 월요일

캐논 EOS 5는 살아나기 어려울 것 같다

EOS 5D가 아니라 1992년 11월 출시된 EOS 5 이야기이다. 135 포맷의 필름을 넣어 사용하는, 구식 SLR 카메라 말이다. 뷰파인더 내에 세로로 배치된 5개의 포커싱 표식 중 원하는 곳을 눈으로 바라보면 알아서 초점을 맞추어 주던 기능이 당시에는 정말 놀라웠었다.

EOS 5 QD + EF 28-105 mm 1:3.5-4.5 USM 렌즈
이 카메라를 마지막으로 쓴 것이 언제인지는 잘 기억이 나지 않는다. 1993년에 종로에서 구입을 하여 나의 주력 카메라가 되었고, 2006년 미국 출장길에서도 열심히 쓴 것이 아마도 마지막 활용 기억인 것 같다. 그 후로는 조금씩 디지털 카메라에서 휴대폰으로 사진 촬영용 도구구의 취향이 바뀌면서 장식장 안에서 고이 잠을 자고 있었다.

필름을 넣고 사진을 찍지 않는다 해도 가끔 셔터를 눌러 보든지 하면서 동작을 시켜 보았다면 훨씬 더 좋은 상태로 보존이 되었을 것이다. 배터리(2CR5)를 일부러 사기도 귀찮아서 그냥 방치한 채로 벌써 몇년이 흘렀을까. 어제는 6V 어댑터에 악어 클립을 연결하여 전원을 넣어 보았다. 오디오 앰프를 만드느라 납땜질을 꽤 하는 편이니 이런 수준의 연결 작업은 일도 아니다. 상부 액정창에 표시는 뜨는데 배터리가 부족하다는 경고가 나타난다. 멀티미터로 찍어 보니 전압은 잘 나오는데 왜 그럴까? 전류량이 부족한가? 요즘은 구하기 어려운 신품 2CR5 배터리를 구입하여 넣으면 과연 렌즈가 '삐리릿' 소리와 함께 힘차게 돌아가면서 '철커덕'하면서 셔터가 작동할 것인가? 혹은 배터리 값만 날리는 일이 되려나?

렌즈를 분리하니 거울면이 뿌옇다. 오랜 시간이 지나면서 먼지가 많이 묻었으리라. 전원 연결 시험에 실패했으니 본체와 렌즈의 작동상태를 전부 알 수 없는 상황이다. 차라리 적당한 가격의 중고 DSLR 바디만을 구입하여 소장 중인 몇 개의 EF 렌즈 꽂아 활용하는 것이 나을 수도 있다. 그러나 곧바로 풀프레임이냐 혹은 크롭 센서(APS-C) 바디냐의 선택 문제에 직면하게 된다. 만약 크롭 센서 바디라면, 광각과 표준을 아우를 EF-S 렌즈를 추가적으로 구입해야 한다. 차라리 초기 세대의 EOS 5D 바디를...?

이래도 돈, 저래도 돈이 든다.

두물머리의 풍경. 올림푸스 E-620으로 촬영.


2021년 9월 26일 일요일

올림푸스 E-620 광학 파인더 시야(율)의 문제 - 왜 한쪽으로 치우쳐서 찍히는가? (뷰파인더 쏠림 현상의 뒤늦은 발견)

올림푸스 DSLR E-620의 광학 파인더 시야율은 약 95%라고 한다. 고급형 카메라에서는 100%에 가까운 시야율을 제공하는 것이 일반적이다. 최근 여행길에 이 카메라를 이용하여 사진을 찍으면서 분명히 피사체를 화면 정가운데에 놓고 촬영을 했음에도 불구하고 결과물에서는 한쪽으로 몰리는 경향이 있음을 발견하였다. 2010년 11월에 구입하여 이 카메라를 열심히 사용하던 당시에는 그저 부족한 시야율 문제라고 생각했던 것 같다. 시야율이 아무리 낮아도 정중앙 영역이 잘 유지되면 괜찮을 것이다. 그러나 한편으로 치우친다면 여간 심각한 문제가 아니다. 사용자 매뉴얼을 놓고 화면에 거의 차게 맞춘 다음 촬영한 결과를 보자. 렌즈는 표준 줌인 Zuiko Digital 14-42 mm 1:3.5-5.6 ED을 사용하였다.

42 mm에서 촬영.

14 mm에서 촬영. 광각렌즈 특유의 왜곡('barrel distortion')이 선명하다.  

뷰파인더에서 분명히 큐브를 정가운데 놓고 촬영을 하였다. 그러나 실제로 찍힌 이미지에서 큐브는 어디에 위치하고 있는가?

이게 뭐람! 최소한 중앙은 맞추어 줘야 하는 것이 아닌가? 보이는 그대로 찍는다는 (D)SLR의 장점이 무색해지는 순간이다. 렌즈를 망원계 줌으로 바꾸어도 결과는 마찬가지이다. 물론 미러를 들어올리고 라이브 뷰 촬영을 하면 이런 문제는 생기지 않는다. 설계의 문제인가, 제조 공정상의 문제인가? 카메라를 떨어뜨려서 펜타미러가 뒤틀린다 해도 이런 일은 벌어지지 않으리라.

만약 충분한 여유를 두지 않고 화면을 꽉 차게 구성을 한다면 오른쪽 아래 구석이 이미지 경계선에 바싹 붙어서 매우 어색한 사진이 될 것임이 자명하다. 그렇다면 매번 촬영 후에 이미지 편집 프로그램에서 크로핑을 해야 된단 말인가? 아니면 뷰파인더에 프레임이 표시되거나 보정되지 않는 레인지파인더 카메라를 쓰는 기분으로 촬영을 해야 하는 것인지... 화면을 구성한 다음 카메라를 살짝 움직여서 찍어야 하는가?

카메라 구입 후 11년째에 재확인한 문제점이라니! 비슷한 문제점에 대한 글을 구글 검색에서 찾기가 어렵다. 올림푸스 E-620 고유의 제조 결함이라면 사용자 커뮤니티에서 난리가 났을 것이다. 운 나쁘게 내 카메라만 그렇다고 봐야 할 것이다. 이 정도의 문제라면 제조 후 검수 과정에서 걸려졌어야 할 터인데 당시에는 시야율이 적어서 그런 줄로만 알았지 중앙에서 이렇게 한참 떨어진 곳을 뷰파인더가 겨냥할 것이라고는 생각도 하지 못했다.


2021년 9월 23일 목요일

2021년 9월에 올림푸스 DSLR E-620을 쓴다는 것은...

디지털 카메라의 시장이 해가 갈수록 쭈그러들고 있다는 것은 누구나 다 아는 사실이다. 레트로 감성에 필름 카메라와 바이닐(LP)이 잠시 인기를 얻고 있지만 산업의 흐름을 바꿀 정도는 되지 못하는 것으로 안다.

스마트폰이 일반인을 위한 카메라 수요를 흡수하면서 소위 전문가용 카메라로 불리던 DSLR은 아예 판형을 풀프레임(과거 필름의 크기와 같은 36 x 24mm)으로 키우거나 혹은 동일한 센서 크기를 갖는 미러리스로 체제를 바꾸어서 진지한 아마추어 계층을 흡수하고 있다. 그래도 과저 필름 DSLR의 전성기에 비교할 바는 아니다. 여전히 글로벌 시장에서는 캐논이 가장 큰 비중을 차지하고 있지만, 풀프레임 미러리스라는 새로운 유행을 불러 일으킨 데에는 소니가 크게 기여한 것 같다.

나도 한때는 꽤 진지하게 사진을 찍고 직접 암실 작업(흑백)을 하던 사람이었다. 그런데 그게 벌써 30년 가까운 과거의 일이 되고 말았다. 거실 장식장에는 이제 작동 상태를 신뢰할 수 없는 카메라 본체와 렌즈가 꽤 많이 잠을 자고 있다. 나 역시 뒷주머니에 꽂고 다니던 휴대폰을 꺼내어 사진을 찍고, 특별한 후처리 없이 구글 포토에 그냥 자동 업로드하는 사진 생활에 익숙해졌기 때문이다.

나의 첫 DSRL은 올림푸스의 E-620이다(PRREWIEW에 실린 정보 링크). 2010년 11월 초에 두 개의 줌렌즈를 포함한 키트를 할인 행사 가격에 구입하여 한동안 잘 사용하였으나, 만 4년째가 되면서 IS(image stabilization) 기능에 문제가 생기면서 점점 쓰지 않게 되었다(관련 글 링크). 그런 일이 벌어진 직후 가족 여행을 위해 펜탁스 Q 10(5-15mm 렌즈킷)을 구입하여 조금 쓰다가 현재와 같이 스마트폰으로만 사진을 찍는 체제로 굳어지게 되었다. E-620은 다른 필름 카메라와 마찬가지로 거실 장식장 속에 갖인 상태로 몇 년을 그대로 지내고 있었다. 

어떤 일이 갑작스런 계기가 되었는지는 잘 기억이 나지 않는다. 이번 추석 연휴를 보내면서 문득 (D)SLR의 감성이 그리워지기 시작했다. 터치 스크린이 아니라 손으로 직접 하드웨어 버튼(또는 다이얼)을 조작하고, 아이 레벨 뷰파인더에 직접 눈을 대고 피사체를 바라보며 셔터 릴리즈 버튼을 누르는 경험을 다시 해 보고 싶었다. 배터리를 충천하여 실로 오랜만에 카메라를 조작해 보았다. 확실히 Ansmann의 호환 배터리는 문제가 있었다. 충분한 시간을 충전하였지만 충전기의 표시등이 녹색으로 바뀌는 것이 아니라 적색 상태에서 깜빡거리는 것을 발견하였다. 그러나 정품 배터리는 제대로 작동을 하였다. 넥 스트랩의 중간에 덧댄 미끄럼 방지용 인조 가죽(?)은 부스러지기 시작하였고, USB 단자를 덮는 고무 마개는 케이블을 꽂기 위해 젖히는 순간 탄성이 다 없어져서 툭 부러져 버렸다.

비록 오랜 세월을 견디면서 일부 외장재는 이렇게 부스러지는 상태였으나, 2014년 11월에는 분명히 문제가 있던 E-620가 마치 잠에서 깨어나듯 조금씩 제 기능을 되찾기 시작하였다. 처음에는 작동이 되다 안되다는 반복하는 것으로 여겨졌으나, 그것은 상태가 나빠진 호환 배터리를 충분히 충전하지 못해서 생긴 문제였던 것 같다. 


어댑터를 통해서 헬리오스 수동 렌즈를 끼워 보았다.

올림푸스한국은 2020년 5월, 국내에서 카메라 사업을 완전히 종료함을 밝힌 바 있다. 사후 서비스는 2026년 3월 31일까지 한시적으로 운영된다. 한국 소비자들이 유난히 센서의 크기에 집착하는 것이었을까? 공식적으로는 한국 시장에서 물러나는 것이지만, 올림푸스가 계속 카메라를 생산할지는 알 수가 없다. 마이크로 포서즈 형식의 카메라 및 호환 렌즈는 앞으로 나온다고 해도 해외 직구를 통해 사는 것 말고는 구입할 방법이 없다. 게다가 E-620은 훨씬 전에 버림받은 '포서즈' 형식이 아니겠는가? 올림푸스의 마이크로 포서즈 시스템 바디 모델 번호 체계는 너무나 헷갈리므로 별도의 문서를 참조하는 것이 낫다. OM-D는 E-M# 형태의 바디에 해당하는 것 같다.

다행스럽게도 어제 하루 동안의 출사에서 배터리 문제를 제외하면 E-620은 별 문제가 없이 작동하는 것처럼 보였다. 2014년 늦가을 당시에는 왜 IS 불량 현상이 빚어졌는지 이해할 수 없을 정도였으니 말이다. 하지만 '가전제품'과 다를 바가 없는 DSLR 본체가 앞으로 얼마나 잘 작동할지는 예측하기 어렵다. 만약 E-620 본체가 정말로 수리가 어려울 정도로 망가진다면, 14-42 mm및 40-150 mm의 두 줌렌즈는 어디에 쓴단 말인가? 예비용으로 적절한 마이크로 포서즈 바디와 렌즈 어댑터(MMF-1/2/3)을 구해 두는 것이 옳을까? 아니면 차라리 캐논의 보급형 DSLR 바디를 사서 역시 놀고 있는 EF 렌즈를 끼워서 쓰는 것이 바람직할까?

추석 연휴 마지막 날에 군산에서 올림푸스 E-620으로 찍은 사진 몇 장을 올려 본다. 휴대폰으로 찍은 세로 사진 혹은 좌우로 긴 사진만 보다가 오랜만에 4:3 비유의 이미지를 보니 정말 느낌이 새롭다. 촬영 정보를 살펴보면 해상도는 휴대폰보다 더 낮다. 최대 해상도인 4032 x 3024 픽셀로 촬영해도 구글 포토의 무제한 업로드 기준인 1,600만 화소에 미치지 못한다.




자작 오디오 앰프가 제자리를 잡으면서 여가 시간에는 영화를 보는 것 말고는 별로 할 일이 없게 되었으므로 자연스럽게 다시 사진(장비)에 관심을 갖게 된 것일까? 다음에 관심을 갖게 될 대상은 혹시 자전거는 아닐까? 몇 가지 되지 않는 분야를 빙글빙글 돌아다니는 것만 같다.

IS 기능이 망가진 것은 확실하다. IS 설정을 하면 빨간 경고 표시가 깜빡거린다.



2021년 9월 17일 금요일

박테리아 분류의 새로운 바람

그동안 Bacillus라는 genus는 최신의 잣대로는 별로 관계가 없는 박테리아까지 한데 품어주는 넉넉한 집 역할을 해 왔었다. 작년이었던가, 유전체학 시대에 걸맞는 분석 결과를 근거로 이렇게 많은 식구를 거느리던 바실러스 가족은 새로운 genus로 하나 둘 독립해 나가가기 시작하였다. 가장 큰 집안이었던 Bacillus subtilisBacillus cereus clade는 변화가 없지만, 나머지 것들은 생소한 genus 명을 갖게 된 것이다.

이러한 혁명적(?) 수준의 변화를 가져다 준 2020년의 주요 논문을 직접 찾아서 읽어보는 것이 올바른 자세임에는 틀림이 없다. 그러나 그것이 성가시다면, 중요한 사실을 요약하여 작성한 가벼운 글을 인터넷에서 찾아서 읽는 것도 나쁘지 않을 것이다. 다음의 글은 찰스 리버 연구소에서 근무하는 Christine Farrance라는 사람이 지난 7월에 게재한 글이다.

Reclassification of Bacteria Happens 

이 글이 실린 Eureka: a dose of science라는 웹사이트는 찰스 리버 연구소의 과학 블로그라고 한다. 블로그를 방문해 보면 히스패닉 문화나 흑인 과학자에게 경의를 표하는 등 과학 그 이상의 정신을 담고 있었다. 별 영양가도 없는 유튜브에서 이상한 뉴스, 해괴한 동영상을 보느니 이런 곳에 올라온 자료를 보는 것이 훨씬 나을 것이다.

새롭게 제안된 분류 체계에서 B. velezensisB. siamensis는 어떻게 자리를 잡고 있는지 아직 상세하게 살펴보지는 못하였다. Farrance가 소개한 논문(Patel and Gupta, Int. J. Syst. Evol. Microbiol. 2020;70:406–438 링크)의 그림을 보면 이들은 전부 B. subtilis clade에 속하므로 그 분류학상 위치가 달라지지는 않을 것이다.

Clostridium botulinum도 더하면 더했지 바실러스보다 나은 상황이 아니다. 내가 몇 가지 분석을 해 보았을 때 genus 수준에서 재분류를 해야 함이 명백하다. 그런데 누군가 이를 논문으로 정식으로 제안을 하여 미생물 분류학계에서 인정을 받는다면, 질병관리청과 같이 이 세균을 법률로써 다루어야 하는 공식 기관에서는 많은 어려움을 겪게 된다. 예를 들어서 보툴리눔이 4개의 새로운 종으로 나뉜다고 가정해 보자. 몇 가지 법에서 정의한 고위험성병원체 체계를 이에 맞추어 고쳐야 한다.

대장균(Escherichia coli)는 세균성 이질을 일으키는 Shigella와 유전체학적 기준으로는 다를 바가 없다. 그러나 이를 만약 한 종으로 합쳐 버린다면? 식품에는 허용하는 대장균의 수가 있지만 내가 알기로 이질균은 있어서는 안된다. 그러나 과학적으로 상당한 근거가 있다 하더라도 그 경계를 허물거나 혹은 새롭게 만드는 것의 파급 효과는 상당히 크다. 미생물 분류의 문제가 과학만으로 끝나는 것이 아니라 국민의 안전 및 보건을 다루는 영역까지 건드린다는 것이 엄연한 사실이다.

'아버지를 아버지라 부르지 못하는' 안타까운 일이 미생물 학계에서도 벌어지고 있다. 

EMBOSS "msbar" 명령어는 좀 이상하다

$ wossname msbar
Find programs by keywords in their short description
SEARCH FOR 'MSBAR'
msbar  Mutate a sequence

EMBOSS의 mabar 명령으로 박테리아 유전체 염기서열에 인위적으로 SNP를 도입한 뒤 몇 가지 계산 작업을 하였다. SNP의 수는 10개에서 200까지 총 20 단위로 하였고, 30번씩을 반복하였다. msbar는 도입한 염기 변이의 위치를 별도로 제공하지는 않는다. 

SNP 검출 프로그램을 사용하여 내가 과연 제대로 일을 하고 있는지 궁금하여 각 변이 유전체에 대하여 최종 점검을 해 보았다. 결과는 너무나 이상하였다. msbar를 통하여 도입한 수에 비하여 약 75%에 불과한 숫자가 나오는 것이 아닌가. Sensitivity나 PPV(positive predictive value) 전부 99%를 훨씬 넘는 프로그램을 썼는데 이럴 수는 없다.

T. Seemann의 snp-dists를 사용하여 원본 유전체와 돌연변이 유전체를 직접 비교해 보았다. insertion/deletion은 전혀 없이 염기 치완 돌연변이만 도입하였으므로, 두 파일을 합쳐 놓으면 aligned FASTA 파일과 다를 이유가 없기 때문이었다. 결과는 역시 이상하게 나왔다. 모든 샘플을 다 건드리지는 않았지만 도입한 변이 수의 80%만이 실제로 존재하는 것으로 확인되었다. 이런 결과를 이용할 수는 없다.

CFSAN SNP Pipeline(PeerJ Computer Science 2015년 논문 링크)에서 성능평가용으로 개발한 SNP Mutator 프로그램을 써 보기로 하였다. 설정할 파라미터가 많지만 무엇보다도 돌연변이를 도입한 위치와 염기 정보를 고스란히 제공하기 때문에 결과물을 믿을 수 있다. 이 프로그램으로만든 돌연변이 유전체를 이용하여 필요한 계산을 하고 확인을 위해 SNP를 검출해 보았다. 놀랍게도 도입한 숫자가 거의 그대로 검출되었다. 결국 성능이 의심스러운 돌연변이 도입 프로그램을 쓰는 바람에 일주일을 허비한 셈이 되었다. 하지만 모든 과정을 일괄적으로 실행하는 스크립트와 결과 분석용 R 코드를 그런대로 잘 정비해 두었기에 SNP Mutator로부터 새로 시작하는 것은 그렇게 어렵지 않았다.

SNP Mutator의 중요한 특징은 다음과 같다.

  • Mutations can be any number of single-base substitutions, insertions, and deletions at randomly chosen positions, uniformly distributed across the genome.
  • Mutations can be chosen from a subset (pool) of all possible positions.
  • Replicates can be partitioned into multiple groups with each group sharing a pool of eligible positions.

의심의 눈초리를 거두지 말아야 한다. 언제 어떤 실수를 할지 모르므로.

2021년 9월 14일 화요일

[하루에 한 R] for loop를 이용하여 데이터프레임 생성하기

Column/Row를 구성하는 벡터가 전부 준비된 상태에서 데이터프레임을 만드는 것은 비교적 쉽다. 기존에 존재하는 데이터프레임을 cbind() 함수로 합치는 것도 마찬가지이다. 그런데 합쳐야 할 벡터가 수십 개 이상 된다고 하자. 이를 일일이 타이핑하기는 곤란하다. 반복문을 쓰지 않고서는 매우 어렵다. 

EMBOSS의 msbar 명령을 이용하여 박테리아 유전체 서열에 염기치환돌연변이를 일정하게 도입하였다. 그 각각이 원본 유전체 서열('ancestor'에 해당)에 대하여 얼마나 멀어졌는지를 Mash로 측정해 보았다. 목표로 하는 돌연변이 수에 대하여 msbar는 총 30회를 실시하였고, 돌연변이의 수는 10, 20, 30..200으로 하였다. 결과물은 전부 하나의 파일(dist.tab)에 저장하였다. 

$ head -n 5 dist.tab 
GCF_000008445.1.010.00.c.fnm	GCF_000008445.1.fna	1.61302e-06	0	9999/10000
GCF_000008445.1.010.01.c.fnm	GCF_000008445.1.fna	4.8398e-06	0	9997/10000
GCF_000008445.1.010.02.c.fnm	GCF_000008445.1.fna	0	0	10000/10000
GCF_000008445.1.010.03.c.fnm	GCF_000008445.1.fna	1.61302e-06	0	9999/10000
GCF_000008445.1.010.04.c.fnm	GCF_000008445.1.fna	9.68178e-06	0	9994/10000

첫번째 컬럼이 돌연변이 유전체 FASTA 파일의 이름이다. fna라는 흔한 확장자를 fnm('m' for mutation)으로 고쳤다. 파일명 중간쯤에 '010'이라는 숫자가 바로 돌연변이 수에 해당한다. 만약 10, 20...으로 표기를 했다면, 100을 넘어가는 결과와 함께 다룰 때 sort에 주의해야 한다. 그래서 약간 귀찮지만 이런 파일명을 쓴 것이다. 

하나의 돌연변이 숫자에는 총 30개의 Mash distance(위 자료에서 세번째 컬럼)가 있다. 이것을 뽑아내어 각기 다른 컬럼으로 만들고자 하는 것이 오늘의 목표이다. 돌연변이의 수는 총 10에서 200까지 10 단위로 증가하므로 20개가 되고, 이것이 목표로 하는 데이터프레임의 전체 컬럼 수가 된다. Row의 수는 30개가 된다.

일반적인 슬라이싱을 통해서 원본 데이터프레임의 일부를 잘라낸 뒤 새 데이터프레임에 한 컬럼씩 붙여 넣는 방법이 있을 것이라 생각했는데 잘 되지 않았다. 검색을 거듭한 결과 리스트를 써야 함을 알게 되었다. 참조했던 웹사이트가 어디였는지는 기억을 하지 못하겠다. do.call() 함수를 쓰는 방법을 잘 알아야 될 것이다.

> header = sprintf(seq(10,200,10), fmt='%03d')
> header
 [1] "010" "020" "030" "040" "050" "060" "070" "080" "090" "100" "110" "120"
[13] "130" "140" "150" "160" "170" "180" "190" "200"
> df = read.table("dist.tab", sep="\t", row.names=1) > datalist = list() > for(i in header) { + pattern = paste(".", i, ".", sep="") + datalist[[i]] = df[grepl(pattern, row.names(df)), 2] + } > df.2 = do.call(cbind, datalist) > View(df.2)

최적화된 R code라고 확신을 할 수는 없다. '.010.' 형태의 패턴을 추출할 때, 앞뒤의 점은 정규표현식에서 임의의 문자 하나에 대응하는 점이 아니라 문자 그대로의 '.'임이 중요한데, 이것이 grepl() 함수에서 정확히 인식되고 있는 것인지를 잘 모르겠다. grep()은 인덱스를 반환하지만 grepl()은 TRUE 또는 FALSE를 반환한다고 한다. 어쨌거나 View(df.2)로 확인을 하면 다음과 같이 내가 의도한 데이터 변환이 이루어졌음을 알 수 있다.

나의 '데이터 주무르기'는 그야말로 마음 내키는 대로이다. 모든 조작을 Perl에서 하던 시절도 있었고, 요즘은 bash script와 awk/sed 등을 적절히 섞어서 쓰는 빈도가 늘어났다. 그러다가도 예외 사항이 별로 없이 매트릭스 형태로 잘 짜여진 데이터 파일을 보면 R에서 작업을 하고 싶어진다. 사용했던 코드를 노트 파일과 컴퓨터 작업 공간에 잘 저장해 두는 것도 좋은 버릇이라고 자평한다.

점점 까다로와지는 공공기관의 전산 보안

주말에 집에서 일을 하기 위해 사무실에서 쓰던 노트북 컴퓨터를 들고 퇴근하였다. 월요일(어제) 외부에서 있을 과제 중간 점검 발표를 준비하기 위해 파워포인트 자료를 마지막으로 점검하려는데 보안 정책에 위배된다면서 와이파이 접속이 차단되는 것이었다. 아, 드디어 이런 날이 오고 말았구나! 집에서 이더넷 케이블을 직접 연결해 보지는 않았다. 와이파이 접속이 안되는 노트북이 무슨 쓸모가 있는가?

컴퓨터 전원을 껐다가 다시 켰더니 이제는 얼굴 인식을 위해 작동하던 내장 카메라도 제 기능을 하지 못하여 PIN을 입력해야만 했다. 노트북이 연구소 전산망 내에 있지 않은 상황이라면 이를 잠재적인 위험 환경으로 간주하고, 입출력이 이루어질 수 있는 주변 기기를 통제하는 보안 강화 모드를 강제하는 것으로 여겨진다. 그것이 이제는 너무나 당연하게 여겨지는 와이파이라 해도 말이다.

연구소 안에서 상용메일 접속이 차단된 것은 꽤 오래 전의 일이다. 아마존웹서비스와 같은 클라우드도 당연히 되지 않는다. USB 매체 사용도 매우 까다로와서 아예 쓰지 않는다. 리눅스를 설치한 컴퓨터는 상황이 약간 낫지만, 이런 사실을 함부로 발설(?)하다가는 그나마도 쓰지 못하게 될까 두렵다. 이러다가 USB 마이크로폰도 작동이 안되는 날이 오는 것은 아닐까? 사무실 데스크탑에 연결한 웹캠은 다행스럽게도 아직 작동을 잘 한다.

공공기관에서 접속하면 안되는 '나쁜' 웹사이트를 국정원에서 직접 관리하는 것이 정말 옳은 일인지 잘 모르겠다.

공공기관의 전산망 보안은 외부의 해킹 시도나 악성 코드 침투를 방지하는 것으로부터 한층 더 강화되어 근무자가 내부의 자료를 외부로 가져가지 못하게 하는 것으로 바뀌어 가는 추세이다. 물론 일반 회사는 이보더 더 강도 높은 보안 정책을 유지한다. 가장 대표적인 것은 문서에 자물쇠를 거는 DRM이 있고(보안 해제 권한은 몇몇 높은 사람들만 갖고 있음), 프린터도 철저하게 통제한다. 휴대폰은 당연히 보안 프로그램이 깔려 있어서 출근을 하여 회사 공간에 들어가면 카메라가 작동되지 않는다.

정부 조직은 내가 근무하는 출연연보다는 불편하고, 일반 기업보다는 약간 느슨한 정책을 쓰는 것으로 알고 있다.

아마도 노트북 컴퓨터의 경우 외부 반출을 위해 공식적으로 거치는 절차가 있을 것이다. 문제는 연구비로 구입한 노트북이든 개인이 구입한 노트북이든 연구소 내에서 전산망에 접속하려면 보안 솔루션을 깔아야 한다는 것이다. 아주 엄격하게 말하자면, 개인 노트북을 연구소에 가져와서 연구소 전산망에 접속하면 안 된다. 회의실 근처에 있는 공개형 와이파이 정도만 써야 한다. 그러나 이것으로는 내부 리눅스 서버에 접속을 할 수 없다. 코로나 시대를 맞아서 재택 근무를 권장하면서도 실제 환경은 이를 따라가지 못한다.

민감한 정보를 다루는 정보 기관이나 민간 기업이 아니라면 약간은 유연한 정책을 실행하면 안 되는 것일까? 모처럼 연구비로 성능이 좋은 노트북을 구입하였는데 외부에서 쓰지 못한다면 여간 안타까운 일이 아니다. 

공식 반출 허가를 받지 않고 노트북을 외부에 너무 들고 다니는 것도 문제가 될 소지는 있다. 아예 집에다 가져다 놓고 가정용(=개인용)으로 쓰거나, 심지어는 퇴직 이후에도 반납을 하지 않는 철면피 같은 사람도 있으니 말이다.

2021년 9월 9일 목요일

정말 마시기 싫은 음료

새벽 4시에 일어나서 벌컥벌컥 들이마시는 쿨프렙 산.정말 먹기 싫은 맛이다. 누군가 평하기를 이온음료에 조미료를 탄 것 같은 시큼하고 느끼한 맛이라고 했는데, 그 말이 딱 맞다. 1리터를 조제해서 1시간 안에 마시고, 이어서 맹물 1리터를 또 1시간 안에. 이 과정을 어제 저녁 일곱 시에도 했고, 새벽 네 시에도 한 차례를 더 해야 한다. 

으아! 이 찝찌름한 액체를 아직 250ml 더 마셔야 한다. 그러고 나서 또 화장실을 들락거리게 될 것이다. 아침에는 일찍 병원 건강검진 센터로 가야 하니 그 사이에 잠을 제대로 자기는 틀렸다.

폴리에틸렌 클리콜과 아스코르빈산을 주성분으로 하는 장세척 용도의 의약품이다. 아마도 엄청난 삼투압에 의햐여 설사를 유발하는 것일 게다. 안전성은 충분히 입증된 의약품이지만, 장에 큰 부담을 주는 일은 아닐까? 장내 미생물 살림터를 홀랑 뒤집어 엎는 일이니 말이다. 

장이 깨끗한 편이라 이제 겨우 생애 두 번째 대장 내시경 검사를 받는다. 최초 검사는 5년 전이었다. 만약 이것을 매년 받으라면? 정말 내키지 않는다. 어차피 의식하 진정(소위 '수면') 내시경이라서 검사 과정 자체는 괴롭지 않은데, 전날 밤부터 당일 새벽까지 의식처럼 치러야 하는 '쿨프렙 대잔치'는 여간 고역이 아니다. 아픔을 유발하는 것은 아니지만 결코 유쾌하지 못한 자극을 통한 괴로움이란...

맹물이 가장 맛있게 느껴질 때는? 격하게 땀을 흘리고 나서 마실 때가 아니다. 쿨프렙을 1리터 마시고 나서 바로 뒤에 맹물을 마실 때이다.

마지막 남은 쿨프렙을 다 마셔버렸다. 뱃속이 다시금 요동을 친다.

2021년 9월 3일 금요일

[독서 기록] 다정한 무관심 및 내 친구 압둘와합을 소개합니다

다정한 무관심(함께 살기 위한 개인주의 연습) 지은이: 한승혜

개인주의는 이기주의와 동의어가 아니다. 개인주의의 반대발이 전체주의라는 것을 떠올린다면 이런 오해는 쉽게 풀릴 것이다. SNS에 짧게 쓴 글들을 정리하여 책으로 묶었다. 나는 블로그를 제외하면 남들이 다 한다는 SNS를 거의 하지 않는 사람이라서, 이런 공간에서 의견을 올리고 공감을 얻어가 토론을 한다는 것 자체를 중요하게 생각하지 않는다. 나에게는 '없는 세상'이라고나 할까... '메타버스'도 그런 것이 아닐까한다. 여담이지만 세상에 가장 쓸모없는 것은 공개 게시판이나 덧들이라고 생각한다. 어쨌거나 이것도 책을 만드는 한 방식이 될 수도 있겠다.

내 친구 압둘와합을 소개합니다(어느 수줍은 국어 교사의 특별한 시리아 친구) 지은이: 김혜진

시리아의 좋은 집안에서 태어난 청년이 자국을 방문했던 한국인 여행자와 겪은 일을 계기로 국교도 없던 한국으로 법학 공부를 하러 내한하게 된다. 그 사이에 시리아에서는 민주화 혁명과 내전이 일어나고 가족들은 난민 신세가 된다. 우연한 기회에 압둘와합을 알게 된 저자는 얼떨결에 시리아를 돕기 위한 단체를 만들게 되고, 어려움 속에서도 난민 어린이들을 가르칠 수 있는 학교까지 설립을 하게 된다. 

중간 중간에 시리아를 소개하기 위해 압둘와합이 직접 쓴 글이 삽입되어 있다. 만약 내가 한국을 소개하는 글을 써 달라는 부탁을 받는다면, 정확하고도 공정한 글을 쓰기 위해 얼마나 고민을 하게 될까? 어쩌면 소심한 나는 부담스럽다고 거절을 할지도 모른다.

현재진행형인 아프가니스탄 사태에 밀려서 시리아에서 일어났던 일에 대해 한국인들이 관심을 덜 갖게 된 것 같다. 한국과 시리아는 여전히 미수교 상태이고, 압둘와합은 한국인으로 귀화하였다.

교양으로 읽는 세계 종교사 지은이: 시마다 히로미, 옮긴이 김성순

이리저리 건너뛰어가면서 읽다가 대여 기간이 다 되어서 부득이하게 손을 놓게 된 책이다. 최근 불교에 대한 관심을 갖게 되고, 이슬람 세계에서 벌어지는 일을 이해해 보고자 빌리게 되었다. 여름날 산사에 들르면 백중절(음력 7월 15일)과 관련한 행사로 분주한 것을 볼 수 있다. 사후세계나 지옥, 윤회와 관련한 개념은 원래 석가모니가 처음 가르침을 시작하던 당시에는 없는 개념이 아니었을까? 삼국시대때 우리나라에 전래된 불교는 중국을 거치면서 원래의 모습과는 다르게 된 것이 아니었을까? 이런 궁금증을 해결해 보려고 책을 읽기 시작했으나 아직 답을 얻지는 못했다.


똑똑한 다중서열정렬(multiple sequence alignment, MSA) 트리밍 도구, ClipKIT

이발소를 연상하게 하는 ClipKIT의 로고부터 살펴보자. 논문은 2020년 PLoS Biology에 "ClipKIT: A multiple sequence alignment trimming software for accurate phylogenomic inference"라는 제목으로 발표되었다.

계통수를 그리려면 Clustal 시리즈의 소프트웨어, 혹은 muscle, mafft, prank 등의 프로그램이 만든 다중서열정렬(MSA) 결과물을 이용해야 한다. MSA 내부에 존재하는 무의미한 gap 등을 처리하는데 보통 'trimAl -automated1'을 즐겨 사용하였다. 문제는 십만 개가 넘어가는 바이러스 게놈의 MSA를 trimAl에 밀어넣으니 도무지 끝이 날 조짐이 보이지 않는 것이었다. 이 소프트웨어는 다중 쓰레드를 지원하지도 않으므로 그냥 기다리는 것 외에는 방법이 없었다.

대안을 찾기 위하여 검색을 거듭한 결과 몇 달 전에 ClipKIT이라는 소프트웨어를 알게 되었다. 트리밍 전략이 매우 단순하고, 상식적인 시간 안에 결과를 내어놓기 때문에 즐겨 사용하게 되었다. 

MSA를 트리밍하려면 각 컬럼(즉 염기 위치)에 갭이 몇 개인지, 서로 다른 염기가 있는지, 혹은 동일한 염기가 있는지 등을 수치화해야 한다. MSA의 품질을 나쁘게 만드는 가장 중요한 요인은 갭이므로(물론 진화적인 의미가 있는 갭도 있겠지만), 이것이 MSA 트리밍 도구에 제공하는 옵션에서 매우 중요한 역할을 한다.

갭과 관련한 수치는 그 정의를 명확하게 이해하는 것이 중요하다. 이것을 제대로 알지 못해서 초창기에 많은 혼란을 겪었다. 예를 들어서 100개의 염기서열을 정렬하였더니 어느 위치에서 15개는 염기가 있고 85개는 갭이 있다고 하자. trimAl에서 사용하는 gap score는 0.15가 된다. 이 프로그램에서 사용하는 gap score의 정의는 얄궂게도 갭이 없는 것들의 비율이다.
Sg = 1.0 - (number of sequences with a gap / n)

정의를 이렇게 해 놓으니 갭이 많을수록 gap score는 작아진다. 상식적으로 생각해도 이해가 잘 안된다. 갭이 많으면 gap score도 크게 나타나는 것이 자연스럽지 않을까? 어쩌면 'score가 커야 좋은 것'이라는 인식에 맞추어서 이렇게 정의를 내렸는지도 모른다. 이를 트리밍에 적용하려면 'trimal -gt 0.190'과 같이 적용한다. 즉, gap score가 최소한 0.19가 되지 않는 컬럼은 MSA에서 잘라(트림)내라는 뜻이다. 100개의 시퀀스 중에서 19개 혹은 그 이상이 염기를 제시하고 있어야 트리밍을 당하지 않는다는 것이다. '-nogaps'는 '-gt 1'과 동등하며, 어느 한 시퀀스라도 갭이 있으면 그 컬럼을 제거한다는 뜻이다. 반대로 '-noallgaps'는 모든 염기서열이 갭으로만 구성된 컬럼을 제거하게 된다.

CipKIT에서는 gappyness라는 지표를 쓴다. gapyness의 정의는 다음과 같다.

Gappyness = number of gaps / entries in alignment

갭이 많으면 gappyness도 커진다. Gap score보다는 직관적으로 이해하기 더 좋은 지표이다. 그리고 gap score + gappyness = 1.0이 됨을 쉽게 알 수 있다. ClipKIT에서 gappyness를 기준으로 트리밍을 하려면 'clipkit -m gappy 0.8'이라고 옵션을 제공하면 된다. 기본 gappyness는 0.9이다. 

정해진 threshold 값을 옵션으로 주지 않고 프로그램이 스스로 결정하게 만들 수도 있다. CipKIT에서는 smart-gap이라는 방법이 이에 해당한다. 이를 사용하면 일정한 값을 주어서 실행한 것보다 트리밍한 뒤 남는 MSA의 길이가 더 길다고 한다.

ClipKIT의 개발자에게 경의를 표하는 바이다.

2021년 9월 2일 목요일

그래도 마우스패드는 필요하다

마이크로소프트 스컬프트 에고노믹 데스크탑 무선 마우스키보드 세트를 구입하여 사용하면서부터 마우스패드가 별로 필요하지 않을 것이라 생각하고 옆에다 밀쳐 두었다. 그런데 전혀 그렇지가 않았다. 책상 위에서 마우스가 움직이는 느낌이 뭔가 서걱거리는 듯 별로 좋지 않았고, 무엇보다도 마우스와 접촉하는 책상 윗면에 자꾸 때가 끼어서 지저분해지는 것이었다. 도대체 이 더러움의 근원은 무엇일까? 유기물, 즉 내 신체에서 떨어져 나오는 그 무엇일까?

인쇄물 더미에 처박혀 있었던 마우스 패드를 다시 찾아다가 바닥에 깔았다. 직물 타입의 부드러운 면 위에서 마우스가 매끄럽게 움직인다.

사랑하는 사람보다 더 오랜 시간을 어루만지는 물건, 그것은 바로 마우스와 키보드이다. 휴대폰? 그럴 수도 있겠다. 

신체의 일부처럼 사용하는 물건이라면 가끔은 사치를 부려도 좋다. 


경제 활력은 성장보다 중요하다

2021년 8월 한달 동안의 블로그 포스팅은 단 10편에 불과하다. 최근 몇 년의 기록을 볼 때 최저 수준이다. 그만큼 마음에 여유가 부족했다는 뜻도 된다. 정보가 넘쳐나는 요즘 현실에 비추어 볼 때 내가 블로그에 글을 몇 편 쓰지 못했다는 것은 전혀 티가 나지 않는 일이다. 

과연 내가 유익한 글을 남기고 있는 것일까? 이것이 정말로 의미있는 행동일까? 차라리 이런 일에 신경을 쓰지 않고 평온한 마음 상태를 유지하는 것이 나 개인에게 더 나은 일은 아닐까?

경향신문에서 상당히 공감이 가는 기고문을 발견하여 그 링크를 남긴다. 송기호 변호사의 글이다.

카카오, 경제 활력 높이고 있나(2021년 9월 1일)

어제 수원에 위치한 산림생명자원연구부에서 있었던 [신산업 육성을 위한 산림미생물 소재 발굴과 산업화 심포지엄]에서 나는 다른 사람이 건드리기 어려운 포괄적이고도 강력한 미생물 관련 특허를 짤막하게 소개한 일이 있다. 정작 비즈니스와는 매우 거리가 먼 나와 같은 사람이 이런 말을 한다는 것은 매우 우스운(?) 일인지도 모른다. 오늘 국가과학기술연구회로부터 이메일을 통해 배포된 소식지에도 연구원 창업을 독려하는 듯한 내용이 하나 가득이었다.


이 건물은 놀랍게도 목조 건물이다.
송기호 변호사의 글에서는 시민들이 꿀벌과 같이 밤낮없이 '빅 데이터'를 만들어 주었지만 소수 기업의 대두주를 한국 최고의 부자로 만들었음을 강조하였다. 중요한 것은 경제가 얼마나 성장했는가를 묻는 것이 아니라 경제의 활력이 높아졌는가에 있다고 하였다. 경제 활력이란 더 많은 시민이 경제활동에 참여할 기회를 갖는 것을 말한다.

독점의 힘은 무섭다. 특허라는 것도 발명의 내용을 공개하는 대신 특허권을 가진 사람에게 일정 기간 동안 독점권을 부여하는 것이다. 그 독점권이라는 것은 물건이나 탄소배출권과 마찬가지로 거래의 대상이기도 하다. 메디톡스와 대웅제약의 보툴리눔 균주 관련 분쟁이 최근 새로운 국면을 맞으면서 과연 기업은 무엇으로 돈을 벌기를 원하는가하는 심오한 문제를 생각해 보기도 하였다.

지금은 잊혀저가는 구글의 회사 설립 모토(라고 알려진) Don't be evil이라는 말이 떠오른다. 

2021년 8월 31일 화요일

'sort -g'의 힘

보통의 숫자와 지수형으로 표현된 숫자가 혼재하는 파일을 정렬하고자 한다. sort -n으로는 잘 되지 않는다. 이러한 경우에 sort -g 명령을 쓰면 된다. 다음의 사례를 보자.

$ cat numbers
0.002
1E-4
0.003
1
3
10
2E-4
3E+2
$ sort -n numbers
0.002
0.003
1
1E-4
2E-4
3
3E+2
10
$ sort -g numbers
1E-4
2E-4
0.002
0.003
1
3
10
3E+2

만약 역순으로 나타나게 하려면 'sort -gr'이라고 명령을 내리면 될 것이다. 매뉴얼에 의하면 '-g'는 일반적인 숫자 값에 따라 비교를 하며, '-b' 옵션을 내포한다고 하였다. '-b' 옵션은 앞부분의 공백을 무시하는 기능을 한다.

bash 환경에서 awk와 같은 '고급' 언어를 쓰지 않아도 sort나 join 등으로 꽤 많은 일을 할 수 있다. cut과 paste도 그러하다. 위에서 다룬 numbers 파일의 숫자를 콤마로 이어붙이는 문자열을 만들어 보자.

$ VAR=$(paste -sd, numbers)
$ echo $VAR
0.002.1E-4.0.003.1.3.10.2E-4.3E+2
$ VAR=$(paste -sd, <(sort -g numbers))
$ echo $VAR
1E-4,2E-4,0.002,0.003,1,3,10,3E+2

여기에서 보였듯이 process substitution을 사용하여 정렬한 숫자를 paste 명령으로 보낼 수 있다. 저수준 유틸리티를 잘 알고 있으면 간단한 자료 파일을 다루기에 아주 편리하다.


2021년 8월 30일 월요일

바쁜 일상 - 셀 스크립팅

100줄 조금 넘는 shell script를 짜느라 이틀을 꼬박 투자하고 있다. 일요일이었던 어제는 노트북 컴퓨터에서 쭈그리고 앉아서 작업을 했더니 목덜미가 뻐근하다. 스크립트 중간에 here document를 써서 R code를 삽입하고, 이를 데이터에 맞추어 실행 순간에 R script로 출력하게 만든 다음 실행하는, 나로서는 꽤 '고급' 테크닉을 구사해 보았다.

80:20의 법칙은 거의 모든 일상 생활에서 적용할 수 있다. 80%의 기능을 구현하도록 스크립트를 만드는데 20%의 시간이 든다면, 나머지 20%를 완성하는 데에는 80%의 시간이 든다. 미처 몰랐던 오류를 고친다거나, 항상 일어나는 예외 상황을 처리하기 위한 것 들이 여기에 해당한다. 

Pandas를 잘 쓴다면 R을 들락거리는 불편함이 없이 원하는 기능을 구현할 수도 있을 것이다. 나의 행동 반경을 제약하는 것은 바로 파이썬을 잘 모른다는 것. 웬만한 것은 Perl, awk, sed, R 등으로 처리하는 수준이다.

파이썬 환경을 그렇게 많이 설치하고, 이것으로 만들어진 유틸리티를 그렇게 자주 쓰면서 정작 파이썬 자체를 이해하고 직접 스크립트를 짜 보려는 노력을 하지 않는 자세는 분명히 개선의 여지가 있는데... 이렇게 게으름을 피다가 결국 '치매 예방을 위한 파이썬 강좌' 같은 것을 듣는 날이 오지 않을까?

Bash의 인수 파싱 방법을 친절하게 설명한 글이 있어서 인용하고자 한다. 앞부분에서는 getopt(s)를 사용하는 비교적 단순한 방법을, 뒷부분에서는 별도의 라이브러리를 쓰지 않고 모든 것을 구현하는 방법, 즉  단순한 flag과 인수를 동반하는 flag을 구별하고 예외 상황은 물론 , 게다가 positional argument를 동시에 처리할 수 있다.

Bash: Argument Parsing

2021년 8월 24일 화요일

Perl 스크립트 작성의 나쁜 습관을 버려야 하는데..

아직도 use strict/use warnings를 전혀 쓰지 않는 나쁜 버릇이 있다. 20년 전에 대충 독학으로 익힌 펄 실력이니 오죽하겠는가.

[Perl Maven] 언제나 use strict!

strict는 펄에서 사용하는 'pragma'이다. 이것은 컴퍼일러(펄에서는 인터프리터라고 하는 것이 더욱 정확할 것이다)에게 어떤 일을 하라고 지시하는 전처리명령이라고 한다. strict pragma는 비정상적인 동작을 유발하거나 디버그하기 어려운 상황을 에러로 전환해 준다. 다음의 코드를 보자.

$ cat test.pl
#!/usr/bin/perl
#
use strict;

$var = 1;
my $VAR = 2;
$ perl test.pl
Global symbol "$var" requires explicit package name (did you forget to declare "my $var"?) at test.pl line 5.
Execution of test.pl aborted due to compilation errors.

만약 use strict를 선언하지 않았다면 이 코드를 실행할 때 아무런 에러가 발생하지 않았을 것이다. Package name을 명시적으로 선언하지 않았다는 에러 메시지가 나온다. 패키지라고 하면 코드나 라이브러리의 '묶음' 또는 '배포 단위'를 떠올리기 쉬운데, 여기에서는 그것을 의미하는 것이 아니다.

변수의 활동 영역은 네임스페이스이고, 이들 사이의 전환을 가능하게 하는 키워드가 패키지라고 이해하면 될까? 패키지 키워드를 사용하지 않았다면, 기본 네임스페이스는 main이다. 

$ cat test.pl
#!/usr/bin/perl
use strict;

$main::x = 42;
my $x = 13;
print "$x\n";
print "$main::x\n";
$ perl test.pl
13
42

위의 사례에서 $main::x(package variable)과 $x(lexical variable)은 완전히 다르다.

쓰기 위해서 안전하게 파일을 여는 방법에도 익숙해져야 한다.

[Modern Perl Programming] Thre-arg open() (Migrating to Modern Perl)

펄 5.010 이후부터 등장한 say() 함수도 종종 써야 되겠고... Modern Perl 문서를 프린트해 놓은 것이 있는데 어디에 있는지를 모르겠다. 인터넷에서 PDF 파일을 찾아서 다운로드해 두었다. O'Reilly에서 발간한 펄 관련 서적의 PDF가 종종 인터넷에 그대로 공개된 사연은 무엇일까? 이 회사의 Open Books Project 웹사이트를 가 보아도 펄 관련 서적은 보이지 않는다. 아무튼 고마운 일이다. 공개 라이선스의 여러 형태에 대하여 공부할 필요성을 느낀다. 

좋은 펄 코딩 습관을 들이기로 마음을 먹은 후 처음 작성한 짧은 코드는 POCP(percentage of conserved sequences)를 계산하는 쉘 스크립트의 wrapper였다. 그런데 shell의 올바른 국문 표기는 '쉘'인가, 혹은 '셀'인가? 검색 결과는 후자가 맞다고 한다.

POCP는 미생물 균주가 동일 속(genus)에 속하는지를 판별하는 지표로 제안된 것이다. 이에 대해서는 2019년에 블로그에 글을 쓴 일이 있다(링크). 원본 스크립트인 POCP.sh는 오직 한 쌍의 유전체(정확하게는 아미노산 서열 집합)만을 받아들인다. 따라서 10개 정도의 데이터를 처리하려면 두 유전체의 가능한 모든 조합을 만들어서 POCP.sh에 제공해야 된다.

하나의 디렉토리에 모든 유전체 파일을 복사해 넣은 다음,  펄 모듈 Math::Combinatorics을 사용하여 모든 조합을 구성한 다음 POCP.sh에게 인수로 제공하는 간단한 펄 스크립트를 만들어 보았다. 현대적인 펄 코드 작성 스타일을 따르기 위해 노력을 한 것은 물론이다.

좀 있어 보이는 펄 코드를 짜려면 명령행 인수를 잘 처리해야 하고, 도움말 메시지를 보여주는 친절도 베풀어야 한다. 이에 대해서는 다음 웹사이트를 참고하도록 하자. 대단히 간결하면서도 유용하다.

[Perl.com] Professional scripts are a snag with Getopt::Long

2021년 8월 21일 토요일

[독서 기록] 가이 스탠딩 - 불로소득 자본주의

휴가와 밀린 업무 처리 등으로 거의 열흘만에 글을 쓴다. 도서관에서 대여한 책을 시간적인 여유를 갖고 모두 읽기 위해 기간 연장까지 했지만 1.5권을 읽는 것에 그쳤다. 이번에 읽는 내내 큰 울림과 충격을 준 책은 가이 스탠딩(Guy Standing)의 『불로소득 자본주의』였다. 부제는 '부패한 자본은 어떻게 민주주의를 파괴하는가'이고 원제는 'The Corruption of Capitalism'이다.


여담: 도서관에서 소장한 책에서는 디자인의 요소를 일부 상실한 상태로 만날 수밖에 없다. 겉표지(보통은 '자켓'으로 부른다고 한다)와 띠지를 전부 제거한 뒤에 서가에 꽂히기 때문이다. 그나마 책날개에 인쇄된 저자 및 옮긴이 소개 문구는 그대로 오려서 표지 안쪽에 붙여 놓는다. 책 디자인과 관련된 용어는 책을 알아보아요: 1. 책의 외부명칭에서 참조하면 된다.

가이 스탠딩은 프레카리아트라는 새로운 계급의 개념을 체계화한 사람이다. 

프레카리아트는 ‘불안정한(precarious)’과 ‘프롤레 타리아트(proletariat)’를 합성한 말이다. 출처: 노동자 연대

57쪽을 보면 세계화, 신자유주의 정책, 제도 변화와 기술혁명이 서로 결합하여 새로운 글로벌 계급구조를 창출하게 되었다.

  • 극소수의 부호 계급
  • 엘리트 계급
  • 샐러리아드(salariat):  상대적으로 안정된 봉급 생활자 계급
  • 프로피시언(profician): 프리랜서 전문가 그룹
  • 프롤레타리아: 핵심 노동 계급. 여기부터 아래 계급은 불로 소득이 전혀 없다.
  • 프레카리아트
  • 룸펜-프레카리아트

마침 모 연구소에서 심포지엄 발표자로 초청을 받아서 미생물과 관련된 발명을 인정받기 위한 특허에 관한 내용을 아주 조금 다루려던 참이었다. 청구항을 포괄적으로 작성하여 출원인이 더 많은 이익을 확보하게 된 '바람직한(?)' 사례가 슬라이드 한 장에 담겼다. 그런데 이 책에서 저자는, 특허권으로 창출한 시장 지배력을 불로소득의 가장 중요한 원천으로 보았다(84쪽). 

인간의 모든 행동의 근원을 경제적 동기에서 기인한 것으로 보고, 이를 극대화할 수 있는 사람을 추앙하고, 돈이 돈을 벌게 하는 이른바 '불로소득 자본주의'가 피할 수 없는 사회의 발전 방향이라고들 생각한다. 그러나 가이 스탠딩은 이것을 자본주의의 부패로 보았다.

우리에게는 지금 케인스가 말한 '불로소득자의 안락사'가 필요하다.(490쪽)

그가 내세우는 바람직한 사회는 기본소득을 바탕으로 하는 다단계 사회보호제도를 구축하는 것이다. 대통령 선거에 후보로 나오겠다고 선언한 어느 인사가 '국민의 삶을 왜 정부가 책임집니까?'라고 발언을 하여 큰 물의를 빚었던 것을 우리는 다 알고 있다. 아무리 일을 해도 생활이 나아지지 않는 하층 계급의 삶은, 그들이 노력을 덜 하고 자격을 갖추지 못해서 자초한 당연한 귀결이라고 말할 수 있는가? 1980년대 이후 생산성이 증가하였음에도 불구하고 실질 임금이나 세수는 증가하지 않았다고 한다. 저임금 일자리만 늘어난 때문이다. 휴대폰 하나만 갖추고 플랫폼에 종속되어 고된 노동 끝에 세상을 달리하는 노동자를 얼마나 많이 보았는가?

 두 번째 책인 임철의 지음 『누가 말끝마다 권력을 입에 담는가』(표지에 새겨진 글: 말 함부로 하지 마라. 말은 문자로 남는 글이 그렇듯 바람에 뜻을 새겨 영속한다)는 처음에 잠시 몰입하여 읽었다가 뒷심 부족으로 다 읽지 못하였다. 저자는 가짜 타동사인 '한자어+시키다'를 사례로 들어 잘못된 언어 생활을 통해 정신까지도 병들게 되는 현실을 고발하였다. 상당히 수긍이 가는 내용이었다. 나도 불편한 국어현실에 대하여 나름대로 생각해 둔 바 있어서 언젠가는 별도의 글로 쓰고자 한다. 나는 특히 최근 겪고 있는 급격한 억양 또는 발음의 변화를 더욱 심각하게 생각한다.



2021년 8월 11일 수요일

[R] ANI dataframe을 뒤집으면 매트릭스가 되지만...

흥미로운 산수 하나.

> class(ani)
[1] "data.frame"
> class(t(ani))
[1] "matrix"
> class((ani + t(ani))/2)
[1] "data.frame"

숫자로만 구성된 데이터프레임을 t() 함수로 뒤집으면 매트릭스가 된다. 그러나 이것을 원본과 더하여 평균을 내면 데이터프레임이 된다. 

이런 해괴한 연산이 왜 필요한가? ANI matrix를 다룰 때, 그 값이 대각선에 대하여 대칭이 되도록 만들기 위해서이다. 대각선이 전부 '1'이면 컬럼과 로(row; '로우'라고 쓰고 싶은 유혹이...)의 라벨은 동일한 순서임을 직관적으로 알 수 있다. 그러나 실제 값은 대각선에 대하여 대칭이 아닐 수도 있다. query와 subject를 어떻게 두느냐에 따라서 blast 혹은 nucmer의 값이 약간 다르게 나올 수 있으니 말이다. 따라서 평균치를 구하는 것이 안전하다. 이렇게 만든 데이터프레임의 실제 값은 대각선에 대하여 대칭을 이룬다.

데이터 m이 매트릭스임에도 불구하고 특정 row를 반환하기 위해 m["A"]를 입력하는 실수를 저지른다. 중고생 시절에는 영문법이 싫었는데 나이가 들어서는 R문법 익히기가 여간 어려운 것이 아니다. 마치 율법학자가 된 느낌이랄까...

2021년 8월 10일 화요일

12DT8 쌍삼극관의 용도 찾기

엊그제 개조를 마친 PCL86 싱글 앰프는 파워가 예전보다 더 크고, 험도 적어진 것 같다. 그러면 다 잘 된 것이 아니냐고 생각할 수도 있다. 소리는 큰데, 듣기에 약간 거북하고 부담스러움도 느껴진다. 한 마디로 표현하자면 소리가는 크지만 거칠다고나 할까? '까실까실한 소리'라고도 표현할 수 있다. 그동안 사용해 온 진공관 앰프가 대부분 싱글이었지만 부귀환 또는 UL 접속을 해서 왜곡을 억눌렀기에 그렇게 거칠게 느껴지지 않았던 것 같다. 이번에 만든 PCL86 싱글 앰프에는 부귀환을 걸지 않은 아주 단순한 타입이다.

실용오디오의 오디오Q&A 게시판에 진공관앰프는 싱글이 PP보다 음질이 우수하다는 것과 삼극관이 5극관보다 좋다는 것이 사실인지요?라는 질문이 있다. 이에 대한 황보석 님의 댓글은 고개를 끄덕거리게 한다.

싱글앰프가 우수하다는 주장에는 거의 언제나 "현의 까슬까슬한 소리"라는 말이 들어가는데, 그 소리는 사실상 저역과 고역이 심하게 찌그러지는 소리입니다.

그건 그렇다 치고, 과거 내 PCL86 앰프에서 쓰이던 12DT8 쌍삼극관이 일자리를 잃었다. 이것 어디에 활용한다. 혹시 43 싱글 앰프의 드라이브단에 쓰이는 6N2P와 바꾸어 보면 어떻까? 

'NEC'라는 마킹이 선명하다. PCL86 앰프에서는 소켓 고정 방향이 달라서 이런 글씨가 있다는 것을 그다지 인식하지 못하고 있었다.

이 앰프에서는 24V 직류 어댑터가 43 오극관의 히터에 전원을 가하는 동시에 DC-DC 스텝다운 컨버터를 통해서 6.3V로 바뀌어 6N2P로 연결된다. 드라이버 하나만 있으면 컨버터의 출력 전압을 간단히 올릴 수 있다. 

12.6이라는 숫자가 선명하다.
드라이브단에 쓰인 진공관 교체의 효과는 매우 확실하였다. 전에는 울트라리니어 접속 상태로는 소리가 너무 작아서 불만이었는데 - 오극관 접속으로 해도 책상 위에서 가까이 들을 때에나 적당할 수준이었지만 - 6N2P를 12DT8로 바꾸니 한결 음량이 커졌다. 그렇다고 하여 음색이 거칠어 지지도 않았다. 큰 스피커에 연결하고 몇 미터 떨어진 곳에서 침대에 길게 누워 듣기에도 충분한 크기의 소리가 나온다.

데이터 시트에 나온 수치나 특성 곡선을 통해서 객관적으로 확인한 것은 아니지만, 내 귀가 더 낫다고 느낀다면 그 느낌을 따라서 행동하면 될 것이다. 다소 성급하게 앰프를 해체하고 다시 만드는 만행(?)을 저질렀으나 그 결과로 얻은 것이 더 많았다. 앞으로 오디오 기기 '자작 놀이'를 해 나가는 방식과 마음가짐에 대해서도 뭔가 확실한 기준을 만들었다는 자평을 해 본다.

약간의 혼란한 시기를 거쳐서 43 및 PCL86(=14GW8) 싱글 앰프는 전부 쓸 만한 상태가 되었다.


2021년 8월 8일 일요일

부순 앰프 다시 만들기 - PCL86 싱글 앰프

인터넷에서 구한 ECL86/PCL86 싱글 앰프용 회로도(diyAudio 링크; tubman813의 포스팅 - 로그인을 해야 첨부한 회로도 이미지 파일을 볼 수 있음)를 참조하여 며칠에 걸쳐 실체 배선도를 그렸다. 상판에 이미 진공관 소켓 고정용 구멍이 뚫려 있어서 고정 방향을 바꿀 수가 없었다. 이 앰프를 STC(super triode connection) 싱글 앰프로 만들어 주었던 제작자는 소켓 주변에 러그 단자를 전혀 쓰지 않고도 아주 간결하고 아름다운 부품 배치를 하였었다. 나는 진공관 하나에 대하여 5핀 러그 단자를 하나씩 세우는 배선 계획을 세웠는데, 소켓을 고정하는 각도가 정해진 상황에서는 최적의 실체 배선도를 그리기가 참으로 어려웠다. 그렸다가 고치기를 몇 번이나 반복했는지 모르겠다. 

PCL86 싱글 앰프의 배선도
여기에 보인 그림과 같이 계획한대로 일이 흘러가지는 않았다. 신호 입력 경로에 위치한 0.22uF 커플링 캐패시터는 부품 구입을 빼먹은 터라 과감하게 생략하였고, 캐소드 저항은 기존에 장착되어 있는 것을 그대로 쓰느라 180R에서 220R로 바뀌었다. B전압도 제작 완료 후 실제 측정해 보면 260V에 가깝게 나온다.

저항을 전부 2와트급으로 마련했더니 리드가 두꺼워서 단자 구멍을 통과한 다음 한 두 차례 둘러 감는 일을 제대로 하지 못했다. 게다가 다른 부품을 다 납땜한 상태에서 7번 단자(5극관 캐소드 + 서프레서 그리드)에 부품을 연결하려고 보니 인두 팁이 들어갈 공간이 잘 나오지 않는다. 아, 이걸 히터 배선과 더불어 가장 먼저 연결하는 건데... 원본 회로도에는 저항의 와트 수는 나오지 않는다. 비슷한 앰프인 'Piccolo'(원본 글은 사라지고 인터넷에는 회로도가 유물처럼 돌아다님)에서 전부 2W 저항을 사용했기에 이걸 그대로 따라서 했는데 다소 과하다는 생각이 든다.

이전 제작자가 상당히 큰 전력을 감당할 수 있는 캐소드 저항과 바이패스 캐패시터를 별도의 위치에 설치해 두었기에 이를 그대로 사용하되 전선을 통해서 7번 단자에 연결하도록 만든 것이 그나마 다행이었다. 만약 부품을 소켓에 직접 고정할 생각이었다면 자리가 나지 않아서 정말 난감했을 것이다. 앞으로 같은 앰프를 한번 더 만든다면 그때는 오늘의 시행착오를 발판으로 삼아 매우 수월하고도 아름다운 배선을 하게 될 것이다. 언제가 될지는 모르지만.

Point-to-point wiring이 이렇게 힘들구나! 만약 푸시풀 앰프를 이런 방식으로 만들려고 한다면 아마도 며칠이고 씨름을 하다가 지쳐 쓰러졌을지도 모른다. 여담이지만 나는 앰프 자작의 한 방법으로 일컬러지는 하드 와이어링(hard wiring)이란 표현을 별로 좋아하지 않는다. 하드 와이어링은 물리적인 배선을 실제로 했다는 뜻이고, 이것의 반대 개념이라면 무선을 통한 접속 또는 프로그래밍으로 구현된 소프트 와이어링, 또는 커넥터를 이용한 접속 등을 떠올릴 수 있다. 우리가 앰프를 만드는 재래식 방법으로 여기는 '하드 와이어링'은 전선 피복을 벗겨서 부품 다리를 감은 뒤 납땜으로 연결하는 방법을 뜻하는데, 내가 조사한 것에 따르면 영미권에서는 이를 point-to-point 와이어링이라고 부르는 것 같다. 

배선을 마무리하고 소스 기기와 전원을 넣었다. 히터는 빨갛게 달아 오르는데 소리가 전혀 나지 않았다. 멀티미터로 그라운드와 플레이트 사이에 걸리는 전압을 측정해 보았다. 전혀 전압이 잡히지 않는다. 이게 무슨 일? 이건 필시 내가 만들지 않은 구역에서 문제가 있다는 뜻이다. 그 원인은 전혀 상상하지 못한 곳에 있었다. 앰프의 중간을 가로지르는 굵은 그라운드 동선과 전원회로의 그라운드가 전기적으로 도통된 상태가 아니었다. 당연히 전선을 통해 연결되어 있을 것으로 생각하고 대수롭게 생각하지 않았는데, 아무리 살펴 보아도 연결된 곳이 없었다.

어째서 이럴 수가 있나? 정류부의 그라운드는 러그 단자의 고정용 핀에서 끝나 있었다. 아니, 그러면 상판 전체를 그라운드로 쓰고 있었단 말인가? 이전 제작자가 만든 회로를 걷어낼 때, 진공관 소켓 하나의 본체에 전선이 납땜이 되어 있던 것을 기억한다. 생각해보니 소켓과 상판이 닿는 곳에 납땜을 한 것으로 생각된다. 그리고 여기서여 인출된 선이 그라운드용 동선으로 연결되었던 것 같다.

그렇다면 상판 전체를 그라운드로 썼었다는 이야기가 된다. 이건 별로 바람직하지 않은 구성이다. 잔도성 상판을 접지에 연결하는 것은 안전이나 잡음 방지를 위해 중요하지만, 이를 회로 전체의 그라운드로 삼아서 모든 전류가 되돌아가는 길로 쓰는 것은 썩 좋지는 않은 설계라고 생각된다.

한 걸음 더 나아가자면, 이 앰프는 무접지 전원 케이블을 사용하고 있다. 접지가 부착된 전원 케이블을 사용하고, 섀시는 전원 소켓의 접지에 연결하는 것이 올바른 방법이라 생각된다.

회로의 그라운드를 제대로 연결한 다음 다시 작동 테스트를 실시하였다. 비로소 소리를 들을 수 있었다. 

상판 앞쪽에는 구멍을 뚫으려다 실패한 상처만 남았다. 상판의 재질은 아마도 페인트를 입한 스테인레스 스틸이 아니었을까?

중간을 가로지르는 그라운드 동선에 아래쪽으로 납땜된 부품부터가 이번에 새로 만들어 넣은 영역이다. 라이터가 없어서 수축튜브를 제대로 마무리하지도 못했다. 바깥쪽 소켓은 이전에 쓰던 것을 그냥 끼워 넣은 상태이다.
이전에 만들어진 상태에 대한 나의 관찰과 해석이 잘못되었을 수도 있다. 그러나 중요한 것은 이제부터는 내가 이해하고 통제할 수 있는 상태로 앰프를 다시 만들어 놓았다는 점이다. 개작 전의 잡음 원인은 앞으로 영영 알 수 없게 되었다. 좌우 채널의 진공관을 바꾸어 끼워도 여전히 잡으미 한쪽에서 났다는 것은, 오늘 발견한 다소 납득이 되지 않는 접지 방식, 즉 어느 하나의 초단관(12DT8) 소켓 본체와 상판 결합 부위에 납땜을 하여 그라운드를 인출한 곳에서 접촉 불량 등의 상황이 발생한 것에 원인이 있는지도 모른다.

유리관 하나에 3극관과 5극관이 함께 들어 있으니 단 두 알이면 스테레오 앰프를 만들 수 있다는 것이 복합관의 장점이다. 내가 만든 싱글 앰프의 소리는 어떠한가? 전원을 넣는 순간 들리기 시작하는 험은 예전보다는 나은 것 같다. 이번에는 NFB도 걸지 않았으니 싱글 특유의 까실까실함이 더 크게 느껴지는 것 같다. 어차피 이전 앰프와 이번 개작 앰프의 소리를 객관적으로 비교할 수는 없다.

아직도 PCL86 관은 몇 개가 남아 있다. 이번에 개작을 하면서 새 관을 쓰지 않았기 때문이다. 진공관 앰프를 처음 장만하면서 언젠가는 필요할 것으로 생각하여 교체용 관을 마련하고 싶은 생각이 드는 것은 당연한 심리이지만, 7년이 지난 지금 생각해 보니 그럴 필요가 전혀 없었다고 생각한다. 가격은 약간 올랐어도 PCL86은 여전히 구할 수 있기 때문이다. 괜히 여분의 관을 써서 뭔가 만들어야 한다는 강박 관념에 시달리기만 한다. 예비용으로 이베이에서 한꺼번에 10개나 샀다가 처분했던 부끄러운 과거가 생각난다. 그리고 이번 개작을 하는 과정에서 여분의 관이 있다는 사실은 전혀 동기가 되지 못했다.


앞으로의 계획은 단순하다. 6LQ8(SE & PP)과 PCL86(SE)이나 유지 보수하는 수준에서 만족하련다. 어차피 거실의 주력 앰프는 인터M R150PLUS가 자리를 잡았으니... 43 SE 앰프는? 글쎄, 잘 모르겠다. 6P1 SE 앰프는? 이미 이 세상 물건이 아니다.

갖고 있는 여분의 부품을 이용해서 뭔가 해야 된다는 강박을 벗어나는 것이 무엇보다 중요하다.



2021년 8월 6일 금요일

반가운 COG 2020

COG(Clusters of Orthologous Groups)는 미생물 유전체를 다루는 사람들에게는 매우 잘 알려진 데이터베이스이자 분석 도구이다. 오리지널 페이퍼가 1997년에 나왔으니(링크) 이제는 고전이 된 '지식'이라고 보아도 무방할 것이다. 2014년에 마지막 업데이트가 된 이후로 거의 신경을 쓰지 않고 있었다. 왜냐하면 매우 편리한 유전체 주석화 도구(RAST server, Prokka or PGAP)이 있어서 특별히 진화적 관점에서 각 유전자를 살펴볼 것이 아니라면 COG 체계를 다시 열어볼 필요가 없었기 때문이다. Protein set이 준비되어 있을 때 각각에 대하여 COG를 할당하는 소프트웨어가 그렇게 친절하지 않다는 것도 한 원인이 되었다. 웹사이트에다 단백질 세트를 밀어 넣으면 알아서 계산을 해주는 방식이 아니기 때문이다.

COG 개발자들은 방대한 박테리아의 유전체 자료를 다루면서 각 단백질 패밀리의 구조와 기능, 진화적 관련성, 이들 단백질이 관여하는 대사 기능 등에 대해서 얼마나 많은 지식을 알고 있을까? 항상 시급한 과제에 매달려서 각 종에 대한 단편적인 지식만을 쌓고 있는 나는 이런 연구자들이 정말 부럽다. 얼마 되지 않는 목초지(과제, 예산, 탑-다운 방식으로 떨어지는 키워드...)가 황폐해져서 맨땅을 드러내면 양떼를 몰고 다른 땅을 찾아 떠도는 유목민과 같은 신세가 바로 한국 과학자들의 처지가 아닐까? 유목민이 부러운 것은 무엇이 있을까? 자유? 

식품의약품안전평가원에서 발간한 『건강기능식품 기능성 원료 프로바이오틱 안전성 평가 가이드(민원인 안내서)』(2021년 6월) PDF를 보면 3쪽에 'General Report for Genome Sequence Analysis'가 나온다. 여기에서는 각 유전자의 기능을 COG 체계에 맞추어 집계한 표 사례를 볼 수 있다. 와우, 언제적 COG란 말인가? 아마도 시퀀싱 raw data 생산에서 조립, polishing, genome annotation까지 결과를 만들어 주는 서비스 업체의 보고서를 그냥 갖다 붙인 것은 아닐까하는 생각이 든다.

혹시 COG 할당 소프트웨어(COGcognitor, COGlse, COCmakehash, COGreadblast & COGtriangles)가 좀 더 편리한 것으로 바뀌었는지 궁금하여 웹을 검색해 보니 2021년 Nucleic Acids Research Database issue에 후속 논문이 나온 것을 알게 되었다. 최근 소식을 전해 듣는데 비교적 느린 나로서는 이만하면 정말 빨리 소식을 접한 셈이다. COG 업데이트가 계속 나오는 것을 보니 1956년생인 Eugene V. Koonin이 아직 건재한 모양이다.

COG database update: focus on microbial diversity, model organism, and widespread pathogens. Nucleic Acids Research, Volume 49, Issue D1, 8 January 2021, Pages D274–D281, https://doi.org/10.1093/nar/gkaa1018

이제는 퇴출된 유전자 ID 등 이전 2014년 버전에는 손질할 부분이 매우 많았다. 요즘의 필요성에 맞게 적절히 업데이트가 된 것 같다. 논문의 초록에는 어떠한 사항이 새로워졌는지를 다음과 같이 소개하였다.

  • gi(gene index) 번호를 RefSeq 또는 GenBank.ENA/DDBJ CDS accession number로 바꾸었다.
  • 200개 이상의 새로운 단백질 패밀리를에 관한 COG 주석을 업데이트하였고, PDB 링크가 있는 경우 이를 연결하였다.
  • Pathway로 그룹을 지은 COG 체계를 만들었다.
  • CRISPR-Cas immunity, sporulation(Firmicutes) 및 광합성(남세균)에 관여하는 266개의 새로운 COG를 추가하였다.
  • 이로써 2020년 최신 버전의 COG는 4877개가 되었다.

FTP 사이트 https://ftp.ncbi.nih.gov/pub/COG/COG2020/data/에서 제공하는 새로운 파일이 아직 기존 상태로 머물러 있는 COG software와 호환이 되는지는 테스트를 해 봐야 한다. DB를 구성하는 단백질 세트는 1,785,722개('prot2003-2014.fa')에서 3,213,025개('cog-20.fa')로 약 1.8배 증가하였다.

분명히 몇 년 전에 COG software를 사용하여 COG를 할당하는 방법을 문서로 만들어 둔 것 같은데 기억이 나질 않는다. 내 스크립트 모음 디렉토리를 가서 COG라는 이름으로 검색을 하니  process_COG_query.sh라는 이름의 스크립트가 눈에 뜨였다. 이게 어디서 난 것일까? 번거로운 psiblast 및 COG software 실행 방법을 스크립트 한 방으로 끝낼 수 있게 잘 만들었구만... 누가 만든 거지? 스크립트 이름을 사용하여 구글을 검색해 보았다. 웹 상에 분명히 존재하는 것이었다. 어디 클릭을 해 보자...

NCBI COG software를 이용한 query protein의 COG assignment 방법

뭐야, 이건! 내 위키 사이트 아닌가? 내가 필요에 의해서 스크립트를 만든 다음 이를 사용하는 방법을 웹에 공개한 문서를 만들어 놓고 까맣게 잊고 있었다. 정말로 내 머릿속의 신경 회로 패턴이 많이 낡은 모양이다. 당장 이 스크립트의 맨 위에 'written by Haeyoung Jeong'이라는 코멘트 한 줄을 삽입해 넣었다. 앞으로는 아무리 간단한 스크립트를 만들어도 내 이름을 적어 놓아야 되겠다. 그렇지 않으면 내가 만든건지 다른 곳에서 입수한 것인지 알기가 어려워진다. 하긴 다른 곳에서 입수한 대부분의 스크립트에는 작성자가 이름이나 이메일 주소를 써 놓기도 하니까...

위키 문서에서는 process_COG_query.sh의 앞부분, 즉 query sequence의 ID를 바꾸는 것만 소개가 되어 있다. 현재 내 컴퓨터에 존재하는 스크립트는 psiblast 및 COG software를 실행하는 것까지 포함된 완성 상태이다. 그래 봐야 몇 줄 되지 않지만... 

COG2020 자료를 기존의 COG software로 돌리는 방법을 정리해는 것이 숙제로 남았다. 자칫하면 주말을 앞두고 게을러질 수 있는 뜨거운 여름날의 금요일 오후에 새로운 원석을 발견한 기분이다.

2021년 8월 5일 목요일

앰프를 부수다

보다 나은 가치를 위한 창조적 파괴? 공간 확보를 위한 부득이한 조치? 화풀이? 앰프의 제작자에게는 미안한 마음이 든다. 7년 반 정도 사용한 진공관 앰프가 아무런 문제가 없을 수는 없다. 한쪽 채널에서 묘한 잡음이 발생하기 시작했는데, 진공관을 좌우 채널을 바꾸어 끼워도 잡음이 따라 다니지를 않는다. 심지어 새 관을 꽂아도 잡음은 그대로이다! 앰프를 엎어놓고 뚜껑을 열어 봐야 저항과 캐패시터만으로 이루어진 회로일 뿐이고, 어차피 내가 이해하지 못하는 약간의 변형 초삼결(super triode connection) 회로라서 달리 손을 쓸 수가 없었다. 터지거나 망가진 전해 캐패시터가 있는 것도 아니요, 납땜이 떨어진 곳이 있는 것도 아니다. 내가 알고 있는 초삼결 회로에는 트랜지스터를 쓰는 것으로 아는데, 이 앰프의 한쪽 채널 구성은 반도체 소자 없이 12DT8 + PCL86이다.

원 제작자에게 보수를 요청하기에는 구입 후 너무 많은 시간이 지났고, 이 무거운 것을 보내고 받는 번거로움이 있다. 차라리 내가 이해할 수 있는 단순한 싱글 앰프로 바꾸기로 하고 전원부를 제외한 회로를 전부 걷어냈다. ECL/PCL86 싱글 앰프의 회로도는 인터넷에 널려 있다. 며칠에 걸쳐서 배선 밑그림을 그려 본 다음, IC114에 필요한 부품을 주문하였다.

바깥쪽 구멍 두 개는 비워두지 말고 빈 소켓을 꽂도록 하자.
6N1+6P1 싱글 앰프도 쓰레기통으로 들어갔다. 부끄럽지만 화풀이를 좀 심하게 했다. 사실 이 앰프는 결정적인 하자가 있는 것은 아니었다. 소켓 어댑터를 사서 남들은 한번씩 다 거쳐 간다는 6V6 싱글 앰프로 전환해 보겠다고 여러 차례에 걸쳐 궁리를 하였으나 그것도 그만 두기로 했던 참에 약간의 극단적 선택을 하고 말았다.

43 앰프는 소리를 조금 더 키워 보고 싶지만 오실로스코프의 상태가 매우 좋지 않아서 실험을 하기가 어렵다. 

올해로 8년째, 진공관 앰프를 가지고서 소소한 즐거움을 누린 것은 사실이다. 그러나 50W+50W 반도체 파워 앰프가 뿜어내는 당당한 출력 앞에서 더 이상 음악적 쾌감을 느끼기가 어려웠다는 것이 솔직한 결론이다. 앞으로는 6LQ8 싱글 및 푸시풀 앰프, 그리고 오늘 쓰는 글의 주제인 PCL86 싱글 앰프를 마지막 진공관 앰프 경험으로 삼고자 한다. 헌 전선과 뜯어낸 부품으로 가득한 정크 박스도 그 크기를 줄여 나가련다. 앞으로는 음악 자체에 몰두하고 싶다.

그동안 즐거웠다!



NCBI의 assembly 정보 파일로 접근하는 URL이 살짝 바뀐 듯하다

예전에는 다음 URL을 통해서 RefSeq에 등록된 유전체 정보의 요약본 파일(assembly_summary.txt)을 다운로드했었다.

ftp://ftp.ncbi.nlm.nih.gov/genomes/refseq/assembly_summary_refseq.txt

이 파일은 리눅스 명령행에서 curl이나 wget을 통해서 여전히 잘 다운로드할 수 있다. 그런데 이 주소를 웹브라우저에 넣으니 파일이 열리거나 다운로드로 이어지지 않는다. 웹 브라우저를 통한 FTP 접근을 막은 것일까? NCBI의 Genome Download (FTP) FAQ로 접속하여 16번째 항목인 'How can I download RefSeq data for all complete bacterial genomes'를 확인해 보았다. assembly_summary.txt 파일의 접근 경로는 ftp://가 아니라 https://로 시작한다.

https://ftp.ncbi.nlm.nih.gov/genomes/refseq/bacteria/assembly_summary.txt

물론 이 텍스트 파일의 20번째 컬럼인 ftp_path의 값은 당연히 ftp://로 시작한다. 그러면 이번에는 NCBI 웹사이트에서 특정 미생물 균주의 assembly를 다운로드하기 위해 클릭하여 접속하는 URL은 무엇으로 시작하는가? 아래 그림에서 빨간색으로 표시된 곳을 클릭하면 여전히 웹 브라우저에서 파일 목록을 볼 수 있다.


이때 주소창에 나타나는 URL이 당연히 ftp://로 시작할 것으로 생각했었는데 오늘 확인해 본 결과 https://였다. 음? 원래 이랬었던가? 아니면 최근에 바뀐 것인가? 보안이나 네트워크 대역폭 등 여러 사항을 감안하여 주소 체계를 바꾸는 것으로 이해할 수 있다. 

공공 데이터를 ftp가 아니라 https를 통해서 전송한다면 암호화-복호화 등의 인증 작업을 거쳐야 하므로 시간이 더 걸릴 것이다. ftp://로 시작하는 주소를 누군가 해킹하여 악성 코드를 심은 엉뚱한 파일을 다운로드하게 만들 수도 있지 않을까? 충분히 가능한 이야기라고 생각한다. 내가 접속한 ftp 서버가 악의적으로 만들어진 가짜일 수도 있다! 인간 유전체 GRCh38이라고 되어 있는 ftp 주소를 클릭하였더니 악성 코드가 담긴 엉뚱한 파일이 내 컴퓨터로 다운로드될 수도 있는 것이다. 'ncbi'라 생각하고 클릭을 했더니 'nc6i'였고, 'kobic'이라 생각했더니 'ko6ic'으로 연결되는 일도 있을 수 있다.

무엇을 상상하든 그 이상의 일이 벌어지는 세상이니... 조심하자.

2021년 7월 30일 금요일

[독서 기록] 『공포가 과학을 집어 삼켰다』와 『디자인은 어떻게 세상을 만들어가는가』


탈핵과 코로나바이러스 감염증. 얼핏 보면 서로 관계가 별로 없는 분야의 주제이다. 전문가들이 흔히 하는 말 있지 않은가? 
'제 분야가 아니라서..(별로 할 말이 없습니다 또는 괜히 이야기해서 구설에 오르고 싶지 않습니다)' 
누가 나에게 원전 문제에 대해서 묻는다면, 나 역시 비슷한 논리로 이를 회피할 것이다. 난 생명과학자니까. 아니, 코로나바이러스 감염증에 대해 물어도 또 내 전공을 세분화하여 살짝 피해 나갈 구실을 찾을 것이다. 나는 미생물, 특히 세균의 유전체를 연구하는 사람이니까..
  • 공포가 과학을 집어삼켰다(원제: Radiation and Reason - The Impact pf Science on a Culture of Fear)
  • 지은이: 웨이드 앨리슨
  • 옮긴이: 강건욱·강유현
두 공역자는 부녀 관계이다. 학술 논문에 부모와 나란히 공저자로 이름을 올리는 일이 과연 올바른 일인지에 대하여 사회적으로 한바탕 홍역을 치렀고 이제는 누구나 조심하는 시대가 되었다. 그럼에도 불구하고 당당하게 부녀 관계임을 밝히면서 공동 작업을 했음을 밝혔다는 것은 그만큼 각자가 제 몫을 충분히 했음을 반증한다고 생각한다. 강유현이 쓴 역자 서문의 일부를 소개한다.
많은 물리과 대학생들 또한 대학 졸업 후 대다수가 금융, 회계, 컨설팅 분야로 진출하며, 비전문가뿐만 아니라 전문가마저 남에게 해를 끼치지 않는 생각, 즉 정사유(正思惟)를 벗어난 자본주의적인 욕심으로 치우쳐져 있습니다. 전문가로서 활약을 할 수 있는 많은 인재들이 욕심을 앞세워 사회와 인류를 위한 생각은 하지 않습니다. 결국 개인 투자자들이나 기업가들이 올바른 투자의 선택을 하기 위해서는 통찰력과 과학적 지식과 논리가 필요하게 되었습니다. (287쪽)

연구분야에 종사하던 사람들에게 자본주의적 영감을 불어넣어 사업화의 길을 걷도록 하는 것이 마치 올바른 길이고 국민에게 봉사하는 것처럼(혹은 내 욕망을 채우는 길인가?) 느껴지는 요즘의 분위기에서는 매우 신선한 시각이 아닐 수 없다. 

2011년 동일본 대지진에 이은 후쿠시마 원전 사고를 겪고도 어떻게 이런 책이 나올 수 있느냐고 반문하는 사람도 있을 것이다. 이 책은 원래 2009년에 쓰여진 책이다. 그러나 후쿠시마 방문기를 에필로그 형태로 다루었다. 원전 방사선 유출에 의한 직접적인 피해보다 '패닉' 자체가 더 큰 문제였다. 사실 인명피해는 쓰나미에 의한 것이 비교할 수 없이 더 컸음에도 불구하고.

저자는 방사능에 대한 공포가 지나치게 높고 안전 규제 역시 실제적인 위해성을 입증할 수 없는 수준에서 너무나 강한 현실을 바로잡아야 한다고 주장한다. 안전에 대한 새로운 기준은 ALARA(As Low As Reasonable Achievable)에서 AHARS(AS High AS Relatively Safe)가 되어야 한다는 것이다.

쟁점은 저선량 피폭이 암 발생 등의 위험 가능성을 현저히 높이는가에 관한 것으로 귀결된다. 저자의 입장은 그렇지 않다는 것이다. 암 치료를 위해 방사선 요법을 택하는 경우 그 부작용은 환자가 충분히 이해하고 감내하겠다는 조건으로 치료를 받는 것이다. 지난 7월 27일 그린란드에서는 8억톤은 빙하가 녹아 내렸다고 한다(관련 기사). 과연 신재생에너지만으로 인류가 요구하는 수준의 복지를 달성하면서 빙하를 지킬 수 있을까? 선진국 국민들은 전부 에너지를 덜 쓰기로 합의하고, 이제 막 자동차나 에어콘의 혜택을 입기 시작한 인구 폭발 중의 개발도상국 국민들에게는 그냥 현재 수준의 삶을 살라고 설득할 수 있겠는가? 이에 대한 가장 합리적인 대안은 원자력 발전 뿐이라는 것이다.

두 번째 이야기.

딸아이가 디자인 관련 대학을 목표로 입시를 준비하던 시절, 입시 설명회 등을 통해서 기존의 대학에서 어떤 문제를 내는지 설명을 들은 일이 있다. 나의 느낌은 이러했다. 디자인을 공부하는 대학에서는 세상의 모든 문제를 해결하려고 도전하는구나! 나의 전공인 생명과학도 감히 그렇게 하지 못하는데...

  • 디자인은 어떻게 세상을 만들어가는가(원제: How design makes the world)
  • 지은이: 스콧 버쿤(Scott Berkun) https://scottberkun.com/
  • 옮긴이: 이정미

제한된 자원만을 가지고서 최대의 효율을 힘겹게 추구해야만 했던 과거(그렇게 먼 과거도 아니고, 어쩌면 지금도 별로 바뀌지 않았는지도)에는 '디자인'이란 다분히 시각적인 것이었고 또 이를 감안하여 일을 한다는 것은 일종의 사치처럼 여겨지기도 했었다. 디자인이라는 낱말이 담고 있는 뜻이 워낙 광범위하고 시대에 따라서 조금씩 변하다보니 '세상의 모든 것을 바꿀 수 있는 계획'까지도 포괄할 수 있는 수준이 된 것 같다. 제 1 장의 제목은 감히 이러하다. '모든 것은 디자인을 담고 있다'

책의 말미에서는 다음과 같은 체크 리스트를 제시하였다. 이른바 4가지 질문이다. 꼭 디자인과 관련한 것이 아니더라도 내가 현재 하고 있는 모든 일에 대해서 이런 4가지 질문을 던질 수 있다. 

  1. 무엇을 개선하고자 하는가?
  2. 누구를 위해 개선하려고 하는가?
  3. 당신의 디자인 결정이 옳다는 것을 어떻게 확인할 것인가?
  4. 당신이 한 일로 현재 혹은 미래에 피해를 볼 수 있는 사람은 누구인가?
만약 지금 하고 있는 일이 잘 풀리지 않는다면, 이 4가지 질문을 한번 던져 보자. 특히 2번 질문은 어떠한 과업의 고객을 명확히 하고자 할 때 유용한 질문이다. 주어진 과업에 대해서 비용을 지불하는 사람이 바로 그 결과물을 직접적으로 활용하지는 않는 경우가 종종 발생한다. 정부에서 발주하는 많은 사업이 그러하다. 국민의 세금이 들어가는 일이므로 사양서에 맞추어 제대로 목표가 달성되었는지를 꼼꼼히 점검하는 것은 중요하다. 그러나 그 사업의 결과물을 실제로 활용하는 대상은 발주처(정부)가 아닌 일반 대중인 경우가 많다. 돈을 직접 대는 사람에게만 초점을 맞추게 되면, 정작 실제 사용자의 공감을 불러 일으키지 못하게 된다. 여기까지만 이야기하면 아마 정부출연연구소에서 근무하는 사람은 대략 감을 잡을 것이다.