post list

2015년 5월 4일

[Cocos2d-x] 개발 환경 구축 + Tizen

이번 포스팅의 핵심은 Cocos2d-x 개발 환경을 구축 하는데 있다. 더불어 15년 4월 24일자로 릴리즈된 Cocos2d-x for Tizen 개발 환경 구축까지도 다뤄볼 것이다.


1. Cocos2d-x 다운로드

우선 Cocos2d-x를 다운받아 보자. 뭘 받아도 상관 없지만 여기서는 Tizen 까지 포함하는 Cocos2d-x를 다운받겠다. 아래의 링크에서 다운로드 가능하다.

1. https://github.com/sukwonsuh/cocos2d-x (mobile 용)

2. http://blog.cocos2d-x.org/2015/04/cocos2d-x-v3-5-for-tizen-released/ (watch 용)

또한 해당 페이지에 링크된 도큐멘트로 따라 들어가면 설치 가이드가 있다. 사실 가이드를 따라서 설치를 하면 그다지 큰 문제 없이 개발 환경이 구축이 된다. 하지만 혹여나 만날 수 있는 문제점이 있을 수도 있으며 개발 자체는 MS Visual Studio 에서 하는 것으로 가정하고 있기에 조금 더 이 포스트를 다뤄보겠다.

위에서 다운로드 받은 압축을 풀면 build, cmake, cocos ... 등과 같은 많은 폴더와 파일이 담긴 cocos2d-x-3.5-tizen 폴더가 생성된다.


2. Cocos2d-x 환경변수 설정

이제 Cocos 환경변수를 등록해야 한다. 환경변수를 등록하는 이유는 cmd에서 어떤 폴더에서나 cocos 에 접근할 수 있도록 하기 위함이다. 다음의 절차를 따른다.

제어판 > 시스템 및 보안 > 시스템 > 왼쪽의 고급 시스템 설정 > 환경변수

아래의 시스템 변수에서 Path 라는 항목을 편집하자.
그럼 변수 값(V)라는 항목이 있을텐데, 이미 적혀 있는 글자 끝에 ; 를 붙여주고 Cocos2d-x를 Unzip한 곳의 디렉토리 +  \tools\cocos2d-console\bin\ 한다. 예를 들자면..

예를 들면 저는 윈도우 기본 문서(Document) 폴더에 Unzip을 했기 때문에 다음과 같은 Path를 등록했다.

[이미 존재하던 Path];C:\Users\deokil\Documents\cocos2d-x-3.5-tizen\tools\cocos2d-console\bin\


3. Python 다운로드 및 환경변수 설정

인터넷에서 Python을 검색해서 Python 2.7버전을 다운로드 받아서 설치한다. 그리고 위의 절차와 똑같이 환경변수를 잡아준다. 대부분의 경우 C\Python27\ 에 설치 되므로 이 경로를 적어주면 된다. 마찬가지로 이미 있던 Path에 ; 를 붙이는 것을 잊지말자.


4. 새로운 프로젝트 생성

Windows Key + R을 눌려서 cmd를 입력하고 프로젝트를 생성할 디렉토리로 이동한다. cmd를 다룰줄 모르면 낭패다... 이건 알고 가야하는데 혹시 모른다면 검색해서 기초적인 사용방법을 습득하자. 프로젝트를 생성할 디렉토리로 이동했다면 다음의 명령어를 입력한다.

cocos new [project name] -p [project package name] -l cpp -d [project path]

꺽쇠괄호 [] 로 쳐진 곳은 사용자가 지정해야 하는 공간이다. 완료되고 나면 새로운 프로젝트가 생성된다. 예를 들자면 다음과 같다.

cocos new Fox -p com.holofactory.fox -l cpp -d C:\Users\deokil\Documents\

이렇게 하면 C:\Users\deokil\Documents\ 안에 Fox라는 프로젝트가 생성된다. ^^


5. Visual Studio에서 작업하기

프로젝트가 생성된 폴더에 들어가보면 proj.win32 폴더가 있다. 내부로 들어가면 프로젝트명으로 된 Visual Studio 파일(sln파일)이 존재한다. 더블클릭하면 자동으로 개발환경이 구축된다. 테스트로 컴파일을 해보자. 상단 메뉴에 빌드라는 항목이 있을 것이다. 첫빌드는 꽤나 오래 걸리니 인내심을 갖고 기다리자. 그럼 곧 Hello World 화면을 볼 수 있다.


