본문 바로가기

반응형

프로그램언어

(14)
node_modules 로컬 파일 바라보기 노드js 오픈소스로 개발을 하다보면 dependency 로 받아온 패키지로부터 에러 로그가 발생하곤 한다. 필자는 솔라나 민팅 프로그램을 만들면서 "@metaplex-foundation/mpl-token-metadata": "^2.1.1" 패키지를 사용하는데, 이 패키지의 dependency 로 "@metaplex-foundation/beet-solana": "^0.1.1" 패키지를 받아온다. 그리고 아래와 같은 에러가 발생했다. [Nest] 20081 - 05/16/2022, 2:14:10 PM ERROR [ExceptionsHandler] value.toBytes is not a function TypeError: value.toBytes is not a function at Object.write ..
파이썬 코딩스타일 Class _ convention class Price: def __init__(self, price): self._price = price def _double_price(self): return self._price * self_hidden_factor def get_double_price(self): return self._double_price() 모듈 내에서만 사용하는 private 클래스/함수/변수/메서드를 선언할 때 _ 으로 시작한다. from module import * 으로 임포트할 때 이 컨벤션으로 시작한 것들은 무시가 된다. 다만, weak internal use indicator 라고 부르며 직접 가져다가 쓰는것은 가능한 정도로 완전한 private 을 강조할 수는 없다. self ..
async 함수 throw catch sync 함수의 경우에 기본적인 try { functionA() } catch (e) { console.error(e) } 문을 사용하고, async 함수의 경우에는 Promise 를 해결하기 위해 functionB().catch(e) { console.error(e) } 처럼 핸들해줘야 한다.
npm init - permission denied 해결 권한이 없는 디렉토리에서 npm init 을 실행하면 다음 에러가 발생한다. npm ERR! code EACCES npm ERR! syscall open npm ERR! path /bcs/app/ethereum_workspace/js/package.json npm ERR! errno -13 npm ERR! Error: EACCES: permission denied, open '/bcs/app/ethereum_workspace/js/package.json' npm ERR! [Error: EACCES: permission denied, open '/bcs/app/ethereum_workspace/js/package.json'] { npm ERR! errno: -13, npm ERR! code: 'EACCES..
자바 쓰레드 상식 JAVA Thread - Thread 를 extend 한 객체는 run() 함수를 override 하여 쓰레드로 실행하고자 하는 로직을 구현할 수 있다. - 위 객체를 인스턴스화하여 사용하는 함수에서는 start() 함수와 join() 함수를 통해 쓰레드를 시작하고 회수한다. - 다만 다중 쓰레드에서 같은 변수를 참조하는 경우에 race condition 에 의해 변수 값이 예상과 다를 수 있다. - 이런 경우에 변수에 접근하는 함수에 synchronized 키워드를 달아서 변수에 대한 lock 을 획득할 수 있다. - 다만 synchronized 로 선언한 함수에서 loop 이 돌면서 변수를 처리할 때, 함수 전체에 대한 lock 을 얻기보단 변수처리 로직에 대한 lock 을 얻는 것이 현실성이 있다...
hex String 형변환 HTTP 통신 API 에서 JSON body 값은 보통 hex String 을 사용한다. Nodejs 에서 특정 데이터 타입을 hex String 으로 변환 또는 복구해야하기 때문에 아래 코드를 정리했다. Buffer -> hex String -> Buffer let buffer = new Buffer.from("hello world"); // let bufferHexString = buffer.toString('hex'); // 68656c6c6f20776f726c64 let bufferRecovered = Buffer.from(bufferHexString, 'hex'); // let isEqual = Buffer.compare(buffer, bufferRecovered);..