Rev. 2.73

Countly는 4인으로 구성된 터키출신의 착한 젊은 친구들에 의해 만들어진 실시간 모바일 앱 분석 도구입니다. 모바일 앱 엔드-유저의 행동 자료를 수집하고 분석하여 시각화해 줍니다. 구글 Analytics와 같은 웹 분석 도구를 모바일 앱에 최적화한 것으로 이해할 수 있겠네요. 오픈 소스이며 데이터 수집 및 관리할 수 있는 서버와 안드로이드, 윈도폰, iOS, 블랙베리(WebWorks)용 SDK를 동시에 제공합니다. (서드-파티에서 만든 유니티, 앱셀러레이터 타이타니움, 맥OSX용 SDK도 있습니다.) 재미있는 것은 SDK에서 제공하는 사용자 이벤트 API를 이용하면 앱 안에서의 사용자 패턴도 분석할 수 있습니다. (예를 들면, 게임 내 어떤 무기가 빈번하게 사용되는지 라던가...)

attachment

그들이 제공하는 데모를 실행해 보고 가지고 싶다는 생각이 들더군요. 나중에 서비스할지는 모르겠습니다만, 앱을 유료로 등록하고 사용할 수 있게 하는 기능은 없습니다. 그래서 Countly를 지금 사용해 보기 위해서는 운영 가능한 웹서버에 설치를 해야 하는 상황인 거죠. 서버는 Node.js와 MongoDB로 구축되었고 NginX와 Supervisor, Python 등의 패키지 설치를 요구하며, 리눅스 머신(우분투 권장)에 설치할 수 있습니다. 자체적으로 제공하는 설치 스크립트를 이용하면 Node.js를 비롯한 서버 실행 환경을 자동으로 구성해 줍니다. (비추천) 서버는 API와 Frontend로 양분되었으며, API 서버는 데이터의 입/출력을 담당하고, Express.js기반의 Frontend 서버는 데이터의 섹시한 비주얼라이제이션과 사용자 관리 기능을 포함합니다. 이 두 서버는 supervisord으로 관리되며, NginX에서 라우팅 룰에의해 서로 다른 포트를 가진 서버 프로세스로 프락시 패스하도록 구성되어 있었습니다. Cafe24에 놀리고 있는 가상서버에 설치하기 위해, 반나잘 삽질하고 윤진군의 도움으로 성공적으로 실행했습니다. 그런데 아쉽게도 등록할 만한 앱이 없네요. 혹시 관심 있는 분은 무료로 앱을 등록해 드릴께요. 요청에 한해서 등록한 앱 단위로 데이터베이스까지 덤프해서 드릴 생각입니다.

아쉽게도 한글 지원이 없어서 직접 한글화 작업을 완료하고 적용해 줄 것을 요청한 상태입니다. 그리고 각종 데이터를 PDF 문서로 생성해 주는 기능과 모바일에서 액세스할 수 있는 네이티브 앱을 개발 중이며 곧 선보일 예정이라고 하네요. 아주 멋집니다!

Comments

회사 분위기가 싱숭생숭하여 생존 본능이 발동했습니다. 웹은 좀 지겨우니까 이제 다른 쪽 기술들도 살펴볼겸 해서 어깨너어로 슬쩍슬쩍 넘겨보던 와중에 게임회사 다니는 쫑맹형이 "너 자바스크립트 하지?"라고는 질문을 던졌고, "유니티라는거 알아? 그거 죽이니까 살펴봐"라는 정보를 줬습니다. 유니티 홈페이지에 들러 대략 훓어보니 이거 완전 물건이더군요. 게임제작에 필요한 시작부터 끝을 보장하며, 멀티 플랫폼이고, 2011년도에 한국 지사가 설립되어 개발 지원이 풍부하며, 언리얼이나 기타 게임엔진에 비해 저렴한 등 장점을 모두 나열하자면 입이 아플 지경입니다.