p.s. Cocos2d-x 의 장점은 개발환경이 달라도 어디서든 개발 및 포팅이 쉽다는 것에 있다. 이 말이 뭐냐하면 Visual Studio로 개발을 하다가 언제든 다른 플랫폼에서도 개발을 할 수 있다는 의미다. 왜냐하면 우리가 작성하는 소스 파일은 우리가 임포트하는 프로젝트 폴더의 밖에 있는 Classes 폴더에 있고 우리는 그것에 링크를 걸어서 작업을 하기 때문이다. 무슨 말인지 모르겠다면 실제로 해보라. 


/* 지금부터는 Tizen 플랫폼으로 포팅하는 방법에 대해서 다룹니다. Tizen 플랫폼으로 포팅할 계획이 없으신 분들은 여기서 떠나셔도 무방합니다. */

1. Tizen SDK 설치

아래의 링크로 접속해서 자신의 플랫폼에 맞는 Installer Manager와 SDK 이미지를 받는다.

https://developer.tizen.org/development/tools/download

다운이 완료되고 나면 Installer Manager를 클릭한다. 그리고 SDK Image를 Import 하도록 선택해서 위에서 다운로드 된 SDK Image 경로를 잡아준다. 그럼 Install 버튼이 활성화 된다. Install 을 선택하고 아래의 그림을 참고하여 반드시 Custom 으로 해서 Gcc 4.8 toolchain 을 선택해줘야 한다.




2. Import 프로젝트

Tizen SDK도 별거 없다. 어차피 Eclipse 기반의 IDE를 이용하기 때문에 이클립스에서 프로젝트를 임포트하는 것과 같다. 물론 Cocos2d 또한 임포트 해줘야 한다.

우선 SDK를 실행시킨다. 그럼 workspace를 지정하라고 할 것인데, 위에서 설치했던 프로젝트의 부모 폴더를 지정한다.

그리고 나서 실제 임포트를 해보자. 아래의 그림을 참고하여 Tizen Native Project로 프로젝트를 가져온다.



그럼 Import 창이 뜰것인데 가장 위에 Select root directory 라는 항목이 있다. 그곳에 프로젝트 폴더의 경로를 입력한다. 그럼 갑자기 굉장히 많은 선택 가능한 프로젝트 목록이 보일 것이다. 그 중에 libcocos2dx 와 프로젝트 이름으로 된 2개의 항목을 선택한다. 이름이 같은 것이 있을 것이다. 그럼 끝에 적힌 글자를 보라. tizen이라고 적힌 것만 선택하면 된다.

(조심해야 할 것은 해당 창 아래에 copy .. 어쩌고 하는 항목에 체크가 되어 있다면 체크 해제를 해줘야한다.)


3. 빌드 및 실행

임포트된 libcoco2dx의 소스는 열어보지도 말고 궁금해 하지도 말자. 괜히 건드렸다가 귀찮은 일이 발생한다. 그래도 우선은 빌드는 한번 해줘야한다. libcocos2dx 프로젝트에 마우스 오른쪽 클릭을 해서 build project를 한번 해준다.

빌드가 완료되면 우리가 작업할 프로젝트에서도 build project를 해준다. 그럼 virtual machine이 뜨면서 타이젠 플랫폼이 돌아가는 것을 볼 수 있다.

혹시나 이 글을 읽는 분이 tizen device를 들고 있다면.. Security 문제를 만날 수 있다. 그럴 때는 아래의 링크에서 Security profiles 항목을 읽고 따라하면 된다.

https://github.com/cocos2d/cocos2d-x/blob/v35-for-tizen/docs/RELEASE_NOTES.md


4. 개발하기

프로젝트를 열고 Classes 폴더를 열어서 개발을 시작하면 된다 ㅎㅎ



2015년 1월 31일

Passdock을 이용해 Passbook 추가 하는 방법

1. https://api.passdock.com 에 접속한다.
2.  상단에 Simple을 Advance로 반드시 바꾼 후 Templates를 선택한다.
3. 넣어야 할 이미지는 http://geekdk.tistory.com/25 를 참고한다. (http://kunstory.tistory.com)
4. http://www.barcoding.com/upc/ 를 이용해 바코드를 생성한다.
(또는 http://www.barcode-generator.org/)
5. 이메일로 보내어서 패스북에 추가하거나 QR 코드를 찍는다.

2014년 12월 21일

[데이터 마이닝] 부산대 산업공학과 텀 프로젝트

바야흐로 디지털 시대...
이제 Social Network로 당신의 관계의 친밀도를 분석할 수 있어요! :)
 
