기획자 본인만큼 잡다한 블로그

greentec.egloos.com

포토로그




<데이터 시각화 원리> - 조르즈 카몽이스 지음, 이혜연 옮김 독서



이 책의 원제는 "Data at Work" 다. 말 그대로 일에서 쓰기 위해서 데이터를 어떻게 시각화해야 하는가에 대한 시각을 담고 있다. <사용자를 생각하게 하지마><월스트리트 저널 인포그래픽 가이드> 에서도 느꼈지만 이런 류의 책들은 한결같이 복잡하고 화려한 데이터 시각화를 경계하며 심플하고 목적성이 뚜렷한 시각화를 만드는 것을 강조한다.

위에 언급한 책들과 이 책의 차이점은 큰 방향은 같지만 좀 더 철학적인 접근이 보인다는 것이다. 물론 두께도 500여 쪽으로 더 두껍지만 말이다. 저자는 '이것은 모두 실용주의에 관한 것이며, 미적인 것이 아니다(p. 454).', '만약 어느 경우에나 들어맞는 답은 없다는 사실과 보편적인 규칙이 없다는 사실을 받아들인다면, 각 실무자와 소비자 집단에 대해 일관된 이론을 늘 찾아야만 한다(p.24).', '우리가 찾기를 원했던 패턴을 노력 없이 찾을 수 있다면, 패턴이 흥미로울수록 더 많은 패턴을 찾을 가능성이 높음을 의미한다. ... 그 반대 역시 사실이다(p. 177).' 등 처음 봐서는 쉽게 받아들이기 힘든 고수의 심득(心得) 같은 이야기들을 풀어놓는다. 이 책을 보고 나도 이 분야의 시각화라는 것에 대해서 좀 더 고민이 많아지게 되었다.

그리고 이 책의 강점은 수많은 엑셀 차트(모두 인터넷에서 다운로드 가능하다. 이곳에서 상단의 Book 을 누르면 각 챕터별로 차트를 받을 수 있다) 들로 저자의 심득을 쉽게 풀어 설명한다는 것이다. 다 세어보지는 않았지만 차트가 200 여 개가 넘는 듯 하다. 차트의 구성요소인 색, 차트 종류, 라벨 등을 조금씩 바꾸면서 어느 지점이 문제인지, 무엇을 개선하면 더 나아지는지를 꼼꼼하게 알려주고 있다. 하지만 역시 실무에 적용하려면 많은 경험과 노력이 필요할 것 같다. 그래도 실무에 바로 참고할 수 있는 심플하고 깔끔한 다량의 차트를 확보할 수 있다는 것은 이 책을 읽은 이들에게 의도하지 않았던 수확일 것이다.

저자는 따로 블로그도 쓰고 있고 여기에도 짧지만 재미있는 글들이 보이는데, 이 중 저자가 특히 사용을 신중하게 해야 한다고 하는 파이 차트에 대해서 쓰인 이 글이 인상적이다.






사진과 트윗을 올린 Yougov 는 위키피디아에 따르면 영국에 있는 Internet-based market research and data analytics 회사이다. 그런데 이런 전문가 집단에서 올린 트위터 사진에는 피자 조각과 퍼센티지, 꺾인 안내선이 결합되어 있어서 우리가 흔히 보는 파이 차트를 떠올리게 한다. 하지만 사실 파이 차트의 기본 원칙인 모두 합치면 100% 가 성립하지 않고, 퍼센티지와 조각의 비율도 맞지 않고, 애초에 여기서 다루는 토핑의 비율은 중복 조사이기 때문에 합쳐서 100% 가 되지 않고 되더라도 의미가 없다. 책을 읽기 전이었다면 이 사진에서 틀린 부분을 찾아내는데 오래 걸렸겠지만, 저자가 워낙 책 전반에서 파이 차트의 잘못된 사용을 경계한 덕분에 틀린 부분들을 금방 알아볼 수 있었다.

