2021년 2월 26일 금요일

뉴스 모음 - 메디톡스에 대한 식약처의 가혹한 처사 등

[헬스오] 식약처의 '메디톡스 때리기' 도가 지나치다 입력일: 2021-02-25

말해 무엇하리오! 이런 뉴스가 주요 포털 사이트의 뉴스 목록에는 잘 보이지 않는다는 것이 안타까울 뿐이다.

[한겨레] 낚시터 물고기는 왜 갈수록 안잡힐까… 그 궁금증이 풀렸다 입력일: 2021-02-24

두 번째 글에서 인용한 학술논문은 PNAS 3월 2일에 발간 예정인 'The battle between harvest and natural selection creates small and shy fish'이다. 낚시에 의해서 덩치가 크고 활발한 물고기는 도태되고, 작고 소심한 물고기만 남는다. 자연선택의 위대한 힘! 인류가 농경사회를 이루면서 식물에 가한 선택압은 정말 어마어마하다. 가축이나 반려동물 마찬가지이다. 낚시의 대상이 되는 물고기는 우리가 특별히 손을 대지 않는 것으로 여겨지지만, 포획을 통해 활동적이고 큰 물고기를 선택함으로써 반대의 특성을 띤 물고기가 살아남는 것이다. 

강한 것이 살아남는 것이 아니다. 살아남은 것이 강한 놈이다.

[한겨레] 지금 화성 땅엔 한국인 20만명의 이름이 있다 입력일: 2021-02-25

미국이 쏘아보낸 화성 탐사선이 화성 땅에 무사히 착륙한 지 열흘 정도가 지났다. 여기에는 2019년 온라인으로 진행한 화성행 우주선 탑승권 발행 이벤트에 응모했던 지구인 1093만 2295명의 이름이 새겨진 명판이 실려 있다. 나도 당시 이벤트에 응모를 해서 화성행 '보딩패스'를 받은 것을 기념 삼아서 블로그에 글(화성으로 가는 탑승권)을 올렸다가 까맣게 잊고 있었다. 이 우주선이 그 우주선이었구나.... 

내 보딩패스는 여기에서 원본을 확인할 수 있다.

다음 것은 2017년 1월에 발행된 좀 오래 된 기사이다.

[민중의 소리] 현대심리학은 과학으로 포장된 자본주의 인간학

새로 산 책 '부정성 편향 - 어떻게 이용하고 극복할 것인가'를 읽으면서 초반부에 느꼈던 답답함에 찾아보게 된 기사이다. 현대 심리학은 자본에 충성하는 학문적 도구처럼 느껴질 때가 있다. 가끔씩은 이런 비판적인 기사를 읽어 보는 것이 정신 건강에 유익하다. 다행스럽게도 이 책을 끝까지 읽으면서 그런 생각은 다소 수그러들기는 하였으나...

신간 '부정성 편향'


2021년 2월 25일 목요일

오픈샷(OpenShot) 비디오 편집기로 겨우 만든 타이틀 동영상

 
휴... 오늘 겨우 이것 하나를 만들었다. 여러 클립의 끝나는 지점을 딱 맞추는 방법을 몰라서 한참 구글링을 하였다. 로고 이미지는 돈을 내더라도 벡터 이미지를 구입해야 되겠다. 음악은 직접 작곡하고 연주했으니 자부심을 느낄 만도 하다.
 
그런데 타이틀 영상을 무료로 만들어 주는 사이트가 있네! 로고 이미지도 무료로(저해상도에 한하여) 만들었으니 타이틀 영상도 당연히 그렇지 않겠는가?
 
오늘의 작업은 오픈샷의 기능을 익히기 위해서 해 본 것이니 보기에 좀 허름하다 해도 부끄럽지는 않다.

 

2021년 2월 24일 수요일

파이썬으로 구현한 서스테인 페달

이전에 쓴 글 '[우분투의 사운드와 MIDI] 스페이스 바를 서스테인 페달 대용으로 쓰게 만드는 파이썬 프로그램'에서 소개했던 방법을 개선해 보았다. 신호를 보낼 MIDI OUT 포트(즉 음원)를 스크립트 내에 써 넣지 않아도 되게 만든 것이다. FluidSynth를 구동한 뒤 MIDI 키보드 콘트롤러와 연결(aconnect)하고 나서 다음과 같은 bash script("sustain-pedal.sh")를 실행을 하면 된다.

#!/usr/bin/env bash

script=$(readlink -f "$0")
path=$(dirname "$script")

