어쩌다 블로그

전체 글 68

[Node.js] PM2 Clustering(클러스터링) 시 특정 instance 지칭하기

Node의 PM2로 서버를 배포시, 클러스터 모드를 많이 이용하게 될텐데 (Node는 싱글 스레드를 가지기 때문에 멀티 프로세싱이란 개념으로 접근하여 자원을 효율적으로 이용할 수 있게 해주는 것. ) 이렇게 클러스터링을 하게 될 경우 클러스터의 인스턴스의 갯수만큼 서버가 올라간다. 이때 만약 배치성 함수를 서버에 적용했다면 인스턴스의 갯수만큼 해당 함수가 실행될 것이다. 여기다가 이중화서버 등을 이용했을 경우 이 실행 함수의 갯수는 두 배로 늘어나게 될 것 예를 들어, 주기적으로 메일을 발송하는 함수를 서버에 내장하게 됐다면, 동시에 같은 메일이 여러 개가 발송될 수 있을 것. 이런 일은 비효율적일 수 있다. (혹은 일어나선 안될 수도..) 이에 대응하여 서버 실행 스크립트를 분리하여 해당 함수를 실행하..

Back-end/Node.js 2022.05.01

[Node.js] 커스텀 에러 만들기/분석해보자

회사를 다니면서 계속 노드 서버를 만들어오신 동료분께서 잘 만들어 놓으신 에러 객체를 응용하면서 계속 분석해서 쓸 필요가 있다고 생각해 분석을 해보려 한다. 노드의 에러 객체를 상속 받아 에러를 만들어서 쓰게 되면 각종 에러에 대해서 개별적 처리가 가능하다.(데이터 베이스인지.. 암복호화, 파라미터 유효성 에러 등..) 이미 각종 오픈 소스들은 이렇게 쓰고 있다! 에러 리포트를 하는 시스템을 구축할 때에도 꼼꼼하게 파악해 놓으면 좋을 듯 싶다. 꾸준히 정리해서 올려 놓으려 한다. 기본적으로 에러 객체를 상속받아 작성하는 건 이런 식으로 작성하면 된다. class CustomException extends Error{ constructor(errorname){ super(errorname); } } 상속 ..

Back-end/Node.js 2022.04.09

Toast UI Editor 이미지 업로드 샘플들 (React.js/Vue.js/Thymeleaf)

Toast UI Editor 이미지 업로드 샘플들을 깃허브 레파지토리에 올렸습니다. 올라온 질문들 구현소스도 있고, 깃허브로 공유하는 게 나을 것 같아서요. (그런데 버전 문제가 좀 있더라고요. 리액트버전 npm 버전 등... 난감했지만 리액트 버전 낮춰서 했는데 요즘 보통 리액트 버전 뭘쓰나요?) 백엔드는 따로 구현하지 않았는데 필요하신 분들 계시면 다듬어서 올려볼게요. (또 제가 백엔드 개발자거든요..소근소근ㅎ) https://github.com/gareen9342/TUIEditorSamples GitHub - gareen9342/TUIEditorSamples Contribute to gareen9342/TUIEditorSamples development by creating an account on..

Front-end 2022.04.04

Mocha 테스트 후, 테스팅 터미널 종료하기+ Mocha default timeout 시간 재설정

지난번에 토이프로젝트 배포시에 predeploy script 에 Mocha 테스트를 하도록 했더니 터미널 종료 문제와 타임아웃 시간 재설정이 필요하더라.. 갑자기 생각나서 포스팅 Mocha 테스트완료 후 스스로 종료하게 하기 테스트 코드 실행 후 해당 프로세스 종료 시키고 deploy 하고 싶었는데 프로세스 종료가 안 되서 찾아보니 해당 입력 스트림을 직접 꺼주지 않으면 계속 프로세스가 유지된다고 한다. https://stackoverflow.com/questions/50372866/mocha-not-exiting-after-test Mocha not exiting after test I'm starting with tests in Node. Using mocha, chai and nock (to in..

Back-end/Node.js 2022.03.27

Oracle Cloud VM Instance에 배포하기

AWS가 제공하는 서비스가 많아서, 이용하면 좋겠지만 프리티어 계정을 다 써버린지 오래기도 하고, 간단하게 하나 정도 배포하기에 오라클 클라우드가 좋다고 해서 써봄... 일단 기본적으로 공짜가 보장되는 vm instance 두 개를 제공해준다 ㅎㅎ 성능은..음..좋진 않지만.. 개인적으로 학생분들이나 취준생분들에게 추천하고 싶다 공짜 좋으니까... ㅋ 그리고 뭐... 너무 쉽다... 뭐랑 다르게 Ip도 고정적이고.. 이것저것 서비스는 없지만.. 성능이 좋진 않지만… 여기 접속해서 타이핑 하고 있으면 마치 19세기로 돌아간 느낌이다ㅋㅋㅋㅋㅋ 지금은 젠킨스 cicd 구성중인데 좀 더 정리해보고 다 되면 또 포스팅하겠다.. 🥸 이 인스턴스에서 디비는 오라클을 써야하지만, 난 도커로 뗐다 붙였다 하게 하고 싶어..

