목록IT 인터넷/Node.js (11)
반업주부의 일상 배움사

여러개의 서버를 구성하게 됐어요.인터페이스와 모델을 공유해야 하는 상황이 됐고요. 새 저장소(common-lib)를 만들어요.폴더안의 파일들은 인터페이스와 클래스 .ts 파일들이에요. 서브모듈을 붙일 프로젝트(신규 프로젝트)의 루트에서 아래 코드를 실행해요.$ git submodule add https://github.com/저장소.git src/common-lib 끝! 참조해서 쓰면 되요. 주의! common-lib 파일들을 수정할 때는 원본에서 수정한 후 push 해야 해요. 원본 라이브러리 저장소 push 후에 신규 프로젝트에서 pull 하려면 신규 프로젝트의 루트에서 아래 코드를 실행해요.$ git submodule update --remote 만약 문제가 생겨서 삭제하고 싶은 경우...$ git..

콘솔에서 아래 코드를 실행해보세요. Math.floor((33 / 8) * 10) * 0.1 원하는 값이 아니네요. 아래 코드를 실행하면 예상한대로 나와요. Math.floor((33 / 8) * 10) / 10 일반적으로 곱하기가 나누기보다 빨라서 곱하는데 JS는 엉뚱한 값이 나오니 쓰지 않는게 좋겠어요.

값이 비었을 때 새로운 값을 넣는 API가 있다고 가정해요. const [rows] = await db.query('SELECT * FROM temp') if ((rows as ITemp[]).length < 1) { await db.query(`INSERT INTO file (id) VALUES ('1111')`) } 동시에 세 번 호출하면 모든 호출은 동시에 SELECT를 실행하기 때문에 다 값이 없다고 판단하고 1111을 기록해요. $ autocannon -c 3 -a 3 http://localhost:3100/user/test 이를 방지하기 위해 SELECT 문 뒤에 FOR UPDATE를 붙여요. const [rows] = await db.query('SELECT * FROM temp FOR UP..
피셔-예이츠 셔플(Fisher-Yates shuffle)을 활용한 배열 섞기 function shuffle(array) { for (let index = array.length - 1; index > 0; index--) { // 무작위 index 값을 만든다. (0 이상의 배열 길이 값) const randomPosition = Math.floor(Math.random() * (index + 1)); // 임시로 원본 값을 저장하고, randomPosition을 사용해 배열 요소를 섞는다. const temporary = array[index]; array[index] = array[randomPosition]; array[randomPosition] = temporary; } } 참고: https:/..
성능은 Hapi > Koa > Fastify 순. Koa import Koa from 'koa'; import Router from 'koa-router'; import { createServer } from 'http'; import { Server } from 'socket.io'; import serve from 'koa-static'; const app = new Koa(); const router = new Router(); router.get('/', async (ctx) => { ctx.body = 'Hello, world!'; }); const server = createServer(app.callback()); const socketServer = new Server(server, { c..
다음은 Node.js 개발을 위한 몇 가지 일반적인 모범 사례입니다: 비동기 프로그래밍에는 async/await을 사용하세요. try-catch 블록을 사용하여 오류를 적절히 처리하세요. 민감한 정보에는 환경 변수를 사용하세요. 데이터를 효율적으로 저장하고 검색할 수 있도록 적절한 데이터 구조를 선택하세요. 유지보수 가능성을 높이기 위해 모듈을 작고 집중적으로 유지하세요. 코드 품질과 일관성을 강화하기 위해 ESLint와 같은 린터를 사용하세요. Mocha 또는 Jest와 같은 테스트 프레임워크를 사용하여 코드에 대한 테스트를 작성하세요. 종속성을 최신 상태로 유지하고 보안 취약성을 모니터링하세요. PM2와 같은 프로세스 관리자를 사용하여 프로덕션 환경에서 Node.js 애플리케이션을 관리하세요. 로깅 ..
id 라는 파라미터가 양의 정수인지 확인하는거에요. let { id } = ctx.params id = Number(id) assert(!isNaN(id) && id > 0, 'invalid_id') 12, 45는 통과하지만 12f, -56은 에러가 발생해요. 영어, 중국어 공부중이신가요? 홈스쿨 교재. 한 권으로 가족 모두 할 수 있어요! 한GLO 미네르바에듀 : 네이버쇼핑 스마트스토어 한글로 영어가 된다?! 한글로[한GLO]는 영어 중국어 일어 러시아어 스페인어가 됩니다!! smartstore.naver.com
Error: Something went wrong installing the "sharp" module Cannot find module '../build/Release/sharp-darwin-arm64v8.node' 이런 에러가 난다면 아래 코드를 실행하면 되요. $ rm -r node_modules/sharp $ yarn install --check-files 영어, 중국어 공부중이신가요? 홈스쿨 교재. 한 권으로 가족 모두 할 수 있어요! 한GLO 미네르바에듀 : 네이버쇼핑 스마트스토어 한글로 영어가 된다?! 한글로[한GLO]는 영어 중국어 일어 러시아어 스페인어가 됩니다!! smartstore.naver.com
1. 공통 라이브러리용 깃헙 저장소 만들기 - 예) https://github.com/banjubu/banjubu-common-lib.git 2. 공통 라이브러리 저장소 루트에 index.js 생성 > 커밋 & 푸시 module.exports.banjubu = { go: function() { return "Go! Banjubu!"; } } 3. 신규 프로젝트 생성 > package.json 에 아래 코드 추가 - 처음 설치: yarn install - 코드 업데이트: yarn upgrade "dependencies": { ..., "banjubu-common-lib": "git+https://github.com/banjubu/banjubu-common-lib.git#main" } 4. app.js im..
Uploads 폴더에 파일을 쓴다면 PM2가 노드를 재시작할거에요. 그러면 파일이 제대로 써지지 않아요. pm2 start app.js --watch --ignore-watch="Uploads/*" 영어, 중국어 공부중이신가요? 홈스쿨 교재. 한 권으로 가족 모두 할 수 있어요! 한GLO 미네르바에듀 : 네이버쇼핑 스마트스토어 한글로 영어가 된다?! 한글로[한GLO]는 영어 중국어 일어 러시아어 스페인어가 됩니다!! smartstore.naver.com