unity_editor.jpg

최근 런칭한 유니티 4.0은 다이렉트X 11을 공식적으로 지원하고, GUI를 완전히 재작성하여 낮은 성능의 개발환경에서의 효율성을 높였으며, 강력한 애니메이션 시스템(메카님)을 제공하여 모션 캡처한 애니메이션을 마치 동영상 편집하듯이 손쉽게 다룰 수 있고, 리눅스 플랫폼을 추가로 지원하며, 그래픽 기능에 엄청난 향상이 있고, 곡선과 기울기 중심의 모듈 파티클 시스템 도구를 강화해 폭발, 충돌, 태풍 등을 보다 적은 예산으로 구현하는 등 많은 발전이 있었다고 합니다. 30일간 사용해 볼 수 있는 트라이얼 버전을 설치하고 이런저런 스크린캐스트를 보면서 따라 하는 중인데, 감탄을 금치 못하고 있습니다. 개발과정에 필요한 모든 라이브러리가 모듈화 되었고 개발도구와 잘 결합하여 조금만 집중하면 간단한 게임 정도는 뚝딱 만들겠다는 생각이 들더군요. 유니티로 만들어진 게임들을 살펴보면 iOS 2012 최고의 게임으로 선정된 Room, 앵그리 버드로 유명한 Rovio사의 Bad Piggies, Ravensword 이름만 들어도 알 수 있을만한 히트작들이 꽤 있었습니다.

그리고 홈페이지는 물론 모든 메뉴얼과 레퍼런스 문서를 완벽한 한글로 제공해 주어 힘들게 구한 외국 문서를 번역해가면서 삽질할 필요가 없다는 것이죠. 그리고 한국만을 위한 개발자 커뮤니티도 자체적으로 활성화를 도모하는 아름다운 자세를 엿볼 수 있었습니다. 너무 칭찬 일색이네요. 마지막으로 가장 마음에 드는 부분은 자바스크립트를 이용한 스크립트 작성을 지원하는 것입니다. C#(Mono 기반) 또는 Boo로도 스크립트를 작성할 수 있습니다. "아~ 이걸 왜 지금에 와서야 안 거지?"라는 아쉬움이 들 정도입니다. 취미로 삼아 가지고 놀다가 뭔가 재미있는 아이디어가 떠오르면 본격적으로 시작해 봐야겠습니다. 2013년은 왠지 뭔가 터질 것만 같은 이래저래 흥분되는 해가 될 것 같습니다.

Comments

1년 전 구글은 자바스크립트를 대체할만한 새로운 언어인 다트(Dart) 만들겠다고 발표했고 1년이 지난 지금 M2 버전을 발표하면서 쓸만한 수준으로까지 만들어 놓은 것 같습니다. 이에 질세라 MS도 비슷한 시기에 타입스크립트(TypeScript)라는 새로운 자바스크립트 프로그래밍 대안을 제시했습니다. 이 둘의 공통적인 지향점은 자바스크립트를 대체하기 보다는 부족한 점을 보완하고 편리성, 확장성, 생산성 향상을 도모해 애플리케이션 규모의 개발을 이롭게 하자는 것입니다. 이러한 측면에서 개발자에게 애플리케이션을 개발하는 새로운 방법을 제시하는 것 그 이상도 그 이하도 아니라는 점은 분명합니다. 일부 시각에서 대체라는 둥 한계라는 둥, 신경 거슬리는 말을 자주 사용하는데 전혀 동요할 필요가 없겠습니다. 그래도 이 새로운 언어들이 계속해서 눈에 밟힐 것 같아 차이점 정도는 집고 넘어야겠다 싶어 알아보았습니다.

