2025년 7월 14일 월요일

과연 달리기를 제대로 하고 있는 것일까?

작년 8월부터 시작한 달리기가 이번달로 꼭 12개월째에 접어들었다. 이틀에 한번 꼴로 달리기를 한다는 규칙은 장기간의 출장이나 아주 나쁜 날씨가 아니라면 늘 지키고 있다. 어젯밤에도 추적추적 내리는 비를 맞으며 7.21km를 달렸으니 말이다. 달린 시간은 48분이다.



기록은 도무지 나아지지 않는다. 몇 달 연습하면 6분 이내의 페이스를 쉽게 달성할 것이라 믿었었다. 그러나 지난 4월과 5월에 평균 페이스 6분 15초를 찍은 뒤 지금은 더 나빠져서 6분 40초대가 되었다. 30분을 지속적으로 뛸 수 있는 몸을 만들자는 결심으로 1년 전에 달리기를 시작할 때에는 페이스나 거리에는 일절 신경을 쓰지 않았었다. 그러다가 약간의 자신감이 생기면서 6분 미만 페이스라는 나름대로의 목표를 세워 보았지만 현재의 훈련 수준으로는 언제 달성하게 될지 알 수가 없다.

약간 느리게 달렸더니 숨이 덜 차고 더 먼 거리를 뛸 수는 있다. 그러나 '30분에 5km'라는 내 나름대로의 초보 기준을 넘어서는 데에는 아직 부족하다. 아마 이틀에 한번 뛰는 것 외에 별도의 근력운동, 특히 하체 운동을 하지 않기에 이런 상태로 머물고 있는 것 같다. 요즘은 심박수는 아예 신경을 쓰지 않는다. 블루투스 이어셋도 없이 그냥 휴대폰을 들고 뛴다. 

심리적 마지노선은 평균 페이스를 6분 30초 근처로 유지하지는 수준까지 후퇴한 것 같다. 7분을 넘어가면 '달리기'가 아니라 '조깅'이라는데... 

비록 기대치보다는 느리게 달린다 해도 운동을 전혀 하지 않던 삶과는 다른 건강 상태에 있을 것이고, 1년을 꼭 채운 지금 무릎에 별다른 고통이 느껴지지 않으니 나의 달리기가 결코 내 나이와 신체 상태를 감안하여 큰 무리를 주는 수준은 아니라는 확신이 든다. 현 상태로부터 탈출하겠다는 욕심을 내지 않고 앞으로 건강이 허락하는 한 몇년이고 꾸준히 이 운동을 지속할 수만 있어도 내 인생에서 결코 손해는 나지 않을 것이다.

그렇다 해도 과거보다 더 나아지고 싶은 생각이 전혀 들지 않을 수는 없다. 런데이 앱에서는 몇 개의 훈련 프로그램이 내 구미를 자극한다.

"10K 1시간 목표 플랜"(GONA의 10K 5959런, 유료)

"50분 달리기 도전"

도전을 할 것인가, 말 것인가? 그것이 문제로다. 지금도 밤이 되면 쏟아지는 졸음을 주체하기 어려운데 말이다.

2025년 7월 13일 일요일

문학의 미래를 걱정할 필요가 없다

이 글의 제목에서 '문학'을 '도서'나 '출판 산업'으로 바꾸어도 거의 마찬가지일 것이라고 생각한다. 문학의 자리를 대신할 문화적 대체제가 요즘은 많이 늘어났다. 음악이 그렇고, 영화가 그러하다. 휴대폰 속 세상에서 도파민을 뿜어내게 만드는 짧은 영상도 마찬가지이다.

앙투완 콩파뇽『문학의 쓸모』


대부분의 인간 활동은 서사적·시적 차원을 지닐 수 밖에 없다(212쪽)....서사적·시적 능력이 프로와 아마추어를 막론하고 모든 분야에서 수행 능력을 향상해준다는... 독서가 빗장이니 그들에게 책을 읽히고, 이야기 예술의 보편성을, 그 편재성을 깨우쳐주자. 셈만 알고 이야기를 할 줄 모른다면 아무것도 전달할 수 없고, 아무것도 설득할 수 없으니 말이다(213쪽).