OIFS=$IFS; IFS=$'\n'
array=($(sendmidi list)); IFS=$OIFS

i=0
for var in "${array[@]}"
do
    echo "[$i] ${var}"
    i=`expr $i + 1`
done
echo -n "Select MIDI OUT device: "
read -r input
midi_out=${array[$input]}
python ${path}/sustain-pedal.py ${midi_out}

이 스크립트는 이전에 만든 sustain-pedal.py이라는 파이썬 스크립트를 부른다. 이는 pygame이라는 모듈이 필요하다. 아래에서 보인 이 파이썬 스크립트는 또 sendmidi라는 프로그램를 내부에서 실행하므로 이를 설치해 두어야 한다. 명령행 인수를 받을 수 있도록 조금 수정을 가했다. 내부에서 sendmidi를 실행하는 명령어 문자열도 약간 세련되어 보이게 고쳤다.

import pygame
import time
import os
import sys

pygame.init()
d = pygame.display.set_mode((800,600))
d.fill((255,255,255))

sendmidi = "/home/hyjeong/bin/sendmidi";
pedal_on = "%s dev %s cc 64 127"%(sendmidi, sys.argv[1]);
pedal_off = "%s dev %s cc 64 0"%(sendmidi, sys.argv[1]);

done = False
while not done:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      done = True
    if event.type == pygame.KEYDOWN:
      print("Got keydown event: " + str(event))
      os.system(pedal_on)
    if event.type == pygame.KEYUP:
      print("Got keyup event: " + str(event))
      os.system(pedal_off)

pygame.quit()
quit()

그러면 일종의 wrapper script인 sustain-pedal.sh을 실행해 보자.

$ sustain-pedal.sh 
[0] Midi Through Port-0
[1] iCON iKeyboard 5 Nano V1.06 MID
[2] Synth input port (3627:0)
Select MIDI OUT device: 2
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html

번호를 입력하여 MIDI 신호를 보낼 synthesizer를 지정하면 곧바로 커다란 창이 뜬다. 마우스 포인터는 그 안에 위치할 것이다. 그 다음에는 보통의 서스테인 페달을 밟듯이 아무 키나 누르면 된다. 한번에 여러 키를 누르면 제각각 페달 신호를 보내면서 상태가 꼬이기 쉬우니 발가락으로 요령껏 스페이스바를 눌렀다 떼었다 하는 것이 좋을 것이다. 마우스 포인터가 검정 창 안에 있으므로 키보드를 조작하는 것으로는 실행 중인 다른 프로그램을 건드리지는 않는다.

 



 
그다지 아름답지는 않지만 이런 방식으로...

리눅스에서는 눌렀던 키를 릴리즈하는 이벤트를 프로그램으로 구현하는 것이 어려움을 설명한 글의 링크가 서두에 소개한 이전 글에 들어 있다. 그래서 게임 개발에 쓰이는 파이썬 모듈을 활용한 것이다. 게임에서는 눌렀던 키를 릴리즈하는 동작을 인식하는 것이 대단히 중요할 테니까.

예전 방법에서는 sendmidi 명령을 다음과 같이 주어야 하는 것이 너무나 귀찮았다.

sendmidi dev 'SC-D70 Part A' cc 64 127

이것은 사운드캔버스 SC-D70이 연결되었을 때의 방법이다. 다른 오디오 인터페이스를 쓰려면 파라미터를 바꾸어야 한다. 소스 코드를 매번 바꾸어야 한다는 뜻이다. 그래서 오늘 '개발(?)'한 방법에서는 wrapper script를 통해 'sendmidi list'를 먼저 실행하여 MIDI 출력 포트 목록을 화면에 번호와 함께 나오게 한 다음, 번호를 입력하여 원하는 것을 지정하게 만들었다. Here document를 써서 파이썬 코드를 bash 내에 넣어버릴 수도 있는데, 그러한 경우 인수 또는 변수를 내부에서 전달하는 방법까지는 아직 잘 모르겠다. 이는 다음을 위한 숙제로 남겨 두자.

두꺼운 종이나 나뭇조각을 이용하여 밟았을 때 스페이스 바만 눌리게 하는 도구를 만들어도 되겠다.


2021년 2월 23일 화요일

리눅스에서 펄스오디오를 이용한 녹음 방법(명령행 - arecord)을 유튜브 동영상으로 올리다

특별히 대본을 마련하지 않고 리눅스 데스크탑을 조작해 가면서 녹화(Kazam 사용)를 한다는 것이 생각보다 어려웠다. 말이 꼬이는 것은 물론이요, 터미널 창에 입력할 명령어가 생각나지 않는다거나, 녹음 중에 방문을 벌컥 열고 들어오는 식구들의 생활 소음에 의해 중단하고 다시 하기를 반복하였다. 