요약하자면 이 책은 데이터 시각화 분야에서 내가 읽은 몇 안되는 책들 중 제일 두꺼웠고 제일 유익했던 책이다. 특히 바로 쓸 수 있는 cookbook 이 아니라 이 분야에서 시각화를 어떻게 해야 하는가에 대해 고민을 하게 만드는 책이라는 점이 좋았다.

<이것이 C#이다> - 박상현 지음 독서




이 책은 한빛미디어의 <나는 리뷰어다> 8월 이벤트에 있던 유일한 C# 책이었던 것으로 기억한다. Actionscript 로 코딩을 시작했고 현재 주력이 js 와 python 인 나에게 옛날부터 C는 가까이하고 싶지만 먼 언어였다. C#은 그래도 회사에서 개발중인 게임의 서버 코드들을 가끔 살펴보면서 문법이 이해하기 쉽다고 생각하고 있었다. 리뷰 후보로는 총 세 권을 골랐고 운좋게도 이 책에 당첨이 되었다.

나는 프로그래밍을 꽤 늦게 배운 편이다. 군대에서 독학으로 배웠는데, 그때 썼던 방법이 책의 코드를 처음부터 끝까지 따라서 치는 것이었다. 사실 프로그래밍 책의 코드들은 프로그램이 이런 식으로 구성된다고 보여주려는 의도도 있지만, 기본적으로는 독자가 따라서 쳐보고 구동시켜 보는 것을 상정하고 있다고 생각한다. 하지만 보통 시간이 너무 오래 걸리는데다 노력에 비해 얻는 것이 적다고 생각해서 나도 그 이후로는 잘 하지 않았었다.

이 책을 읽으면서 프로그래밍을 처음으로 제대로 배울 때의 느낌을 되살리며 코드를 처음부터 거의 끝까지 다 치면서 읽어보았다. 코드를 치다보면 같은 내용에서 조금만 달라지는 부분도 있지만 복사/붙여넣기를 하지 않고 거의 다 직접 타이핑했다. Github 에서 소스코드를 받지 않고 손으로 직접 코드를 치다보면 완벽하게 옮길 수 없다. 오타도 있고 컴파일 에러, 런타임 에러도 발생한다. 하지만 그것을 해결하는 과정도 학습 과정이라고 생각하고, 이 시간이 쌓여야 하나의 프로그래밍 언어를 완전히 자기 것으로 받아들일 수 있다고 생각한다. 가장 좋은 방법은 뭔가 만들어보면서 시행착오를 통해 배우는 것이겠지만, 이 방법은 나에게 안전한 차선책은 된다고 생각한다. 어쨌든 책의 코드는 한정되어 있고, 다 치면 끝나니까.

저자는 지금까지 "뇌를 자극하는..." 시리즈로 대표되는 열 권 내외의 IT 서적을 집필해왔다. 예전에 저자가 쓴 <뇌를 자극하는 알고리즘>을 읽었는데 같은 내용을 외국 서적과 달리 최대한 쉽게 설명하려고 하는 모습이 인상적이었다. 이 책 <이것이 C#이다>도 C#을 처음 접하는 독자를 대상으로 가급적 내용을 쉽게 설명하려고 애쓰고 있다. 하지만 꼭 알고 넘어가야 하는 중요한 내용에 대해서도 놓치지 않으려고 한 흔적이 보인다. 800 여 쪽에 달하는 이 책의 두께가 그 증명이다. 이 분야의 실무와 교육을 겸하는 전문가에게 C# 이라는 언어에 대해서 처음부터 끝까지 자세하게 배울 수 있는 입문서이고, 비교적 최신인 7.2 버전을 따르고 있기 때문에 호환성 걱정도 없다. 또 소스코드 Github네이버 카페도 운영하고 있기 때문에 소스에 문제가 생긴다면 문의하기도 좋다. 동영상 강의도 있다는데 책 설명이 친절해서 굳이 필요할까 싶지만 내용이 이해되지 않는 부분이 있으면 도움을 받을수도 있을 것 같다.

