2013년 10월 11일
by 박성원
0 comments

웹접근성에 대하여 잘 설명해 놓은 동영상

2013년 7월 2일
by aduris
0 comments

vert.x는 무엇이 좋은가?

vert.x는 현재 가장 뜨겁게 부상하고 있는 서버 프레임워크입니다. 모든 서버 프레임워크가 그렇듯이 고성능과 다양한 프로토콜 지원을 장점으로 내세우고 있습니다. vert.x는 여기서 한 발 더 나아가 서버 네트워크 환경을 구축하고 운영하는 환경까지도 고려하고 있습니다. 즉, vert.x는 하나의 ‘서버 프로세스 데몬’을 제작하는 것뿐만 아니라, 클러스터링 환경에서 동작하는 여러 서버 프로세스 데몬을 제작하는 방법에 대한 고민까지 담고 있습니다.

그렇기 때문에 vert.x가 어떤 방식으로 고성능을 내고 있는지, 어떤 네트워크 환경을 고려하고 있는지 충분히 시간을 들여 알아볼 가치가 있다고 할 수 있습니다.

vert.x의 철학

vert.x는 Node.js로부터 영향을 받은 프로젝트다. vert.x는 Node.js처럼 Event-based 프로그래밍 모델을 제공하는 서버 프레임워크다. 그렇기 때문에 vert.x의 API는 Node.js와 매우 유사하다. 둘 모두 비동기 형태의 API를 제공한다.

Node.js는 JavaScript로 만들어졌지만, vert.x는 Java로 제작되었다. 하지만 vert.x를 Node.js의 Java 버전이라고 이해하기에는 무리가 있다. vert.x가 Node.js로부터 영향을 받은 것은 사실이지만, vert.x는 Node.js와 다른 고유한 철학을 가지고 있기 때문이다.

대표적인 vert.x의 설계 철학을 정리하면 다음과 같다.

  • Polyglot – 여러 언어 지원
    vert.x 자체는 Java로 작성되었지만, vert.x를 사용하기 위해 반드시 Java를 사용할 필요는 없다. Java나 Groovy 같이 JVM 동작을 전제로 한 언어 뿐만 아니라 Ruby나 Python, 심지어 JavaScript로도 vert.x를 이용할 수 있다. JavaScript로 꼭 서버 애플리케이션을 만들어야 한다면, Node.js만이 유일한 대안이 아니게 되는 것이다. 향후 Scala와 Closure도 지원할 계획이다.
  • Super Simple Concurrency model
    vert.x로 서버 애플리케이션을 작성할 때, 사용자는 싱글 스레드 애플리케이션을 작성하듯 코드를 작성해도 괜찮다. vert.x는 사용자가 작성한 코드가 동일한 스레드에서만 실행됨을 보장해서 더 이상 synchronized나 volatile 같은 동기화를 위한 locking 처리를 신경 쓰지 않아도 된다.
    Node.js에서는 JavaScript 실행 엔진 자체가 멀티 스레드를 지원하지 않으므로 모든 CPU 코어를 활용하려면 같은 JavaScript 프로그램을 여러 개 실행해야 했다. 하지만 vert.x에서는 하나의 프로세스만 가동해도 CPU 코어 개수에 맞춰 멀티 스레드가 생성될 수 있다. 멀티 스레드와 관련된 작업은 vert.x가 하고, 사용자는 비즈니스 로직 구현에 집중할 수 있게 한 것이다.
  • Event Bus 제공
    도입 부분에서 설명했듯이 vert.x의 목표는 ‘하나의 서버 프로세스 데몬’을 만드는 것에 그치지 않는다. vert.x로 만든 여러 서버 프로그램이 서로 원활하게 통신하게 하는 것까지도 목표에 두고 있다. 이를 위해 vert.x는 Event Bus를 제공한다. Point to Point나 Pub/Sub 같은 MQ 기능을 사용할 수 있다(Event Bus 기능을 제공하기 위해 vert.x는 Hazelcast라는 IMDG를 사용한다). 이런 Event Bus가 있기 때문에 서로 다른 언어로 작성된 서버 애플리케이션이 용이하게 통신할 수 있다.
  • Module System & Public Module Repository
    vert.x에는 모듈 시스템이라는 것이 있다. 모듈 시스템은 일종의 컴포넌트로 이해할 수 있다. vert.x로 만든 서버 애플리케이션 프로젝트 자체를 모듈화한 것이다. 이런 방식으로 재사용성을 도모한다. 이렇게 만들어진 모듈은 Public Module Repository에 등록할 수 있다. Public Module Repository를 통해 모듈을 공유할 수 있는 것이다.

참고) Netty와 vert.x의 관계

vert.x의 성능을 논하기 전에 Netty와 vert.x의 관계를 정리할 필요가 있다. vert.x는 Netty를 사용한다. 즉, 다중 I/O 처리에 Netty를 사용한다. 그렇기 때문에 vert.x와 Netty의 성능 차이를 확인하는 것은 무의미하다.
vert.x는 Netty와는 다른 독자적인 API와 기능을 제공하는 다른 목적의 서버 프레임워크다. Netty는 로우레벨 수준의 I/O를 다룰 수 있는 프레임워크고, vert.x는 그보다는 하이레벨 영역을 다룬다.

Node.js와의 성능 비교

