1월, 2022의 게시물 표시

mongodb db already exists with different case already have 에러

몽고디비에 db를 생성하다가 아래와 같은 에러가 발생했습니다. pymongo.errors.OperationFailure: db already exists with different case already have: [upbit_1m] trying to create [upbit_1M], full error: {'ok': 0.0, 'errmsg': 'db already exists with different case already have: [upbit_1m] trying to create [upbit_1M]', 'code': 13297, 'codeName': 'DatabaseDifferCase'} 업비트 1분봉용(1m) db와 1달용(1M)이 대소문자 구분 문제로 동일하다고 판단이 되어 에러가 발생했네요. 몽고디비 사이트 이름 제한관련 을 보면  case-sensitive라고 대소문자 구분한다고 되어 있는데 예제에는 대소문자 구분하지 않고 같은것으로 인식해 에러가 발생한다고 하네요. 아무튼 1달용 1M을 좀 이름을 달리 해줘야겠네요.

Mac 부팅시 자동 시작 스크립트 관리(feat. Too many open file)

이미지
윈도우의 서비스에 등록해서 프로그램이 부팅시 자동 시작되는 것 처럼 맥os에서도 launchctl를 사용해서 데몬이나 에이전트를 자동시작하게 관리 할 수 있다고 합니다. 리눅스나 macOS같은 UNIX계열 os에서는 프로세스나 사용자별로 스레드, 파일, 네트워크 연결등의 시스템 리소스의 사용에 제한을 하고 있다고 합니다. launchctl로 부팅시에 자동으로 제한을 풀어주는 스크립트를 만들어 적용 해보겠습니다. 먼저 터미널에서 아래 명령어를 입력해 스크립트를 생성해줍니다. sudo vi /Library/LaunchDaemons/limit.maxfiles.plist 그리고 터미널에서 아래와 같이 입력해 부팅시마다 자동 적용이 되도록 해줍니다. sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist 재 부팅후 launchctl limit로 확인해보면 자동으로 maxfile 부분이 스크립트에 설정해 놓은 값으로 되어 있는 것이 확인됩니다.

mongodb Too many open files 에러

이미지
몽고디비 사용중 아래와 같은 에러가 발생했습니다.  STORAGE  [conn3] WiredTiger error (24) [1643430070:575724][2847:0x700001aad000], file:index-120--942093529947500226.wt, WT_SESSION.open_cursor: __posix_open_file, 665: /Volumes/Data/data/db/index-120--942093529947500226.wt: handle-open: open: Too many open files Raw: [1643430070:575724][2847:0x700001aad000], file:index-120--942093529947500226.wt, WT_SESSION.open_cursor: __posix_open_file, 665: /Volumes/Data/data/db/index-120--942093529947500226.wt: handle-open: open: Too many open files STORAGE  [conn3] Failed to open a WiredTiger cursor. Reason: TooManyFilesOpen: 24: Too many open files, uri: table:index-120--942093529947500226, config: overwrite=false STORAGE  [conn3] This may be due to data corruption. Please read the documentation for starting MongoDB with --repair here: http://dochub.mongodb.org/core/repair -        [conn3] Fatal Assertion 50882 at src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp 101 -        [conn3] \n\n***aborting after f

Python 'NoneType' object is not subscriptable 에러

파이썬으로 개발 중 아래와 같은 에러가 발생했습니다. 'NoneType' object is not subscriptable 말 그대로 None인 객체를 참고하려다 발생한 에러입니다. 마치 아래와 같이 말이죠. resp = None return resp['result'] 제 경우는 if 체크시 오타로 제대로 객체가 설정되지 않아서 발생했었습니다. 

VisualStudio Code 특정 파일이나 폴더 Explorer에서 숨기기

이미지
 비주얼 스튜디오 코드로 작업을 하다보면 탐색기에 불필요한 파일이나 폴더가 같이 보이게 됩니다. 파이썬의 경우는 __pycache__ 폴더와 그 안의 pyc파일들이 되겠고 유니티나 cocos creator 엔진의 경우는 각종 meta 파일들이 되겠네요. 설정 -> file exclude로 찾아보면 아래와 같이 Files: Exclude가 나옵니다. 여기에 원하시는 파일, 폴더를 **/ 다음에 입력해주면 됩니다.

Python takes 0 positional arguments but 1 was given 에러

 파이썬 사용 중 아래와 같은 에러가 나왔습니다. TypeError: x() takes 0 positional arguments but 1 was given 말 그대로 함수의 인자가 0개 필요한데 1개를 넘겨줬다는 것입니다. 인자를 제거 후 함수를 호출하면 해결됩니다.

