2월, 2022의 게시물 표시

Python TypeError: if no direction is specified, key_or_list must be an instance of list

 파이썬 파이몽고의 sort 메소드를 사용 중 아래와 같은 에러가 발생했습니다. TypeError: if no direction is specified, key_or_list must be an instance of list Candle . find ( market_code , 'Day1' ).sort({ 'time' , 1 }).limit( 1 )) 위와 같이 호출했을 때 sort안에 인자로 {} 객체형이 아닌 sort('time', 1) 같은 key, direction값으로해야합니다. 여러개로 할 것이라면 [('time', 1)] 과 같은 리스트 형식으로 해주면 됩니다.

Python 숫자 3자리마다 콤마(,) 넣기

이미지
 파이썬에서 숫자를 화폐 단위 3자리마다 콤마를 찍어보려고 합니다.  2가지 방식이 있는 것 같습니다. 먼저 format(숫자, ',')) 해주면 3자리로 된 문자열로 리턴 해주네요. 또는 f-string으로 해주는 {숫자:,} 방식이 더 깔끔하게 보이네요. balance = 10000000 print ( f '밸런스 { balance } ' ) print ( f '밸런스 { format ( balance , "," ) } ' ) print ( f '밸런스 { balance :,} ' )

Github Profile Readme로 꾸미기

