[couchbase] bucket 복사하기

주의  : 개발 테스트로 진행한 것. Production에서 사용할 수 있는 지는 확인이 필요하다

단순히 내 개발 머신에서 bucket 복사를 하고 싶었음. 버킷 생성할 때 다른 버킷을 기반으로 생성할 수 있는 방법이 없다.

백업하고

cbbackup.exe http://localhost:8091 백업을_저장할_폴더_경로 --single-node -b 백업할_버킷이름

리스토어하면 된다

cbrestore.exe --bucket-source 백업한_버킷이름 --bucket-destination 데이터를_풀_버킷_이름 백업을_저장한_폴더_경로 http://localhost:8091

reference
http://docs.couchbase.com/admin/admin/Tasks/restore-cbrestore.html

[couchbase/n1ql] select 결과를 insert 하기

sql 과 비슷하다.

INSERT INTO 버킷이름 (KEY k_alias, VALUE v_alias) select ‘test_key::001’ as k_alias, {‘member’ : ‘value’} as v_alias

http://developer.couchbase.com/documentation/server/4.0/n1ql/n1ql-language-reference/insert.html
http://developer.couchbase.com/documentation/server/4.1-dp/developer-guide/covering-indexes.html

PS : document에 예제 좀 많이 넣어주면 좋겠다.

[couchbase] 4.0 잘쓰고 있었는데 indexer 랑 cbq-engine이 없어졌다?

개인 개발 머신에서 indexer와 cbq-engine이 안뜸.. (아니 한동안 잘 썼다고!!)

  • 재시작해도 안올라옴
  • 검색해봐도 별 얘기 없음
  • 다시 설치해도 안올라옴
  • 하나하나 해볼 수 없어서, 막 던져봄
    • cb4.0 삭제 후 레지스트리에서 couchbase 관련 키 삭제
    • program files / couchbase 폴더 삭제
    • 설치 시 안티바이러스 off (프로세스에 kasper 어쩌구가 계속 떠있는 것으로 봐선 내가 내린 건 설정 UI 프로세스인가..)
    • 다시 설치 시 index replicas 체크
  • 이렇게 하고 나선 다시 설치했을 때 indexer 랑 cbq-engine 이랑 다시 돌아옴 =_=;;;
  • 다시 테스트 해보기는 귀찮으니 다음에 또 이러면 하나씩 해보겠다

[python] owyl 프로젝트를 python 3 에서 실행하자

owyl : A python behavior tree for implementing fast and flexible AI

owyl은 파이썬용 행동트리 구현체다. 행동트리를 이해하는 데 시각화된 예제가 필요하여 실행해보았다. (치즈샵에서 behavior tree 로 유일하게 검색된 이유이기도 하고..) 한동안 업데이트가 없는 것을 보니 앞으로도 없을 듯 하다. 약간의 감상평을 하자면 코루틴 없이 generator 로만 코딩을 해서 그런지 복잡하더라.