전에도 썼지만 사실 책 한 권을 읽고 어떤 내용에 대해서 모든 것을 알기는 힘든 일이다. 그래도 가이드가 필요하다면 이 책 역시 꽤 안정적인 선택일 것 같다.

Reddit Logo Generator 프로그래밍



내가 자주 가는 subreddit 인 r/proceduralgeneration 에서는 매 달 challenge 를 개최해서 유저들의 참여를 독려한다. 지금까지 재미있는 challenge 들이 많이 나왔는데, 이번에는 특히 이 subreddit 의 로고를 만드는 challenge 가 나왔다. 제한 조건은 다음과 같다.

- reddit 글씨가 들어가야 함 + some art
- 가로:세로 비율은 3:1. 120 * 40 px 로 보일 것이기 때문.
- 오픈 소스. 설치 / 실행이 쉬울 것
-- 물론 코드를 올리는 대신에 많은 양의 로고 이미지 파일을 만들어서 업로드해도 됨
- 매일 새로운 이미지여야 함

이걸 보고 예전에 codepen.io 와 이 subreddit 에 올렸던 Watercolor 가 생각났다. 처음에 몇 개의 픽셀로 이루어진 이미지로 시작해서, 각 픽셀 사이에 중간값을 채우는 식으로 자연스럽게 연결되는 수채화물감 같은 이미지를 만드는 작은 프로그램이다. 내가 독창적으로 생각했던 것은 아니고, 이미지 생성에 참조했던 것은 다른 글이었다. 지금은 링크를 못 찾겠다... 원래는 이 블로그포스트를 보고 따라하려고 했지만 KTX 에서 작업해서 그런지 집중이 되질 않아서 잘 되지 않았다.

원리는 다음과 같다. 처음에 적은 수 - 여기서는 25개 - 의 픽셀에 랜덤한 컬러 값을 지정한다.



그리고 그 후 각 사이값에 적절한 값을 채워넣는다.



적절한 값을 채워넣는 알고리즘은 코드에도 있지만 풀어서 설명하면 다음과 같다.

1. 모든 픽셀의 좌표에 2를 곱해준다.




2. 위에서 부터 3 x 3 의 9개 픽셀을 선택. corner 4 개의 픽셀은 변하지 않는 값으로 두고, 새로 생성되는 빈 픽셀들에 대해서 다음과 같은 규칙으로 픽셀의 RGB 값을 지정한다.
- R, G, B 각각에 대해서 반복
-- corner 4개 픽셀의 average 값 계산
-- edge의 4개 픽셀은 인접한 픽셀 중 한 개의 (RGB 값 + average) / 2 의 RGB 값을 갖는다.
-- center의 1개 픽셀은 corner 4개 픽셀 중 하나의 값을 갖는다. (R, G, B 에서 같은 corner 픽셀이 선택될 확률은 낮기 때문에 center 픽셀은 각 corner 가 어느 정도 섞인 픽셀이 된다)




이후로는 이 과정의 반복이다. 생성되는 픽셀의 수가 타겟 이미지의 픽셀 수와 같아지게 되면 그럴듯한 이미지가 나온다.




이제 이 이미지를 배경으로 reddit logo generator 를 만들려고 보니... 2가지 문제가 있었다.
1. 레딧 로고니까 레딧 마스코트 로봇을 그려주는 게 좋을 것 같다.
2. 매일 다른 이미지가 생성되어야 한다.

1번은 일단 svg 파일을 찾아서, 그것을 통째로 복사하는 식으로 접근했다. 그 다음에 svg 를 canvas 에 그리려고 보니 svg 에 custom tag 들이 많이 붙어 있어서 에러가 나는 것을 발견하지 못해서 1시간쯤 헤맸다. custom tag 들을 열심히 제거하고 나니 svg 를 canvas 에 그릴 수 있어서, 최종 이미지에 로봇이 포함될 수 있었다.

2번은 원래 WaterColor 버전에는 random seed 가 없었다. 그래서 매일의 year, month, day 로 random seed 를 구성하도록 접근해서 해결했다. 이것도 seed 에 숫자를 보내야 하는데 date 문자를 그대로 보내는 바람에 버그가 생겨서 1시간쯤 헤맨 것 같다.