영어로 녹화나 녹음은 전부 recording(동사인 경우 강세는 2음절이므로 [리코-딩])이다. 우리말로 '기록'이라 표현을 해도 사실 상관은 없지만 왠지 기계장치를 이용하여 전자 매체에 기록한다는 느낌이 별로 들지 않는다. 이러한 인식은 잘못된 것이 맞다. 왜냐하면 record라는 낱말은 음성이나 영상을 기록하는 기계 장치가 개발되기 전부터 있었던 것이 틀림없으니! 무선 통신이 나오기 전, 안테나(antenna)의 본래 뜻은 '더듬이'가 아니었던가...

녹화 후 편집을 하는 방법은 아직 익숙하지 않으니 되도록이면 '원 테이크'로 끝내려고 많은 노력을 하였다. 그러다보니 최종 기록물은 이틀이 지나서야 겨우 만들어졌다. 소리가 너무 작게 녹음되어 이를 키우는 것도 일이었다. Audacity에서 오디오 파일을 뽑은 뒤 음량을 올리고, 노이즈를 제거하고... 이렇게 해서 타이틀이나 자막 설명도 하나 없는 20분 27초짜리 동영상이 세상에 태어났다.

조절을 두 차례나 거쳤지만 음량은 여전히 부족하다. 일단 유튜브에 올리고 나면 URL이 고정되므로 수정한 동영상을 나중에 교체할 수가 없다. 기존 것을 삭제하고 다시 올리는 것이 유일한 방법이다. 유튜브 내에서 이미 올린 동영상을 수정할 수 있는 범위에는 한계가 있다. 따라서 되도록이면 완성도가 높게 만들어서 마지막이라 생각하고 업로드하는 것이 최선이다.

Audio Recording from Ubuntu Command Line - How to use PulseAudio Loopback and Null Sink (Korean)


몇 명이나 조회했는지는 아직 중요한 일이 아니다. 이를 준비하는 과정에서 내가 배운 것이 더 많았으니까. 과연 내 목소리가 정보 전달에 효율적인 '음색'과 발성 습관을 갖고 있는가? 전문 아나운서가 될 것은 아니니 목소리라는 형식보다는 전달하려는 내용에 더 충실하고자 노력하는 것이 옮겠지만, 기왕이면 보기 좋은 그릇에 담긴 음식이 환영을 받는다는 것은 너무나 당연하다.

OpenShot Video Editor를 빨리 익혀서 타이틀도 좀 제대로 달고 여러 미디어 클립을 이어서 편집하는 방법도 익혀야 하는데 진도가 도무지 나가지 않는다. 지켜야 할 마감일이 있는 것도 아니니 즐긴다는 기분으로 하면 어떠하랴? '프로페셔널 스튜던트'가 되면 좀 어떠한가?

오늘 점심시간에 들른 서점의 신간 코너에서 찍음

유튜브에는 입문자를 위한 OpenShot tutorial이 무척 많이 올라와 있다. 그 중에서 초보자를 위한 짧은 것 하나(예: OpenShot Video Editor - Tutorial for Beginners in 10 Minutes!)를 반복해서 보면 웬만한 기초는 터득할 수 있을 것이다. 텍스트로 만들어지는 타이틀은 실제로는 벡터 그래픽 편집기인 Inkscape를 경유하여 만들어진다.





2021년 2월 18일 목요일

Kazam을 이용한 데스크탑 녹화 연습

RecordMyDesktop이라는 화면 녹화용 프로그램을 잠시 써 보았었다. 녹화된 화면을 재생할 때 움직이는 창이 마치 계단처럼 깨져 나오는 현상이 있었다. 다른 프로그램을 쓰면 혹시 개선되지 않을까 생각이 들어서 Kazam이라는 것을 설치해 보았다. 훨씬 양호하다!

MXL Tempo USB 마이크로폰을 연결하여 혼자 중얼거리면서 화면(1366x768라는 기괴한 해상도... 관련글)을 녹화해 보았다. 총 길이는 4분 26초이고 mp4 파일로서 25.4 MB. KBS Classic FM을 켜 놓은 상태에서 녹음을 했더니 유튜브 재생음과 더불어 배경음악이 이중으로 깔린다.

