간단하게 계산을 한다든가 파이썬 스크립트를 돌릴 때 Jupyter notebook을 띄워서 iPython 환경에서 작업을 할 때가 많습니다. 작업한 내역을 그대로 문서처럼 저장해 뒀다가 나중에 그대로 열어서 보기가 좋기 때문에 노트 겸용으로 쓰기 편하니까요. 


회사에서는 OS 기본 브라우저는 인터넷 익스플로러로 설정해놓고 쓰는데, 이러면 Jupyter notebook을 실행시키면 일단 IE에서 창이 뜨게 됩니다. 안타깝게도 (제가 뭔가 설정을 잘못해서 그런 걸지도 모르지만) IE에서는 Alt-Enter (셀을 실행한 다음 다음 셀에서 삽입 모드로 전환) 기능에 뭔가 문제가 있어서 매번 셀을 실행한 다음에 다음 셀로 내려가서는 한 번 더 엔터 키를 눌러야 삽입 모드로 들어가서 좀 불편합니다. 그래서 크롬에서 새 창이나 탭을 열고 주소를 입력해서 주피터를 시작하는데, 이게 또 하다 보면 귀찮습니다.


그래서 Jupyter notebook 기본 브라우저를 변경하는 방법을 찾아보니 https://stackoverflow.com/questions/35229604/how-to-change-the-default-browser-used-by-the-ipython-jupyter-notebook-in-linux 같은 글이 있더군요. 그래서 그대로 해 봤는데, 파일 경로를 영 못 알아먹는 것 같습니다. 예를 들어 컴퓨터에서 크롬 브라우저 실행파일이 C:\Program Files (x86)\Google\Chrome\Application\chrome.exe 라고 할 때, c.NotebookApp.browser = u'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe' 같은 식으로 설정파일에 지정을 해 줬더니 "No such file or directory: C:/Users/MY_USER_NAME/Files"라는 에러 메시지가 뜹니다. "MY_USER_NAME" 부분은 윈도우 시스템의 사용자 이름이고요. 절대경로 상대경로가 꼬이면서 나타나는 문제가 아닐까 하는 생각은 드는데, 어떻게 해결해야 할지 잘 모르겠더군요.


근데 의외로 간단한 해결책이 있었습니다. 바로 BROWSER라는 윈도우 시스템 변수를 이용하는 거였습니다. 시스템 변수 설정하는 데 가서 BROWSER라는 시스템 변수를 새로 만들고, 그 값으로 iPython에서 사용하길 원하는 기본 브라우저의 주소를 "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" 같은 식으로 적어주는 거죠. 이렇게 하고 나니 jupyter_notebook_config.py 설정파일에서 따로 브라우저를 지정해주지 않아도 알아서 주피터 노트북이 크롬에서 바로 뜹니다. 물론 webbrowser 모듈의 get 함수 같은 걸로 브라우저에서 뭔가를 띄웠을 때도 마찬가지로 BROWSER 변수에서 지정한 브라우저가 열립니다.


오늘의 삽질기 끝.



옛날에 누군가와 대화를 하다가, 넌 취미가 뭐냐고 해서 음악 듣는 걸 좋아한다고 답했다. 주로 어떤 음악을 듣느냐고 해서 I usually enjoy listening to classical music. 이라고 답했는데, 그 친구가 "classical music"을 좋아하는지 아니면 "classic music"을 좋아하는지 물은 적이 있었다. "classical music"과 "classic music"의 차이를 몰랐기 때문에 차이를 물어보려 했으나, 다른 사람이 조금 연관된 다른 잡담으로 대화를 이어가다 보니 흐지부지 그 얘기는 지나가고 말았었다. 한 번 기록도 남길 겸 Classical music, classical music, classic music의 차이를 적어볼까 한다.


우선 첫 글자를 대문자로 써서 고유명사처럼 적는 Classical music은 우리말로 옮기자면 고전주의 음악을 뜻한다. 최대한 상세하게 풀어쓰자면 music from the Classical period in Western music 이라고 할 수 있을 것 같다. 서양음악사에서 대략 1730년경부터 1820년경까지의 시기에 만들어진 음악이다. 하이든, 모차르트, 베토벤, 슈베르트  같은 작곡가의 곡들을 떠올리면 된다. (베토벤과 슈베르트는 낭만주의로 넘어가는 시기의 작곡가라고 할 수 있긴 하다.)