유발 하라리가 말했듯이, 인간은 언어를 발명하면서 상상의 세계를 만들어내고 또 이것에 크게 의존하게 되었다. 그것이 종교나 이데올로기로 형상화되기도 했으나, 쉽게 표현하자면 핵심은 바로 '이야기'이다. 길게 이어지면 소설이 되고, 운율을 갖추면 시가 된다. 인간이 언어를 버리겠다고 다짐하지 않는 이상, 문학이 사라질 걱정은 할 필요가 없다.

아쉽지만 문학은 창작자에게 살아있는 동안 직접적인 경제적 풍요를 제공하지 못할 수도 있다. 사후에나 작품이 재평가가 되어 수십년, 아니 백년이 넘도록 지속해서 읽히고 팔릴 수도 있기 때문이다. 그러나 소비자 입장에서는 별로 아쉬울 것은 없다. 세상을 놀라게 할 작품이 매년 꾸준히 나오지는 않겠지만, 늘 즐겁게 읽을 거리를 찾을 수 있기 때문이다. 

문학은 사회 전체 모든 분야로 퍼져나가고 있는 것이다. 마치 통계학이 모든 학문에서 도구가 되고 있듯이. 문학으로 접근하는 첫 번째 진입 장벽은 끈기 있게 책을 읽기 어려운 환경이 되었다는 것이다. 휴대폰을 통해 소비되는 숏폼 영상이 독서에 대한 장벽을 쌓는다. 이것은 반드시 극복해야 한다. 

나는 어떠한가? 요즘 들어서 두 주마다 규칙적으로 도서관을 들락거리기는 하지만, 문학 서적은 거의 빌리지 않는다. 가급적 소설책 한 권을 꼭 끼워 넣으려고 애를 쓰지만 잘 되지 않는다. 특히 배경 지식이 많이 필요한 국외 소설은 더욱 그러하다. 고전 소설부터 도전해 봐야 할 것이다. 이는 청소년 시절에 책을 별로 읽지 않았다는 부끄러운 고백이다.

『문학의 쓸모』는 조치원1927아트센터(인스타그램)에 위치한 브런치 카페 <헤이다>에서 읽었다. 







2025년 7월 11일 금요일

설계가 다 끝난 줄 알았지? 그것도 완벽하게!

누구나 그럴싸한 계획을 갖고 있다. 현실의 쓴 맛을 보기 전까지는.

부끄러운 설계도라서 블러 처리를 하였다. Fritzing으로 그렸다. 


이만하면 잘 마무리가 되었다고 생각하고 마지막으로 필요한 부품 주문을 하였는데... 결제까지 다 마치고 났더니 불필요한 크림프 터미널을 주문한 것을 깨달았다. 한림 CT0640 터미널과 여기에 맞는 하우징 및 헤더를 쓰기로 결정했는데, 연호 YST025 터미널을 20개 따로 주문한 것이다. 단가는 10원에 불과하니 큰 부담이 되지는 않는다. 파워 서플라이로부터 나오는 전원선에 연호 8핀 커넥터가 딸려 있어서 보드쪽에 장착할 헤더(SMW250-08 Wafer)만 구입하면 되는데 착각을 하여 같은 회사의 크림프 터미널까지 주문하였다.



참고할 글: 세상의 모든 커넥터(6월 21일에 작성하였으나 마음에 들지 않아 계속 수정 중)

어차피 터미널 압착을 위한 공구를 구입해 놓았으니 연습은 필요하다. 여분의 터미널이 많으면 그만큼 익숙해질 것이다. 

일반적인 핀 헤더에 몰렉스 5051용 터미널을 꽂아도 상관은 없다. 단, 핀의 수가 많아지면 피치에 따른 오차가 점점 커지니 유의해야 할 것이다. 그렇다면 몰렉스 5051, 한림 CT0640, 연호 YST025 크림프 터미널은 서로 다른 하우징에 바꾸어서 끼워도 되나? 헤더(웨이퍼)쪽 체결에는 문제가 없을까?

몰렉스 5051과 한림 CT0640은 서로 바꾸어서 써도 무방하다. 모양이 매우 다른 연호 YST025는 다른 회사의 하우징에 맞을까? 전도체의 체결 부위는 다르지만 하우징에 들어가는 데에는 문제가 없을 것도 같다. 이번에 실수로 20개를 구매했으니 끼워 보면 정답을 알게 될 것이다. 

