10월, 2016의 게시물 표시

Google Cloud Platform을 이용한 iPhone 7의 이슈(반응) 분석

이미지
Google Cloud Platform을 이용한 iPhone 7의 이슈(반응) 분석 Google Cloud Platform(GCP)을 이용하면 빅데이터 관련 지식이 없으면서도, 복잡한 Private Cloud 설치을 설치하지 않아도 보다 저렴한 비용으로 다양한 빅데이터를 수집하고 분석할 수 있다.
여러가지 데이터 분석이 있겠지만, 최근 iPhone 7이 한국에 출시되어서 이에 대해 Twitter에서는 어떤 이슈들(빅데이터 분석)이 나오고 있는지 분석해 보겠다.
SNS 상에서 iPhone 7 이슈 분석을 위해 GCP을 사용하고, 먼저 Twitter에서 데이터를 수집하면서 다른 SNS 서비스에서도 수집할 수 있도록 준비할 예정이다. 데이터 수집은 fluentd을 사용할 예정이다. 수집된 데이터는 필터링 및 재포맷되어 GCP의 Pub/Sub에 저장되며, DataFlow 서비스를 통해 자연어 분석 후 BigQuery 서비스을 이용해 데이터를 분석하여 다양한 챠트로 구체화 된다. 

'빅데이터 로그 수집기, Fluentd 소개(https://mansoo-sw.blogspot.kr/2016/10/fluentd.html)' 글에서 fluentd는 input 단계에서 다양한 데이터 소스를 받아 들일 수 있기 때문에 'Twitter' 외에도 다른 SNS의 정보들도 수집할 수 있다. 그리고 output 단계에서 수집된 데이터를 GCP Pub/Sub로 보내기 위해서 'fluentd pub/sub plugin'을 설치해야 한다. 설치방법은 '빅데이터 로그 수집기, Fluentd 소개' 글을 참고한다. 
1. Twitter Feed 수집 서버 fluentd에서 수집된 데이터를 GCP에서 분석하기 위해서는 아래 그림과 같이 Output 쪽에 Google Pub/Sub plugin을 설치가 필요하다.


fluentd 설치가 되었다면 간단하게 'td-agent-gem' 툴을 사용하여 plugin을 설치할 수 있다.
$ …

빅데이터 로그 수집기, Fluentd 소개

이미지
Introducing BigData Log Aggregator, Fluentd 빅데이터를 처리하기 위해서는 각종 로그들의 수집이 필요한데, 이 때 사용하는 것이 로그 수집기(Log Aggregator)이다.  로그 수집 툴은 Scribe, Flume, Fluentd 및 logstash 등이 있는데, 이들 수집기 비교는 다음 글을 참고한다. Log Aggregator 비교: Log Aggregator 비교 - Scribe, Flume, Fluentd, logstash
1. Fluentd 소개 fluentd는 효율적으로 데이터를 사용하고 이해하기 위한 데이터의 수집과 소비를 통합할 수 있는 오픈 소스 데이터 수집기이다. 홈페지이지: http://www.fluentd.org/설치가이드: http://docs.fluentd.org/categories/installation 다음 그림은 fluentd의 아키텍쳐 그림이다. 입력과 출력을 다양화 할 수 있으며, 입/출력 부분을 사용자가 직접 코드로 작성하여 연결할 수 있는 확장성을 제공한다.



다음 그림은 다양한 형태의 입력을 받을 수 있고, 출력을 형식화 할 수 있는 fluentd의 구조를 보여준다.

Input 단계는 로그를 수집하는 모듈로 사용자화 할 수 있는 플러그인 형태이다. 따라서 다양한 로그 소스를 지원할 수 있다. File, HTTP, TCP 등 기본 플러그인을 비롯하여 확장 플러그인들을 다운로드 받거나 직접 설치할 수 있다.

Buffer는 시스템 또는 네트워크 이상 또는 부하에 따른 재처리를 위해 파일 또는 메모리를 사용하여 데이터를 유지할 수 있고, Output 역시 Input 과 동일하게 사용자화할 수 있는 플러그인 형태로 다양한 포맷으로 데이터를 변경할 수 있다.