첫 글자를 소문자로 적는 classical music은 우리말로는 고전 음악, 서양 고전 음악, 또는 클래식 음악이라고 옮길 수 있는 음악으로, 우리나라에서 “클래식”으로 통용되는 게 보통 classical music이라고 생각하면 된다. 그레고리오 성가 같은 중세 음악, 바흐의 바로크 음악, 하이든, 모차르트의 고전주의 음악, 바그너, 브람스의 낭만주의 음악, 드뷔시, 스트라우스의 근대음악에서 라이히, 글래스의 현대음악/포스트모던 음악에 이르기까지 다양한 시대의 음악으로 분류할 수 있다.


"classical"이 아닌 "classic"이라는 단어로 수식하는 "classic music"은 장르를 불문하고 오랫동안 많은 대중들이 널리 즐겨들어온 음악을 가리킨다. 그냥 우리가 “고전이라고 할 수있는”, 또는 “고전이 되어 버린” 정도의 수식어를 붙이는 음악들은 다 classic music이라고 할 수 있다. 대부분의 classical music이 classic music이라고 할 수 있고, 우리가 보통 생각하는 클래식 음악 뿐 아니라 락, 컨트리, 재즈 등에서도 classic music으로는 여러 곡들을 꼽을 수 있다. 앞의 두 음악에 비하면 정의 자체가 주관적이기 때문에 정확하게 규정하기가 어렵다는 문제가 있다. 개인의 취향에 따라 그걸 고전이라고 할 수도 있고 인정하지 않을 수도 있는 여지가 많다.


집합 관계로 따진다면 Classical music은 classical music의 부분집합이고, classical music은 classic music의 부분집합이라고 할 수 있을 것 같다. (물론 classical music 중에서 현대음악이나 포스트모던 음악은 classic music이라고 인정하지 않는 사람들도 많이 있을 법하다.)


P.S. 회사에서 오픽 시험을 보라고 하는데, 그거 준비하려면 취미 같은 거 영어로 말하는 연습을 좀 해야 하는 것 같아서 이런저런 걸 떠올려 보다가 classical music과 classic music의 차이가 생각나서 끄적여봤다.


P.P.S. 궁금해서 네이버 영어사전에서 classical music을 검색해 봤는데, 이건 뭐 완전 총체적 난국이다.

나는 원전을 좋아하진 않지만 그래도 원전 없이 살기는 쉽지 않기 때문에 지금 있는 원전들을 당장 폐쇄해야 한다는가 하는 주장에는 그다지 동의하지 않는다. 하지만 원전을 우리나라에 더 짓는다든가 무리하게 사용기간을 연장하는 건 반대한다. 예전에 비하면 태양광 발전 같은 게 더 이상 미래가 아니라 현실이 되었기 때문이고, 적게 만들어서 적게 쓰는 방향으로 사회적 분위기를 바꿀 필요가 있다고 생각하기 때문이다.


중국에서 황해 연안에 엄청나게 많이 새로 짓고 있는 원전에 대해서도 당연히 반대하긴 하지만, 요즘처럼 미세먼지 심한 거 보고 있노라면 어차피 깔릴 원전, 빨리 깔리는 게 낫겠다는 생각마저 든다. 중국에서 원전을 만드는 데 우리가 영향력을 미칠 수 없다면 더욱 더 그렇다. (중국이 우리의 엄중경고에 원전 건설 계획을 취소할리가...) 물론 중국이 대국답게(?) 원전 대신 사막에 태양광/태양열이나 풍력 발전소를 대륙의 스케일로 건설해서 그 전기를 사용해 준다면 훨씬 더 행복하긴 하겠다.


이런 생각들을 하다가 문득 궁금해져서 국내 발전만이라도 온실가스와 미세먼지 배출 없이 하려면 어떻게 해야 하는지 알아보았다. 작년 그린피스 발표에 의하면 한국 미세먼지의 70%가 국내에서 만들어진 것이라 하고, 나사에서도 국내에서 발생된 미세먼지가 절반 정도라고 했던 것 같다. 중국에서 넘어오는 건 어쩔 수 없다고 해도 국내에서 발생하는 것만 확 줄여도 공기 질은 분명하게 좋아질 거다.


한전의 발표자료*에 따르면 2015년을 기준으로 할 때 우리나라 발전량은 545.5 TWh 정도였다.** 그 중 이산화탄소 배출 및 미세먼지 배출 문제가 거의 없는 에너지원의 발전량은 수력 5.8 TWh, 원자력 164.8 TWh, 대체에너지*** 16.7 TWh였다. 그러면 온실가스와 미세먼지 배출 문제가 있는 에너지원의 발전량은 총 358.2 TWh이다. 과연 이것을 전부 태양광 발전소로 바꾸려면 땅이 얼마나 필요할지 대략적으로 따져보자.