가장 왼쪽의 것은 5159 터미널이다. 중간쯤에 갈빗대처럼 돌출한 부위가 있다는 점이 기존의 5051용 터미널인 2759와 다른 점 같다. 그래서 하우징 내에서 견고하게 있을 수 있다고 한다.

Molex의 5051은 커넥터 하우징에만 쓰는 시리즈 번호인가, 또는 특정 커넥터 시스템을 일컫는 것인가? 정말이지 별별 것을 다 공부하고 있다.

2025년 7월 10일 목요일

Fritzing 가지고 놀기

(ChatGPT의 대답) Fritzing전자 회로 설계와 프로토타입 제작을 돕는 오픈 소스 소프트웨어입니다. 주로 전자 DIY, 아두이노 프로젝트, 메이커 교육 등에서 많이 활용됩니다.

아두이노 나노를 이용한 MIDI 컨트롤러를 만들기 위해 Fritzing을 다운로드하여 설치한 뒤 만능기판(perfboard)를 펼쳐놓고 연습을 하는 중이다. 흔히 무료라고 알려져 있으나 나는 최신 버전을 다운로드하기 위해 8 유로를 기부하였다. 

대충 만든 첫 작품. 아직 미완성이고 분기 처리도 엉망이다.

브레드보드를 기준으로 부품 배치 및 배선을 도와주는 프로그램으로 설계가 되어서 그런지 만능기판은 다루기가 제법 까다롭다. 부품 리드를 1:1로 잇는 것은 그런대로 잘 된다. 아니다, 그렇지만도 않다. 기판 위에 부품을 올린 뒤 마우스 포인터를 부품에 가져가면 닿는 위치에 따라서 부품이 하이라이트되는 방식이 몇 가지로 바뀐다. 부품 전체를 검정색 점선이 둘러싸기도 하고, 부품 전체가 어두워지기도 하며, 리드 끝점의 색깔이 최소한 두 가지로 바뀌기도 한다. 각 상태에 따라서 마우스 드래그의 동작이 달라지므로 아주 조심해야 한다. 위치 이동, 배선, 리드 길이 변경 등.

이것도 쉽지 않은데, 한 포인트에서 전기적 접속을 이루면서 여러 곳으로 분기하게 만드는 것이 어렵다. 원래 그렇다고 한다! 시각적으로 그렇게 보이도록 만들 수는 있지만, Frtizing 안에서는 실제 연결된 것으로 인식하지 않는다. 다음의 예를 보자. 

수직으로 뻗은 짧은 노란색 와이어의 위 아래 끝점이 주황색으로 표시되어 있다. 이는 실제 연결이 되지 않았음을 의미한다. 인쇄를 해서 회로를 실제로 꾸미는 데 가이드로 이용할 수는 있지만, 이런 상태로는 Fritzing 안에서 이를 회로도나 PCB로 전환하는 것은 곤란하다. ChatGPT에 의하면 부품('Core Parts') 중에서 solder point나 pad를 찾아서 이용하라고 한다. 말은 쉬운데 이런 부품이 목록에서 눈에 확 들어오는 것이 아니다. 약간 다른 모양의 것을 불러다 놓은 다음 핀 수를 줄인다든지 하는 방법을 택해야 하는 것 같다.

시작이 잘못되었다! 브레드보드에서 먼저 부품 배치와 와이어링을 마친 뒤, 회로도로 전환하여 점검한 다음에 만능기판으로 넘어가는 것이 더 합리적인 방법으로 보인다. Fritzing이 만들어진 근본 취지를 생각하면 이런 순서로 접근하는 것이 백번 옳다. 다음번 프로젝트에서는 이러한 권장 방법을 쓰도록 하고, 이번에는 만능기판으로 시작했으니 일단 끝을 보련다. 회로 점검은 오직 눈으로 하는 수밖에는...


2025년 7월 6일 일요일

[EZ Ardule MIDI controller] 마이크로SD카드에 담긴 MIDI 파일의 단순 재생부터 시작해 보다

시작은 무식(?)과의 싸움, 그리고 다음으로는 제한된 메모리와 싸움...

기본부터 공부하지 않은 상태로 챗GPT에게 물어 가면서 안일하게 자작을 해 나가려고 생각한 것이 잘못된 선택일지도 모른다. 알리익스프레스에서 주문한 OLEVO라는 브랜드의 32G 마이크로SD카드가 제대로 인식조차 되지 않으리라고 어떻게 생각할 수 있었겠는가. 

