프로그래밍 Programming
루비 온 레일즈 시작하기 (1) - 레일즈 프로젝트 생성, 데이터베이스 설정, Hello Rails!, 리소스 만들기
2017. 7. 18.레일즈 프로젝트 만들기blog 어플리케이션을 만듭니다. 다음과 같이 blog 라고 하는 레일즈 어플리케이션을 blog 디렉토리에 만듭니다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114root@localhost:~# rails new blog create create README.md create Rakefile create config..
우분투 14.04 에 루비 온 레일스 설치하기 How To Install Ruby on Rails with rbenv on Ubuntu 14.04
2017. 7. 17.How To Install Ruby on Rails with rbenv on Ubuntu 14.04 Install rbenv 루비 설치와 관리를 도와줄 rbenv 를 설치한다. 먼저 apt-get 을 업데이트한다. 1root@localhost:~# sudo apt-get updatecs apt-get 을 이용하여 rbenv 와 Ruby dependencies 를 설치한다. 1234567891011121314151617181920212223242526272829303132333435root@localhost:~# sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlit..
아나콘다 가상환경 활성화 에러 -bash: activate: 그런 파일이나 디렉터리가 없습니다
2017. 7. 17.Anaconda 가상환경에서 다음과 같이 활성화가 되지않는 경우에는 전체 경로로 시도했을 경우 작동하는지부터 살펴본다.아래와 같이 가상환경 로딩이 되지 않는다. 12root@localhost:~# source activate envhaskel-bash: activate: 그런 파일이나 디렉터리가 없습니다cs해당 가상환경 존재 여부를 체크해볼려고 해도 되지 않는다. 12root@localhost:~# conda info --envsconda: 명령을 찾을 수 없습니다 cs반면 전체 경로로 시도해보면 정상적으로 작동된다. 12345root@localhost:~# /root/anaconda/bin/conda info --envs# conda environments:#envpython /root/anaconda..
rbenv 를 이용한 Ruby 설치시 curl: (77) error setting certificate verify locations: 발생하는 경우
2017. 7. 15.rbenv 를 이용하여 Ruby 설치시 아래와 같은 에러가 발생하며 설치가 실패하는 경우의 처리법curl: (77) error setting certificate verify locations: 에러 메시지는 다음과 같다. 12345678910root@localhost:~# rbenv install -v 2.4.1/tmp/ruby-build.20170715173239.7567 ~Downloading ruby-2.4.1.tar.bz2...-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.bz2curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundl..
루비 온 레일즈 시작하기 Getting Started with Rails
2017. 7. 12.1. RequirementsRails 어플리케이션에 대한 기초가 없는 초보자를 위한 가이드입니다. 필수 설치프로그램은 다음과 같습니다. Ruby 2.2.2 이상RubyGems SQLite3 Database 상기 언급된 프로그램을 다음과 같이 설치합니다. 1) Ruby 2.2.3 설치 1234567891011121314151617(envruby) root@localhost:~# conda install -c bioconda ruby=2.2.3Fetching package metadata ...........Solving package specifications: . Package plan for installation in environment /root/anaconda/envs/envruby: The f..
django-leaflet & django-geojson을 활용한 웹매핑 Easy Webmapping with django-leaflet & django-geojson
2017. 6. 7.django-leaflet & django-geojson을 활용한 웹매핑 Easy Webmapping with django-leaflet & django-geojson 1. django-leaflet 설치 django-leaflet을 통해 장고 프로젝트에서 Leaflet 사용이 가능하다. 지리적 정보에 대한 수정폼 및 맵을 표시하는 템플릿태그 등을 포함한다. Documentaion https://django-leaflet.readthedocs.io/en/latest/installation.html1) Installation 1234567891011(envalicia) root@localhost:~/vikander# pip install django-leafletCollecting django-leafle..
Django, Ngrok를 활용한 페이스북 메신저 봇 만들기 How to build a Facebook Messenger bot using Django, Ngrok
2017. 6. 3.Django, Ngrok를 활용한 페이스북 메신저 봇 만들기How to build a Facebook Messenger bot using Django, Ngrok 1. Facebook App 생성먼저 페이스북앱을 생성한다. https://developers.facebook.com/ > My Apps > Add a New App > Product Setup > Messenger > Get Started다음으로 페이스북 페이지를 생성하고, Page Access Token 을 아래와 같이 생성한다. 토큰 생성이 필요한 페이지를 선택하면 다음과 같이 Page Access Token 이 생성된다. 2. Django 서버 설치이 튜토리얼의 목적은 백엔드 서버로서의 장고의 역할에 대한 것이다.페이스북 메신저 봇 앱을..
장고 소셜 로그인 구현하기 Python Social Auth in Django - Twitter, Facebook,Google+, GitHub
2017. 5. 29.Python Social Auth - Djangohttps://github.com/python-social-auth/social-app-django Project documentation http://python-social-auth.readthedocs.io/en/latest/ 1. Installation12345678910# pip install social-auth-app-djangoRequirement already satisfied: social-auth-app-django in /root/anaconda/envs/envalicia/lib/python3.5/site-packagesRequirement already satisfied: social-auth-core>=1.2.0 in /root/a..
Django Debug Toolbar 설치 + uWSGI 패널 추가하기
2017. 5. 20.Django Debug Toolbar 설치 + uWSGI 패널 추가하기 1. Getting Code pip 를 통해 Django Debug Toolbar 를 설치한다. 1# pip install django-debug-toolbarcs 2. Prerequisites INSTALLED_APPS 에 'django.contrib.staticfile' 가 포함되어 있는지 확인한다. settings.py123456# Application definitionINSTALLED_APPS = [ # ... 'django.contrib.staticfiles', # ...]Colored by Color Scriptercs 3. URLConf Debug Toolbar’s URLs을 프로젝트 URLs에 포함시킨다. urls.p..
pip install -U setuptools fails in fresh conda environment - Cannot remove entries from nonexistent file
2017. 5. 20.pip install -U setuptools fails in fresh conda environment setuptools 를 업그레이드하는 경우 Cannot remove entries from nonexistent file 에러가 발생하는 경우에는 다음과 같이 처리한다. 1234567891011# pip install -U pip setuptoolsRequirement already up-to-date: pip in /root/anaconda/envs/envalicia/lib/python3.5/site-packagesCollecting setuptools Using cached setuptools-35.0.2-py2.py3-none-any.whlRequirement already up-to-date:..
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
2017. 5. 10.아파치 서비스 시작시 다음과 같은 에러가 발생하는 경우 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:8012345678(envalicia) root@localhost:~/vikander# sudo service apache2 restart * Restarting web server apache2 (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80no listening socket..
장고 임포트(import) 순서 및 명시적 성격의 상대 임포트
2017. 5. 9.장고 임포트(import) 순서 및 명시적 성격의 상대 임포트 1. PEP 8 에서 제안하는 임포트(import) 순서 pep 8은 임포트할 때 ㄷ음과 같은 순서로 그룹지을 것을 제안하고 있다.1) 표준 라이브러리 임포트2) 연관 외부 라이브러리 임포트3) 로컬 애플리케이션 또는 라이브러리에 한정된 임포트 다음과 같이 임포트 문을 구성할 수 있다. 1234567891011121314# 표준 라이브러리 임포트from __future__ import absolute_importfrom math import sqrtfrom os.path import abspath # 코어 장고 임포트from django.db import modelsfrom django.utils.translation import ugette..
리스프 리스트 데이터 타입 Common Lisp: LIST - the most versatile data type (3)
2017. 4. 24.Common Lisp: LIST - the most versatile data type (3) Designed by Freepik 1. 리스트 리스트 함수는 새로운 NIL로 끝나는 cons cell 체인을 만든다. CONS는새로운 단일의 cons cell 을 만든다는 것에 비추어보면, 두 번째 입력이 위치한 리스트에 첫 번째 입력을 더하는 것이다. 리스트 함수는 완전히 새로운 cons cell 체인을 만드는 것이다. 괄호 표기법으로 보자면, 그 결과 리스트 함수는 입력이 갖고 있는 것보다는 한 단계 더 많은 괄호를 가지게 된다. 1) 리스트는 새로운 3개의 cons cells을 할당한다. FOO BAR BAZ 2) CAR 포인터를 채운다. ● ● ● ↓ ↓ ↓ FOO BAR BAZ 3) CDR 포인터를 ..
LISP - CAR/CDR Pronunciation Guide
2017. 4. 24.Common Lisp: LIST - CAR/CDR Pronunciation Guide Designed by Freepik LISP - CAR/CDR Pronunciation Guide Function Pronunciation Alternate Name CAR kar FIRST CDR cou-der REST CAAR ka-ar CADR kae-der SECOND CDAR cou-dar CDDR cou-dih-der CAAAR ka-a-ar CAADR ka-ae-der CADAR ka-dar CADDR ka-dih-der THIRD CDAAR cou-da-ar CDADR cou-dae-der CDDAR cou-dih-dar CDDDR cou-did-dih-der CADDDR ka-dih-dih-der FOU..
리스프 리스트 데이터 타입 Common Lisp: LIST - the most versatile data type (2)
2017. 4. 24.Common Lisp: LIST - the most versatile data type (2) Designed by Freepik 1. CAR 과 CDRcons cell의 두 부분은 모호한 이름을 가지고 있는데, 좌측 절반은 CAR, 그리고 우측 절반은 CDR (‘‘cou-der,’’라고 발음한다) 라고 불린다. CAR 라는 명칭은 Contents of Address portion of Register를 의미하고, CDR은 Contents of Decrement portion of Register를 의미한다. 이런 용어가 현대 컴퓨터 하드웨어에는 적합하지는 않지만 Common Lisp 에서는 여전히 cons cells 을 언급할 때 CAR와 CDR이라는 축약어를 사용한다. 역사적인 이유도 있지만, 일부는..
리스프 리스트 데이터 타입 Common Lisp: LIST - the most versatile data type (1)
2017. 4. 22.Common Lisp: LIST - the most versatile data type (1) Designed by Freepik Lisp’라는 언어의 이름이 List Processor 에서 온 것처럼 리스트는 중심적인 데이터 타입으로, 다용도의 데이터 타입이다. 앞으로 몇 차례에 걸쳐 리스프의 리스트 데이터 타입에 대해 알아본다. 1. 리스트의 표현방식리스트는 출력형과 내부형 2가지 형태로 표현될 수 있다. 출력형에서 리스트는 괄호 안에 포함된 아이템의 묶음을 의미한다. 그리고 그 아이템은 리스트의 원소라고 부른다. 몇 가지 예를 살펴보면 다음과 같다. (RED GREEN BLUE) (AARDVARK) (2 3 5 7 11 13 17) (3 FRENCH HENS 2 TURTLE DOVES 1 PARTR..
OSError : setuptools pip wheel failed with error code 1
2017. 4. 14.Anaconda 환경에서 virtualenv 를 통해 가상환경 셋팅시 다음과 같은 오류가 발생하는 경우가 있다. OSError : setuptools pip wheel failed with error code 1 123456789101112131415161718192021222324252627# virtualenv envpokemongoNew python executable in /root/envpokemongo/bin/pythonInstalling setuptools, pip, wheel... Complete output from command /root/envpokemongo/bin/python - setuptools pip wheel: Traceback (most recent call last): ..
conda vs. pip vs. virtualenv
2017. 4. 13.conda vs. pip vs. virtualenv If you’ve used pip and virtualenv in the past, you can use conda to perform all of the same operations. Pip is a package manager, and Virtualenv is an environment manager. Conda is both. TaskConda package and environment manager commandPip package manager commandVirtualenv environment manager commandInstall a packageconda install $PACKAGE_NAMEpip install $PACKAGE_NAM..
장고 사이트에 reCAPTCHA 넣기 Add reCAPTCHA to Django site
2017. 4. 10.장고 사이트에 reCAPTCHA 넣기Add reCAPTCHA to Django site 각종 봇과 스팸으로부터 사이트를 보호하기 위해 구글의 reCATCHA 를 많이 사용하는데요. 본 포스팅에서는 장고로 만들어진 사이트에 이를 손쉽게 적용해보는 방법을 살펴겠습니다. 1. Requirements1) reCAPTCHA > Get reCAPTCHA 클릭하여 다음과 같이 키를 획득한다. 사이트 등록이 끝나면 2개의 키를 받게 되는데 Site key와 Secret key가 바로 그것이다. 여기서 Site key(사이트와 사용자간)는 원하는 페이지에 렌더링하기 위해 사용되고, Secret key(사이트와 구글간 통신)는 settings.py 모듈에 등록하여 구글과 사이트 간의 통신을 위해 사용된다. 2) setti..
Django와 Handsontable.js를 이용한 엑셀풍의 입력화면 만들기
2017. 3. 30.Django와 Handsontable.js를 이용한 엑셀풍의 입력화면 만들기 Django로 엑셀 풍의 입력 화면을 만들어보자. 이를 위해서 handsontable 을 이용한다. Handsontable은 엑셀의 외관을 가진 JavaScript/HTML5 스프레드시트 컴포넌트이다. 본 포스팅은 Hatena 블로거 thinkAmi님의 Django + Handsontable.jsを使って、Excel風な入力画面を作ってみた (http://thinkami.hatenablog.com/entry/2016/12/11/000415)을 참고로 작성되었다. https://github.com/handsontable/handsontable 1. 환경 본 포스팅의 환경은 다음과 같다. Ubuntu 14.04 + Python 3.5.2..
Handsontable 기본 사용법
2017. 3. 25.Handsontable 기본 사용법 https://github.com/handsontable/handsontable 1. Handsontable 이란 Handsontable은 웹브라우저상에서 엑셀과 같은 그리드를 구현해주는 자바스크립트 라이브러리이다. jQuery 등의 기타 라이브러리와 의존성을 가지지 않는다. 2. Handsontable Installation 다음과 같이 Handsontable 을 설치한다.1234567891011121314151617181920212223242526# npm install handsontable --savenpm http GET https://registry.npmjs.org/handsontablenpm http 200 https://registry.npmjs.org..
Django Channels로 채팅룸 만들기
2017. 2. 21.Django Channels로 채팅룸 만들기 먼저 아래 그림을 보자. 아래는 전형적인 requests와 responses의 도해이다. 브라우저는 request를 생성하고, Django는 브라우저로 돌려보낼 response를 담고 있는 view를 호출한다. 반면 Django Channels은 request/response cycle을 채널을 관통하는 메시지(message)라는 컨셉으로 대체한다. 채널은 Django로 하여금 전형적인 HTTP views 와 유사한 방식으로 웹소켓을 지원한다. HTTP request는 여전히 같은 방식으로 작동하지만 채널을 경유하게 된다. 결론적으로 Channels하에서 Django는 아래와 같은 구조를 띠게 된다. 1. Install Channels & Configure I..
PIP로 특정 버전 패키지 설치하는 법 To install a specific version of a package with pip
2017. 2. 20.최신 버전의 패키지가 아니라 특정 버전의 패키지까지만 지원하는 경우 등 이미 설치된 최신 버전을 제거하고 지원가능한 특정 버전 설치는 다음과 같이 한다. Use ==: 123456789101112# pip install twisted==16.2.0Collecting twisted==16.2.0 Downloading Twisted-16.2.0.tar.bz2 (2.9MB) 100% |████████████████████████████████| 2.9MB 100kB/sRequirement already satisfied: zope.interface>=4.0.2 in /root/anaconda/envs/envalicia/lib/python3.5/site-packages (from twisted==16.2.0)R..
pyhaikunator (Heroku like random name generator) 설치하기
2017. 2. 13.pyhaikunator (Heroku like random name generator) 설치하기 pyhaikunator 는 Heroku 타입의 랜덤 이름 생성기이다. 최신 버전은 0.0.4 이며, 설치 및 기본 사용법은 다음과 같다. pyhaikunator 설치 documentation https://pypi.python.org/pypi/pyhaikunator/0.0.1 12345# pip install pyhaikunatorCollecting pyhaikunator Downloading pyhaikunator-0.0.4-py2.py3-none-any.whlInstalling collected packages: pyhaikunatorSuccessfully installed pyhaikunator-0.0...
django 자동완성 구현하기 django-autocomplete-light
2016. 12. 26.django 자동완성 구현하기 django-autocomplete-light django-autocomplete-light 설치 documentation http://django-autocomplete-light.readthedocs.io/en/master/ 타이틀이나 태그 등 입력시 텍스트를 자동 완성해주는 django 패키지 django-autocomplete-light 3.2.1 를 설치해보자.DAL(django-autocomplete-light)는 Python 2.7, 3.4, Django 1.8+ 이상에서 작동하며, 태그입력시 적용할려면 django-taggit 이 먼저 설치되어 있어야 한다. 다음과 같이 설치한다.12345678910# pip install django-autocomplete-..
장고 내장 필터(소수점 표시) Built-in filter reference
2016. 12. 17.실수 표시 필터 인수없이 사용하는 경우 반올림하여 소수점 한자리까지 표시된다. 단, 소수파트가 0 인 경우 정수파트만 표시된다. 1234value Template Output34.23234 {{ value|floatformat }} 34.234.00000 {{ value|floatformat }} 3434.26000 {{ value|floatformat }} 34.3cs 정수가 인수로 사용된 경우 해당 소수점 자리수만큼 표시된다. 1234value Template Output34.23234 {{ value|floatformat:3 }} 34.23234.00000 {{ value|floatformat:3 }} 34.00034.26000 {{ value|floatformat:3 }} 34.260cs 특히 0..
Haystack 설치 및 실행하기 Getting Started with Haystack
2016. 12. 15.Haystack 설치 및 실행하기 Getting Started with Haystack 실습용으로 아래와 같이 간단한 노트 앱에 검색 기능을 붙여보자. myapp/models.py 1234567891011from django.contrib.auth.models import Userfrom django.db import models class Note(models.Model): userid = models.ForeignKey(User, related_name='user_note') pub_date = models.DateTimeField() title = models.CharField(max_length=200) body = models.TextField() def __unicode__(self): ret..
우분투에 엘라스틱서치 설치하기 How To Install and Configure Elasticsearch on Ubuntu 14.04
2016. 12. 6.우분투에 엘라스틱서치 설치하기How To Install and Configure Elasticsearch on Ubuntu 14.04 Prerequisites본 예제를 위해서는 아래의 2가지 사항이 준비되어 있어야 한다. A Ubuntu 14.04 Droplet A non-root sudo user 12root@localhost:~# cut -d: -f1 /etc/passwdroot@localhost:~# adduser elasticcs Installing JAVA 1. Installing OpenJDK 1) update the list of available packages 2) install OpenJDK 3) To verify your JRE is installed 123456root@localho..
비지도 학습 (2) - k평균으로 손글씨 숫자 군집화
2016. 12. 3.비지도 학습 (2) - k평균으로 손글씨 숫자 군집화 k 평균 k평균은 데이터 점을 뚜렷한 그룹인 군집으로 분할하는 분할 알고리즘에 속한다. k평균의 주요개념은 군집 내 평균과 군집내 점들의 제곱 거리를 최소로 만들기 위해 각 점들의 군집을 찾는 것이다. 이 기법은 나누고자 하는 군집의 개수를 미리 알고 있다고 가정한다. 123456789101112131415161718192021>>> %matplotlib inline>>> >>> import numpy as np>>> import matplotlib.pyplot as plt>>> >>> from sklearn.datasets import load_digits>>> from sklearn.preprocessing import scale>>> digits..
비지도 학습 (1) - 주성분 분석(Principal Component Analysis, PCA)
2016. 12. 2.비지도 학습 (1) - 주성분 분석(Principal Component Analysis, PCA) 주성분 분석(Principal Component Analysis, PCA) 주성분 분석은 상관된 변수의 집합을 가능한 한 상관되지 않는 변수의 집합으로 변환하는 직교 선형 변환이다. 주성분 분석은 데이터를 한개의 축으로 사상시켰을 때 그 분산이 가장 커지는 축을 첫 번째 주성분, 두 번째로 커지는 축을 두 번째 주성분으로 놓이도록 새로운 좌표계로 데이터를 선형 변환한다. 이와 같이 표본의 차이를 가장 잘 나타내는 성분들로 분해함으로써 여러가지 응용이 가능하다. 이 변환은 첫째 주성분이 가장 큰 분산을 가지고, 이후의 주성분들은 이전의 주성분들과 직교한다는 제약 아래에 가장 큰 분산을 갖고 있다는 식으로 정의..