100 kW 태양광 발전소 하나당 평균 연간 발전량은 130 MWh 정도이며, 에너지 효율 16%인 다결정 태양광 모듈을 사용한다고 가정할 때 100 kW 태양광 발전소 하나당 면적은 넉넉잡아 2,000 m^2이다.**** (약 45 m x 45 m 크기니까 꽤 작은 발전소다.) 면적으로 따진다면 5,511,000,000 m^2, 또는 5,511 km^2가 필요한데, 이는 축구장(7,140 m^2) 77만개 정도에 달하는 면적이다. 서울 면적(605 km^2)의 아홉 배, 제주도 전체 면적(1,848 km^2)의 세 배에 육박한다. 우리나라 (남한) 총 면적이 100,295 km^2니까 우리나라의 5.5%에 달하는 땅을 태양광 패널로 덮어야 한다. 어마어마한 면적이다. 이걸 짧은 시간 안에 하려고 하면 엄청난 반대에 부딪힐 게 뻔할 것 같다. 하지만 나는 핵융합 발전이 상용화되기 전까지는 이게 최선의 방법이라고 생각한다.


태양광 발전 등의 확산에 있어서는 정책적인 유도가 아주 중요하다. 예를 들어 공장이나 사무실 등 업장 건물의 지붕에 태양광 발전소를 만든다고 해 보자. 지붕 면적이 1322 m^2 (약 400평) 정도면 100 kW 발전소를 만들 수 있다고 하는데, 보통 이 정도 업장이면 전기요금이 사업에 있어서 큰 문제가 되지 않는다. 자기 공장 지붕에서 만들어낸 전기를 자체적으로 사용하는 게 당연히 에너지 관점에서는 최선이지만, 한전의 요금체계를 감안한다면 공장용 전기가 워낙 싸기 때문에 직접 발전해서 쓴 만큼 할인받는 걸로는 투자대비 수익이 좋을 수가 없다. 그래서 공장 지붕 같은 것을 지금은 공장주가 다른 사람에게 임대해 주고 임대료를 받고, 거기에 발전소를 세운 사람이 한전에 전기를 팔아 돈을 버는 식으로 운영하는 것 같다. 그러나 정부와 한전에서 요금 및 구매 가격 체계를 바꾼다면 지금보다 훨씬 많은 공장, 건물, 창고의 지붕에 태양광 발전 패널이 깔릴 수 있을 거고 그만큼 더 깨끗해질 수 있을 거다.


몇 년 전부터 태양광 발전소를 지을 수 있다면 좋겠다는 생각을 했다. 지금의 전력 매매 시스템으로는 투자대비 수익률이 그럭저럭 괜찮기도 하고, 환경에도 도움이 될 것 같기 때문이다. 안타깝게도 제일 중요한 땅(또는 돈)이 없는 관계로 아직 그냥 손가락만 빨고 있다. 아직 집도 없어서 먼 미래의 일이 되긴 하겠지만, 혹시라도 몇 억 정도 투자할 돈이 생긴다면 최우선적으로 태양광 발전소를 지었으면 하는 생각이다. (참고로 100 kW 태양광 발전소를 하나 만들면 연간 전력 판매 수입은 가중치 1.2 적용 발전소 기준 대략 3600만원 정도라고 한다.) 가장 바람직(?)하다고 생각하는 건 너무 깊지 않은 시골 어딘가 적당한 지역에 땅을 사서 거기에 채소공장을 짓고 그 지붕에 태양광 발전소 까는 것. 그리고 그 옆에 식당을 지어서 채소공장 투어도 시키고, 채소공장 프랜차이즈(?) 같은 것도 하고 식당도 운영하고 그러는 거다... ㅎㅎㅎ


* 한국전력통계 제85호, 2016년 6월, 한국전력공사

** 같은 해 기준 발전설비 용량은 101 GW 정도였다.

** 대체에너지에 매립지에서 생성되는 가스나 공장에서 부산물로 생성되는 가스로 만들어낸 에너지도 포함되어 있지만, 그러한 가스는 어차피 대기중으로 배출되었을 때 이산화탄소 못지않은, 또는 더 강한 온실가스 역할을 할 것이고 연소 후 미세먼지 배출량도 미미할 것으로 추정되므로 온실가스와 미세먼지를 추가로 생성해내지는 않는 것으로 쳐도 크게 문제가 없을 것으로 보인다. 한 가지 문제는 폐기물 소각장(청라, 백석, 명지소각장 등)에서 만들어내는 에너지도 여기에 포함되는데 이 부분을 왜 여기에 포함시켰는지는 잘 이해가 되지 않는다. 

