4 minute read

nil

DEVIEW는 올해 처음. 재미있는 발표가 많았다. 만족. 이틀 모두 참석했다. 들은 세션을 간단히 기록.

벡터기반 지하철 노선도 렌더링 엔진 / 안덕용 (NAVER)

프로그램 소개

디자이너가 Adobe Illustrator 벡터 드로잉 툴로 그린 노선도를 SVG(Scalable Vector Graphics)로 export해서 사용. 성능 문제로 전부를 vector 렌더링 못 함. tiled bitmap에 vector 렌더링.

하드웨어 파편화, 성능 때문에 참 고생하는구나.

리눅스와 모바일 플랫폼 / 한상곤 (우분투 한국 커뮤니티)

프로그램 소개, 집에서 Linux 사용 비율을 늘이고 있다. 공부 뽐뿌 좀 받고 싶어서 들었다.

플랫폼처럼 모호한 용어를 객관적으로 바라볼 수 있는 시각을 만들고 설명하는 게 좋았다. 플랫폼을 HW + SW + Dev env로 정의하고 여러 모바일 플랫폼을 설명.

당신의 인생에 오픈소스를 더하라 - OSCON 발표자 뒷담화 / 진성주 (KT), 박민우 (인모비 코리아)

프로그램 소개, 발표자료, 오픈 소스 활동 뽐뿌를 받으려고 들었다.

뽐뿌 충분히 받았다. 듬뿍.

안드로이드 앱의 성능 테스트, 자동화가 가능할까? / 이경민 (LG전자)

프로그램 소개, 발표자료, 난 자동화란 단어에 약하다. 그래서 선택.

내가 한 방식은 보통 컷신을 만들어 놓고 그걸 기준으로 성능 자료를 모은다. 그리고 갑자기 프레임 저하가 생기면 원인을 파악하는 식으로 성능 테스트를 해왔다. 주로 snapshot 성능 자료만 모았는데, 시간을 축으로 성능 자료를 모으는 게 낮겠다. 여기서는 historical analysis를 추천.

instrumentation, robotium, uiautomator를 사용한 구현 비교.

WebView 뛰어 넘기 – 고성능 WebView 만들기 / 박창현 (SK Planet)

프로그램 소개, ClojureScript에 관심이 있다. hybrid app 토대가 되는 WebView에 대한 얘기라 선택.

web socket, cavas 2d 구현. 플랫폼 홀더가 제대로 제공을 안 하니 개발자가 고생이구나.

GUITAR : UI테스트 자동화 어디까지 해봤니? / 손민혁 (NAVER)

프로그램 소개, UI 테스트 자동화는 naver에서 어떻게 하고 있을까?

selenium으로는 29% GUITAR로는 96.4% 테스트. image와 text로 테스트한다. 가장 윗단으로 테스트 도구를 올려서 더 높은 커버리지를 달성. AutoIt을 사용.

image tolerance 값을 사용해 16bit, 32bit 이미지 변경에 대응. 후보가 여러 개 일 때는 image CRC 값으로 이미지를 찾는다.

검색결과에서 `나루터리뷰버튼`을 `클릭`한다. 이렇게 서술형 스크립트를 사용한 게 인상적. 확실히 유지보수도 쉽고 테스트 케이스 이해도 쉽다.

테스트 케이스 396개 IE8 기준 테스트 시간 60분.

Mobile Browser Internals & Trends / 이형욱 (NAVER LABS), 김준걸 (NAVER LABS)

프로그램 소개, 막연히 알고 있던 웹 브라우저 내부 동작 구현 얘기를 들으려고.

웹 브라우저에선 render tree, DOM tree 구축을 rendering이라 부르는구나.

webkit, webkit2, chromium 설명. 설명하는 범위가 너무 넓어서 이해하기가 힘들었다.

Towards collaboration system: OT 알고리즘에서 CRDT 시스템으로 / 노현걸 (삼성전자)

프로그램 소개, 실시간 협업에 관련된 논문들도 많이 있구나. 논문을 바탕으로 한 학술적인 얘기를 듣고 싶어서.

인과성(causality), 동시성(concurrency)을 어떻게 탐지(detect)하느냐가 실시간 협업에서 가장 중요하다.

OT(operational transform)는 update 지원을 안 한다. insert, delete만 가능. 연산 재정렬하는 공간이 필요하다.

CRDT(conflict-free replicated data type)는 분산 자료구조 사용. 이게 주 아이디어.

