YOLOv3 또는 GAN을 이용하여 이미지 또는 영상에서 실시간으로 객체를 탐지하는 기술들을 소개한다.
(I introduce techniques to detect objects in real time in images or images using YOLOv3 or GAN.)
Google Cloud Platform을 이용한 iPhone 7의 이슈(반응) 분석
공유 링크 만들기
Facebook
X
Pinterest
이메일
기타 앱
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을 설치할 수 있다.
$ sudo td-agent-gem install fluent-plugin-gcloud-pubsub
Successfully installed fluent-plugin-gcloud-pubsub-0.0.5
Parsing documentation for fluent-plugin-gcloud-pubsub-0.0.5
Done installing documentation for fluent-plugin-gcloud-pubsub after 1 seconds
1 gem installed
데이터를 수집하기 위해서는 td-agent.conf 파일을 수정해야 한다. td-agent.conf 파일은 다음 경로에 있다.
/etc/td-agent/td-agent.conf
2. Twitter App 생성
Twitter에서 데이터를 가져오기 위해서는 계정에 접근할 수 있는 권한 정보들이 필요한데, Twitter 계정에서 App을 생성하면 된다. App 생성은 Application Management 홈페이지에서 생성할 수 있으며, App을 생성하면 Consumer Key(API Key), Consumer Secret(API Secret), Access Token, Access Token Secret 등의 정보를 얻을 수 있다.
3. Google API 관리자 - Google Cloud Access Token 생성
Google Cloud Access Token 생성은 API 관리자를 통해 생성할 수 있다.
어느날 갑작스럽게 Mac이 부팅 되지 않을 때, 그 안에 담겨진 소중한 자료들을 복구 할 수 있는 방법을 소개 합니다. 최악의 상황인 HW 문제가 있다면 소중한 자료들의 확보는 분명 어렵겠지만, OS적인 문제로 부팅이 되지 않을 경우는 다음과 같은 시도를 통해 확보가 가능할 수 있다. Mac 제품 특히 저장 장치가 SSD인 Mac은 저장장치가 메인 보드에 장착되기 때문에 일반 노트북처럼 2.5인치 내장 저장장치를 꺼내 다른 컴퓨터에 연결할 수 없다. 이런 경우 수리 센터에 맡길 수 있겠지만, 데이터 복구는 개인 정보 때문에 지원받지 못할 수 있다. 그렇다면 어떻게 하면 될까? 바로 '외장 저장장치'에 최신 macOS를 설치 후(시동 디스크 생성과 동일), 이 외장 저장장치로부터 macOS을 부팅하여 Mac 내부에 있는 저장장치에 접근이 가능할 수 있고, 데이터도 복구를 할 수 있다. 1. MacBook 또는 iMac 하드웨어 설정 초기화(NVRAM 초기화) 사용하다가 갑자기 어느날 macOS가 부팅이 안되면 우선 머리가 하얗게 되어 아무런 생각이 없을 것이다. 부팅을 여러번 시도할 것이고, 그래도 안된다면 수리 센터를 생각해 볼 것이다. 비용도 비용이지만 소중한 내 자료를 백업 가능할지 모르겠다. 일반 사용자가 하드웨어 설정(보통 이런 설정은 NVRAM에 저장됨)을 바꾸지는 않을 것이다. 하지만 설치한 하드웨어 또는 소프트웨어들에 의해 값들이 변경될 수 있다. NVRAM에 저장되는 정보의 예를 들면 무선랜에 연결되면 다음에 다시 연결될 수 있도록 연결된 무선랜의 이름과 암호를 저장한다. 이러한 하드웨어 설정들이 동작에 일부 영향을 줄 수 있다. 이 NVRAM을 초기화를 위해서는 전원 버튼을 누른 후 바로 'option' + 'command' + 'P' + 'R' 네 키를 동시에 누르면서 약 20초 동안 유지하면 된다. 애플 로고가 두 세번 보일 수도 ...
C++ 프로그래밍할 때 std::vector 등 STL 데이터 타입을 호출하는 함수로 넘겨주거나 받아야 할 경우가 있다. 이런 경우 메모리 문제 또는 속도 문제 때문에 고민을 많이 할 것 같은데, C++11 이상을 지원하는 컴파일러를 사용하는 분이라면 이 글에서 도움을 받아 가기 바란다. 함수 인자로 넘길 때 이 경우는 사용이 명확하다. Call by Reference으로 데이터를 넘기면 된다. Call By Reference로 인자로 넘기는 방법은 pointer 를 사용해도 되지만, reference을 사용하는 것이 좋다. void foo1(std::vector & data) { ... } void foo2(std::vector const& data) { ... } void foo3(std::vector data) { } int main(int argc, char* argv[]) { std::vector my_data {10, 20, 30}; foo1(my_data); foo2(my_data); } 위 코드에서 foo1()과 foo2()는 Call by Reference로 값을 넘기는 반면에 foo3()는 Call by Value로 main()에서 my_data를 넘기게 된다. foo1()의 data는 main()의 my_data를 참조(reference)하고 있어서 foo1()에서의 데이터 변경은 main()의 my_data에 영향을 주게 된다. 그리고 foo2()는 main()의 my_data를 참조는 하지만 수정을 할 수가 없는 것이라서 단순히 값만 참조할 수 있게 된다. 반면 foo3()에서의 data는 main()의 my_data를 넘기는 순간에 값을 복사하기 때문에 메모리가 증가하게 된다. 또한 foo3()에서 data를 ...
GIT 저장소를 다른 저장소에 병합하는 방법 Git? Git은 컴퓨터 파일의 변경 내용을 추적하고 여러 사람들일 공유하는 파일에 대해 협업할 수 있도록 파일의 변경을 제어하는 버전 제어 시스템이다. 기존에 CVS, SVN 등 다양한 버전 제어 시스템들이 나왔지만, 최근에는 Git으로 통일되는 것 같다. Git은 분산 리비전(개정) 관리 시스템으로서 속도, 데이터 무결성 및 분산 된 비선형 작업 진행을 지원하는 것이 목표이다. Git은 Linux 커널 개발을 위해 2005년 리누스 토발즈(Linus Torvalds)가 개발 되었으며, 다른 커널 개발자들도 초기 개발에 기여했다. 대부분의 다른 분산 버전 제어 시스템과 마찬가지로 Client-Server 버전 제어 시스템과는 다르게 중앙 서버와 관계없이 모든 컴퓨터의 Git 디렉토리는 파일 변경 이력(버전)을 추적할 수 있는 분산형 저장소이다. Client-Server 버전 제어 시스템으로 많이 사용했던 SVN(Subversion)은 네트워크 연결이 안될 경우 독립적인 위치에서 동시에 개발이 진행될 때 코드 병합과 이력 관리에 많은 어려움이 있었다. Git은 이런 기본적인 문제점들을 해결하면서 보다 진보적인 방법들을 제공한다. 인터넷 검색을 통해 보다 세부적인 내용과 더불어 다양한 기능들에 대해 찾아 보기 바란다. 서로 다른 저장소를 한 곳에 병합하는 방법 프로젝트 특성에 따라 한 개 이상의 저장소들에서 개발이 진행되다가 저장소의 병합이 필요할 때가 있다. 특정 디렉토리를 생성하여 복사해서 추가하면 되겠지만, 이련 경우에는 기존 저장소의 수정 이력(버전) 정보는 포기해야 한다. 쉽게 기존 저장소의 수정 이력 정보를 포함하여 저장소를 병합하는 방법이 있다. 우선 다음과 같이 세 개의 저장소가 있다고 가정한다. git/project1 git/project2 git/project3 project2와...
댓글
댓글 쓰기