아두이노 우노에서 마이크로SD카드를 점검하고 있다.

무난한 SanDisk 제품을 사러 다이소에 다녀오는 길.

라이브러리에 딸린 유용한 예제는 무시한 채로 챗GPT에게 모든 것을 물어 보는 것도 옳지 않은 자세였다. 카드 인식이라든가 카드에 수록된 MIDI 파일을 재생하는 코드는 이미 라이브러리에 딸려 온 예제 코드로 충분하게 구현 가능하였다. 다음은 예제 코드를 이용하여 카드 인식을 테스트한 결과이다. 시리얼 모니터로 나온 출력을 복사하였다.

Initializing SD card...Wiring is correct and a card is present.

Card type:         SDHC
Clusters:          973584
Blocks x Cluster:  64
Total Blocks:      62309376

Volume type is:    FAT32
Volume size (KB):  31154688
Volume size (MB):  30424
Volume size (GB):  29.71

Initializing SD card...Wiring is correct and a card is present.

Card type:         SDHC
Clusters:          973584
Blocks x Cluster:  64
Total Blocks:      62309376

Volume type is:    FAT32
Volume size (KB):  31154688
Volume size (MB):  30424
Volume size (GB):  29.71
SYSTEM~1/     2025-07-06 12:23:42
  WPSETT~1.DAT  2025-07-06 12:23:42 12
  INDEXE~1      2025-07-06 12:23:44 76
PASSPORT.MID  2025-04-13 15:58:20 23165
CANYON.MID    2025-02-20 20:12:18 33876
FLOURI~1.MID  2025-07-05 19:08:44 24253
NORMAL~1.MID  2025-05-06 20:07:26 33282

프로토타입 구현 방법도 고민거리였다. 아두이노 나노를 브레드보드에 꽂은 뒤 모든 것을 점퍼선으로 연결하는 전형적인 방법을 쓰려 하다가 위 사진과 같은 기이한 형태를 취하기로 했다. 중간에 분기할 필요가 없다면, 아두이노 나노의 핀과 부품의 핀을 female-to-female 점퍼선으로 연결하는 것이 가장 확실한 접속을 보장할 것이기 때문이다. 버튼, 로터리 인코더 및 LED 등의 부품이 추가되면 연결 상태는 더욱 복잡해질 것이다.

컴퓨터에서 USB 케이블로 전원을 공급하면 SAM9703 출력으로 잡음이 들린다. 이것은 나중에 최종 작품을 만들 때에는 반주기의 SMPS에서 전원을 따로 연결하면 해결될 것이다.

아직도 연결할 부품이 하나 가득... 

긴 브레드보드 하나에 모든 부품을 꽂으려던 계획은 실현 불가능. 버튼 스위치의 GND 연결은 어떻게 하는게 좋을까? 차라리 만능기판에 납땜을 하는 것이 더 나을 수도 있다. 최종판에서는 패널에 구멍을 뚫고 고정하는 제법 큰 크기의 버튼 스위치를 쓰려고 구입해 놓은 상태이다. 

오늘은 마이크로SD카드에 저장한 type 0 MIDI 파일을 순차적으로 재생하는 아주 단순한 기능부터 구현하였다. 파일 목록과 순서는 코드 내에 지정해 두었고, 메모리 부족 때문에 LCD 표시도 16x2로 제한하였다. 버튼, LED, 로터리 인코더 등의 입출력 장치는 아직 하나도 연결하지 않은 단순한 상태이니, 기획했던 기능을 전부 구현하려면 2KB의 내장 메모리로는 턱도 없이 부족할 것이다.

7월 중에 프로토타입을 완성해 보리라.


2025년 7월 5일 토요일

METEX 함수발생기(function generator)의 폭발한 필름 커패시터를 교체하다

지난 5월 하순, 알리익스프레스에서 구입한 초저가 오실로스코프를 테스트하는 도중 낡은 함수발생기(MXG-9802) 내부의 커패시터가 폭발한 일이 있다. 흔히 겪는 전원부의 대용량 전해 커패시터가 아니라 X2 안전 커패시터가 터진 것이었다.