어쨌든 이 2가지의 난관을 극복하니 로고 제너레이터를 완성할 수 있었다. 언젠가는 내가 만든 이 로고가 proceduralgeneration subreddit 메인에 걸리면 좋겠다.


This War Of Mine - 마음을 성장시키는 경험 추천게임

오늘 회사에서 Workshop 을 했는데 과제로 이 게임을 분석했다. 사놓은지는 오래 되었지만 한시간밖에 플레이하지 않았었는데, 이번 기회에 다시 플레이하며 예전에 느끼지 못했던 여러 가지를 느낄 수 있었다. 레포트를 쓰는게 오랜만이라 조심스러워서 존댓말로 썼다.





This War Of Mine 은 로그라이크 게임이라고 할 수 있습니다. 아스키 문자로 그려지는 던전에서 플레이했던 게임과 닮은 게임들을 일컫는 명칭에서 이제는 하나의 장르가 된 로그라이크 게임은 대표적으로 '영속적인 죽음(perma-death)' 이라는 특징을 지니고 있습니다. 보통의 게임은 자유롭거나 제한적으로 게임의 진행 정도를 저장, 불러오기가 가능하지만 로그라이크 게임은 이것을 용납하지 않는 것이 대표적인 게임성입니다. RPG 게임을 예로 들면 게임 내에서 죽었다가 부활하면 약간의 페널티를 얻더라도 게임의 진행 정도는 그대로 유지되고, 내 캐릭터의 강함도 유지되기 때문에 게임을 계속 진행하는 데에 무리가 없습니다. 하지만 로그라이크 게임에서는 보통 게임 내에서의 죽음은 되돌릴 수 없습니다. 죽고 나서 새 게임을 시작하면 맨몸 상태의 캐릭터가 레벨 1로 시작하게 됩니다. 게임에 남는 것은 아무 것도 없습니다.


사실 남는 것이 아주 없지는 않습니다. 게임을 하고 있는 플레이어는 로그라이크 안에서 다양하고 기상천외한 방법으로 죽을 수 있습니다. 몬스터에게 맞아죽기도 하고, 몬스터가 떨어뜨린 고기를 주워먹었다가 병에 걸려서 죽기도 하고, 묘한 빛깔의 약물을 먹었다가 지능이 떨어져서 숨쉬는 법을 까먹어서 죽기도 합니다. 극한 상황에서 플레이어는 점점 더 좋은 선택을 할 수 있게 되고, 이런 경험들을 통해 플레이어의 실력은 점점 성장합니다. 내 캐릭터가 성장하기보다 내가 성장하는 게임인 것입니다.


This War Of Mine 에서도 게임의 끝은 영원한 끝입니다. 그런데 이 게임의 제작자들은 단순히 재미있는 게임을 만드는 것에 그치지 않고 메시지([NDC2016] 디스워오브마인, '메시지를 전달하기 위한 아트 디렉터의 고민')를 주고 싶어 했습니다. 전쟁 속의 민간인을 현실적으로 그려내기 위해 이들은 보정하지 않은 제작진들의 사진을 게임 캐릭터로 사용하고, 아트 스타일에서도 평범하면서 현실성 있는 모습을 보여주기 위해 노력했습니다. 플레이어는 게임을 하다보면 실제로 전쟁 속에 들어온 민간인이 된 것처럼 무력함을 느끼게 되고, 전쟁에 대한 환멸도 느낍니다. 노부부만 있는 집의 물건을 털어야 할지, 소녀를 겁박하는 총 든 군인을 모른척 지나가야 할지, 도움을 청하는 어린아이들 앞에서 내가 가진 약품을 주어야 할지 등 플레이어는 게임 내에서 끊임없이 갈등을 겪습니다. 이런 것은 보통의 로그라이크 게임에는 없었습니다. 이런 상황에서 좋은 선택이 있을까요? 이런 경험을 통해 플레이어의 게임 실력이 성장할까요?