‘Social Network’ 들어보셨을지 모르겠네요.
웹상에서 이용자들이 인적 네트워크를 형성할 수 있게 해주는 서비스입니다.
 
저희는 이 Social Network를 이용한 데이터 분석을 해보았습니다. :D





위의 그림과 같은 데이터의 Log를 분석 했는데요. (Log란 데이터의 기록을 말합니다.)
 
저희는 이 Log를 분석하기 위해 크게 두 가지 Tool을 사용했습니다.
BAB Social Network
ProM
 
먼저, BAB Social Network. 웬 밥....? 먹는 밥인가?.... 많이 생소하실 텐데요~
우리 조원 중 (컴퓨터 프로그래밍을 기가 막히게 하는^^) 한 명이 참여한 부산대 산업공학과 연구실에서 개발한 Tool입니다. 아래 그림을 보시죠.





이리도 복잡하게 얽혀 있는 관계들을 분석하는 Tool입니다.
Social Network Algorithm을 이용해 프로그래밍 한 것이죠.
 
그렇다면 ProM? (BAB에 아직 구현하지 못한 알고리즘은 ProM으로 분석했답니다.)







 
왼쪽은 Fuzzy Mining인데, 이를 통해 Log의 핵심적인 Event의 흐름을 파악할 수 있어요.
오른쪽은 Heuristic Mining인데요. 보다 자세한 모델을 파악하기 위해 시도해보았습니다.
 
, 그럼 본격적으로 Social Network 분석에 들어가 볼까요?





Originator Overview를 이용해 32개의 Originator 중 높은 빈도 수를 가지는 Originator를 중심으로 분석 했어요. (SL1, GC068%, GC05, GC076%, GC045%)
 
저희가 분석해본 Social Network Algorithm은 총 4가지!
Working Together, Similar Task, Subcontracting, Handover of Work입니다.
 
먼저, Working Together!





originatorCase에서 함께 발견되는 정도를 Counting하여 Originator들 간의 관련성을 파악하는 알고리즘입니다.




  
Threshold0.2일 때, 주요 Originator의 분포이네요. (SL1, GC07, GC08), (GC05, A63), (GC02), (GC06, etc.) 끼리 함께 일하는 것으로 확인됩니다.
다음은 Similar Task!



여러 Case에서 같은 Activity를 수행하는 Originator들 간의 관계를 파악하는 알고리즘입니다.
 




위의 도식은 Threshold 0.99에서의 Similar Task Analysis입니다.
다음은 Subcontracting!



 
쉽게 말해 JohnMike, Sue, Pete에게 하청을 주는 것이라 생각하면 됩니다.



위의 도식은 Threshold0.005일 때, Subcontracting Analysis입니다.
 
마지막으로 Handover of Work!!



연속되는 Activity를 수행하는 Originator 사이의 관계를 파악하는 알고리즘이에요.




SL1GC03, GC07 등에게 Handover 하는 것이 보이나요?
 
 
이상으로 저희의 분석은 끝이구요!
이러한 분석을 통해 Originator간의 관계를 대략적으로나마 파악했습니다.



위와 같은 결과가 나오는군요.
 
 
결론적으로,
항만 물류는 작업장이 매우 넓고, 많은 작업자와 설비에 의해서 물류작업이 됩니다.
컨테이너를 운반하는 크레인과 트럭이 매우 많고, 복잡한 관계를 띄고 있구요.
저희는 작업주체인 크레인과 트럭간의 관계를 분석했습니다.
작업빈도가 높은 QuayCraneYardCrane으로 추측되는 SL1과의 관계에 초점을 맞추었습니다.
SL1의 경우 YardCrane의 집합일 거라고 추측해봤습니다.
QuayCrane과는 다르게 Originator가 하나의 그룹으로 주어진 이유나 그들 간의 관계를 더 자세히 파악하기 위해서는 Domain Knowledge가 필요할 것으로 예상됩니다.
 
이상 BAB으로 Social Network 정복하기였습니다.
부족한 점이 많으나 배워가는 과정이니 이해 부탁드려요^^








// 블로그 주인의 Comment

본 블로그는 부산대 산업공학과 수업 중 하나 인 '데이터 마이닝' 에서 텀프로젝트 결과물을 최대한 쉽게 올려놓은 것입니다. 보고서는 제가 쓴 것이 아니지만 제 블로그에 올리는 이유는 추억을 담기 위해서 입니다. 혹시나 다른 분들 보시고 틀린 점이 있더라도 학부생의 귀여움으로 보아주시면 감사하겠습니다 :)