*** 자료 출처: 주한 영국대사관 김지석 에너지 혁신 담당관 

MacOS 10.12로 업데이트를 한 후에 homebrew로 gcc를 설치할 일이 있어서 오랜만에 homebrew를 업데이트하려고 했더니...


$brew update

Error: /usr/local must be writable!


이렇게 에러 메시지가 떴다. 그래서 좀 찾아봤더니 다음과 같은 식으로 해결할 수 있었다.

https://www.reddit.com/r/MacOS/comments/4o37no/psa_fixing_homebrew_on_sierra/d826tuv/


간단하게 정리해서 설명하면 이렇다.


우선 다음과 같이 해서 /usr/local 디렉토리의 소유권을 변경한다.

$sudo chown -R $(whoami) /usr/local


그리고 나서 다음과 같은 명령으로 homebrew를 업데이트한다.
$cd "$(brew --repo)" && git fetch && git reset --hard origin/master && brew update

마지막으로 다음과 같은 명령으로 /usr/local 디렉토리의 권한과 소유권을 원래대로 돌려놓는다.
$sudo chmod 0755 /usr/local
$sudo chown root:wheel /usr/local


이렇게 하고 brew update 하니까 다시 정상적으로 잘 된다.

며칠 전에 CycleOn의 SC-1이라는 케이던스/속도 측정계를 샀다. 요즘 나오는 가민 신형처럼 뒷바퀴 허브와 크랭크암에 각각 고무 밴드로 고정시키는 형식의 케이던서/속도 측정계가 괜찮은 가격으로 블루투스용으로 나왔다면 그걸 샀을 텐데, 그런 건 아직 없더라.

근데, 케이던스/속도 측정계를 달고 간 첫날 케이던스용 자석이 떨어져 버렸다. 케이블 타이로 크랭크암에 고정시키는 게 영 맘에 안 들었는데, 울퉁불퉁한 도로를 덜컹거리며 지나가다 보니 떨어졌나보다. 게다가 클릿 페달에서 발 못 빼서 왼쪽으로 한 번 오른쪽으로 한 번 낙차하고, 자전거 잠시 세워놓고 쉬다가 바람에 자전거 넘어져서 이래저래 자전거가 충격을 많이 받기도 했다. 케이던스가 영 바뀌질 않아 확인해 보니 자석이 사라지고 없었다. 케이블 타이만 덩그라니 크랭크 암에 둘러져 있었다.

케이던스용 자석을 CycleOn 회사에서 따로 사도 되긴 하지만, 그냥 이 링크에 있는 방법을 쓰면 된다. 페달 고정하는 헥스 키 구멍에 사이즈 맞는 자석을 쏙 끼워주는 방법이다. 케이던스미터용으로는 네오디뮴 자석 지름 6이나 8짜리 원통형 자석(페달의 헥스 키 구멍 사이즈에 맞추면 된다. 내가 쓰는 시마노 R550 클릿 페달은 6 mm 짜리 키를 쓰니까 지름 6 mm에 높이 5 또는 10짜리 자석 사면 되는 듯하다)을 사면 된다. 속도계용으로는 스포크에 고정시킬 자석이 필요한데, 10 mm x 5 mm x 2 mm (또는 1 mm) 정도 되는 6면체 자석 사서 스포크에 절연 테이프 같은 걸로 고정시켜주면 되는 것 같다. 스포크가 납작하면 더 안정적으로 고정될 것 같은데 내 건 그냥 둥그런 철사 형태라 과연 잘 붙어있을지 걱정되긴 하네...

자석은 강할수록 센서가 안정적으로 작동하는 데는 유리하긴 한데, 또 너무 강하면 미약하나마 프레임과 가까운 데를 지날 때 맴돌이 전류를 만들어내면서 에너지 손실이 생기기 때문에 단점도 있을 것 같다. 뭐 다른 부위에서 생기는 에너지 손실에 비하면 아주 미약한 수준이긴 하겠지만...

어쨌든 이렇게 하면 더 깔끔하고 안정적으로 고정시켜서 사용할 수 있을 것 같다.

자석은 오픈마켓에서 네오디뮴 자석을 검색하면 쉽게 찾을 수 있고, 개당 몇 백원 정도에 살 수 있는데 배송료가 더 많이 나오는 수도 있겠다.