이런 경험을 통해 우리는 게임에서 주는 메시지를 받습니다. 제가 생각하기에 그것은 전쟁에 속한 사람은 누구도 전쟁에서 자유로울 수 없고, 기본권을 침해받는다는 것입니다. 개념적으로, 소설이나 영화 같은 수동적 미디어를 통해 머리로만 알고 있던 사실을 이 게임은 능동적인 참여를 통해 가슴에 와닿게 해주었습니다. 이 게임의 메시지를 제대로 받아들인다면 우리는 전쟁을 겪는 사람들의 아픔에 좀 더 공감할 수 있을 것입니다. 이 게임은 다른 경험을 줍니다. 그것은 플레이어의 게임 실력이 아닌 마음을 성장시키기 위한 경험입니다.

비행기에서 본 영화들 영화

2주 전 영국-스페인 여행을 다녀왔다. 편도 10시간이 넘게 걸리는 비행기 안에서 각각 네 편씩 총 여덟 편의 영화를 봤다. 잠도 오지 않았고 생각보다 재미있는 영화들이 있었다. 그 중 몇 편에 대한 감상을 가볍게 적어본다.



이탈리안 잡

범죄 영화의 탈을 쓴 BMW Mini 의 광고 영화. 전문가들이 모여 팀을 이뤄서 도둑질을 한다는 줄거리는 흔하지만, BMW Mini 를 거칠게 운전하는 20대의 샤를리즈 테론은 이 영화를 특별하게 만든다. 이 영화에서 Mini 는 지하철도 탄다. 다른 배우들도 제이슨 스타뎀 등 지금은 다 유명한 스타들이어서 1편 개봉(2003년) 이후 말만 무성했던 속편이 나오기는 힘들 것 같다. 이연걸이 나왔던 <의천도룡기> 같은 걸까.

 



당갈

영화를 보는 내내 이 작품에 참여한 모든 사람들에 대한 존경심이 들었다. 실존 인물의 이야기라는 것도 놀라웠고... 뻔한 이야기이지만 그걸 잘 만들었다. 옛날에 영화 <똥파리>를 볼 때도 비슷한 느낌이 들었다. 노래를 넣지 않으면 허전했는지 중간에 노래씬이 하나 나오긴 한다. 하지만 그것조차 그 뒤에 작품에 의미 있는 내용으로 활용한다. 스포츠 장면도 너무나 잘 찍었고.. 버릴 데가 없는 한 마리 소 같은 영화..라고 하면 안되겠지.

 



강철비

중반 이후의 늘어짐과 개연성 부족 등 걸리는 부분들이 있지만 이정도면 괜찮은 블록버스터라고 생각한다. 배우 박은혜씨가 강철비가 다른 영화의 스크린 독과점으로 400만을 못 갈 수 있다고 한탄하던 게 생각난다. 그럴만큼 천만도 갈 수 있을 정도로 잠재력이 큰 아쉬운 영화다. 강철비는 오늘 검색해보니 최종 445만으로 마감했다. (출처 : 역대 박스오피스)

 



덩케르크

영화는 세 곳의 주요 지점 - 땅, 바다, 하늘 - 에서 세 무리의 주요 인물들 - 귀환병, 구조에 나선 민간인들, 공군 - 을 차례로 조명하며 이야기를 풀어나간다. 처음에는 복잡하게 느껴졌지만 이야기가 진행될수록 세 무리의 사람들이 섞여가면서 편집도 조화를 이룬다. 아니면 내가 영화에 적응한 것일수도 있겠다. 귀환병들은 정말 처절하게 살기 위해 투쟁하고, 공중전은 정말 답답하면서도 긴장감이 느껴졌다. 명감독이고 명작인데 이 글의 마무리에 들어올 때까지도 이 영화가 생각이 나지 않았다. 좋은 영화지만 내게 그다지 인상적이지는 않았나보다.




1 2 3 4 5 6 7 8 9 10 다음

애드센스