livin' seberia

'이세돌vs알파고' 분석 보려 했더니... 내 눈 앞에 광고만 50개

analysis

이세돌과 알파고의 대국이 펼쳐진 첫 날, 언론사들의 '광고 게임'도 함께 시작됐다. 정확히는 온라인 상 광고 수익을 거두기 위한 클릭 전쟁이 펼쳐졌다. 9일 오후 3시 30분부터 3시간 동안 '이세돌 인공지능'이라는 키워드로 포털사이트에 올라온 뉴스 건수는 모두 1011건이다. 같은 내용의 글자만 다른 뉴스들이 쏟아져 나왔다. 언론사는 84곳에 달했다. 

각 뉴스를 눌러 해당 언론사 사이트로 직접 연결해 광고 개수를 셌다. 이 과정에서 구글의 확장앱 가운데 하나인 애드블록(ad block)을 활용했다. 해당 앱은 사이트에 뜨는 광고를 잡아내 이를 차단하고, 광고가 몇 개나 숨겨있는지를 숫자로 보여주는 방식을 취한다. 기록된 수치를 토대로 해당 사이트의 광고 개수를 미루어볼 수 있는 것이다. 

가장 광고가 많은 언론사는 헤럴드경제였다. 한 화면에서 숨겨진 광고만 53개에 달했다. 


▲애드블락을 활용해 광고를 모두 지운 모습. 우측 상단에 붉은 원과 함께 53이라는 숫자가 적혀있다. 


▲애드블락을 하지 않았을 경우 화면


그 뒤를 충청일보(48개)와 동아일보(47개)가 이었다. 중앙 일간지 가운데선 동아일보가 가장 많은 수치를 보였다. 국내 대표적인 통신사인 연합뉴스도 광고가 40개에 달했다. 뉴시스(24개), 뉴스1(11개)보다 월등히 높은 수치다. 

방송사들은 광고 개수가 다소 적은 편이었다. MBC의 경우 애드블록에 잡히는 숫자가 0이다. KBS(1개)와 SBS(6개)도 한 자릿수를 기록했다. 다만 JTBC(17개)와 TV조선(16개), 채널A(21개) 등 종합편성채널은 두 자릿수를 보였고, YTN은 30개에 달했다. MBN은 지상파와 마찬가지로 5개를 보였다. 

같은 미디어그룹에 속해도 광고 현황은 천차만별이었다. MBN과 같은 매경미디어그룹에 속한 매일경제는 광고로 잡힌 팝업이 4개에 불과했다. 조선일보(15개)와 TV조선도 마찬가지였다. 다만 스포츠지(스포츠조선, 30개)는 조금 차이가 있었다. 중앙미디어그룹에 속한 중앙일보는 JTBC보다 7개 많은 24개를 기록했고, 일간스포츠는 31개에 달했다. 언론사별로 온라인 광고 유치 방식에 저마다 차이가 있음을 짐작할 수 있는 대목이다. 

온라인을 중심으로 하는 매체와 신문을 중심으로 하는 매체 사이에도 차이가 있었는데 결과는 다소 의외였다. 온라인 매체는 평균 20.35개를 기록했고, 지방지를 포함한 신문사와 방송사의 평균은 22.18개를 기록했다. 헤럴드경제와 충청일보, 동아일보에서 광고 수가 압도적으로 많기도 하지만 세계일보(41개)와 경향신문(32개), 서울신문(32개), 국민일보(32개)도 만만치 않게 높은 수치를 보였기 때문이다. 기존 신문지면에 싣던 광고 유치 방식을 그대로 옮겨와 온라인에서 이어갔을 가능성도 높다. 처음 시작하는 온라인 매체에 비해 광고를 수주하기도 더 쉬웠을 거란 분석이다. 

