Blog

반응형

PM2로 서버 및 각종 개발을 하던 중 어느날 갑자기 

Permission denied, activate current user

라는 메시지를 보이며 실행이 되지 않는 경우가 발생했다.

단순히 pm2 명령 입력은 되는데, 아래와 같이 목록이나 버전 정보를 조회를 하니 되지 않는다.

PM2를 재설치를 해도 해결이 되지 않았다.

PM2 경로에 권한을 바꿔주니 해결이 되었다.

sudo chmod -R 777 /Users/asata/.pm2/

저기서 PM2 경로는 사용자에 맞게 수정을 해 주면 된다.

반응형

Comment +0

반응형

HTTP request를 전달을 해야 하는데, 서버가 EUC-KR을 받아야 하는 경우가 있습니다.

encodeURI나 encodeURIComponent를 할 경우 UTF-8인 상태에서 변환이 이뤄지게 됩니다.

수신하는 쪽에서 UTF-8를 EUC-KR로 변환을 한다면은 문제가 없겠지만, 

EUC-KR로 보내야 한다면 iconv 라이브러리를 이용하여 전달을 하면 됩니다.

 var Iconv  = require('iconv').Iconv;
 var iconv  = new Iconv('utf-8', 'euc-kr');
 var buffer = iconv.convert('한글 파라미터'); 
 var param1 = escape(buffer.toString('binary'));

위와 같이 인코딩을 변경 후 buffer 저장된 값을 escape를 해 주면 됩니다.

 

encoding 및 decoding시 값 확인은 아래 사이트에서 확인할 수 있습니다.

https://dencode.com/string/hex

반응형

Comment +0

반응형

NodeJS로 개발을 진행 중 TCP 통신으로 다른 서버와 연결을 해야 하는 경우가 있습니다.

그 서버 인코딩이 UTF-8이라면은 아무런 문제 없이 개발을 할 수 있겠지만,

서버 인코딩이 EUC-KR일 경우 받는 쪽에서는 문자열이 깨져서 수신이 되게 됩니다.

 

보낼때 iconv 등을 통해서 인코딩을 EUC-KR로 변경해서 보내면 되겠지라고 생각 하지만,

TCP write시 인코딩은 UTF-8과 binary만 지정이 가능합니다.

역시나 받는쪽에서도 인코딩이 깨져서 수신이 됩니다.

 

서버 쪽에서 해당 하는 부분을 대응해서 개발을 해 주면 좋겠지만,

그렇지 않을 때에는 보낼때 EUC-KR로 보내야 합니다.

 

관련한 정보를 찾아보던 중에 문자열을 보내는게 아니라 buffer 형태로 보내는 방법을 찾게 되었습니다.

iconv를 통해서 UTF-8 문자열을 EUC-KR로 변경을 하면 buffer array가 반환이 됩니다.

이 값을 그대로 전달을 하면 EUC-KR 문자열을 전달 할 수가 있습니다.

 

TCP 연결 코드는 별도로 설명하지 않겠습니다. 

해당 부분은 검색하면 많이 나와서 생략하였습니다.

먼저 stream 모듈을 설치를 해 주세요.

그리고 write 함수를 사용하는 부분을 아래 코드와 같이 변경을 해 주시면 됩니다.

const stream 		= require('stream');

let readStream = new stream.PassThrough();
readStream.end(new Buffer('Test data.'));
readStream.pipe(client);

송수신 문자열은 iconv를 통해서 UTF-8 또는 EUC-KR로 변환을 해 주시면 됩니다.

반응형

Comment +1