맥에서 DearPyGui segmentation fault 이슈

이미지
맥에서 DearPyGui 1.3.1 버전으로 개발 중 아래와 같은 에러가 발생했습니다. zsh: segmentation fault  일단 결과부터 보시면, 아래와 같이 dpg.create_context()를 하기전에 dpg의 api들을 사용(주석 처리한 부분)해서 발생했던 것입니다. 어찌보면 당연하지만, 제가 dpg 0.5.x 버전을 쓰다가 한번에 현 시간기준 최신인 1.3.1로 마이그레이션 하면서 밑의 샘플처럼 간단하지 않은 저만의 프레임워크에서 기존 구버전에서는 잘 되다가 안되는 이슈였습니다. 왜냐하면 구버전에는 context개념이 없고 set_main_window_size등 기본 설정 후 바로 setup_dearpygui()하면 되었기 때문이죠. 저의 경우는 이렇게 해결했고 다른 원인도 많으니 dpg의 git 이슈들 도 확인해보세요.

mac /usr/local/opt/libpng/lib/libpng16.16.dylib (no such file)

 mac 버전에서 dearpygui 실행에 아래와 같이 에러가 발생했습니다. /guiexam.py Traceback (most recent call last):   File "/guiexam.py", line 1, in <module>     import dearpygui.dearpygui as dpg   File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/dearpygui/dearpygui.py", line 22, in <module>     import dearpygui._dearpygui as internal_dpg ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/dearpygui/_dearpygui.so, 0x0002): Library not loaded: /usr/local/opt/libpng/lib/libpng16.16.dylib   Referenced from: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/dearpygui/_dearpygui.so   Reason: tried: '/usr/local/opt/libpng/lib/libpng16.16.dylib' (no such file), '/usr/lib/libpng16.16.dylib' (no such file) mac os 몬테레이에 python은 3.8.5에 dearpygui는 최신인 1.3.1 이었습니다. 윈도우에서 같은 샘플을 dearpygui 1.2.3일 때 잘 했던것이라 버전을 낮추어봐도 이슈는 해결이 안되더군요. 해결은 일단 homebrew를 통해 libpng를 다시 설치 했습니다. 아

Mac에 Homebrew없이 Mongodb 설치하기

이미지
몽고디비를 받게되면 기본적으로 윈도우랑 다르게 맥 버전은 인스톨 형식이 아닙니다. Homebrew를 통해서 쉽게 설치 (이 링크의 내용은 너무 오래되서 제대로 진행이 안될 수 있다) 가 가능하지만 ssd 용량도 아낄겸 이번에는 굳이 몽고디비 설치를 위해 홈브류 설치까지 하고 싶지는 않아서 기본 압축본으로 설치하는 것을 정리해봅니다. 먼저 설치 환경은 아래와 같습니다. 현재 몽고디비 5.x까지 나왔지만 기존에 하던 작업이 4.2.12를 사용했기 때문에 저는 구버전을 설치합니다. 5.x도 크게 다르지 않을꺼라 생각되네요. 맥OS 몬테레이 몽고디비 4.2.12 먼저 몽고디비 공식 사이트에서 커뮤니티 서버 원하시는 버전을 다운로드 합니다. 다운로드 받은 파일의 압축을 풀어줍니다. 파인더에서 command + shift + g키를 눌러서 /usr/local/ 입력후 해당 폴더로 이동합니다. command + shift + n을 눌러 mongodb 폴더를 생성해줍니다. 기존에 압축 해제했던 파일들을 새로만든 /usr/local/mongodb 폴더에 옮겨줍니다. 이때 압축 해제했던 폴더(mongodb-macos-버전)가 아닌 하위 폴더 안의 것들을 옮겨주면 됩니다. 다음으로 몽고디비의 db와 log용 파일들이 저장될 폴더를 생성해줍니다. 저의 경우는 ssd의 파티션을 나눠놔서 Volumes/Data/data 폴더에 각 db와 log 폴더를 생성했습니다. 만약 파티션이 하나인 분들은 /users 폴더로 이동 후 자신의 계정명 폴더 밑에 data 및 그 하위에 db, log를 생성하시면 됩니다. 또는 바탕화면인 데스크탑에 폴더를 만드셔도 됩니다. 몽고db관련 bin 실행파일들이 어느 위치에서도 실행될 수 있게 path에 지정해줘야합니다. 요즘은 기본 zsh를 사용하므로 터미널에서 vi ~/.zshrc 파일을 아래와 같이 추가해줍니다. i 키를 눌러 내용을 입력모드에서 추가 후esc 누른 후 :wq 를 눌러 저장 후 종료합니다. export MONGO_PATH=/usr/loc