타입스크립트는 ECMA 표준에 근거한 다음 버전의 자바스크립트 규격에 기반을 뒸습니다. 이것은 앞으로 표준이 될 가능성을 염두에 둔 자바스크립트 슈퍼셋입니다.(예: C++은 C의 슈퍼셋) 타입을 검사할 수 있고, 기존 라이브러리를 그대로 사용하며 크로스 플랫폼으로 작성할 수 있는 장점이 있다고 합니다. 기존 자바스크립트와의 호환성을 위해 타입스크립트로 작성된 코드를 자바스크립트로 컴파일 할 수 있으며, 그 완성도가 매우 뛰어납니다. 타입스크립트는 Node.js에서도 사용할 수 있도록 모듈을 배포하고 있네요. 타입스크립트의 개발은 비주얼 스튜디오 2012에서 이루어지며 플러그인 형태로 설치할 수 있습니다. 혹자는 액션스크립트 3으로 자바스크립트를 짜는 거네... 차라리 CoffeeScript를 쓰겠어, 성능은?, 네이티브로 작동하기 위한 계획이나 확산 계획이 불분명하다는 부정적인 반응도 보입니다. 아래는 타입스크립트가 자바스크립트로 컴파일된 예입니다.

// typescript
class Greeter {
    greeting: string;
    constructor (message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}

// javascript
var Greeter = (function () {
    function Greeter(message) {
        this.greeting = message;
    }
    Greeter.prototype.greet = function () {
        return "Hello, " + this.greeting;
    };
    return Greeter;
})();

다트는 전통적인 클래스기반 객제지향언어입니다. C#, Java를 다뤄본 경험이 있다면 다트의 문법이 친숙하게 느껴질 것입니다. 자바스크립트와 마찬가지로 싱글 스레드로 작동하지만 자체적으로 제공하는 다트 VM(가상 머신)에 탑재된 Isolate를 이용하여 멀티 스레드를 구현할 수 있습니다. VM이 있다는 것은 곧 Node.js와 같은 서버-사이드 프로그래밍도 가능하다는 말입니다. 서버와 클라이언트간 코드가 동일하다는 점에서 비롯되는 이점은 의외로 많습니다. 예를 들면, 시스템 사양이 좋은 테스크탑에서는 클라이언트의 리소스를 활용하고 그렇지 않은 모바일에서는 서버의 리소스를 활용하는 로직을 하나로 코드로 관리할 수 있게 되는 것이죠. 그러나 이것은 모든 환경에 VM이 탑재되었을때 비로소 가능한 것입니다. VM이 보편화하기 전까지는 다트로 작성된 코드가 자바스크립트로 컴파일되도록 하자는 전략입니다. 이클립스기반의 다트 에디터에서 통합 개발환경을 제공하고 다트 VM이 탑재된 크롬 브라우저인 Dartium에서 다트 코드를 테스트할 수 있습니다. 그리고 자바스크립트 컴파일러, VM, 패키지 매니저로 구성된 SDK를 제공합니다. 다음은 다트의 예문입니다.

import 'dart:html';

main() {
  var msg = query('#msg');
  var btn = new ButtonElement();
  btn.text = 'Click me!';
  btn.on.click.add((e) => msg.text = 'Dart!');
  document.body.nodes.add(btn);
}

덧. 실제로 다트나 타입스크립트를 직접 경험하지 못한 상황에서 바라본 시각으로 작성했다는 점 참고해주세요. 두 언어 모두 근사한 기능을 말하고 있지만 현시점에서 실무에 적용하려면 컴파일러를 통해 자바스크립트로 변환하여 적용하는 일이 고작인듯합니다. 그렇다고 아직 개발 중인 녀석들에게 왈가왈부할 수도 없는 상황이네요. 저는 올해부터 다트를 공부하기로 마음먹었습니다. 다트가 자체적인 런타임을 가지고 있다는 부분이 정말 매력적으로 느껴지더군요. 웹의 범주를 넘어서는 가능성을 열어두었다는 생각이 듭니다. VM위에서는 어느 정도의 성능이 나올지 벌써부터 기대되는군요.

Comments