삽입 위치를 전혀 예측할 수 없다. 그냥 index를 사용한다면 중간에 삽입할 때, 위치 기준 뒷부분 index 재할당이 괴롭도록 일어남. 그래서 dense index scheme, 혹은 site ID를 추가로 사용.

dense index scheme은 tree path를 index로 사용하기 때문에 실수개 index를 만들 수 있다. 대신 연속으로 추가했을 때, skewed tree가 된다. 그리고 index 생성에 부모 노드가 필요해서 삭제하면 안 된다. 그래서 노드를 삭제하지 않고 tombstone을 남긴다.

WOOT, LOGOOT, RGA 등 여러 분산 자료구조 설명. 어렵다.

많이 어렵네. 하지만 관련 연구가 만다는 것과 키워드 수집을 해서 만족.

오픈소스를 활용한 분산 환경 구현기술 / 김요한 (LG CNS)

프로그램 소개, 발표자료

Stalk.io 구현하면서 사용한 오픈 소스 설명. async event looping server, reverse proxy server, 분산서버 노드 관리, 공유 데이터 관리.

설명에 나온 오픈 소스. node.js, Vert.x, HAProxy, Varnish, memcached, Redis, MongoDB.

응용프로그램 이벤트 실시간 분석(Real-time Insights into Application Events) / 배재현 (Netflix)

프로그램 소개, 발표자료

Netflix is a log generating company that also happens to stream movies

Adrian Cockroft (Cloud Architect at Netflix)

관련 지식이 얼마나 있느냐에 따라 이해 차이가 크게 나는 발표.

SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom / 정재화 (그루터), 박근태 (SK Telecom)

프로그램 소개, 발표자료, Tajo 부스도 보인다. 어떤 건인지 궁금해서.

Hive는 SQL 표준 미지원. Impala는 low latency 질의 처리에 특화. Stinger는 Hive 기반 시스템으로 튜플을 vectorized 엔진으로 교체 중.

반면 Tajo는 표준 SQL을 지원한다. 잘못된 질의 계획 최적화를 지원.

MapReduce를 직접 짜는 단계에서 질의형 SQL을 사용하고 프로그램에서 최적화를 해주는 OSS가 많이 나오고 있다. SKT에서도 같은 문제를 겪고 Tajo 개발에 참여.

이렇게 배포해야 할까? - Lightweight Linux Container Docker 를 활용하여 어플리케이션 배포하기 / 김영찬 (KT)

프로그램 소개, 발표자료, linux container? 배포? 궁금해서.

화물은 모양이 다양하다. 그런 화물 운송 해결책은 컨테이너. 여기에 착안. code를 위한 운송 시스템이다.

리눅스 컨테이너는 경량화한 VM. 하지만 host 관계에 있어 VM과 다르다. host에서 직접 실행하고 프로세스를 고립. AUFS (advanced multi layered unification filesystem)가 있어서 docker가 가능.

Travis CI에서 사용 중. 테스트에 특히 유용하다.

docker는 바이너리뿐만 아니라 환경설정 또한 다 묶여있어서 배포에 어려움이 없다. 구글에서 비슷한 기능을 가진 lmctfy (Let Me Contain That For You) 시작.

AWS에서 추천 구현하기 / 이채현 (SK Planet)

프로그램 소개, 발표자료

Javascript 스크립트로 추천하는 데 필요한 아이템 수집 지원. 간편하고 서버 부하를 줄인다.

데이터수집에 aws m1.small 6대 사용. 추천을 계산할 때, min-hash based filtering, Mahout 사용.

이미지 인식을 통한 정보 추출 - 네이버 활용 사례 및 응용 방법 / 민재식 (NAVER LABS)

프로그램 소개, 구글 이미지 검색을 잘 쓰고 있다. 관련된 기술이 어떤 게 있을까 궁금해서.

이미지 크기가 크면 처리해야 할 데이터가 커서 빠른 시간에 처리가 불가능. downscaling해서 처리한다. 단 image matting, image morphing은 불가능.

grid 성질을 유지하는 superpixel 알고리즘을 선택하는 게 유리. SLIC (Simple Linear Iterative Clustering) 알고리즘을 간단히 설명.

low-level 노이즈로 분류하는 방향 노이즈를 제거하는 방법 소개. edge + dark shade는 사물을 잘 표현하나 사람은 어색하다. 사람 얼굴도 괜찮게 표현하는 FDog (flow-based difference of gaussians) 소개.

썸네일을 만들 때, 어떤 부분을 제거하는지 식별하는 게 필요하다. sailency map으로 주요영역을 검출해서 이미지를 자른다.