Infrastructure 2022.03.01

코로나 알람 개발 후기 및 디벨롭 계획

설에 시간도 많기도 하고... 공부보다 평소에 하고 싶었던 자그만 사이드 프로젝트를 하면 어떨까 싶었다. 예전에 학원쌤이 만들었다고 하셨던 코로나 확진자수 현황을 매일 카카오톡으로 전송하는 서버를 나도 한 번 만들어 보고자 해서 간단하게 필요한 기능만 추려서 만들게 되었다. 만들 때 설계의 주안점으로 둔 것은 1. Type Script 2. DI 등 데코레이터를 활용해보기 3. Oracle Cloud 배포 사실 정말 필요한 기능만 만들고 클라이언트 요청을 받아서 처리하는 부분은 안 만드려고 했는데 테스트를 하다보니 어찌저찌 만들게 되었다. 일단 만들어서 오라클 클라우드에 배포했고, 아침마다 나에게 날아오고 있다. 사실 부모님께 전송하고 싶었는데.... 친구목록 전송을 구현하려면 가지고 올 수 있는 친구도..

Oracle Cloud 배포시 겪었던 것들 정리 (CentOS)

오라클 클라우드는 프리티어 계정으로 두 개의 인스턴스를 주고 아주 구린 하드웨어를 준다 (당연..) 1. /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en.utf-8) 에러 내용 보면 알겠지만.. 언어 설정 때문인데 저렇게 설정하면 안된다고 리눅스 커뮤니티에 어떤 사람이 그래서 변경함... https://www.linuxquestions.org/questions/linux-newbie-8/bash-warning-setlocale-lc_all-cannot-change-locale-en-us-utf-8-a-4175628657/ locale 로 확인해보니 이렇게 되어있는데 LC_ALL=en.utf-8을 LC_ALL=en_US.utf8 로 변경하라함...

Review/디버깅 2022.02.02

Oracle Cloud VM instance에 SSH 접속하기 (Mac)

Oracle Cloud에 배포중, SSH 접속시 어떤 방법을 이용했는 지 기록해놓으려... 1. CentOS 7 인스턴스 생성 2. private, public key 다운로드 3. 로컬컴퓨터 cd ~/.ssh 4. mv private key id_rsa, mv public key id_rsa.pub 로 파일 이름 변경 5. chmod 400 id_rsa, chmod 300 id_rsa.pub 6. ssh opc@ -> 아직 opc의 뜻이 무엇인지는 파악하지 못했당 계정이 기본으로 이걸로 할당되나? 허허

Review/디버깅 2022.02.02

키크론 c1 레트로 갈축 구매 후기

안녕하세요 키보드를 소개할 키보드 알못 주니어 개발자입니다(응애) ㅋㅋㅋㅋㅋㅋ 많은 시간을 키보드 타건하는 일에 할애하고 있어서 키보드를 좋은 걸 써야하나 생각했을 수도 있지만 개인적으로는 큰 욕심은 없었는데요 이유는 매직키보드와 트랙패드를 무척 잘 쓰고 있었고 키보드에 크게 예민하지 않았기 때문입니다 하지만 회사에 다니면서 집에 왔을 때 얇은 매직키보드를 치고 있으면 약간 불편하더라고요 그래서 새롭게 키보드를 사야 하나 생각이 들었습니다.. 예전에 학원 선생님걸 잠깐 썼을 때 좋은 기억이 있었어서 키크론을 염두해두긴 했는데..귀찮기도 하고 특유의 검정색이 맘에 안들어서.... 안 사고 있었는데요 (책상 위가 전부 화이트입니다 ㅠㅠ 색 맞추고 싶어서 그냥 냅뒀죠...) 그런데 키크론 홈페이지를 우연히 들..

일상 2021.11.28

[Node.js] Error: Cannot find module 'fs/promises'

지금 LTS 버전의 노드 14 를 쓰고 있는데도 fs/promises 가 배포시 작동을 안했다... 하필 운영에서...( 테스트할 땐 안그러더니 왜?!) fs/promises는 웬만하면 사용하지 마세요 ㅠ_ㅜ 아니 기본 모듈이라 안심하고 썼는데 안되자나요... 보자마자 이거 진짜 좋챠나~ 하면서 썼다가 완전 당황해버렸... 그냥 동기 방식을 쓰던가... promise를 만들어서 쓰던가...

Review/디버깅 2021.11.23