vert.x가 제공하는 기능이 Node.js와는 다르더라도 둘 사이의 성능을 비교하는 것은 충분히 의미 있는 일이다. 그림1과 그림2는 vert.x(Java, Ruby, Groovy)와 Node.js의 성능을 비교한 자료다(출처:http://vertxproject.wordpress.com/2012/05/09/vert-x-vs-node-js-simple-http-benchmarks/).

그림 1은 HTTP 서버를 만들고 200/OK 응답만을 주었을 때의 성능을 비교한 결과다. 그림 2는 72 바이트 크기의 정적 HTML 파일을 응답 결과로 제공하는 경우에 성능을 비교한 결과다. vert.x 제작자가 밝힌 성능이고 스스로도 엄격한 환경에서 실시한 테스트가 아니므로 상대적인 성능 격차에만 주목하는 것이 좋을 것으로 보인다.

ad70637d150cff0744f460a6da1bcb00.png

그림 1 200/OK 응답만 주었을 때의 성능 비교

572fdeba65175722f09387935f981788.png

그림 2 72바이트 크기의 정적 파일 제공 성능 비교

주목할만한 점은 Node.js보다 vert.x-JavaScript의 성능이 좋다는 것이다. 이 성능 비교 결과가 신뢰성이 매우 높다고 하더라도, 단순히 Node.js에 비해 vert.x가 낫다고 말하기는 어려울 수 있다. Node.js는 Socket.io와 같은 훌륭한 모델을 제공하고 있을 뿐만 아니라, 많은 레퍼런스를 확보하고 있기 때문이다.

vert.x 용어들

vert.x는 vert.x만의 고유 용어를 정의하거나, 일반적인 용어를 vert.x에서 다시 정의해서 사용하기도 한다. vert.x를 잘 이해하려면 vert.x가 정의한 용어를 잘 이해해야 한다. vert.x에서 사용하는 대표적인 용어를 정리해 보았다.

Verticle

vert.x에서 배치(deploy)의 기본 단위다. Java의 경우라면 main 메서드가 있는 클래스가 된다. Verticle은 또한 main 메서드에서 참조되는 다른 스크립트를 포함할 수 있다. .jar 파일이나 리소스를 포함할 수 있다. 애플리케이션은 하나의 Verticle로 이루어질 수도 있고, event bus를 통해 서로 통신하는 여러 개의 Verticle로 이루어질 수도 있다. Java로 생각하면 독립적으로 실행 가능한 Class 또는 .jar 파일로 이해할 수 있겠다.

vert.x 인스턴스

Verticle은 vert.x 인스턴스 안에서 실행되고, vert.x 인스턴스는 자신의 JVM 인스턴스 안에서 실행된다. 단일 vert.x 인스턴스 안에서는 동시에 실행되는 많은 Verticle이 존재할 수 있다. 각각의 Verticle은 고유의 클래스 로더를 가질 수 있다. 이로 인해 Verticle 간에 스태틱 멤버, 글로벌 변수 등을 통한 직접적인 상호작용을 막을 수 있다. 네트워크상의 여러 호스트에서 동시에 많은 vert.x 인스턴스가 실행될 수 있고 event bus를 형성해서 vert.x 인스턴스 간에 클러스터링되도록 설정할 수 있다.

동시성(concurrency)

Verticle 인스턴스는 항상 동일한 스레드에서 실행됨이 보장된다. 모든 코드를 단일 스레드 동작 형태로 개발할 수 있기 때문에, vert.x를 사용하는 개발자에게 개발하기 편한 환경을 제공하는 것이라 할 수 있다. 게다가 레이스 컨디션이나 데드락이 발생하지 않게 할 수도 있다.

Event-based Programming Model

vert.x는 Node.js 프레임워크와 비슷하게 Event-based 프로그래밍 모델을 제공한다. vert.x로 서버 프로그래밍을 할 때 개발해야 하는 코드의 대부분은 이벤트 핸들러에 관한 것이다. 예를 들어, TCP 소켓으로부터 데이터를 수신하기 위해 핸들러를 설정하는 것이나 데이터가 도착할 때 호출될 핸들러를 제작하는 것이다. 이외에도 ‘Event bus에서 메시지를 수신할 때’, ‘HTTP 메시지를 수신할 때’, ‘커넥션이 종료되었을 때’, ‘타이머가 종료 되었을 때’ 알림을 받기 원한다면 핸들러를 작성하면 된다.

Event Loops

vert.x 인스턴스는 내부적으로 스레드 풀을 관리한다. vert.x는 가급적 스레드 풀의 개수를 CPU 코어 수와 일치할 수 있게 한다.

그리고 이 각각의 스레드에서는 Event Loop를 실행한다. Event Loop란 확인해야 할 이벤트를 루프(loop)를 돌면서 확인하는 것이다. 가령 소켓에 읽을 데이터가 있거나, 어떤 타이머에 이벤트가 발생했는지 확인하는 것과 같은 것들이다. 루프를 돌다가 처리해야 할 이벤트가 있다면, 해당 핸들러를 호출하는 방식으로 vert.x가 동작한다(물론 이때 핸들러 처리 시간이 길다거나 블로킹 I/O가 있다거나 할 때는 별도의 작업이 필요하다. 다음 게시글에서 소개할 예정이다.).

Message Passing

Verticle 간의 통신은 Event Bus를 이용한다. Verticle을 actor라고 생각하면, Message Passing은 Erlang 프로그래밍 언어에서 유명해진 actor 모델과 유사하다. vert.x 서버에서는 많은 Verticle 인스턴스 생성 및 이들 간의 message passing을 통해 Verticle 코드에 대한 멀티 스레드 실행이 없이도 사용 가능한 코어에 맞게 시스템 확장이 가능하다.

Shared data

Message passing이 매우 유용하긴 하지만 모든 종류의 애플리케이션 동시성 상황에서 최고의 접근 방법은 아니다. 캐시가 대표적인 예다. 어떤 캐시를 어느 하나의 Verticle만 가지고 있다면 매우 비효율적이 된다. 이 캐시가 다른 Verticle에도 필요한 내용이라면 Verticle이 각각 같은 내용의 캐시 데이터를 관리하여야 하기 때문이다.

그렇기 때문에 vert.x는 전역에서 접근할 수 있는 방법을 제공한다. 바로 Shared Map이다. 그리고 Verticle 사이에서는 오직 불변(immutable) 데이터만 공유되게 하고 있다.

vert.x Core

이름 그대로 vert.x의 핵심 기능이다. Verticle에서 직접적으로 호출될 수 있는 기능은 모두 이 Core에 담겨있다. 당연하게 이 Core는 vert.x가 지원하는 프로그래밍 언어 API에서 접근할 수 있다.

vert.x 아키텍처

vert.x의 대략적인 아키텍처는 다음 그림과 같다.

374e032351d88c70dc05736e3079e6ca.png

그림 3 vert.x 아키텍처(원본 출처: http://www.javacodegeeks.com/2012/07/osgi-case-study-modular-vertx.html)

vert.x의 기본 실행 단위는 Verticle이고 동시에 여러 Verticle이 하나의 vert.x 인스턴스에서 실행될 수 있다. Verticle은 Event-Loop 스레드에서 실행된다. 하나의 호스트는 물론 네트워크상의 다른 여러 호스트에서 여러 vert.x 인스턴스가 실행될 수 있는데, 이때 Verticle이나 Module 간에는 Event Bus를 통해 통신할 수 있다.

요약하면, vert.x 애플리케이션은 Verticle 또는 Module 의 조합으로 이루어지며 이들 간의 통신은 Event Bus를 사용한다.

vert.x 프로젝트 구조

다음 그림은 github의 vert.x 페이지에서 소스 코드를 복제(clone)해 Eclipse에서 본 vert.x 프로젝트 구조다.

49e1c3d8d3329e1bd3a1043166caf566.png

그림 4 vert.x 소스 트리

전체적인 구성을 살펴보면 다음과 같다.

  • 핵심 library인 vertx-core
  • 배포 및 라이프사이클을 관리하는 vertx-platform
  • Core Java API를 다른 언어로 노출하는 vert-lang

프로젝트 빌드(build) 시스템으로는 Ant와 Maven의 장점을 갖췄다는 Gradle를 사용한다.

vert.x 설치 및 간단한 예제 실행

vert.x를 사용하려면 반드시 JDK7이 필요하다. vert.x는 JDK7에 있는 invokeDynamic을 사용하기 때문이다.

vert.x는 매우 간단하게 설치할 수 있다. https://github.com/purplefox/vert.x/downloads에서 압축된 설치 파일을 원하는 위치에 다운로드해 압축을 푼 다음, bin 디렉터리를 PATH 환경 변수에 추가하면 설치를 완료할 수 있다. 커맨드 창에서 vertx version을 실행해 버전 정보가 제대로 나오면 설치가 성공한 것이다.

이제는 “Hello World!”를 출력하는 간단한 웹 서버를 JavaScript로 작성하고 실행해 보자. 다음과 같이 코드를 작성한 후 server.js로 저장한다. Node.js 코드와 거의 흡사한 형식이다.

1
2
3
4
5
load('vertx.js');
vertx.createHttpServer().requestHandler(function(req) {
    req.response.end("Hello World!");
}).listen(8080, 'localhost');

생성한 server.js 애플리케이션을 다음과 같이 vert.x 명령어로 실행한다.

1
%> vertx run server.js

브라우저를 열고 http://localhost:8080에 접속해 “Hello World!” 메시지를 볼 수 있으면 성공이다.

다른 언어로 작성 된 예제를 살펴보자. 다음은 Java로 작성한 예제다. 정적 파일을 읽어 HTTP 응답으로 제공하는 웹 서버를 작성해 본 것이다.

1
2
3
4
5
6
7
8
Vertx vertx = Vertx.newVertx();
vertx.createHttpServer().requestHandler(new Handler<httpserverrequest>() {
    public void handle(HttpServerRequest req) {
        String file = req.path.equals("/") ? "index.html" : req.path;
        req.response.sendFile("webroot/" + file);
    }
}).listen(8080);
</httpserverrequest>

다음은 Groovy로 작성한 코드로 앞의 Java로 작성한 예제와 같은 기능을 한다.

1
2
3
4
5
def vertx = Vertx.newVertx()
vertx.createHttpServer().requestHandler { req ->
    def file = req.uri == "/" ? "index.html" : req.uri
    req.response.sendFile "webroot/$file"
}.listen(8080)

NHN과 vert.x

NHN의 플랫폼 개발 부서에는 vert.x가 정식으로 릴리스되기 전부터 개발 과정을 지켜보고 있었다. vert.x의 가능성을 높이 샀기 때문이다. 그리고 2012년 6월부터 메인 개발자인 Tim Fox와 교류하여 vert.x를 발전시켜 나갈 수 있도록 논의를 진행하고 있다. 예를 들어, Socket.io는 Node.js에서만 사용할 수 있었는데, 이를 vert.x에서도 Java로 사용할 수 있게 포팅 작업을 진행했고 현재 개발이 완료된 상태다. 다음은 github의 vert.x 레파지토리에 있는 pull request 요청 링크다.

산출물인 socket.io vert.x 모듈은 현재 개발 중인 RTCS 2.0 버전(vert.x + Socket.io)에 사용될 예정이다.

Node.js가 지금처럼 활성화된 것은 Socket.io 덕분이었는데, vert.x에서 Socket.io를 사용할 수 있다면 vert.x 또한 많은 사용 사례가 생길 것으로 예상한다. 또한 이 socket.io vertx 모듈을 임베디드 라이브러리 형태로 사용하면 Java 기반의 애플리케이션에서도 socket.io를 사용할 수 있게 된다는 점에서 의미가 있다 하겠다.

참고) RTCS 란?

RTCS(Real Time Communication System)는 NHN의 Real Time Web 개발 플랫폼으로, 브라우저와 서버 간에 실시간으로 메시지를 전달할 수 있게 도와주는 플랫폼이다. RTCS는 현재 야구9단, 미투데이 채팅, 밴드(BAND) 채팅에 적용되어 있다.

마치며

vert.x는 2012년 5월에 첫 버전이 나왔다. 2009년에 첫 버전이 나온 Node.js에 비하면 역사가 매우 짧다고 할 수 있다. 그렇기 때문에 아직 레퍼런스가 많지 않다. 하지만 vert.x는 VMware의 든든한 후원을 받고 있고 Cloud Foundry에서 구동할 수 있기 때문에, 앞으로 많은 레퍼런스가 확보될 것으로 보인다.

참고 자료

2013년 7월 1일
by gdkim
0 comments

정보 스트림으로서의 세컨드 스크린

by gemong on 2013/06/27

Main-Second Screen[요약] 세컨드 스크린 서비스는 현재 양방향성 기능에 초점을 맞추고 있지만, 프로그램 연동 정보와 광고 등을 자동 노출하는 ‘정보 스트림’의 스크린으로서 더 가능성이 있다고 봄. ✍

 

최근 TV의 부가 서비스 스크린으로서 아이패드 등 모바일 단말기를 세컨드 스크린으로 활용하는 서비스가 많이 등장하고 있습니다. 지박스(Zeebox), 샤잠(Shazam), 넥스트가이드(NextGuide), 코넥티비(ConnecTV), 와치위드(Watchwith) 등 여러 서비스가 활발한 사업을 전개하고 있고, 심지어 ’세컨드 스크린 소사이어티(2nd Screen Society)‘라는 단체까지 만들어져 있습니다.

보통 이런 서비스들은 한국에서 제대로 사용해 볼 기회가 거의 없기 때문에 뉴스 기사를 통한 간접 경험에 의존하여 대략적인 경향을 살펴보면 이렇습니다. 오디오 인식 등으로 현재 방송 프로그램(또는 광고) 위치를 자동으로 정확하게 파악하여 프로그램과 연동된 관련 정보를 서비스하고, 반응, 소셜 등 참여를 적극 유도하는 양방향 서비스를 강조하고 있습니다. 특히 마케터들에겐 TV에 효과적으로 양방향 광고를 진행할 수 있는 솔루션으로 큰 기대를 하고 있습니다.

 

세컨드 스크린의 가장 큰 문제점은 비디오 스트림의 단절

세컨드 스크린의 잠재력은 메인 스크린의 비디오 영역을 방해하지 않고 부가적인 디스플레이가 가능하도록 스크린이 분리되었다는 점과 TV의 가장 큰 애로사항인 양방향 인터페이스의 문제를 비교적 쉽게 해결할 수 있다는 데 있습니다. 하지만 그 두 가지 문제가 정말 해결된 것일까요. 첫 번째 문제에서 메인 스크린 시청 방해는 세컨드 스크린에서도 마찬가지로 일어날 수 있습니다. 이번엔 화면을 방해하는 것이 아니라, 시선을 방해합니다. 아래 그림을 보시죠.

Second Screen

세컨드 스크린을 보기 위해서는 TV에서 시선을 떼야 합니다. TV에서 시선을 고정하기 위해 엄청난 노력을 하는 현재의 방송 포맷은 세컨드 스크린과 궁합이 그리 잘 맞지 않는다고 생각합니다. 특히 상대적으로 몰입형인 드라마 같은 경우라면, 세컨드 스크린으로의 시선 단절, 즉 비디오 스트림의 단절은 용납되지 않을 것입니다. 이것은 고스란히 두 번째 문제에 영향을 줍니다. 세컨드 스크린의 양방향 인터페이스가 아무리 잘 갖춰진들, 주목되지 않으면 무슨 소용이 있겠습니까.

물론 잠깐 언급했듯이, 현재의 방송 포맷이 세컨드 스크린을 전혀 고려하지 않기 때문에 그렇습니다. 이걸 바꿔 말하면, 미래 방송 포맷이 세컨드 스크린을 고려하여 제작될 수 있다면, 시선 분배의 타이밍과 양방향의 컨텐트 제공이 유기적으로 이루어질 수도 있을 것입니다. 컴캐스트와 지박스의 예 같은 방송사와 세컨드 스크린의 제휴가 앞으로 더욱 심화하여, 프로그램 제작 단계에까지 긴밀한 협조를 하게 된다면 가능한 얘깁니다.

 

정보 스트림으로서의 가능성

그렇게 프로그램과 완벽히 연동되는 세컨드 스크린을 가정해 봅시다. 그럼 비디오 스트림의 단절과 양방향성의 극대화가 자연스럽게 일어날까요. 일부 장르의 프로그램에서는 이게 효과적으로 작용할 수도 있습니다. 예를 들어 시청자의 실시간 참여로 이뤄지는 퀴즈 프로그램을 상상해보면, 사회자가 “자, 지금 답을 눌러주세요!”라는 구령에 맞춰 시청자들이 세컨드 스크린을 일제히 터치하는 게임에 참여할 수 있을 것입니다. 하지만 대다수의 방송은 여전히 일방적인 비디오 스트림의 포맷을 벗어나지 않을 것입니다. 시청자가 TV에 기대하는 바가 그렇기 때문입니다. 사람들의 시청 행태가 어느 날 갑자기 린-백(lean-back)에서 린-포워드(lean-forward)가 될 것이라는 순진무구한 전망에 대한 신빙성 있는 근거는 어디에도 없습니다.

TV에서의 소비는 양방향이 아니라 컨텐트 스트림의 수동적 시청이라는 더 자연스러운 본능적 소비에 초점을 맞춰야 합니다. 그런 의미에서, 세컨드 스크린의 서비스도 ‘정보 스트림’이라는 컨셉으로 접근해 보는 것은 어떨까 생각해 봅니다. 세컨드 스크린은 TV의 보조 스크린 개념으로, TV 앞 탁자 정도에 세워져 TV 스크린에 방해되지 않게 적절히 시선을 분배하는 위치에 있고, 거기에 사용자가 굳이 (양방향으로) 무슨 명령을 내리지 않아도 프로그램과 완벽히 연동된 관련 정보가 방송 위치에 싱크되어 자동으로 흐르는 것입니다.

Aux Screen

이 정보 스트림은 프로그램과 관련된 정보를 간략한 형태로, 예를 들면 키워드나 헤드라인 수준의-큰 폰트로 표현된 정보를 가독성 있게 보여줍니다. 특정 배우가 나오는 장면에선 최근 그 배우의 뉴스 헤드라인이, 특정 상품이 나오는 장면에선 해당 상품의 브랜드와 가격이, 광고 시간에는 크로스 스크린-TV 스크린과 세컨드 스크린 양쪽을 유기적으로 활용한- 광고 캠페인을 진행합니다. 물론 열애설 헤드라인에 깜짝 놀라 태블릿을 터치해 자세한 뉴스를 볼 수도 있겠죠. 양방향성이 배제된 것이 아니라 억지로 드러내지 않을 뿐입니다. 또한, 새로운 광고 인벤토리가 창출되는 효과도 있습니다. 정보 스트림의 빈 슬롯에 광고가 채워질 수 있다는 얘깁니다.

조금 더 진도를 나가 봅시다. ‘정보 스트림’을 위한 TV의 보조 스크린으로서 세컨드 스크린을 사용하는 대신에, TV 자체의 폼팩터가 보조 스크린을 수용하는 방향으로 발전하면 어떨까 상상해 봅니다. 이런 식으로요.

Dual Screen

TV 스크린의 옆에 보조 스크린을 장착하는 겁니다. 시선의 단절감이 훨씬 적고, 화면도 크기 때문에 더 많은 정보를 표현할 수 있는 장점이 있습니다. TV 옆으로 확장하는 것이라 잘 안 보일 수도 있으니 각도를 꺾을 수 있게 만들면 더 좋겠죠?

여러분의 생각은 어떠신가요?

출처:http://digxtal.com/idea/20130627/second-screen-info-stream/

2013년 6월 21일
by aduris
0 comments

스크럼, 이걸 왜 하나요

http://www.slideshare.net/einsub/ss-14963659

2013년 6월 10일
by aduris
0 comments

대한민국 커뮤니티데이

행  사  명:제 3 회 대한민국 커뮤니티 데이
주      제:2013 커뮤니티의 최신 트랜드 및 기술 이슈에 대한 Tech, Meetup, Workshop
일      시:2013년 6월 29일(토) 오전 10시 ~ 오후 6시
장      소:상암동 누리꿈스크웨어
주최 주관:Community Federation
“혼자 가면 빨리 갈수 있지만, 함께 가면 멀리 갈수 있다.” 자발적으로 모여서 서로의 고민거리를 찐하게 나누는 곳..
위대하진 않지만, 묵묵히 지식을 나누고, 공유하는 작은 영웅들이 있는 곳.. 바로 커뮤니티 입니다.
그리고 그러한 커뮤니티를 한꺼번에 다 만날 수 있는 곳. 「대한민국 커뮤니티 데이」입니다. 3회 대한민국 커뮤니티 데이는 역대 어느 행사보다 더 양적, 질적으로
성장했습니다.. 디자이너, 사용자등  다양한 성격의 커뮤니티들이 새롭게 합류했습니다.
(한국HCI연구회, LEED, 생활코딩, Drupal 서울 커뮤니티, 맥/iOS 개발자 커뮤니티, GNOME 한국커뮤니티, 안드로이드사이드 등)
기존 Tech Session 및 Meetup 외에도 Workshop 참여를 통해 커뮤니티 리더나 여러 전문가들과 함께 더 능동적으로 행사를 즐기실 수 있습니다.
대한민국 커뮤니티를 느껴보시기 바랍니다.

여러분들의 많은 관심과 적극적인 참여 바랍니다.

사전등록 – 22,000원(VAT포함)현장등록 – 55,000원(VAT포함)
EVA의 한 마리 기러기
NHN NEXT 교수 손영수

등록비

사전등록 – 22,000원(VAT포함)현장등록 – 55,000원(VAT포함)
시간 Track 1 Track 2 Track 3 Track 4
Tech(대회의실) Tech(중회의실) Meetup(국제회의실) Workshop
중회의실 소회의실
9:30~10:30 Registration
10:30~10:40 개회사 및 축사
10:40~12:00 Keynote : OSSI 프로젝트(오픈소스 인공위성 프로젝트)  강연 : 송호준(미디어 아티스트)
12:00~13:00 Lunch (행사 참가 선착순 300명에게 식사 제공)
13:00~13:40 OSS 개발자포럼 드루팔 8의 중요한 변화
홍영택(Drupal 커뮤니티)
모바일의 미래
그리고 앞으로의 전망
테스트 사례공유
- MockMVC 기본설정 및 테스트
- embeded tomcat을 이용한

컨트롤러 테스트

- 테스트 커버리지를 올리기까지의

솔루션 개발시 테스트 경험 공유
(한국스프링사용자그룹)

UI 디자이너 되어보기:

일정관리 모바일 앱의 UI 디자인
- 사용자 중심적인 UI디자인 프로세스 체험
- 리서치, 설계, 평가, 수정
(한국HCI연구회)
(4시까지)

13:40~13:50 Break
13:50~14:30 클라우드 서비스 브로커(CSB)가
가져올 클라우드 세상
장선진(소프트웨어인라이프)
JavaScript 성능향상과 Sencha
김태원(한국센차유저그룹)
14:30~14:40 Break
14:40~15:20 WWDC2013 애플의 미래
김정(맥/iOS 개발자 커뮤니티)
Front-End 개발 기술
(자바카페)
오픈소스 커미터
과연 개발자의 미래인가?
15:20~15:30 Break Break
15:30~16:20 오픈스택과 자동화 구축 방안
안재석(오픈스택 한국 커뮤니티)
위대한 벤처의 탄생(창업)
양준철(온오프믹스대표)
초보개발자들과
함께하는
리팩토링
실습 
- Sample 프로그램 제공
- 프로그램 분석
- 코드 리팩토링
(자바카페)
TDD로 하는 iOS
앱 개발 코딩도장
(OSXDev)
16:20~16:30 Break
16:30~17:10 우분투와 찰떡궁합
Hardware & Software 소개
최우영(우분투 한국 커뮤니티)
업무 및 커뮤니케이션에
활용 가능한 UX 아이디어 스케치
이재희(LEED)
아키텍트에 길을 묻다.
17:10~17:20 Break
17:20~18:00 생활코딩 활동의
처음 그리고 현재까지
이고잉(생활코딩커뮤니티)
전투기의 메세지 처리로 보는
패턴 이야기(Fault Tolerance Pattern)
(EVA)
18:00~18:10 경품추첨 및 마무리
※ 상기 일정은 사정에 따라 변경 가능
※ 행사 당일 참가등록 선착순 300명에게 Lunch 제공 
※ 중고등학생은 행사당일 등록대에서 “신분증”을 제시하면 무료로 입장 가능

2013년 5월 23일
by wkk711
0 comments

Responsive Web Design을 위한 Test-Tool

Screenqueri.es

 

브라우저에서 각 장치의 시뮬레이션을 할 수 있다.

 

 

Responsive Web Design Test Tool

브라우저에서 각 장치의 시뮬레이션을 할 수 있다.

 

 

Responsivepx

브라우저에서 크기를 변경하여 표시를 확인할 수 있다.

 

 

Ish

 

브라우저에서 각 크기의 표시를 확인할 수 있다.

 

 

Responsive Tools For Web Designer & Developers

 

 

각 장치의 표시를 확인할 수 있다. 조작도 가능.

 

 

Responsive Roulette

 

 

브라우저에서 각 크기의 표시를 확인할 수 있다.

 

 

The Responsinator

 

 

각 장치의 표시를 확인할 수 있다.

 

 

Juice’r

 

 

각 장치의 표시를 확인할 수 있다. 조작도 가능.

 

 

Screenfly

 

 

각 장치의 표시를 확인할 수 있다. 조작도 가능.

 

 

Responsive Design Testing

 

 

각 크기를 표시 목록에서 확인할 수 있다.

 

 

Deviceponsive

 

 

각 장치의 표시를 확인할 수 있다.

 

 

ResponsiveTest

 

 

각 장치의 표시를 확인할 수 있다.

 

 

resizeMyBrowser

 

 

선택한 크기의 별도의 창 열기 가능하다.

 

 

2013년 5월 15일
by wkk711
0 comments

교보생명 서서울지점 드림플래너 시연설명회

5월 15일 날짜로 교보생명 서서울지점에 방문을 했습니다.

저희가 만든 ‘드림플래너’에 대해 설계사분들에게 사용에 대한 설명을 드리러 갔습니다.

드림플래너 기획자 김성용 과장의 드림플래너에 대한 설명과 조작법에 대한 강연이었습니다.

모든 설계사분들이 저희가 만든 드림플래너를 보고 흥미로워하는 모습이 많았습니다.

아직까지 설계사분들의 디바이스 사용률도 적었고, 드림플래너가 설치가 되지 않은 모바일 디바이스가 대부분이었습니다만,

이렇게 방문을 통한 설치를 유도하고 설명해드리는 것도 좋은 방법이라는 생각이 들었습니다.

2013년 5월 15일
by ssuy
0 comments

icons times

http://iconstimes.com/

 

여러 글 대신 아이콘으로 기사를 대신해 보다 쉽고 빠르게 뉴스를 볼 수 있는 icons times입니다.

허핑턴 포스트(Huffington Post), 뉴욕타임즈(New York Times), 월스트리트저널(Wall Street Journal) 등 훌륭한 매체의 기사들을 수집하여 그에 맞는 그래픽으로 디자인 합니다.

 

이곳은 총 6가지의 카테고리(전체, 비즈니스, 엔터테인먼트, 스포츠, 테크놀로지 그리고 세계뉴스)로 뉴스가 분류되어있습니다. 각 아이콘 하단에는 짧은 설명 글이 적혀있습니다.

아이콘들도 직관적이고 재미있습니다 ^^

2013년 5월 9일
by aduris
1 Comment

Facebook 스타일의 SNS 서비스 아키텍쳐

Facebook 스타일의 SNS 서비스를 만들시 유용한 소스입니다. 전적으로 믿지 마시고 잘 응용하시면 좋은 아키텍처를 얻을 수 있을 듯 합니다.

- Facebook Style Messaging System Database Design - http://bit.ly/11Dq2bj
- Facebook Style Wall Database Design - http://bit.ly/owFQRj

2013년 5월 8일
by hoon515
0 comments

Smart Working Smart Leadership

 

D-rink #7 Smart Working Smart Leadership 하일라이트와 슬라이드 공유

 

안녕하세요. 완연한 봄기운과 함께 어느새 D-rink도 7번째 시간을 맞이했습니다. 많은 분들의 관심과 성원에 힘입어 다양한 강사진과 내용으로 업그레이드 되고 있습니다. 디지털 마케팅에 국한된 내용이 아닌 디지털 마케팅과 관계맺어 새로운 가능성을 만들어 낼 수 있는 다양한 내용을 담으려고 노력 중 입니다. 이번에 공유드리는 강연도 그 노력 중 하나 입니다. 외부에서도 청강(?)을 요청주셨으나 매번 송구스럽다는 말씀드리면서 7번째 강연공유를 시작하겠습니다.

행운의 7. D-rink 7번째 시간은 디지털 서비스전략, 기획가로 유명하신 다음 커뮤니케이션의 김지현 이사님의 강의로 진행되었습니다. 강연 시간을 오전 10시로 옮겨서 진행했는데요 많은 분들이 참여해주셔서 김지현 이사님의 인기를 확인할 수 있었답니다.

130424 07 스마트워크와리더십.001
이번 강연은 스마트 워크에 중점을 두어 강연을 진행하셨는데요, 스마트폰 이후의 세상에 대한통찰과 개인의 경쟁력 향상과 조직의 성과 연결을 위한 구체적인 노하우에 대해 들어보았습니다.

130424 07 스마트워크와리더십.004
가장 먼저 디지털 카메라를 발표할 만큼 기술력이 뛰어났던 코닥, 다양한 라인업을 선보이며 한국 mp3시장을 독식했던 아이리버. 시대의 변화에 대응하지 못해 소비자들에게 잊혀진 기업이 되었습니다. 그리고 동네 상권의 광고 매체였던 상가수첩과 전화번호 안내 서비스 114의 매출이 줄어드는 이유는 무엇일까요? 바로 스마트폰 배달 어플리케이션 때문 이었는데요. 스마트폰은 새로운 시대의 변화를 가져오고있습니다.

130424 07 스마트워크와리더십.005
제품 발매 이전부터 계속 이슈가 되고 있는 구글의 구글 글래스, 이미 있는 기술들을 조합해 소비자들에게 새로운 경험을 제공하며 여러 산업의 새로운 경쟁자로 예측되고 있습니다.

130424 07 스마트워크와리더십.007
Internet of Things, 줄여서 IOT라고 부릅니다. 모든 기기가 인터넷에 연결되면서 네트워크화 되는 것을 의미하는말이죠. 스포츠 용품 회사였던 나이키는 운동화를 아이팟에 연결시키는 나이키+의 성공에 힘입어 퓨얼밴드와 각종 스마트폰 어플리케이션 그리고 키넥트 트레이닝까지 내 놓으며 제품이 아닌 서비스로 브랜드를 소비자에게 기억하게 만드는 새로운 부가가치를 창출하게 됩니다. 아디다스 옷을 입더라도 아이폰으로 나이키 플러스 앱을 켜 놓고 운동하는 것 처럼 말이죠.

130424 07 스마트워크와리더십.010

130424 07 스마트워크와리더십.011
기술의 혁신이 빨리 들어나는 제품 중에 완구류를 빼놓을 수가 없겠죠. 미국 스타트업의 신화 중 하나인 제품 Dice+와 sphero 가 그 예 입니다. 단순해 보이는 주사위와 공을 인터넷 디바이스와 연결시켜 다양한 소프트웨어를 만들어 내었고, API를 오픈하여 외부에서 다양한 소프트웨어를 개발할 수 있게 하여 소비자들에게 많은 인기를 끌었습니다.
sphero는 직원들은 완구의 소프트웨어의 품질을 높이는데 집중하고, 외부의 개발회사 혹은 개인들이 sphero가 구동되는 게임을 개발하여 완구의 퀄리티와 구동 소프트웨어의 다양함을 동시에 충족시키는 에코시스템을 만들었습니다.

130424 07 스마트워크와리더십.016
앞에서 보셨던 것 처럼 산업간의 경계를 넘어선 “서비스경쟁의시대”가 오고있습니다. 단순히 제품하나만 파는 것이 아니라 컨텐츠와 각종 어플리케이션들을 개발하여 원래의 기능외의 부가가치를 지속적으로 창출하는 것이 목표가 되었지요. 소프트웨어 플랫폼과 마켓을 가지고 있는 마이크로 소프트와 아마존이 전용디바이스를 만드는 것도 같은 맥락으로 볼 수 있습니다.
지난 2012년 한국 신용카드의 해외결제 내용 중 가장 가장 많은 비율을 차지한 항목이 앱스토어 구글플레이 였습니다. 이제 시장의판도가 어디로 가고 있는지 대충 감이 오시겠죠 ^^?
(관련 내용이 더 궁금하다면 새로나온 책을 보라며 새책의 홍보도 깨알같이 해 주셨습니다 ^^)

130424 07 스마트워크와리더십.019
사실 김지현 이사님은 업무외에도 왕성한 대외활동을 보이고 있는데요. 사실 업무만으로도 빠듯한 일정인데 어떻게 시간배분을 할 수 있을까요? 김지현 이사님은 그 방법을 스마트워크라고 했습니다.
인류의 시초인 호모 사피엔스, 그 이전에 호모 에렉투스가 있었습니다. 똑같이 불을 사용할 줄 알았으나, 불을 만들고, 사냥 도구를 만드는 등 도구를 사용할 줄 알았던 호모 사피엔스가 결국 인간의 진화 모델이 되었지요. “물건을 그대로 쓰느냐 다른 것과 함께 결합해서 쓰느냐” 이 단순한 차이가 훗날 크게 다른 결과를 가지고 왔는데요. 호모사피엔스가 불과 도구를 다루면서 주거/농업혁명을 이뤘던 것 처럼 인간은 도구를 이용해서 산업혁명을 그리고 디지털 기기들을 통한 새로운 진화혁명을 일으킬 때가 온 것입니다.

130424 07 스마트워크와리더십.021
마라톤을 1등하는 법은 무엇일까요? 간단합니다. 포기하지않고, 지치지 않고, 남보다 조금만 더 달리면 됩니다. 평소에 훈련과 연습이 밥먹듯이 이뤄져야 한다는 건 당연한 것이구요. 그리고 그 훈련은 전문가와 과학의 도움을 받아 효율성있게 해야할 것입니다.

130424 07 스마트워크와리더십.022
일을 잘하는 사람은 대개 두 가지 분류 중 하나라고 합니다. 야근을 불사하는 노력파와 조금만 봐도 한 번에 정리가 되는 천재파, 그 사이의 간극을 채울 수 있는 방법중에 하나는 디지털 도구의 효율적 사용입니다. 마치 불이 나기만을 기다리며 쪼들리며 사는 호모 에렉투스와 불을 만들면서 원하는 곳 원하는 시간에 요리를 하는 호모 사피엔스의 차이처럼요.
그리고 그것을 가능하게 하는 것은 마라톤을 하는 것 처럼 꾸준한 훈련과 연습에 시간을 투자하는 것 입니다.

130424 07 스마트워크와리더십.026
어떤 연습을 해야 스마트하게 일 할수 있는 것 일까요? 수집,분류,복기,반복 이라는 네 가지 프로세스가 기본이라고 합니다.

130424 07 스마트워크와리더십.028
정보를 접하게 되면 필기, 촬영, 캡춰 등 다양한 방법으로 기록합니다. 하지만 기록만 한다고 해서 모두 기억나는 것은 아니죠. 도서관처럼 체계적인 분류를 통한 저장이 필요합니다. 분류와 저장을 위한 다양한 툴을 소개시켜주셨는데요. 김지현 이사님은 이 중 에버노트를 중점적으로 쓴다고 합니다.

130424 07 스마트워크와리더십.032
자료 정리중 흔히 간과하기 쉬운 인맥정리에 대해서도 강조하셨는데요. 요즘처럼 클라우드 소싱 방식으로 일하는 사회에서는 외부 인력의 데이터베이스화가 필요하다고 합니다. 엑셀을 이용해서 명함의 정보외에도 그날 만난 상황등의 기록을 통해서 기억하기 쉬운 방법으로 분류해서 기록하는 것이 다양한 인맥관리의 노하우라고 합니다. 명함이 정보이자 펙트면 엑셀은 디비화 그리고 그 디비를 이용해서 나중에 연락이 필요한 경우 쉽게찾아서 연락한다고 하네요.

130424 07 스마트워크와리더십.034
정보 뿐만 아니라 시간도 데이터베이스화 되어야 효율적인 업무가 가능하다고 합니다. 아웃룩,구글 캘린더등을 이용한 시간 관리 예시를 보여주셨는데요. 업무, 외부활동, 개인시간 등 색깔별로 분류하여 한 눈에 일정을 파악할 수 있게 정리 하였습니다.
일정의 상세항목 부분을 보면. 날짜만 적어놓은 것이 아니라 메모사항에 회의록, 업무 관련 문서 등 상세사항들을 함게 첨부해 놓았습니다. 김지현 이사님의 습관 중 하나인 프로젝트 일기를 업데이트 해 놓으신 것 이라고 합니다.

130424 07 스마트워크와리더십.036
우리는 다양한 프로젝트를 맡고 있고 진행했던 경험들이 있죠, 그런데 그 중에 몇 가지나 제대로 기억이 날까요. 참여자, 내용, 성공과 실패의 정확한 기억이 있을까요? 이 모든 것이 경험에서 수집되는 팩트 중 하나입니다. 하지막 기록하지 않으면 결코 데이터가 될 수가 없지요. 연차가 높은 사람이 업무 효율이 높은 이유는 경험 때문인데요. 그 소중한 경험이 기록되지 않다는다면 계속해서 밀려오는 또 다른 정보들에 밀려서 잊혀지게 됩니다. 마치 바둑처럼 기록과 복기가 필요한 이유가 그것입니다.
학생들이 학교에서 배우고 성장하듯 직장인 역시 회사에서 진화하고 성장해야 합니다. 그러나 회사는 교재나 스승이 없지요. 좋은 상사와 선배가 그 역할을 하긴 하지만 대부분은 스스로 배우고 깨우쳐야 합니다. 그러기 위해 필요한 것이 지나간 나의 과거의 기록인 회의록이나 프로젝트 일기라고 할 수 있겠지요.

130424 07 스마트워크와리더십.038
이 장표를 소리내서 읽어보면, 글자의 배열이 많이 다름에도 불구하고 무슨 뜻인지 이해하는데는 불편하지 않았다는 느끼게 될 것입니다. 다년간 언어를 학습하고 써 오는 동안 쌓인 경험과 지식 때문이죠. 한국어를 잘 하는 외국인들에게 이 글을 보여주면 굉장히 혼란스러워 하는 걸 보면 단순히 언어를 잘 하는 문제는 아니라는 것 을 알 수 있습니다.
업무에 관련된 지식도 경험으로 몸에 쌓는 내재화, 내공화가 필요합니다. 그럴려면 틀린 단어를 보고도 의미를 파악하는 것 처럼 업무에 관련된 키워드의 각인이 필요합니다. 즉 프로젝트를 접하게 되면 어느정도 흐름이 읽힐 정도가 되어야 빠른 업무 처리가 가능하다는 것 이죠.

130424 07 스마트워크와리더십.039
이렇게 스마트워크를 하기위해서는 꾸준하고 지속적인 연습이 필요하다고 합니다. 갑자기 모든 것을 기록하고 다시 복기하기란 결코 쉽지 않은 일이지요. 일기를 꾸준히 쓰는 것도 어려운데 일을 복기하는 건 오죽 하겠어요. 하지만 적어도 3년간 꾸준히 하다보면 효율적인 업무와 시간 활용이 가능하다고 합니다. 분, 초 단위로 시간을 관리하면서 업무와 다양한 활동을 병행할 수 있게 된 데에는 습관을 들이는 동안 가열찬 야근과 꾸준한 노력이 있었기 때문이라고 하시네요.

보통 강의를 진행할때면 많은 분들이 끄덕끄덕 하시고 메모도 많이하지만 그걸 바로 시작하고 끝까지 하셨던 분들을 생각보다 많이 보지 못했다고 하며, 의심이가고 귀찮아도 앞으로를 위해 꾸준히 해 볼 것을 강조하면서 강의는 마무리가 되었습니다. 한 시간 반을 꽉채운 알찬 강의였답니다.
이 번 강연은 스마트워크에 집중하셨지만, 스마트 리더십이 궁금하신 분들을 위해서 스마트 리더십에 관련된 자료가 포함된 슬라이드 전문을 공유드립니다.

다음에 있을 D-spark 여덟번째 세션은 강준환 융복합 비지니스모델 디자이너를 모시고 디지털 기술과 다양한 업계의 아이디어를 결합하여 새로운 가치를 창출하는 아이디어의 팁을 찾는 시간을 가질예정입니다. 많은 관심 부탁드립니다. :)
김신혜 @cinepops
Creative Technologist @Digital Innovation Group, M&C Div., SK Planet

Proudly powered by WordPress | Theme: Yoko by Elmastudio

Top