Input 단계에서 획득한 모든 정보들이 Output 단계로 보내지는 것은 아니며, Engine에서 필터링하여 항목을 삭제하거나 추가할 수 있다. 그리고 Input 단계 또는 Output 단계는 또 다른 fluentd와 연결이 가능 가능한다.




[DRONE] Gazebo 시물레이터와 ROS 인터페이스 연결하기

드론 비행을 위해서는 여러가지 방법들이 있다. 드론의 비행 제어 알고리즘, 센서 제어 등 모든 것을 직접 프로그래밍 하는 방법이 있고, 비행은 비행 제어 알고리즘이 내장된 HW을 이용하고, 센서 또는 비전 처리를 통해 더 효율적인 비행을 할 수 있는 방법도 있다.

다양한 하드웨어 및 소프트웨어 드론 프로젝트 중에 리눅스 재단이 공식 지원하는 Dronecode 프로젝트가 있는데, 다양한 기업들이 이 프로젝트에 참여하고 있다. Dronecode 프로젝트 기반으로 만든 레퍼런스 보드들 중 유명한 것이 Pixhawk이다. 그리고 드론의 펌웨어와 미들웨어를 개발하는 프로젝트가 PX4 프로젝트이다.

PX4는 MAVLink 프로토콜을 사용하여 제어할 수 있는데, 만일 ROS을 사용하여 PX4을 제어한다면 MAVROS을 사용하면 된다. 하지만 드론을 직접 만들어 비행 시험을 하기에는 장소와 안전 문제가 중요한 문제로 대두된다. 따라서 충분한 시물레이션 시험이 필요한데, 이 때 사용할 수 있는 3D 시물레이터 중 하나가 Gazebo이다. Gazebo를 사용하는 이유는 ROS와 연동이 보다 쉽다. 따라서 ROS와 MAVROS을 사용하여 PX4 미들웨어을 사용한다면 Gazebo을 사용하여 시물레이션이 가능하다.

PX4을 이용한 드론의 개발 가이드는 다음 주소를 참고한다.
PX4 Development GuideSubak.io (한글 사이트)
1. Gazebo7 설치 및 실행 Gazebo7은 PX4 Development Guide을 참고하여(Gazebo Simulation) 설치한다. 하지만 ROS와 연동된 드론을 시물레이터와 연동하기 위해서는 PX4 Firmware을 GitHub에서 Clone 또는 다운로드 받아 설치 후 Firmware을 실행하여 Gazebo 시물레이터와 연동을 시켜야 한다. 
실행 방법은 다음과 같다. (Running the Simulation) $ cd ~/src/Firmware $ make posix_sitl_default gazebo
만일 Optical Fl…

Google Codelabs에서 GCP(Google Cloud Platform)을 공부해보자

Google Cloud Platform(GCP)은 구글에서 만든 Open Cloud 제품으로 기본적으로 IaaS, PaaS 등을 쉽게 구성, 관리 및 서비스 할 수 있다. 구글링을 통해 GCP 관련된 자료들을 찾아볼 수 있지만, Google Codelabs의 GCP 섹션에서 기본적인 설명, 튜터리얼 및 프로그래밍 등의 다양한 예제들을 쉽게 직접 다뤄볼 수 있다.

예를 들어 GCP을 이용한 네트워크 설정과 HTTP 부하 분산(Load Balancers)을 시스템 구성과 더불어 시험해 볼 수 있다. 그 외에도 BigQuery를 이용한 Wikipedia 검색, Node.js와 Angular2 Web App 생성 등 다양한 경험들을 할 수 있다.

OpenCV 에서 OpenCL 사용하기

이미지
OpenCL(Open Computing Language)은 개방형 범용 병렬 컴퓨팅 프레임워크이다. CPU, GPU, DSP 등의 프로세서로 이루어진 이종 플랫폼에서 실행되는 프로그램을 작성할 수 있게 해 준다. OpenCL에서는 작업을 병렬로 처리하거나 또는 데이터를 병렬로 처리할 수 있다. 자세한 내용은 Wikipedia을 참고한다. (OpenCL)



OpenCV에서도 OpenCL을 사용할 수 있는데, 가능한 OpenCV 3.1 이상 버전에서 사용이 필요하다.
OpenCV에서 OpenCL 사용에 대한 간단한 소개는 아래 송승화씨의 슬라이드를 참고한다.

