프로그래밍 Programming
NLTK (2) - 텍스트 문장으로 분해하기 Tokenizing text into sentences
2017. 9. 25.NLTK (2) - 텍스트 문장으로 분해하기 Tokenizing text into sentences 설치가 제대로 되었는지 간단한 코드로 확인해보자. para = "Hello World. It's good to see you. Thanks for buying this book." from nltk.tokenize import sent_tokenize sent_tokenize(para)['Hello World.', "It's good to see you.", 'Thanks for buying this book.']sentence tokenization 함수를 호출해서 para를 인수로 사용한다. sent_tokenize 함수는 nltk.tokenize.punkt 모듈의 PunktSentenceTokeniz..
NLTK (1) - NLTK 및 NLTK 데이터 설치
2017. 9. 25.NLTK (1) - NLTK 및 NLTK 데이터 설치 NLTK 설치 http://www.nltk.org/install.htmlNLTK 는 파이썬 2.7, 3.4, 3.5 을 지원한다.Install NLTK : conda install nltkInstall numpy : conda install numpy12345678910111213141516171819202122232425262728293031323334353637383940(envalicia) root@localhost:~/vikander# conda install nltkFetching package metadata .........Solving package specifications: . Package plan for installation i..
주피터 노트북 파이썬3 추가하기 How do I add python3 kernel to jupyter (IPython)
2017. 9. 23.파이썬2 커널이 설치된 주피터 노트북에 파이썬 3 커널을 다음과 같이 추가로 설치할 수 있다. 추가적인 내용은 아래 링크를 참조한다. Kernels for Python 2 and 3How do I add python3 kernel to jupyter (IPython) 파이썬3 커널을 다음과 같이 추가로 설치할 수 있다.python3 -m pip install ipykernel python3 -m ipykernel install --user 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798..
Getting Started with CLISP (13) - 조건문 The Conditionals: if and Beyond
2017. 9. 19.The Conditionals: if and Beyondtrue 나 false 에 따라 서로 다른 값이 반환되도록 할 때 if 를 사용한다.1234[57]> (if (= (+ 1 2) 3) 'yup 'nope)YUP [57]>(if (= (+ 1 2) 4) 'yup 'nope)NOPEColored by Color Scriptercs물론 리스트가 비었는지 체크할 때도 사용할 수 있다.1234[58]> (if '(1) 'the-list-has-stuff-in-it 'the-list-is-empty)THE-LIST-HAS-STUFF-IN-IT[58]> (if '() 'the-list-has-stuff-in-it 'the-list-is-empty)THE-LIST-IS-EMPTYColored by Color Sc..
Getting Started with CLISP (12) - nil 과 ()
2017. 9. 16.The Symmetry of nil and ()리스프의 명령어와 데이터 구조의 동작을 자세히 보면 리스프는 대칭이라는 정신으로 똘똘 뭉쳐있는 것으로 보인다. 이러한 대칭성이야말로 리스프 코드를 우아하게 만들어 주고, 리스프의 간결한 구문 역시 이러한 대칭이 가능하게 하는 중요한 요소 중 하나가 된다. Empty Equals False정보를 저장하고 가공하는데 있어 리스트의 효용을 아주 강조하는 리스프의 철학상 리스트를 나누는데 편리한 디자인을 선호하는 것은 당연한 이치일 것이다. 가장 심오한 결정 중의 하나는 리스트에 관해 비어있는 리스트를 false 로 평가한다는 것이다. 1234[49]> (if '() 'i-am-true 'i-am-false)I-AM-FALSE[49]> (if '(1) 'i-am-t..
Getting Started with CLISP (11) - 중첩리스트 Nested Lists
2017. 9. 16.Nested Lists리스트는 리스트를 포함할 수 있다. 예를 들면 다음과 같다. 이 경우 3개의 아이템을 가진 리스트가 된다. 두 번째 아이템은 (duck bat) 으로 그 자체가 리스트이다. 12[42]> '(cat (duck bat) ant)(CAT (DUCK BAT) ANT)cs중첩리스트도 콘셀을 이용해서 구성된 것이며, 앞서 언급한 리스트 함수들을 이용하여 아래와 같이 원하는 아이템을 추출해낼 수 있다.123456[43]> (car '((peas carrots tomatoes)(pork beef chicken)))(PEAS CARROTS TOMATOES)[43]> (cdr '(peas carrots tomatoes))(CARROTS TOMATOES)[43]> (cdar '((peas carrot..
Getting Started with CLISP (10) - Car, Cdr, List Function
2017. 9. 16.The car and cdr Functions리스트는 2개의 아이템으로 구성된 셀의 긴 체인과도 같다. car 함수는 셀에서 첫 번째 아이템을 꺼낼 때 사용된다. 12[33]> (car '(pork beef chicken))PORKcs이에 반해 cdr 함수는 리스트의 첫 번째 아이템을 제거한다.12[35]> (cdr '(prok beef chicken))(BEEF CHICKEN)cs그리고 car 과 cdr 을 결합하여 cadr, cdar, cadadr 같은 함수를 만들어낼 수도 있다. cadr 의 경우 car 와 cdr 을 동시에 쓰는 것과 같다. cadr 의 경우 리스트의 두 번째 아이템을 뽑아낸다. 다음의 예를 보자. 123456[37]> (cadr '(pork beef chicken))BEEF[37..
Getting Started with CLISP (9) - Cons Function
2017. 9. 16.List Functions리스트를 다루는 것은 리스프 프로그래밍에서 *아주* 중요한 부분이다. 리스프에서 콘셀을 다루는데는 cons, car, cdr 이라는 3가지 기본 함수가 있다. The cons Function타입과는 무관하게 2개의 데이터를 연결할 경우, 주로 쓰는 방법이 cons 함수를 통한 것이다. 예를 들어, chicken 을 cat 에 연결해보자. 12[26]> (cons 'chicken 'cat)(CHICKEN . CAT)cs보는 바와 같이 cons 은 괄호안의 점으로 각각의 아이템을 연결한 하나의 객체를 반환한다. 이것은 일반적인 리스트와는 다르다. 가운데 있는 점을 통해 2개의 아이템을 연결하는 콘셀을 만드는 것이다. 그리고 quoting 을 통해 2개의 아이템을 리스프가 코드가 아닌..
Getting Started with CLISP (8) - 콘셀(Cons Cells)
2017. 9. 16.리스트는 리스트의 핵심 기능이다. 간단한 리스프 코드를 보자. 아래 코드는 심볼 (expt)와 2개의 숫자로 구성되어 있으며 괄호로 표시되는 리스트에 포함되어 있다.12[23]> (expt 2 3)8cs Cons Cells리스프의 리스트는 cons cells(이하 콘셀로 명명) 에 의해 결합된다. 콘셀은 2개의 작은 연결된 박스로 구성되며, 각각은 서로 다른 것을 가리킨다. 서로 다른 2개를 가리킬 수 있기 때문에 콘셀을 연결하셩 리스트에 넣는 것이 가능하다. 사실 리스프는 모든 것이 콘셀로 구성된 추상적인 구조에 불과하다. 예를 들어, '(1 2 3) 이라는 리스트를 만들었다고 하자. 컴퓨터 메모리에는 다음과 같이 표현된다. 3개의 콘셀을 통해 구성되는데, 각각의 셀 중 하나는 숫자를 그리고 나머지 하..
Getting Started with CLISP (7) - 리스프는 코드와 데이터를 어떻게 구분하는가 How Lisp Distinguishes Between Code and Data
2017. 9. 15.리스프에서는 코드와 데이터를 어떻게 구분하는가? 이를 위해 Common Lisp 는 2개의 모드를 사용한다. 하나는 코드 모드이고, 다른 하나는 데이터 모드이다. Code Mode무언가를 Lisp REPL 에 입력할 때마다 컴파일러는 여러분이 실행하고자하는명령을 입력하고 있다고 간주한다. 다른 말로 하면, 리스프는 기본 모드가 코드 모드라는 얘기다. 이미 언급했지만, 리스프는 코드가 리스트 형태로 입력된다고 기대한다. 하지만 입력되는 코드는 리스트의 특별한 타입, 즉 폼의 형태이다. 폼이라는 것은 도입부에 특별한 명령(보통은 명령의 이름)을 가지는 리스트를 말한다. 폼을 읽을 때 리스프는 해당 리스트의 모든 아이템을 파라메터로 함수에게 보낸다. 12[19]> (expt 2 3)8cs위의 예에서 지수를 계..
Getting Started with CLISP (6) - Symbols, Numbers, Strings
2017. 9. 15.Symbols리스프의 심볼은 문자, 숫자, + - / * = ? ! _ 와 같은 특수문자로 구성된다. 예를 들면 다음과 같다. foo, ice9, my-killer-app27, and even ---- 리스프의 심볼은 대소문자를 구별하지 않는다(case-insensitive). 하지만 대부분의 리스퍼들은 대문자를 사용하지 않는다. 이는 다음과 같이 2개의 심볼을 비교해보면 알 수 있는데, 리스프는 아래의 2개의 심볼을 동일한 것으로 취급한다.12[1]> (eq 'fooo 'FoOo)Tcs Numbers리스프는 실수와 정수를 모두 지원한다. 소수점 여부에 따라 정수 또는 실수로 구분된다. 리스프에서 1 과 1.0 은 서로 다른 2개의 개체인 셈이다. 그리고 다음과 같이 1 과 1.0을 더하는 경우,..
Getting Started with CLISP (5) - 로컬 함수 정의하기 Defining Local Functions in Lisp
2017. 9. 8.Defining Local Functions in Lispflet 명령을 이용하여 로컬 함수를 만들 수 있다. 함수 선언은 함수명, 인수, 그리고 함수 본문으로 구성된다. 예를 들면 다음과 같다. 12[1]> (flet ((f (n) (+ n 10))) (f 5))15Colored by Color Scriptercs예제에서는 하나의 인수 n 을 갖는 함수 f 를 정의했다. 함수 f 는 변수 n 에 10을 더한다. 그리고 5를 인수로 해당 함수에 집어넣으면 보는대로 15가 결과값으로 반환된다. let 을 이용하여 flet 의 범위내에 하나 이상의 함수를 정의할 수 있다. 그리고 하나의 flet 을 통해 다수의 로컬 함수를 다음과 같이 선언할 수 있다.123456[4]> (flet ((f (n) (+ n 1..
Getting Started with CLISP (4) - 전역함수 정의학기 (2)
2017. 9. 8.Defining the smaller and bigger Functionssmaller 함수와 bigger 함수를 작성해보자. 이 함수들은 guess-my-number 함수와 마찬가지로, defun 으로 정의되는 전역 함수이다. 12345678[7]> (defun smaller() (setf *big* (1- (guess-my-number))) (guess-my-number))SMALLER[8]> (defun bigger() (setf *small* (1+ (guess-my-number))) (guess-my-number))BIGGERColored by Color Scriptercs 라인1에서 smaller 함수는 파라메터가 없기 때문에 smaller() 와 같이 괄호 안이 비어있다. 그리고나서 전역변수..
Getting Started with CLISP (3) - 전역함수 정의하기 (1)
2017. 9. 7.전역 함수 정의하기사용자가 입력한 값이 정답보다 큰지 작은지에 따라 반응을 내보내는 guess-my-number 라는 게임에는 guess-my-number, smaller, 그리고 bigger 라는 3개의 전역 함수가 필요하다. 그리고 초기값을 정의할 start-over 함수도 필요하다. Common Lisp 에서 함수는 defun 이라는 함수를 통해 정의한다. 먼저 함수의 이름과 인수를 정의해보자.첫번째로 정의해야할 함수는 guess-my-number 이다. 이 함수는 사용자의 추측을 이끌어내기 위해 *big* 과 *small* 변수를 사용한다. 다음과 같다. 함수이름 뒤에 위치한 ( ) 는 요구되는 파라메터가 없다는 표시이다. 12345[1]> (defun guess-my-name () (ash (+..
Getting Started with CLISP (2) - 전역변수 정의 및 리스프 코딩 에티켓 Defining Global Variables in Lisp and Basic Lisp Etiquette
2017. 9. 6.전역 변수 정의하기LISP에서 전역 변수는 다음과 같이 설정합니다. 예를 들어 상한과 하한을 나타내는 small 과 big 변수를 정의해보겠습니다. 리스프에서 전역으로 정의된 변수를 top-level definition 이라고 부르는데요. 다음과 같이 defparameter 함수를 이용해서 top-level definition 을 정의할 수 있습니다. 123456789101112[1]> (defparameter *small* 1)*SMALL*[2]> (defparameter *big* 100)*BIG*[3]> *small*1[4]> *big*100[5]> (defparameter *big* 1000)*BIG*[6]> *big*1000cs defparameter 라는 함수이름은 parameter 와는 사실..
Getting Started with CLISP (1) - CLISP 설치, 실행, 종료
2017. 9. 6.1. 가상환경구축123456789101112root@localhost:~# mkdir lispworksroot@localhost:~# cd lispworksroot@localhost:~/lispworks# virtualenv -p python3 venvRunning virtualenv with interpreter /usr/bin/python3Using base prefix '/usr'New python executable in /root/lispworks/venv/bin/python3Also creating executable in /root/lispworks/venv/bin/pythonInstalling setuptools, pip, wheel...done.root@localhost:~/lispwor..
hiberfil.sys 제거
2017. 8. 31.hiberfil.sys 제거방법 절전모드 사용시 생성되는 파일이 hiberfil.sys 이다. 해당 모드 사용이 필요없고 공간이 부족한 경우 아래와 같이 제거할 수 있다. 관리자 권한으로 cmd 창을 띄운 후 powercfg -h off 라고 치면 hiberfil.sys 가 제거된다. hiberfil.sys 제거에 관한 마이크로소프트 답변https://answers.microsoft.com/ko-kr/windows/forum/windows_7-performance/hiberfilsys-%EC%A0%9C%EA%B1%B0/22ef5218-9916-4a91-b900-4db3ff1824cb?auth=1 절전모드 해제시킨 상태에서 부팅시마다 hiberfil.sys 파일이 생기는 경우 https://superuse..
ORA-24335: 1000 열보다 많게 제공할 수 없습니다 ORA-24335: cannot support more than 1000 columns
2017. 7. 27.ORA-24335: 1000 열보다 많게 제공할 수 없습니다 ORA-24335: cannot support more than 1000 columns INSERT ALL 구문 실행시 ORA-24335: 1000 열보다 많게 제공할 수 없습니다 라는 오류 발생하는 경우,1000열 미만으로 실행시킨 후 commit 하고 나머지도 1000열 미만 단위로 실행한다. 12345678INSERT ALLINTO LECTURE(LECID, LECNAME, PROFID) values('', '', '')INTO LECTURE(LECID, LECNAME, PROFID) values('', '', '')........................................INTO LECTURE(LECID, LECNAME, ..
루비 온 레일즈 시작하기 (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..