구글 드라이브 사용량은 업로드 전 63.8 MB였는데 업로드 후 줄지 않은 것으로 보아 이를 잡아먹지는 않은 것 같다. 파일의 해상도와 길이가 일정 기준 이하이면 구글 드라이브를 차지하지 않는 것으로 보인다. Gretchen Siegchrist라는 사람이 2020년 1월에 올린 글 Blogger: Using Video on Your Blog에는 구글 블로그(블로거)에 올릴 수 있는 동영상에 관한 정보를 설명하였다.

  • 포맷: mp4, wmv, mov 등 
  • 가로나 세로 어느 하나라도 2,048 픽셀을 넘지 않고 재생 시간이 15분 이내라면 구글의 무료 저장 용량(15 GB)에 합산되지 않음
  • HD(high-definition) video의 용량을 줄이려면 1280x720의 화면비를 지킬 것
흔히 말하는 HD는 1280x720(16:9)으로서 720p라고도 부른다. 화소의 수는 100만에 약간 못미친다. 'p'는 순차주사방식, 즉 progressive scan을 의미한다. 


동영상의 파급 효과는 유튜브가 더 크겠지만 아직 준비가 부족한 상태라서 당분간은 블로그에만 올려 보고자 한다. 얼굴이 나오지 않으니 녹화할 때의 부담감이 훨씬 덜하다^^ 

리눅스에서 펄스오디오를 쓰는 요령에 대한 국어 자료(텍스트, 동영상 전부)가 상당히 부족하다는 것을 알게 되었다. 만약  내가 유튜브에 올릴 동영상을 진지하게 만들게 된다면 이것이 첫 번째 주제가 되지 않을까?

2021년 2월 15일 월요일

돈만 내면 뭐든지 관리해 주는 시대 - 'AI 초학습' 이야기

요즘 TV를 켜면 너무 많이 나와서 짜증을 불러 일으키는 광고가 있으니 바로 커블밀크T이다. 국민 정신을 개조라도 하려는 듯, 엄청난 마케팅 비용을 쏟아붓고 있음을 느낄 수 있다. 커블은 마치 모든 의자에는 자기네 제품이 하나씩 올라가 있어야 한다고 세뇌를 하는 것 같다. 아이들 의자, 부모님 의자를 거쳐 이제는 사무용 의자까지 목표로 삼은 모양이다.

설 연휴 기간 동안 JTBC 교육특집 투모로우 클라스에서는 'AI 시대 초학습이 온다'는 제목의 방송을 하였다.

프로그램이 시작되기 전 나오는 안내문에서는 간접 광고가 포함되어 있다고 하였다. 그래서 출연자 앞에 특정 기업의 음료수라도 놓여 있을 것으로 생각을 하였다. 그런데 그런 수준이 아니었다. 발표자로 나온 교수가 시작 부분에서부터 신산업 관점에서의 비대면 학습을 지나치게 강조하는가 싶더니, 결국 프로그램의 주요 내용은 요즘 TV에서 줄기차게 광고를 하는 '밀크T'를 홍보하기 위한 프로그램이나 다를 바가 없는 것이었다. 방송 중간을 끊고 나오는 광고 역시 밀크T였다.

밀크T가 도대체 뭘까? T라는 알파벳이 들어 있어서 처음에는 SK텔레콤에서 만든 교육 서비스라고 생각을 했었다. 알고 보니 교과서를 만드는 천재교육(이 기업 이름은 교육이 당면한 목표를 잘 반영하고 있는가? 고등학교 때 해법수학 참고서를 만들던 그 회사이다)이 SK텔레콤과 제휴해서 만든 학습 관리 서비스가 밀크T이다. 회비를 납부하면 교재와 태블릿이 제공되고, 이를 이용하여 학습 관리를 받는 것이다. 전담 교사가 꼼꼼하게 매니저 혹은 코디네이터 역할을 한다. 그런데 나무위키에서 밀크T를 검색해 보고는 실소를 금할 수 없었다. 밀크T용으로 제공되는 태블릿은 일반적인 인터넷 이용이 되지 않도록 펌웨어 혹은 소프트웨어 수준에서 차단이 되어 있는데, 이를 뚫는 방법에 대한 설명이 나무위키에 매우 상세하게 나오고 있었다. 