혹시 자전거 가게에서도 자석을 구할 수 있지 않을까 싶어 어제 집 근처에 있는 고급 자전거 전문점인 케이한 바이시클에 가 봤는데, 자석이 여러 가지 많았는데 하필이면 8 mm짜리가 없어서 못 샀다. 6 mm 짜리를 사서 써도 아무 문제는 없는데, 헥스 키 구멍에 쏙 맞는 느낌이 안 드는 게 아쉬워서 그냥 나중에 온라인으로 주문하기로 했다. 자석은 대략 개당 2천원 받던데, 배송료 안 들고 바로 살 수 있는 거 감안하면 제 사이즈가 있었더라면 개당 2천원이라도 비싸다는 생각 안 하고 샀을 것 같다.

저는 주로 Runtastic pro로 운동을 기록합니다. 특별히 런타스틱을 좋아하는 건 아니고, 우연히 공짜일 때 Runtastic Pro를 다운받다 보니, 그런 김에 그냥 쓰고 있을 뿐입니다. 사실 맨날 골드 회원으로 업그레이드하라고 해서 좀 짜증나기도 합니다.

근데 런타스틱에서 (골드 회원이 아닌 경우) 부족한 기능 중 하나가 도전과제 기능입니다. 스트라바에서 한 달 동안 1000 km 달리기 도전 과제가 나온다거나 하는 거 말이죠...

좀 뒤져보니 런타스틱과 스트라바를 동시에 실행시켜서 쓰는 사람은 없는 것 같고 (별로 그러고 싶지도 않고) 런타스틱 운동 기록을 스트라바로 옮기는 방법을 대신 찾을 수 있었습니다.

런타스틱 운동기록을 스트라바로 올리고 싶을 때는 이렇게 하면 된답니다.

원문 출처: https://strava.zendesk.com/entries/58074034-Moving-your-activity-history-from-Runtastic-to-Strava

  1. 런타스틱에서 원하는 활동 페이지를 연다.
  2. 활동 내용 위쪽 오른쪽을 보면 “편집” 옆에 삼각형 아이콘이 하나 있는데, 그걸 클릭한 다음 “다운로드”를 클릭한다.
  3. tcx나 gpx 형식으로 파일을 다운로드한다. (.kml 형식은 스트라바에서 쓸 수 없다고 한다)
  4. 스트라바에 올릴 활동이 여러 개 있으면 위 과정 필요한 만큼 반복한다.
  5. 스트라바 계정에 로그인한다.
  6. 화면 맨 위를 보면 + 표시가 있는 아이콘이 있는데, 그 아이콘에서 “활동 업로드”를 선택한다.
  7. 올릴 파일을 지정해서 업로드한다. (한 번에 25개까지 업로드 가능)
  8. 필요하면 활동의 이름을 지정하고 내용을 편집한다.

근데 수십, 수백 개의 활동을 일일이 다운받는 게 귀찮을 수도 있겠죠? 여러 활동을 자동으로 TCX 파일로 받아주는 스크립트도 누군가가 만들어서 공개해 줬습니다. 링크: http://blog.favo.org/post/56040226362/export-all-activities-from-runtastic-as-tcx

이 스크립트를 이용하면 1년치 활동 파일을 주루룩 받을 수 있다고 합니다.

  1. 런타스틱 웹사이트에서 활동을 선택한 다음 원하는 연도를 클릭하면 그 연도의 활동이 쭉 다 뜬다.
  2. 그 상태에서 자바스크립트 콘솔을 띄운 다음 위 링크한 사이트에 있는 코드를 입력하고 실행시킨다. (자바스크립트 콘솔은 크롬 기준으로 Ctrl-Shift-J 누르면 뜹니다. 아니면 주소창 오른쪽에 있는 세 줄 아이콘(Chrome 맞춤설정 및 제어)을 누르고 “도구 더 보기” > “자바스크립트 콘솔”을 차례로 클릭해도 됩니다.)
위 링크된 블로그에 있는 pr0phet 님의 댓글에 있는 코드를 대신 써도 됩니다. (대신 그 댓글에 있는 코드 그대로 쓰면 GPX 형식으로 저장됩니다. TCX 형식을 원하시면 코드 안에 있는 gpx만 tcx로 바꾸면 됩니다.)

일단은 이렇게 런타스틱 프로 계속 쓰면서 필요하면 스트라바에 파일 올리는 걸로 해야겠습니다.

Mac OS에서 PDF 파일을 이미지 파일로 변환하는 방법을 소개해 볼까 합니다.

여러 페이지로 이뤄진 PDF 파일을 여러 개의 png 파일로 변환해야 할 일이 있었습니다. Adobe Acrobat Pro가 있으면 간단하게 되는 일인 것 같은데, 살 돈은 없고, 온라인에서 무료로 변환해 주는 서비스를 쓰려고 하니 변환할 PDF 파일이 수백 페이지 짜리라 곤란해서 구글링을 좀 해 봤습니다.