python 3 에서 실행해보기 위해 진행한 것을 기록한다. python 3 전용으로 실행하기 위해 살짝 변경 해놓은 소스를 이곳1에 올려놨음. for_python_3 브랜치를 이용하면 된다.

  1. examples/boids.py 를 python 3.4.3 에서 실행하면 pyglet2을 임포트할 수 없다는 에러가 발생
    (https://bitbucket.org/pyglet/pyglet/wiki/Home)
  2. pyglet 설치하자

    pip install pyglet

  3. 다시 boids.py 를 실행하면 cocos 를 임포트할 수 없다는 에러가 발생
  4. cocos3 를 설치하자

    pip install cocos2d

  5. 다시 boids.py 를 실행하면 rabbyt 를 임포트할 수 없다는 에러가 발생
  6. rabbyt4 를 설치하자

    pip install Rabbyt

  7. 다음의 에러를 출력하고 설치 실패

    File “<string>”, line 20, in <module>
    File “C:\Users\ADMINI~1\AppData\Local\Temp\pip-build-ukorogxl\Rabbyt\setup.py”, line 17
    print “*”*80
    ^
    SyntaxError: Missing parentheses in call to ‘print’

  8. Rabbyt 가 python 3.x 를 지원안해서 설치가 안되는 것. 홈페이지5를 가보니 더 이상 개발을 종료하였고, lib2d 를 대신 만들고 있는데 Rabbyt 와 호환이 안된다고 한다. 다행하게도 Ryex 라는 사람이 Rabbyt 의 python 3 포팅을 했다.
  9. https://github.com/Ryex/Rabbyt 로 다시 설치. github 에 있는 download zip 버튼의 링크를 install 뒤에 쓰면 된다.
    pip install https://github.com/Ryex/Rabbyt/archive/master.zip
  10. 다음의 에러를 출력하고 설치 실패

    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
    File “<string>”, line 20, in <module>
    File “C:\Users\ADMINI~1\AppData\Local\Temp\pip-u1mmdmpo-build\setup.py”, line 6, in <module>
    from Cython.Distutils import build_ext
    ImportError: No module named ‘Cython’

  11. python 3 이상 버전은 cython이 필요하다. (from https://github.com/Ryex/Rabbyt )
  12. cython 설치하자

    pip install cython

  13. Ryex/Rabbyt 다시 설치

    pip install https://github.com/Ryex/Rabbyt/archive/master.zip

  14. 다음의 에러를 출력하고 설치 실패

    …위에 한참 있음 …
    File “C:\venv\for_owyl\lib\site-packages\setuptools\msvc9_support.py”, line 52, in query_vcvarsall
    return unpatched[‘query_vcvarsall’](version, *args, **kwargs)
    File “D:\Python343\Lib\distutils\msvc9compiler.py”, line 287, in query_vcvarsall
    raise ValueError(str(list(result.keys())))
    ValueError: [‘lib’, ‘path’, ‘include’]

  15. 각을 보니 windows sdk command shell 에서 진행을 해야 할 듯. 일단 나는 windows sdk 7.1 을 설치했으니 “Windows SDK 7.1 Command Prompt” 를 실행하여 다시 13을 실행 -> 설치됨
  16. examples/boids.py 를 실행하면 끝.
  1. https://github.com/kernel0/owyl.git
  2. pyglet: a cross-platform windowing and multimedia library for Python
  3. cocos : a 2D framework for games and multimedia
  4. rabbyt : A fast 2D sprite engine using OpenGL
  5. rabbyt website : http://arcticpaint.com/projects/rabbyt/

[couchbase] couchbase server 4.0 업그레이드. 문제와 해결

3.0.1 을 쓰다가 4.0 으로 업그레이드했다. 새로 추가된 N1QL 기능을 써보려고 cbq 를 실행했는데 cbq-engine 에서 쓰는 8093 포트가 열려있지 않았다. cbq-engine이 일단 떠 있지 않아서

cbq-engine -datastore "http://xxxx:8091/"

로 띄우고 cbq 로 접속해서 test query 를 날렸는데 primary index를 만들어야 할 수 있다고 한다.

primary 인덱스를 만드려면 아래와 같이 실행해야 한다.

create primary index on default using GSI;

하지만 “Indexer not implemented GSI may not be enabled” 에러만 출력하고 index를 못 만들더라. 물론, 아래와 같이 view 를 이용해서 만들 수도 있는데, GSI(Global Secondary index)를 쓰는게 n1ql의 default 이고 문제가 뭔지도 알아보긴 해야 해서 계속 도전했다.

create primary index on default using view;

온갖 삽질(CBAUTH 어쩌구 세팅부터…결국은 다 필요없던것이었지만) 끝에 indexer 띄웠으나, index는 생성이 안되더라.

web console의 server nodes의 services 칼럼에서 index, query 항목이 보이는 게 정상이라고 하고, indexer 나 cbq-engine 은 수동으로 띄우는게 기본이 아니라는 글을 봐서 결국에는 3.0.1을 언인스톨하고 4.0.0 을 새로 설치하였다. windows task manager의 process 탭에서 설치한 후에 indexer.exe 와 cbq-engine.exe 가 떠 있는게 잘보인다. (3.0에서 마이그레이션할 때 안뜨는 건 버그인가보다.)

standalone 환경에서 문제가 없길래 팀 개발환경에 적용했다. 총 3대의 couchbase를 밀고 다시 설치하였다. 앞에서처럼 indexer와 cbq-engine 까지는 잘 뜨는데 index 만드는 부분에서 timeout으로 계속 에러가 발생했다. (select 해보면 Primary index #primary not online. 라고 나오기도 함) web console의 index 항목에 가보니 “We are having troubles communicating to the indexer process. The information might be stale.” 라고 경고가 나오는 걸 보고 indexer.log 파일을 기웃거렸다. 몇가지 못보던 포트가 나오길래 검색을 조금 했더니 질문하고 자답한 사람이 있었다. 9101-9105, 9998, 9999 포트가 새로 추가되었으니 방화벽에서 열어야 한다고 한다.

포트 모두 열고 나서 모두 작동하는 것을 확인함.

결론 : 나야 라이브 환경은 아니라서 bucket 다 밀고 4.0으로 업그레이드했는데, 4.0으로 업그레이드 하려는 분들은 index, query 서비스 설치와 bucket 데이터 문제없이 할 수 있도록 잘 조치하시길. couchbase 이놈들 추가로 필요한 포트는 문서화를 하던지 셋업 마지막에 알려주던지 해야지..아놔…

[python] python 2.7.9가 windows server 2008 R2 에 설치가 안되는 문제

문제 : 윈도우즈 인스톨러로 설치 시 인스톨러 패키지가 어쩌구 저쩌구 하면서 설치가 안됩니다. 이벤트 뷰어의 어플리케이션 로그에 아래와 같은 메시지가 나옵니다. 아참 이미 파이썬 3.4.3 이 설치 되어 있었어요.

Product: Python 2.7.9 — Error 1721. There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor. Action: UpdatePip, location: D:\Python279\python.exe, command: -m ensurepip -U –default-pip

당장 해결법 : 설치 시에 pip 설치 체크를 풀고 진행합니다.

pip 를 설치하는 법 : https://pip.pypa.io/en/latest/installing.html#install-pip 를 참고

[python-asyncio] libuv, pyuv, aiouv

windows python asyncio 에서 기본 내장된 ProactorEventLoop 보다 빠른 event loop 는 없을까 고민하다가 nodejs 기반으로 유명하다는 libuv가 생각났다. python에는 libuv를 기반으로하는 pyuv가 있다. pyuv를 asyncio 에서 사용하려면 aiouv가 필요하다. 이것을 설치해보기로 했다.

업데이트 참고. 요약하자면 소득은 없는데(run_in_executor 로 실행하는 쪽이 ProactorEventLoop보다 눈에 띄게 느리더라. 우리쪽 문제일수도 있다.) windows 에서 설치는 불편했다.

업데이트 2 참고. pip aiouv 설치는 pyuv 가 없다고 하면서 안된다. 뭐 여기까진 괜찮다. pyuv 설치하자.
pip 로 pyuv 설치도 안된다. cp949 UnicodeError와 libuv 설치를 하려고 했는데 링킹이 안되니 어쩌고…아몰랑.  수동 설치 고고!

python 2.7, windows sdk 7.1 설치가 되었다고 가정하고 진행함. (python2.7은 libuv 빌드에 필요함. libuv 설치 스크립트에 c:\python27 이 하드코딩되어 있으니 python 3를 기본으로 사용하면 웬만하면 python2.7은 c:\python27 에 설치할 것)

pyuv 빌드 & 설치
1. github 에서 pyuv 소스 받기 https://github.com/saghul/pyuv/archive/v1.x.zip (pip install -d . pyuv 해서 받은 소스는 빌드 시 링킹에러가 발생한다. 같은 버전으로 알고 있는데 왜…)
2. cmd 열기
3. call “C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd” /release /x64
4. python setup.py build_ext –inplace –libuv-clean-compile
5. 원하는 venv 환경을 activate 하고 소스 폴더로 돌아온다.
6. python setup.py install 하면 venv 환경에 설치됨
7. 끝

aiouv 는 pyuv만 있으면 쉽다.
1. pip install https://github.com/saghul/aiouv/archive/master.zip (pip install aiouv 는 패키지가 없다면서 설치가 안됨 pypi 에서 검색이 되는데 패키지 명이 잘못됐나… 일단 이슈는 써봤는데… https://github.com/saghul/aiouv/issues/15)
2. 끝

업데이트 : 1000~ 2000 개의 redis set 하는 테스크로 시간 측정을 해봤을 때 aiouv.EventLoop가 윈도우즈에서 사용할 수 있는 ProactorEventLoop보다 40~60% 정도 빠르다. 테스트 중이다.

업데이트 2 : 언젠가부터 인지는 모르겠지만 windows python 3.4.3 x64 에서 간단히 설치된다. pip install pyuv 하면 된다

[python] libuv x64 release빌드하는 법

현재(2015-07-27) pip 에 등록된 pyuv 1.1.0을 빌드하기 위해선 libuv를 수동으로 빌드해야 하더라. pyuv 를 github에서 받아서 빌드하면 따로 libuv 를 빌드할 필요가 없다. 같은 버전인데 무슨차이인지 모르겠음 -_-;

libuv 빌드를 하려면 python2.x 가 필요하다. (visual studio sln vcxproj 파일을 python2.x 로 만든다)

1. libuv zip 다운로드 https://github.com/libuv/libuv/archive/v1.x.zip
2. 압축 풀고
3. cmd (command line 으로 git 실행할 수 있어야 하는 상태) 로 해당 폴더 이동 후 vcbuild.bat x64 release 실행
4. 배치파일이 실행되면서 vc project 를 만들어주는 gyp 프로젝트를 다운로드 받는다.
5. 실패 (python2.x 에서 설치하는 사람은 성공할 것임)

print 'Error running GYP'

6. 아.. 내 default python 이 3.4 다. cmd 에서 set PYTHON=PYTHON_2.X경로를 지정한다 ex) set PYTHON=c:\python27\python.exe
7. 다시 ‘vcbuild.bat x64 release’ 실행
8. uv.sln 이 생성됨
9. 이제 libuv 를 빌드하자 (Windows SDK 7.1 이 설치된 것을 가정한다. vs2010을 가정해서 뭔가 하는게 많은거 같다. 속 편하려면 vs2010 설치하자)
10. msbuild /p:PlatformToolset=Windows7.1SDK;Configuration=Release;Platform=x64 uv.sln
13. 끝