투모로우 클라스에서는 구체적으로 회사 명을 밝히지는 않았지만(물론 방송을 보고 나면 다 알 수 있는) AI를 이용하여 학습용 소프트웨어 및 콘텐츠를 개발하는 부서를 소개하였다. 기업이 이렇게 알아서 잘 준비를 하고 있다는 느낌을 주기에 충분하였다. 코로나 팬데믹 시대에 전통적인 대면 교육이 어려우니 새로운 기술이 그 빈틈을 채우기 위해 노력하고 새로운 소비('산업'이라고 해 주자)를 창출하는 것은 피할 수 없다고 하자. 하지만 이것이 자발적이고 창의적인 학습 습관을 기르는 데에는 얼마나 도움이 될까? 기술과 플랫폼을 갖고 있는 교육테크 기업의 '소비자'가 되어 버린다면 능동적인 학습을 하기가 오히려 어렵다고 생각한다. 만들어진 프로그램 안에서 얼굴을 들이대고 터치만 할 뿐이다.

코세라(Coursera) 등 대규모 온라인 교육(MOOC, Massive Open Online Course)가 지식의 저변 확대에 크게 기여한 점은 인정한다. 여기에서는 인터넷이라는 기술을 전통적인 교육 전달의 방법에서 한 매개체로 매우 잘 활용하고 있다. 평가나 피드백 등이 중요한 어학 교육이라면 현재 나온 기술을 조금 더 활용하는 것은 좋은 일이라 생각한다. 그러나 세상을 바라보는 훈련을 해 나가는 어린 아이들에게 태블릿을 쥐어주고 학습 관리를 받게 만드는 것이 과연 옳은 일인지는 잘 판단이 서지 않는다.

이미 요즘 아이들은 사전을 잘 찾지 못하고 글씨도 잘 쓰지 않는다. 방송에 소개된 그 회사에서는 아이들이 쓴 손글씨를 인식하여 디지털화하는데 첨단 AI 기법을 쓰고 있었다. 이를 자랑삼아 이야기할 수는 있겠지만, 이러한 기술이 완전히 뿌리를 내린다면 정갈한 글씨를 쓰기 위한 노력을 누가 할 것인가? 다소 딱딱한 음식을 공들여 씹고, 손가락을 놀려서 글씨를 쓰거나 악기를 익히고... 이런 노력 자체가 뇌의 발달을 비롯하여 교육 및 인간 관계 형성에 얼마나 중요한지를 망각해서는 안 된다. 이제 아이들이 도서관에 가서 지식을 찾는 방법은 이미 모른다고 해도 과언이 아닐 것이다. 아마 기술 옹호론자들은 이렇게 말할지도 모른다. 책을 뒤적이고 손으로 글씨를 쓰는 전통적인 방법은 이제 다 버려야 한다고. 손글씨를 익히기 전에 키보드나 태블릿으로 글씨를 입력하는 방법을 먼저 배워야 한다고. 아무리 악필이라 해도 AI가 다 인식을 해 주고, 말로 녹음을 해도 텍스트로 정확하게 전환이 되니 무슨 상관이냐고.

공유 경제 시대는 제대로 뿌리내리지 못하였고, 이제는 구독(subscription) 경제 시대라고 한다. 월정액만 내면 뭐든지 할 수 있는 시대가 되었다. 자동차도 소유할 필요가 없고, 알아서 비만 관리도 해 주고, 아이들의 학습 관리도 해 준다. 관심과 노력을 돈과 바꾸는 시대이다. 얼마나 편리한가? 그렇다면 그렇게 하여 남는 시간에 뭘 하겠다는 것인가? 더욱 가치 있는 일을 할 수나 있을까? 결국 남는 시간에는 스마트폰이나 문지르고 주식 시황판만 들락거릴 것이 뻔하지 않은가?

기술은 스마트해지는데 사람은 그렇지 않다.

2021년 2월 14일 일요일

GenoGlobe 로고를 새로 만들다

사용에 제약이 없는 지구 이미지와 내가 만든 그림을 포함하여 대충 만들어서 한동안 쓰던 GenoGlobe 로고는 다음과 같다. 지나치게 복잡한 감이 없지는 않다.

Free Logo Design이라는 사이트가 있어서 새로운 로고를 만들어 보았다. 웹 게시 용도의 저해상도 이미지(200x200 픽셀) 다운로드는 무료이지만 심각한 용도로 쓰려면 돈을 내야 한다. 그러면 그렇지! 세상에 공짜가 어디 있겠는가?


이렇게 한번 만들어진 로고는 유일한 것일까? 이 웹사이트에서 무료 로고를 만들기 위해 접속하는 잠재적 고객들에게 같은 도안을 제시하지는 않을 것으로 믿어 본다. 로고와 테마곡까지 만들었는데 이제 이것으로 무엇을 할 것인가? 나만의 저작물을 만들기 위해 노력해 보자. 그런데 주제는 무엇으로?