잠시 검색한 끝에 Automator를 이용하는 편리한 방법을 찾았습니다. 방법은 이렇습니다.

우선 Automator를 엽니다.

그리고는 아래와 같이 세 가지 항목을 찾아서 작업흐름(Workflow)에 넣어주면 됩니다. 우리말 지역화를 하다 말았는지, 동작 검색창에서 한국어로는 검색이 안 돼서 괄호 안에 영어 동작 이름을 적어두었습니다.

  1. Finder 항목 요청 (Ask for Finder Items)
  2. PDF 페이지를 이미지로 렌더링 (Render PDF Pages as Images)
  3. Finder 항목 이동 (Move Finder Items)



이렇게 하고 나서 

  1. “PDF 페이지를 이미지로 렌더링”작업 옵션에서 색상 모델이나 포맷, 해상도 옵션 등을 본인이 원하는 수준으로 설정합니다.
  2. 맨 밑에 있는 “Finder 항목 이동” 작업의 “대상” 옵션에서 변환된 파일을 저장할 폴더를 지정해줍니다.

위의 작업을 다 하고 나서 Automator 기본 창 오른쪽 위에 있는 실행 버튼을 누르면 어느 파일을 변환할지 묻는 창이 뜹니다. 거기서 변환할 PDF 파일을 고르면 변환 작업이 시작됩니다. 제 컴퓨터가 몇 년 된 거라 그런지 500 페이지 정도 되는 PDF 파일을 변환하는 데 몇 분 정도 걸리더군요. 충분히 기다려주고 나서 파일이 만들어지면 품질을 확인해 보고 마음에 안 들면 옵션을 조정해서 다시 작업을 해 주시면 됩니다. 파일 제목은 원래 PDF 파일 이름 뒤에 스페이스를 한 칸 넣은 다음 페이지 번호를 넣는 형식으로 자동으로 만들어줍니다.

부디 많은 분들에게 도움이 될 수 있으면 좋겠네요. 

파워포인트질을 하다 보니 애니메이션 비스무레한 걸 구현해야 하는 상황이 생겼다. 움직이는 gif나 동영상 파일로 만들자니 화질이 마음에 안 들어서 고민을 하다가 그림 파일 수가 아주 많지는 않아서 그림 파일 수만큼 슬라이드를 만들고 슬라이드마다 같은 위치에 같은 크기로 이미지를 집어넣기로 했다.

이런 작업을 할 때 파워포인트의 슬라이드쇼 추가 기능은 그다지 도움이 안 된다. 생각보다 선택의 폭이 좁은 편이라서 위치나 사이즈 등을 원하는대로 일괄조절하기가 어렵기 때문이다.

그림이 열댓장이면 그냥 일일이 하나씩 집어넣고 그림 크기랑 위치 조정하면 되겠지만, 그렇게까지 그림이 적은 건 아니라서 완전 수동으로는 작업할 수 없는 상황. 결국 매크로를 짜서 돌리기로 했다. 

일단 파워포인트에서 매크로 쓰려면 개발 도구 탭을 활성화시켜야 하는데, 이미 그렇게 되어 있지 않다면 다음과 같이 하면 된다. (적어도 내가 일터에서 쓰는 파워포인트 2010 기준으로는 이렇다)

  1. 파일 - 옵션 - 리본 사용자 지정 누른 다음 왼쪽 맨 위의 “다음에서 명령 선택” 드롭다운 메뉴에서 “많이 사용하는 명령” 선택.
  2. 오른쪽 위의 “리본 메뉴 사용자 지정” 드롭다운 메뉴에서 “기본 탭” 선택
  3. “개발 도구” 왼쪽의 네모 클릭해서 선택된 것으로 설정