윗면에 0.1uF X2라고 인쇄된 것이 문제의 부품. 왼쪽에 두꺼운 리드가 삐져나온 것이 보인다. 

SCO2 오실로스코프를 테스트하다 함수발생기에서 폭발 사고를 겪다

이 작은 사건은 30년이 넘는 전자기기에 대한 나의 생각을 근본적으로 바꿀 수 있을 정도로 큰 충격을 주었다. 계속 유지 보수를 해 나가면서 낡은 기기를 소유하는 것이 과연 가능할까? 항상 새롭고 건강한 상태의 물건을 사들이고 낡은 것은 문제가 발생하기 전에 처분하는 것이 더 현명하지 않을까? 더군다나 올해 상반기는 낡은 신시사이저(KORG X2)를 잡음 문제를 해결한답시고 꽤 많은 자가 수리를 한 터라 마음이 계속 편하지 않았다. 안전 커패시터와 신시사이저 모두 X2라는 단어가 공통으로 들어간다. 묘한 우연의 일치이다.

알리익스프레스 주문한 X2 안전 커패시터 10개 들이 묶음을 다른 부품과 함께 받았다. 함수발생기를 분해하면서 오래 되어 탄성이 없어진 이동 손잡이 겸 스탠드는 부서져 버렸고, 다리 또한 다시 사용하기 곤란한 상태가 되었다. 다음 사진과 같은 다리를 구해다가 달아야 되겠다.



챗GPT에게 물어보니 폭발한 RIFA PME271M 커패시터의 내부 물질에는 특별히 해로운 것은 없다고 한다. 빈티지 부품의 경우 유해한 PCB(폴리염화비페닐)이 포함된 경우가 있어서 주의를 요한다.

오염된 주변부를 닦아내고 새 커패시터로 교체하였다. 같은 용도로 사용하는 동일 용량의 안전 커패시터인데 크기는 훨씬 작았다. X2 커패시터는 자기회복 기능이 있어서 내부에서 절연 파괴가 발생해도 손상된 부위를 스스로 절연 상태로 복구한다고 한다. 정말 놀라운 기능이다.

커넥터가 적재적소에 쓰여서 문제가 발생한 보드만 꺼내기가 매우 수월하였다. 



케이스를 닫기 전에 내부 전체를 사진으로 찍어 보았다.


과연 전원부의 안전 커패시터를 교체한 것만으로 함수 발생기가 제 기능을 되찾을 것인가? 


수리는 성공적이었다. 정상적인 파형이 발생하였으며, 조정에 따라서 잘 변화한다. 다만 10X 단위로 주파수를 바꾸는 누름 스위치의 걸림이 일부 스위치에서 원활하지 않아서 아주 기술적으로 눌러야만 고정이 된다. 이는 참을 수 있는 수준이다.

오늘의 수리를 통해서 낡은 전자제품을 '반려'용으로 계속 손보아 가면서 쓰는 일에 아주 조금의 자신감을 더하기로 하였다. 취미의 세계에서 쓸데없는 경험이란 없는 것이다. X2 안전 커패시터와 함께 구입한 자잘한 부품들은 MIDI 컨트롤러 자작에 들어가게 될 것이다. 

2025년 7월 3일 목요일

국가 바이오 데이터 스테이션(K-BDS)에 다소 엉뚱해 보이는 자료 등록하기

일을 하다 보면 데이터관리계획(Data Management Plan, DMP)의 사전 작성 여부와는 관계없이 데이터가 생기기도 한다. 국내 생명과학 연구 분야에서 과제 신청 시 DMP를 제출하고 이에 따라서 K-BDS에 연구 데이터를 등록하는 제도가 본격적으로 시행되기 전에 만들어진 데이터는 아마도 제도 시행 이후보다 더 많을 것이다.

코로나바이러스감염증-19가 여전히 맹위를 떨치던 2021년, 이를 진단하기 위한 작은 연구 프로젝트를 진행한 일이 있다. 되도록 다양한 변이체를 검출하기 위하여 알려진 SARS-CoV-2 유전체를 전부 받아서 다중서열정렬을 한 다음, 보존 서열(conserved sequence)의 영역을 추출하였다. 2021년 여름이에 데이터를 다운로드하여 분석 작업에 착수하였고, 논문으로 출판된 것은 이듬해였다. 나는 원본 염기서열 데이터와 중간 단계의 데이터(trimming & dereplication), 그리고 다중서열정렬(MSA) 결과 파일까지를 K-BDS의 기타('GeNA') 항목으로 등록해 보려고 한다.