이미지
 깃허브를 기웃거리다가 제 허접한 프로필과는 다른 프로필을 보았습니다. 아래와 같이 각종 통계 카드(Stats Card)와 Most Used languages를 보여주는게 멋지더군요. 그래서 깃허브에 적용하는 것을 한번 정리해 봅니다. 먼저 자신의 username과 같은 저장소를 하나 만들어 줍니다. 만들려고 할 때 special repository라는 마치 이스터에그를 찾은 것 같은 문구가 나오네요. 당연히 Public로 만들어야하고 README 파일 부분을 체크하고 만들어야 합니다.  다음으로  Github Stats Card 를 추가하려면 readme 파일에 아래 내용을 추가합니다. 여기서 username 부분에 자신의 깃허브 username을 입력해주면 됩니다. [![Anurag's GitHub stats](https://github-readme-stats.vercel.app/api?username= anuraghazra )](https://github.com/anuraghazra/github-readme-stats) 그리고 Most Used Languages를 추가하려면 역시나 username을 자신의 것으로 변경 후 아래 내용을 추가해줍니다. [![Top Langs](https://github-readme-stats.vercel.app/api/top-langs/?username= anuraghazra )](https://github.com/anuraghazra/github-readme-stats) 기타 아이콘을 추가하거나 테마를 바꾸는 등 다른 옵션을 추가할 수 있습니다. 자세한 것은 github-readme-stats 를 참고하세요. 썰렁하던 제 깃허브 프로필 화면이 바뀌었습니다. public 이외의 저장소 내용은 당연히 적용이 안되기 때문에 뭔가 내용이 허접하네요 ㅎ. public 활동을 많이 하도록 더욱 분발 해야겠습니다.

MacOS 터미널 호스트 이름 변경하기

이미지
 맥os를 처음 설치 후 터미널을 실행해보면 자동으로 전체이름에 따라서 호스트 이름이 설정되는 것 같습니다. 아래 스샷에는 adminui로 되어 있지만 원래는 한글 이름을 콩글리쉬로 된 영어로 설정이 되어 있더군요. 개발 이슈등을 공유할 때 가끔 찍히는 터미널 스샷에 이름이 공개되어 있으면 좀 그러니 다른것으로 변경해봅니다. 터미널에서 아래와 같이 입력해 줍니다. new_name에 원하시는 이름을 입력하시면 됩니다. 그러면 팝업이 하나 뜨는데 거기서 맥의 암호를 입력후 구성 수정을 눌러 수정하시면 됩니다. scutil --set HostName new_name 터미널을 다시 시작하거나 hostname으로 확인해보면 호스트 이름이 바뀐것을  확인할 수 있습니다.

Node.js ts -> js 자동 변환 ts-node 활용 TypeScript 기본 환경 세팅하기

이미지
 기존에 Node.js에 타입스크립트와 @types/node를 세팅해서 기본 환경을 구축 해봤습니다. 하지만 이렇게 했더니 node.js에서는 ts를 바로 실행을 못해서 tsc 컴파일을 계속 해줘야 하는 이슈가 있더군요. package.json의 script 부분에 수정을 해주면 node 실행시마다 자동으로 tsc 컴파일 해줄 수 있을 듯 하지만 이번에는 ts-node 라는 녀석을 활용하는 것을 정리해봅니다. ts-node는 JIT을 통해서 precomile 없이 node.js에서 ts를 바로 실행할 수 있게 해주는 모듈 이네요. ts-node대신 개발용에 특화된 것 처럼 보이는 ts-node-dev 를 설치해서 사용하겠습니다. npm i -D ts-node-dev 입력해 개발 종속성으로 설치해줍니다. src/index.ts를 아래와 같이 간단히 만들어줍니다. Person은 기존에 만들었던 것 에서 객체 생성과 console.log부분만 지워줍니다. import { Person } from "./person" ; const person : Person = new Person ( "wwforever" ); console . log ( person . sayHello ()); ts-node-dev src/index.ts로 실행하면 아래와 같이 에러가 발생합니다. sh: command not found: ts-node-dev 아래와 같이 package.json의 script에 추가해서 npm run dev로 실행시켜줍니다. respawn과 transpile-only는 각각 node-dev와 ts-node의 옵션이라고 합니다. 2개 모듈의 기능을 합친게 ts-node-dev이니 둘다 기본 옵션으로 추가해줍니다. "scripts" : { "dev" : "NODE_ENV=localdev NODE_PATH=src ts-node-dev --respawn --transpile-o

Node.js TypeScript 기본 환경 세팅하기

이미지
 Node.js 프로젝트에 타입스크립트 기본 환경 설정하는 것을 정리합니다. 일단 node.js가 설치 되어있다고 가정합니다. 먼저 프로젝트 폴더를 만들고 터미널에 npm init -y을 입력해줍니다. 저는 start-node-ts라는 폴더에 만들어줬습니다. 다음으로 npm i typescript 를 입력해 타입스크립트를 설치합니다. 다음으로 node의 각종 기본모듈의 d.ts 추가를 위해 npm i -D @types/node 를 설치합니다. 보통 @types 하위 패키지들은 개발용으로만 필요하기 때문에 -D(대문자) 또는 --save-dev 옵션으로 설치해줍니다. 그러면 package.json의 devDependencies에 @types.node가 추가되고 node_modules/@types 가 추가됩니다. tsc --init를 실행해서 tsconfig.json 파일 을 생성합니다. compilerOptions 기본 설정에 outDir이 주석으로 되어 있는데 "./dist"로 변경해서 js로 컴파일된 파일이 저장될 폴더를 지정합니다. 2022년 2월기준 es2016으로 target이 설정되네요. 이제 간단한 타입스크립트 샘플 파일을 아래와 같이 만들고 터미널에서 tsc를 입력해 ts 파일을 js로 컴파일 합니다. node dist/person.js 를 실행하면 결과가 잘 나옵니다. 여기까지 했다면 프로젝트 진행에 불현한 것이 계속해서 수동으로 ts를 js로 컴파일 해줘야하는 것입니다. ts-node를 통해 ts 파일을 node에서 바로 실행하는 것을 추가로 정리 해봤습니다.

MacOS 응용 프로그램을 열 수 있는 권한이 없습니다.

이미지
맥os 빅서에서 db gui 툴인 dbeaver를 설치하고 실행중에 아래와 같은 에러가 발생했습니다. 터미널에서 아래와 같이 입력하면 됩니다. codesign --force --deep --sign - /Applications/DBeaver.app dbeaver이 아닌 다른 앱인 경우는 마지막에 앱 이름만 변경해주면 되겠네요.

Cocos Creator 디버그, 실행 환경 알아내기

코코스 크리에이터에서 디버그 모드인지 릴리즈 모드인지 등의 환경을 확인해보기 위해 리서치 해봤습니다.  api 문서에보면 GLOBAL MACROS라고 전역 메크로 로 지원해주고 있네요. 일단 마치 유니티의 Debug.isDebugBuild 같은 기능을 찾고 있었는데, 간단히 CC_DEBUG를 통해 에디터 || 프리뷰 || 디버그모드 인지 확인이 가능합니다. 그외에도 api 문서에 있는 것 처럼 아래의 것들을 지원해주고 있네요. CC_EDITOR   Boolean  Running in the editor. CC_PREVIEW   Boolean  Preview in browser or simulator. CC_DEV   Boolean  Running in the editor or preview. CC_DEBUG   Boolean  Running in the editor or preview, or build in debug mode. CC_BUILD   Boolean  Running in published project. CC_JSB   Boolean  Running in native platform (mobile app, desktop app, or simulator). CC_TEST   Boolean  Running in the engine's unit test. CC_RUNTIME   Boolean  Running in runtime environments.

Python 'xxx' object is not subscriptable 에러

지난번 nonetype 참고 에러 와 비슷한 에러입니다. 'xxx' object is not subscriptable 리스트나 튜플과 같은 객체에 인덱싱을 시도하거나 딕셔너리에서 Key값을 통해 Value를 얻어올 때 해당 변수가 인덱싱 또는 Key값으로 처리할 수 없는 녀석들일 때 발생하는 에러입니다. 제 경우는 원래 딕셔너리 에서 값을 가져오다가 살짝 리팩토링 후 전달하는 곳만 바뀌고 사용하는 부분이 그대로 mydick['find_key'] 이런식으로 접근을 하다보니 에러가 발생했네요. 객체로 리팩토링 했기 때문에 myobj.key 로 접근하면 되겠네요.

Mac VisualStudio Code 디버그 단축키 F11(Step Into)이 안될 때

이미지
맥os에서 비주얼 스튜디오 코드로 디버깅 중 F11(Step Into)키 기능이 작동하지 않아서 내용 정리합니다. 먼저 시스템 환경설정 - 키보드 - 키보드 탭에서 F1, F2 등의 키를 표준 기능 키로 사용에 체크해 줍니다. 다음으로 단축키 탭에서 Mission Control을 찾아 오른쪽에 F11에 바인딩 되어 있는 데스크탑 보기를 체크 해제해주면 vscode로 디버깅시 단축키가 잘 먹히게됩니다.