개발 도구 탭에서 매크로를 클릭한 다음 뜨는 창에서 매크로 이름을 insert_images 쯤으로 적당히 넣은 다음 “편집” 버튼 누른다.
나는 다음과 같은 코드를 사용했다. 자기 상황에 따라 적당히 고쳐 쓰면 되겠다.
(파일은 tt_01.png에서 tt_81.png까지로 저장돼 있었다. 그림은 높이 6.96 cm, 너비 12.6 cm, 그림 위치는 왼쪽 상단 기준으로 왼쪽에서 12.43 cm, 위에서 7.33 cm 로 지정했다. 애니메이션으로 구현될 부분을 제외한 나머지 그림이나 텍스트는 전부 슬라이드 마스터에 집어넣었고 tt_01.png 파일이 들어간 슬라이드 한 장은 수동으로 만들었다. 그림 크기나 위치 정보는 그렇게 수동으로 만든 페이지에서 따온 것이다.)
슬라이드를 새로 추가할 때는 ActivePresentation.Slides.AddSlide(SLIDE_NUMBER, PPTLAYOUT) 메소드를 쓰면 된다.
PPTLAYOUT 자리에는 첫째 슬라이드의 레이아웃을 집어넣으면 되고, 이 때 ActivePresentation.Slides(1).CustomLayout을 집어넣어 주면 된다.
그림 집어넣을 때는 ActivePresentation.Slides(SLIDE_NUMBER).AddPicture() 메소드를 쓰면 된다.
그리고 매크로에서 그림 사이즈를 지정할 때는 픽셀 단위로 지정해야 한다. 프레젠테이션 파일의 해상도를 얼마로 해 놨는지에 따라 다를 수 있는데, 가장 표준적인 72 ppi로 지정되었다고 치면 1 cm는 1/2.54 인치이므로 1 cm당 72 / 2.54 = 28.346 픽셀씩 있는 걸로 보면 된다. cm2Points라는 함수로 지정해서 썼다.
코드는 다음과 같다.

' 여러 파일을 가져와서 전부 같은 사이즈로 리사이즈한 다음 새 슬라이드의 동일한 위치에 배치하는 매크로.

' 삽입할 이미지를 제외한 나머지 이미지는 전부 슬라이드 마스터에 집어넣었으며, 1 페이지에 첫 번째 집어

' 넣을 파일을 수동으로 배치하여 위치를 파악한다.

' 이 경우에는 높이는 6.96 cm, 너비는 12.6 cm, 그림 왼쪽 상단은 왼쪽에서 12.43 cm, 위에서 7.33 cm 위치에

' 들어가도록 맞추고 있다.


Sub insert_images()

    Dim file_name_stub As String

    file_name_stub = "D:\"

    Dim file_name As String

    Dim i As Integer

    Dim pptSlide As Slide

    Dim pptLayout As CustomLayout

    Dim oPic As Shape

    

    Set pptLayout = ActivePresentation.Slides(1).CustomLayout

    

    For i = 2 To 81

        Set pptSlide = ActivePresentation.Slides.AddSlide(i, pptLayout)

        file_name = file_name_stub & "tt_" & Format(i, "00") & ".png"

        Set oPic = ActivePresentation.Slides(i).Shapes.AddPicture(file_name, False, True, cm2Points(12.43), cm2Points(7.33), cm2Points(12.6), cm2Points(6.96))

    Next i

End Sub



Function cm2Points(inVal As Single)

    cm2Points = inVal * 28.346  'VBA에서는 픽셀 단위를 씀. 72 ppi 기준으로 1 cm는

                                '1/2.54 inch이므로 72 / 2.54 = 28.346을 곱하면 됨

End Function


내 박사 지도교수님은 벨 랩 출신이시다. 박사학위를 받고 나서 벨 랩에서 10년 일하시고 한국에 오셨다.

졸업하고 회사를 다닌지 1-2년쯤 됐을 무렵, 한 번은 교수님께 여쭤봤다. 당시 벨 랩은 어떻게 그렇게 훌륭한 일을 많이 할 수 있었냐고. 교수님의 대답은 “매니저들이 똑똑했기 때문이지. 좋은 사람 뽑고 좋은 일 할 수 있게 해 줬으니까.”라고 대답하셨다.

조금은 의외의 대답이었다. 뭔가 연구를 잘 할 수 있는 체계, 제도 같은 게 아니라 “똑똑한 매니저”가 답이라니. 상당히 기운이 빠졌다.

많은 조직에서 “확실한 관리”를 매우 중요하게 여긴다. MBO(Management by Objectives)를 금과옥조로 여기기 때문에 매년 MBO를 위한 목표를 수립하고, 목표 달성을 어떻게 평가할지를 적어 낸다. 그리고 그걸 바탕으로 한 해의 성과를 판단하고 인사고과를 매기며, 그 결과에 따라 승진, 연봉 인상률 등을 결정한다. 거의 모든 것에 대해 “정량적으로 평가할 수 있어야 한다”라는 규칙을 적용한다.

제품을 기획하거나 연구를 기획할 때도 마찬가지. 모든 걸 정량화할 수 있는 잣대로 평가할 수 있도록 만들어야 하고, 그걸 바탕으로 성패를 결정하고 한 해의 실적을 평가, 관리한다.