NCBI의 SARS-CoV-2 Data Hub에는 오늘 기준으로 확인해 보니 9백만 건이 넘는 유전체 염기서열이 등록되어 있다. 내가 2021년에 데이터를 수집할 때에는 등록 기간(2021.12.31.~2021.07.01.), full length 여부 등의 필터를 적용하여 218,799건의 염기서열을 선택했었다. 더불어 GISAID(Global Initiative for Sharing All Influenza Data, 국제인플루엔자정보공유기구)에서는 한국에서 유래한 유전체 정보 4,931개를 다운로드하였다. 두 종류의 데이터 저장소는 무료로 접근하여 데이터를 내려받아 사용할 수 있지만 상당히 많은 차이가 있다. NCBI는 open access이고 GISAID는 free access로서 후자의 경우 사용에 대한 제한이 좀 더 많다. 다음 슬라이드를 보라.


자료 출처: 내가 직접 만든 발표용 슬라이드.


GISAID의 자료를 연구에 활용한 뒤 이를 논문에 발표할 때에는 정보 제공자에 대한 크레딧을 반드시 표시해야 한다. 환자가 아니라 이 유전체 정보를 등록한 연구자를 말한다. 따라서 약 5천 건의 유전체에 대한 감사의 글은 PDF 문서로 무려 8쪽에 이른다! 반면 NCBI의 자료는 특별히 그럴 필요가 없고, 내려받았던 원본 자료를 그대로 다른 곳에 올려도(물론 accession number는 표기해야 될 것이지만) 상관이 없다.

따라서 등록하고 싶은 자료에서 GISAID 유래 염기서열은 전부 빼야 한다. 사용했던 accession number라도 공개하고 싶었으나 ChatGPT에 물어보니 그것도 곤란하다고 한다. 대량(수천 건)의 accession number를 공개하는 것은 Terms of Use의 위배 사항이란다. 단, 데이터를 다운로드하면서 자동 생성되었던 감사의 글 형태로 공개하는 것은 괜찮은 것 같다.

어쨌든 데이터 뭉치에서 GISAID의 것을 제외하려니 이게 생각만큼 간단하지가 않다. 중간에 dereplication을 거치면서 어떤 서열들은 하나의 클러스터로 뭉쳤다. 예를 들어 NCBI의 서열 하나와 GISAID 서열 하나가 완전히 동일하여 하나의 클러스터가 되었다고 하자. 물론 host는 다를 것이다. 이러한 경우에는 특별히 손을 대지 않아도 된다. 그러나 GISAID의 것으로만 이루어진 cluster라면 재배포 금지 원칙에 따라 이를 제거해야 한다.

그런데 2021년 분석 당시에 UC file을 만들지 않은 것이 실수였다. Dereplicated sequence가 모인 FASTA 파일의 sequence description 항목에 cluster size를 기록하게는 만들었지만(dP: >MZ706206.1;size=10), 어떤 서열이 모였는지는 따로 파일로 기록하게 만들지 않았기 때문이다. 번거롭지만 데이터 정리 후 VSEARCH를 다시 돌려야 한다! 실은 22만개 가까운 바이러스 게놈 서열이라 해도 많은 시간이 걸리지는 않는다.

$ vsearch --derep_fulllength Korea_plus_Delta.trimmed --uc cluster --output derep.fa --sizeout
vsearch v2.21.1_linu  x_x86_64, 125.7GB RAM, 32 cores
https://github.com/tognes/vsearch

Dereplicating file Korea_plus_Delta.trimmed 100%  
339644176 nt in 11552 seqs, min 29097, max 29796, avg 29401
Sorting 100%
8530 unique sequences, avg cluster 1.4, median 1, max 205
Writing FASTA output file 100% 
Writing uc file, first part 100% 
Writing uc file, second part 100% 

K-BDS에 등록하기 위해 데이터를 재가공하는 것은 어제 오늘의 일이 아니다. GISAID의 것을 제외하여 데이터셋을 다시 만든 뒤, dereplication과 MSA를 다시 실행해서 올려야 되겠다. README 파일에 구구절절한 설명(변명?)을 올리는 수밖에는...