OpenCV 에서 OpenCL 살짝 써보기 from Seunghwa Song

OpenCV 에서 OpenCL 사용하기

이미지
OpenCL(Open Computing Language)은 개방형 범용 병렬 컴퓨팅 프레임워크이다. CPU, GPU, DSP 등의 프로세서로 이루어진 이종 플랫폼에서 실행되는 프로그램을 작성할 수 있게 해 준다. OpenCL에서는 작업을 병렬로 처리하거나 또는 데이터를 병렬로 처리할 수 있다. 자세한 내용은 Wikipedia을 참고한다. (OpenCL)



OpenCV에서도 OpenCL을 사용할 수 있는데, 가능한 OpenCV 3.1 이상 버전에서 사용이 필요하다.
OpenCV에서 OpenCL 사용에 대한 간단한 소개는 아래 송승화씨의 슬라이드를 참고한다.

OpenCV 에서 OpenCL 살짝 써보기 from Seunghwa Song

macOS Sierra에 Intel Thread Building Blocks (TBB) 설치하기

macOS Sierra에 Intel Thread Building Blocks (TBB) 설치하기 TBB는 멀티코어 성능의 모든 장점을 가지는 C++ 병렬 프로그램을 쉽게 작성할 수 있게 한다. OpenCV의 많은 라이브러리에서 사용할 수 있다.
$brew install tbb
만약 brew 툴이 설치되지 않았다면, Homebrew 설치 방법은 다음과 같다. 자세한 내용은 Homebrew 홈페이지를 참고한다. $/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

macOS에서 Ruby 최신 버전으로 업그레이드 하기

macOS Sierra에서 Ruby 최신 버전으로 업그레이드 하기 macOS에서 ruby를 사용하여 특정 모듈을 설치할 때 버전이 낮아 설치가 안될 경우가 있다. 아래 shell을 이용하면 Ruby를 최신 버전으로 업그레이드 할 수 있다. 이 포스팅이 작성될 때 Ruby의 최신 버전은 2.3.0 이다.
$curl -sSL https://get.rvm.io | bash -s stable --ruby $rvm install 2.3 $rvm use 2.3--default

Swift로 OpenCV 3.1 사용하여 iOS 앱 만들기

이미지
Swift로 OpenCV 3.1 사용하여 iOS 앱 만들기 iOS 9.0 이상에서 Swift로 OpenCV 3.1 버전을 사용하여 앱을 만들 수 있는 간단한 예제이다. http://opencv.org/ 에서 iOS로 빌드된 OpenCV 3.1 Framework을 다운로드 받아 사용하면 애물레이터에서는 문제가 없지만, 단말 환경에 맞춰 빌드를 하면 png 모듈에서 링크 오류가 발생한다. 따라서 이 문제를 해결한 OpenCV 3.1 패치버전의 iOS Framework을 빌드하거나 다운로드 받아 사용해야 한다. OpenCV 빌드 및 설치 관련 내용은 macOS Xcode에서 OpenCV 사용하기 포스팅을 참고하면 된다.

이 포스팅은  https://www.youtube.com/watch?v=ywUBHqxwM5Q을 참고하여 작성했다.
1. 개발 환경 이 포스팅에서 소개할 Xcode 프로젝트 개발환경은 다음과 같다.  Macbook Pro, macOS SierraXcode v8.0iOS 10.0.1iPhone 6 Plus OpenCV 3.1 수정 버전수정된 OpenCV 3.1 Framework 다운로드: opencv2.framework_v3.1_fix_link_error.zip 2. OpenCV 프로젝트 생성 2.1 HelloOpenCV 프로젝트 생성 Xcode을 실행 후에 아래 화면과 같이 'Create a new Xcode project'을 선택한다.
iOS을 선택하고, Single View Application을 선택 후에 'Next' 버튼을 선택한다.
프로젝트 이름을 'HelloOpenCV' 로 입력하고, Language는 'Swift'을 선택 후 Devices 항목은 가지고 있는 단말에 맞춰 선택하면 된다. 예제에서는 iPhone을 선택했다.
그 이후에 프로젝트가 생성될 위치를 선택하면 간단하게 Xcode 프로젝트는 생성된다.

2.2 iOS용 OpevCV Framework 연결 프로젝트가 생성되면 아래…