2016년 1월 5일 화요일

sublimetext에서 git 연동하기

Sublime text에서 git 을 연동하기 위해서는 아래 사항들이 준비되어 있어야 한다.


  • git repository 준비
  • sublime text 설치
  • sublime text: Package control 설치
  • sublime text: git plug-in 설치


1. git repository 준비

Sublime text와 연동을 하기 위해서, 당연히 git 저장소가 필요하다. 다양한 방법이 있겠지만, 크게 외부 서비스를 활용하는 방법과 자체 저장소를 유지하는 방법이 있다. 외부 서비스를 사용할 때는 github이나 bitbucket, gitlab 등의 서비스가 있고, 자체 git저장소를 구성하기 위한 방법으로는 gitolite를 통해 설치하는 방법이 있다.

  • github이나 bitbucket, gitlab 비교: http://www.slant.co/topics/153/compare/~github_vs_bitbucket_vs_gitlab
  • gitolite 설치: http://gitolite.com/gitolite/index.html

2. sublime text 설치

http://www.sublimetext.com/ 에서 다운로드 받아서 설치를 하도록 한다.
sublime text는 2와 3이 있는데, 성능이나 안정성, 한글 인코딩 문제 등에 차이가 있으니 확인 후 잘 선택해야 한다.

3. sublime text: Package control 설치

sublime text에 plug-in을 설치하는 방법은 여러가지가 있지만 package control을 설치하고 이를 통하는 것이 가장 편하다.
먼저 단축키 ctrl+` 을 입력하거나 메뉴에서 View > Show Console 을 선택해 console창을 띄운다.

다음으로 브라우저 창에 https://packagecontrol.io/installation를 입력해 package control 설치 가이드 사이트로 이동한다.
여기서 sublime text 3 와 sublime text 2 가 설치하는 방법이 갈리는데,
sublime text 3 의 경우, 아래와 같은 명령을 복사해 console 창에 입력하고
import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

아래와 같이 하단 console바에 위 명령을 입력하면 아래와 같다.

엔터를 입력해 명령을 수행하면 package control이 설치된다.



sublime text 2는 아래와 같은 명령을 복사해 console 창에 입력한다.
import urllib2,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler()) ); by = urllib2.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); open( os.path.join( ipp, pf), 'wb' ).write(by) if dh == h else None; print('Error validating download (got %s instead of %s), please try manual install' % (dh, h) if dh != h else 'Please restart Sublime Text to finish installation')

4. sublime text: git plug-in 설치

Package Control을 설치하고 나면 Control-Shift-P(맥에서는 Command-Shoft-P)를 눌러 Command Pallette를 수행한 뒤 install을 입력하면 나오는 하단 메뉴 중 Package Control: Install Package를 클릭하면 아래와 같이 plug-in을 설치할 수 있는 창이 뜬다.

git 를 입력하면 나오는 plug-in들 중에서 Git 을 선택해 plug-in을 설치한다.

Control-Shift-P(맥에서는 Command-Shoft-P)를 눌러 Command Pallette를 수행한 뒤 git 를 입력하면 아래와 같이 git 관련 명령들이 추가된 것을 확인할 수 있다.




2016년 1월 4일 월요일

Portable Format for Analytics (PFA) - 데이터 분석 모델 설명



1. 필요성: 데이터 분석을 위한 다양한 프레임워크와 라이브러리가 존재한다. 데이터의 크기와 특성 그리고 분석 목적에 따라 서로 다른 프레임워크나 라이브러리를 활용이 있을 수 있다. 또한 새로운 라이브러리의 출현으로 데이터 분석 코드의 구현이 달라질 수는 있다.
url: http://dmg.org/pfa/docs/motivation/pfatoeverything.png
하지만 데이터를 분석하는 행위의 본질은 크게 변하지 않는다. 따라서 새로운 시스템이나 프레임워크, 라이브러리의 출현에 따라 변하지 않는 데이터 분석에 대한 기술이 필요하다.

ur: http://dlib.net/ml_guide.svg

2. Portable Format for Analytics(PFA):  앞서 이야기한 분석 프로그램 구현과 독립적인 분석 모델에 대한 하나의 해결책으로 PFA를 활용할 수 있다. PFA는 입력/출력/액션 을 정의한 문서이다. http://dmg.org/pfa

  • 입력(input): 입력 값의 속성 이나 명칭 등을 정의
  • 출력(output): 출력 값의 속성을 정의
  • 액션(action): 출력값을 얻기 위한 입력 값에 적용할 액션(수식이나 분석 모델)을 정의
3. Hadrian : 앞서 소개한 PFA에는 모델을 설명하는 문서에 대한 spec.만 존재하고 이를 실제로 구현해놓고 있지는 않다. 이를 실제로 구현한 라이브러리를 하나 소개한다.