광고는 언론사들이 취할 수 있는 몇 안 되는 수익 구조 중 하나다. 불과 몇 년 전부터 네이버와 다음 등 주요 포털사이트들이 뉴스 기사를 해당 언론사 링크로 바로 연결할 수 있도록 조치를 취했고, 이에 따라 언론사들은 실시간 클릭경쟁을 통해 자신의 사이트를 누르도록 독자들을 유도하고 있다. 이른바 '뉴스 어뷰징(abusing)'이 더욱 극심해진 배경이다. 독자들은 광고를 지우느라 정작 콘텐츠를 읽기 어려운 언론사들을 골라 스스로 블랙리스트를 만들고 있다고 토로한다.  

이날 아침 한 언론에서는 '뉴욕타임즈는 광고 차단 앱을 깐 이용자는 뉴스를 볼 수 없도록 한다'는 내용의 기사를 실었다. (http://news.joins.com/article/19693036) 미국의 한 기자도 자신의 트위터에 이 내용을 올렸고, 독자들의 문의도 잇따랐다. 


▲ 출처 ( https://twitter.com/jeremymbarr/status/706864707840380929 )

언론사들의 고군분투는 계속된다. 다만 언론사의 수익구조를 보장해줄 정도로 독자들이 눈을 어지럽혀가며 광고를 차단하지 말아야만 하는지에 대해선 논의가 더 필요할 것으로 보인다. 


언론사별 광고 개수는 다음과 같다. 

표.pdf

[학회] CSCW 2016

analysis

학회에 다녀왔다. 그래서 smart mirror project가 잠시 중단됐다. 다녀온 학회는 CSCW(Computer-Supported Cooperative Work and Social Computing). HCI에서 가장 권위있는 학회는 아무래도 CHI이지만, 그렇게 브로드한 학회보다는 다소 디테일한 CSCW가 더 마음이 갔다. (물론 날짜도 맞고, 때마침 좋아하는 도시에서 열린 것도 있다만......)

도시는 미국 샌프란시스코였다. 장소는 하얏트 리젠시. 2월 29일부터 사흘동안 열렸고(27일부터 그 다음날까진 워크숍 기간이었다), 학회비는 학생기준(현장등록시) 우리돈 40여만원... (달러가 올라서 타격이 조금 더 컸다... 훌쩍...) 다음부턴 꼭 내가 논문을 내서 통과를 한 뒤 무료로 참석할 수 있도록 해야지... 참고로 CSCW의 논문통과율(acceptance rate)은 CHI와 비슷한 25%다. 

느낀 바를 압축하면 다음과 같다. 

1. CHI가 클릭수 높은 기사라면 CSCW는 후속보도를 할 수 있는 기획기사다.

2. 세상에 대한 관심과 궁금증이 결국 멋진 논문을 만든다!

3. 실험을 해보지 않고 아이디어만 내서는 좋은 논문이 나올 수 없다. 

4. 로컬의 특수성을 핑계로 글로벌만 바라보며 로컬을 연구하지 않는 것은 아주 거만한 일이다. 답도 재료도 늘 주변에 있다.


일단 이동네 명물 필즈커피를 한 잔.

민트를 띄워준다.



각설하고, 


내가 들어갔던 발표 및 관심있게 지켜본 논문 리스트를 말씀드리자면 다음과 같다. 

- the diffusion of Trust & Cooperation in Teams with Individual's Variations on baseline trust

- personality matters: Balancing for Personality types leads to better outcomes for crowd teams 

- embracing cultural diversity: online social ties in distributed workgroups

- effects of sensemaking translucence on distributed collaborative analysis

- on the wisdom of experts vs. crowds: Discovering Trustworthy topical news in microblogs

- computer mediated communication session: Provocations & applications to industry 

- Panel - Does the Sharing Economy do any Good? 

- What's in a Like? Attitudes and behaviors around receiving Likes on Facebook

- Once More with Feeling: Supportive Responses to social sharing on Facebook

- you get who you pay for: The Impact of Incentives on Participation Bias

- complex decision-making in clinical practice

- A Fundamentally Confused Document: Situation Reports and the Work of Producing Humanitarian Information 

- Community-based Data Validation Practice in Citizen Science

- Convivial Decay: Entangled Lifetimes in a Geriatric Infrastructure

- Storytelling with Data: Examining the Use of data by Non-profit Organizations

- keeping up with the tweet-dashians: The Impact of 'official' accounts on Online Rumoring

- crystallize: an Immersive, Collaborative game for second language learning


제목만 봐도 어떤 내용을 중점적으로 봤는지 아실 듯. 개인적으로는 건강이나 교육에는 그리 큰 관심이 없고, sns data 또는 journalism 데이터 자체에 초점을 맞췄다. 분위기는 crowd 중심의 big data -> experts 중심의 not that big data로 가는 듯. collective intelligence의 시대가 다소 저무는 느낌도 든다. 대신 함께 일하는 것, collaborate work에 대한 관심이 높았다. 자세한 논문 리뷰는 차차. 

 

개인적으로는 첫날 오전에 열린 구글의 사이먼 로저스 강연(키노트)이 궁금했는데, 비행기 도착시간 자체가 맞지 않아 놓쳤다. 사이먼 로저스라 한다면 가디언에서 데이터 저널리즘을 아주 획기적으로 시도한 뒤 이를 정착한 장본인이다. 이쪽 업계에서는 아주 후덜덜한 스펙을 지닌 자인데, 현재는 구글에서 데이터 저널리즘을 이끌고 있다. 자세한 내용은 여기서. http://simonrogers.net/   먼저 도착한 동료들에 따르면 "뻔한 얘길 했다"고 한다. 



  

smart mirror project [day 6]

DIY IOT - smart mirror project

2월 24일 여섯째날

오늘의 목표 : 정말로 오늘만큼은 이 모든 것들을 기필코 한 화면에 모으고야 말겠다.


아 빌어먹을.

사실은 요 이틀째 이게 제일 골치였다.



보시다시피 나는 시계와 날씨와 뉴스를 모두 한 코드에 넣었는데, 돌리고 또 돌려봐도 자꾸만 저 시계만 뜨는 것이다 .

물론 어떤 경우에는 시계는 사라지고 맨 마지막에 넣은 날씨만 살아남기도 했다!! 그리고 어떻게 해도 뉴스만 남는 법은 없었다. 


사태를 해결하기 위해 장장 수 시간을 쏟았고, 그 결과 



드디어!!! 내가 원하는 바를 이루고야 말았음 ㅠㅠ 엄마 보고싶어요 ㅠㅠ 너무 신나서 창 이름도 good으로... 


... 자 이게 어떻게 된 일인지, 비록 밤 12시를 넘긴 이 시각에 나홀로 연구실에 남아있긴 하다만 조금 썰을 풀어보도록 하겠다. 

문제의 발단은 늘 그렇듯 tree에 있다. 각자 따로 띄우면 멀쩡하게 잘만 출력되던 것들이, 합치면 돌연 실종되는 사태가 벌어진다? 그러면 이 코드 전체의 구조에 문제가 숨어있는 것이다. 물론 나도 그 사실은 이미 일찌감치 눈치채고 있었다. 

허나 wxpython의 구조는 뭔가 python 그 자체와는 또 상당히 달랐다. 

wxpython 웹페이지 만든 인간은 (물론 그가 wxpython도 개발했겠지만) 만나기만 해봐라 혼내줄테다. 

http://www.wxpython.org/docs/api/trees.html

이 사이트에 들어가보면 이유를 알 수 있다. 내가 찾는 트리 구조를 말그대로 줄줄줄 '나열'해준 덕에 내가 찾는 정보를 찾아 헤매느라 시간이 오히려 더 많이 걸렸다. wxpython은 앞서 말했듯 쓰는 사람이 별로 없는지 어쩌는지 라이브러리도 별로 없어서... 꺼이꺼이....


결론부터 말하자면, class안에 def를 달아 기능(function)을 만드는 데 끝나는 게 아니다. 나같은 경우엔 시계는 text 그 자체로 받아왔고(이미 시계를 텍스트로 전환하는 툴이 있었으므로) 기사와 날씨는 텍스트그리기 기능(그림판에서 A라고 쓰인 버튼이 수행하는 텍스트그리기 기능을 생각하면 된다)을 가져다 그 안에 데이터를 문자로 변환해 넣는 식으로 코드를 짰다. 이 텍스트그리기 기능이 PaintDC라는 것인데, 이 'DC'라는 것이 class-object-그리고 그 다음에나 있는 꼬랑지같은 녀석이었다. 아주 멀리멀리 떨어져있는 객체 오브 객체, 아주 작은 클래스인 셈이다.


그러니 시계 vs. 기사랑날씨 - 이 두 개의 이를테면 꾸러미 자체가 다른거다. 맨 바탕에 시계를 그려놨다면, 기사랑날씨는 맨 바탕에 올려둔 박스 안에 담아둔 셈이니까. 더구나 시계는 panel이라는 녀석이 받고 있었다. (그냥 맨바닥에 쓰되 그 맨바닥을 panel이라고 define했던 거다)


이게 바로 내가 이 모든 툴을 완성하기 전까지 코드를 공개할 수 없는 이유다. (ㅋㅋㅋㅋㅋ)


여차저차 기사랑 날씨는 같은 박스 안에 담아두고, 시계판과 공존할 수 있도록 열심히 잘 짜봤다. 

하지만 위에서 보다시피 폰트의 통일성까지는 도저히 구현할 수 없었다. (언젠가는 누군가 이 포스트를 보고 알려주겠지...) 박스 안에 폰트를 지정할라 치면 function은 font를 적용하지 못하네 어쩌네 잔말이 많다. 현재의 이 보통 폰트도 그냥 봐줄만해서 일단은 뒀다. (하지만 거울이 커지고 멀리서 거울을 봐야하는 사태가 벌어지면 폰트도 커져야 하고 색채와 글꼴도 바뀌어야하겠지...)



두 번째 난관. 

날씨 데이터가 너무 많아서 고르고 또 고르고, 하려고 봤더니 세상에, 일일이 입력하지 않는이상 오존정보부터 바람세기까지 다 거울에 비춰줘야 할 지경인 것이었다. 그래도 프로그래밍이라는 게 아날로그는 좀 최소화해야하지 않나 싶어서 최대한 짱구를 굴려봤다. for i in xrange(10)을 2,4,6,8,10으로 점핑해서 보여주는 방법을 써볼까해도 forecast.io에서 뱉어내는 순서가 내가 원하는 그런 순서도 아니었고... 

고로 날씨는 깔끔하게 '오늘 날씨', '현재기온', '체감기온', '현재 날씨'로만 구성해 '쳐 넣었다'.

코드로 살짝 말씀드리자면,


>> def call_forecast():

       a = []

      if fio.has_daily() is True:

daily = FIODaily.FIODaily(fio)

a.append('Today: ' + unicode(daily.icon))

if fio.has_currently() is True:

currently = FIOCurrently.FIOCurrently(fio)

a.append('Temperature: ' + unicode(currently.temperature))

a.append('ApparentTemperature: ' + unicode(currently.apparentTemperature))

a.append('Now: ' + unicode(currently.summary))

return a

>> weatherlist = call_forecast()


이런 식이다. 일일이 어펜드하는 정말 초보 수준이지만 언젠가는 극복할 수 있으리라 본다. (아니 뭐 사실 내가 필요한 정보가 뭐 이만큼인걸....)


세 번째 난관... 까지는 아니고 잠시 헤맨 내용

알다시피 망할 시계가 계속 이상한 시간을 가리키고 있었다. 그 이유를 살펴보니 GMT_9로 돼있었던 건데, 누군가가 일본을 기준으로 wxpython을 쓸 땐 GMT_9로 해야한다고 해서 그걸 그대로 가져다 썼더니만...

이후에 EST도 써보고 이것저것 굴려봤으나, 역시 우리의 wxpython은 자신만의 단어들을 보유하고 있었다! 대단혀유. 

참고 :  http://wxpython.org/Phoenix/docs/html/TZ.enumeration.html

GMT9 로 써야한다. 난 GMT+9로도 고쳐봤었는데... 어쩐지 안 먹더라니...




열심히 살고 있다고 광고나 할겸 지금 이 순간 내 책상이나 사진으로 찍어 올려야겠다. 


(책상이 어지러우면 간식을 더 먹는다는 연구결과도 있는데....)

아이템 1.  코끼리 바탕화면 맥북과 사자 얼굴 바탕화면의 데탑 모니터. 언젠가는 데탑모니터가 맥북을 잡아먹는다는 뜻은 아니고 그냥 심란할 때 동물 사진을 보면 뭔가 기분이 좋아진다. 마침 맥 기본 배경화면에 요놈들이 있길래...

아이템 2. 입학하고 손목이 안 좋아져서(나이를 먹어서) 예전에 사뒀던 파워볼을 다시 꺼내들었다. 손목은 모르겠고 팔꿈치 아래 근육이 점점 커지는 듯...

아이템 3. 알라딘굿즈 사은품으로 얻어내고야 만 Don't Panic 컵. 별로 살 책도 없었는데 굳이 사서 이 컵을 얻은 이유는 그냥 저 문구가 그렇게 와닿... 으흑흘그흐ㅡ흐그흑

아이템 4. 자색고구마와 썬업과 물과 호두과자. 운동도 안 하는데 살이나 찌지 말자며 물 두 병을 비우고 간식 대신 자색고구마를 먹겠다고 사둔 뒤, 오렌지향이 나는 쥬스와 천안에서 사온 지 12시간 된 마른(그러나 바삭한) 고칼로리 호두과자를 대신 비웠다. 점점 위장만 늘어난다.

아이템 5. 연구실 불이 아무리 밝아도 나는 나만의 로맨틱한, 마치 하버드 도서관같은 느낌의 주홍빛깔 조명을 쓰고야 말겠다며 얼마 전에 산 녀석인데 눈이 좀 부시다. 

아이템 6. 라식한 지 3년 만에 왼쪽 눈만 시력이 절반 이하로 뚝 떨어져 급히 수혈 중인 점안액... 아무리봐도 수술이 잘못된 것 같다... 


아 이거 쓸 시간에 잠을 자면 눈이 좋아지려나...



아무튼 이제 내게 남은 일은 크게 두 가지다. 

1. 오늘의 날씨는 sunny, cloudy, rain, snow등 몇 개 안 되니까 아이콘을 찾아 매칭을 시켜보자. 이건 어쩌면 잘 할 수도 있을 것 같다. 것보다, 뉴스와 날씨를 시시때때로 업데이트 해줘야하는데.... 아.... 그게 남은 거구나 어쩐지 뭔가 좀 빨리 끝났다 했다.........

2. 거울을 찾아야 한다. 그리고 그에 맞는 작은 모니터를 찾으면 된다. 모니터는 사실 라즈베리파이용 모니터를 구해다 쓸까 싶다. 너무 작나... 거울은 아마 청계천을 한 바퀴 돌아야 할 듯... 이 두 가지만 구하면 사실 다 끝난 거다. (뒤에 붙이는 거야 뭐!) 



음... 아무래도 3월을 넘기게 생겼다....



며칠 전 들은 말 중에 오늘 유독 힘이 됐던 한 마디! 

"터미널에 뜨는 오류메시지만큼 코딩 실력도 는다!"

................정말이쥬? ... 




-----------------------------------------------

새벽 1시 43분 현재 여지껏 잠이 오지 않아서 결국 위 '남은 일' 가운데 하나를 해치우기로 마음을 먹었다. 

일단 '한 시간에 한 번씩은 api 콜을 할 수 있도록 하는' 라이브러리를 찾았다. 

참고 :   https://pypi.python.org/pypi/schedule

MIT연구진이 만든 모양인데 참으로 감사하다. 



'DIY IOT - smart mirror project' 카테고리의 다른 글

smart mirror project [day 8]  (0) 2016.04.12
smart mirror project [day 7]  (0) 2016.03.28
smart mirror project [day 5]  (1) 2016.02.23
smart mirror project [day 4]  (0) 2016.02.22
smart mirror project [day 3]  (0) 2016.02.19