상당히 공정하고 정확해 보인다.

이런 성향은 이 회사만의 특징이 아니다. 학교에서 학생을 선발할 때도, 학교에서 교수를 선발할 때도, 판검사가 될 사람을 뽑을 때도, 회사에서 직원을 선발할 때도, 교수한테 연구비를 줄 때도 이런 정량적인 평가를 절대적이고도 공정한 것으로 여긴다.

반대로 많은 이들이 공정하고 기회가 많다고 생각하는 미국에서는 오히려 우리가 보기에 상당히 불공정한 방식으로 의사를 결정하곤 한다. 사람을 뽑을 때 가장 중요하게 보는 것 가운데 하나가 추천서이고, 보통 어떤 자리든 알음알음으로 채용되는 게 일상적이다.

교수를 뽑을 때도, 그동안의 트랙 레코드도 중요하지만 앞으로 어떻게 될 사람일지 그 가능성을 매우 중요하게 본다. 한국의 괜찮은 학교라면 교수 자리를 잡을 수 없는 논문 실적으로 미국의 괜찮은 학교에서 교수 자리를 잡고 나중에 혁신적인 일을 해내는 사람을 적지 않게 보곤 한다.

사람의 판단, 직관, 직감에 대한 신뢰와 인정. 이게 자리잡지 않는 이상 앞서가는 사람을 빨리 쫓아가는 수준을 벗어나기 힘들겠다는 생각이 든다.

혁신성은 의외로 동물적인 직감(gut feeling) 같은 것에 의해 크게 좌우된다고 생각한다. 뭐 좋게 말하면 영감(intuition), 직관이나 통찰(insight) 같은 단어로 포장할 수도 있겠지만 결국은 정량화, 계량화가 불가능한 어떤 “느낌”이라는 점은 분명하다.

분명한 목표를 가지고 상세하게 계획하고 치밀하게 준비하여 성공하는 방식은 fast follower가 되는 데 있어서는 상당히 효과적이었지만 아무도 가 보지 못한 길을 탐구하는, 혁신적인 것을 만들어내는 데 있어서는 전혀 효과적이지 않다.

연구 분야에서 좋은 관리자가 되려면 기본적으로 훌륭한 두뇌와 열린 마음가짐을 갖추되 사람, 아이디어에 대한 gut feeling과 배짱을 겸비해야 하는 것이라는 생각이 든다. 직원들이 무슨 일을 하는지 이해할 수 있는 수준의 두뇌, 자기 생각과 다른 주장도 수용할 줄 아는 열린 마음가짐, 좋은 사람, 좋은 아이디어를 알아채는 gut feeling, 주변에서 뭐라고 해도 일을 추진해나갈 수 있는 배짱, 이걸 모두 갖춘다면 정말 훌륭한 관리자가 될 수 있지 않을까?

P.S. 목표를 분명히 정하고 그 목표를 달성하는 것을 최고의 선으로 여기는 MBO 방식이 그다지 효과적이지 못하다는 점은 소비에트 연방의 경제적인 몰락에서 분명히 알 수 있지 않은가! 왜 굳이 망해버린 “계획경제”의 방식을 사익을 추구하는 최전선에 서 있는 사기업들이 그리 신봉하고 있는 걸까?
아내는 아이들 재우느라 일찍 잠자리에 들었고, 나는 혼자 부엌 식탁에 앉아 밀린 일을 좀 처리하고 있다. (부엌 식탁은 내가 가장 기분 좋게 일하는 장소 가운데 하나다. 내가 원하는, 벽을 마주하지 않으면서 내가 있는 공간을 한 눈에 바라볼 수 있는 그런 책상하고 비슷한 모양새를 갖췄기 때문인 듯하다.)

혼자서 물을 끓여서 라벤더 차를 우려 마시면서 찬장에 달려 있는, 입주할 때부터 그냥 거기 달려 있었던 시계 겸 라디오로 그냥 93.1에서 흘러나오는 윤디 리의 라 캄파넬라에 이어 벵게로프와 베를린 필/아바도의 차이코프스키를 듣고 있는데, 그 감흥이 비싼 오디오로 듣는 것 못지 않다.

큰 공 들여 듣는 음악 못지 않게 우연히 흘려듣는 음악이 큰 감흥을 안겨주는 것처럼, 한참을 공을 들여 준비하고 행하는 일 못지 않게 얼떨결에 스쳐지나가는 일이 삶에 지대한 영향을 미치는 것이 인생의 섭리가 아닌가 싶다.

+ Recent posts